web-dev-qa-db-ja.com

基になるファイルシステムのサイズに正確に合うようにパーティションを縮小します

最近、ext4ファイルシステムのサイズを500GBに縮小しました

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       493G   64G  404G  14% /

ここで、ファイルシステムのサイズに正確に合うようにパーティションサイズを縮小したいと思います。

私はpartedとresizepartコマンドを使用しようとしました。問題は、partedが新しいサイズを要求するときです。 500GBを選択すると、結果のパーティションは500GBよりも小さくなり、その結果、基になるファイルシステムはこのパーティションに収まりません。正しいサイズ計算を行う方法に関するヒントはありますか?

3

dfによって報告されたサイズは、ファイルシステムによって内部的に使用されるデータブロックとミスブロック、および予約済みブロックのみを考慮しているため、正しくありません。

簡単な方法は、ファイルシステムを必要以上に少なくとも10%縮小することです。パーティションのサイズを必要なサイズに変更してから、resize2fsを使用してファイルシステムを拡張します。

手作業で計算したい場合は、ファイルシステムの内部の大きさを知る必要があります。これをtune2fs -l /dev/sda2で確認し、ブロック数にブロックサイズを掛けます。 partedでパーティションのサイズを変更するときは、ユニットをunit sおよびprintテーブルのあるセクターに切り替えて、開始セクターと論理セクターのサイズを取得します。合計サイズをバイト単位で上からセクターサイズで割ります。 2048の最も近い倍数に切り上げ、このセクター数にサイズ変更します(終了セクター=セクターのサイズ+開始セクター-1)。

式(python最初の4つの値を入力するだけで実行可能):

block_count = N
block_size = N
sector_size = N
start_sector = N
fs_size = block_count * block_size
fs_sectors = fs_size/sector_size
part_sectors = ((fs_sectors-1)/2048+1)*2048
end_sector = start_sector + part_sectors - 1
print "Partition start: %d end: %d size: %d"%(start_sector,end_sector,part_sectors)
print "Resize in parted with: \nresizepart <number> %ds"%(end_sector)
6
David