Linuxでアンマウントされたパーティションのサイズを見つける方法は?

Linuxでアンマウントされたパーティションのサイズを見つける方法は?

tune2fsを使用していますが、データはチャンクとして提供されるため、パーティションの全体サイズの正確な値を取得できません。

私も使用しましたが、fdisk -l /dev/mmcblk0p1ここで得られた寸法も異なる値です。

正確なパーティションサイズを見つけるには?

答え1

コマンドは次のとおりです。

blockdev --getsize64 /dev/mmcblk0p1

結果は64ビット整数でバイト単位で提供されます。それは照会するバイトサイズの一つブロックデバイス、カーネルがサイズを確認するように。

fdisk -l /dev/mmcblk0p1うまくいかないのは、fdiskまったく違うことをするからです。ブロックデバイスのパーティションテーブル(=最初のセクタ)を読み、見つかった内容を印刷します。。何も確認せず、パーティションテーブルの内容のみを確認してください。

パーティションテーブルが破損しているか、ブロックデバイスにパーティションテーブルがない場合はまったく気にしません。チェックサムが間違っているという警告を印刷しますが、値が異なる場合でも、見つかった内容を印刷し続けます。明らかに間違っているようです。そんな感じがします。

あなたの場合は、次のことが起こります。/dev/mmcblk0p1 含まないパーティションテーブル。デバイス名が示すように、これはすでに物理ディスクの最初のパーティションです/dev/mmcblk0。ディスクにはパーティションテーブルが含まれており、クエリはfdisk -l /dev/mmcblk0すでに機能します(msdosパーティションテーブルがあると仮定)。

答え2

試してみてくださいlsblk。ルートは必要ありません。

$ lsblk -b
NAME    MAJ:MIN RM        SIZE RO TYPE MOUNTPOINT
xvda    202:0    0 34359738368  0 disk 
├─xvda1 202:1    0  1676673024  0 part [SWAP]
└─xvda2 202:2    0 32682016768  0 part /var/spool

この-bパラメータは出力サイズ(バイト)を示します。

答え3

合計パーティション・サイズの正確な値を取得するには、次のようにします。

awk '{print $1*512}' /sys/class/block/mmcblk0p1/size

答え4

私の解決策:

part_dev='/dev/hda2'

total_block=`tune2fs -l $part_dev | awk '/Block count/ {print $3}'`
block_size=`tune2fs -l $part_dev | awk '/Block size/ {print $3}'`

total_size=$(($total_block* $block_size))

echo $total_size

その中には/dev/hda2必ずしもマウントされないパーティションもあります。tune2fsバージョン 1.42.4 でテストされました。

関連情報