1つのRAIDパーティションから別のRAIDパーティションにいくつかのデータをコピーしました。次の出力を見るとdf
:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md127 1921673480 1652707240 171280736 91% /home/chris/mount/raid18t
/dev/md3 2881491232 1652719488 1082329968 61% /home/chris/mount/raid3t
このUsed
値は同じではありません(1652707240
vs 1652719488
)。ただし、du -s *
すべてのディレクトリで実行すると同じ値/出力が得られます。
なぜ価値観に違いがあるのですUsed
か?
どちらのファイルシステムもext4です。
ベストアンサー1
なぜなら、dfsize on disk
報告裏actual file size
ファイルが同じであっても、基本ファイルシステムブロックが同じであることを意味するわけではありません。
ブロックサイズを考慮してください。8千そしてDisk-1
ブロックサイズは4K存在するDisk-2
。
ファイルの実際のサイズはfoo
次のとおりです。11,000。
Disk-1/foo
2つのブロックを占めます。つまり、2つを使用します。8千=16千。
Disk-2/foo
3つのブロックを占めます。つまり、3つを使用します。4k=12k。
編集する
楽しんで、小さなファイルがたくさんあるディレクトリを選択してください。ls -l
ファイルサイズの合計を実行して計算します。実際のファイルサイズです。私のLinuxバージョンでは、ファイルサイズは列5にあります。だから私は次のことをします。
ls -l | awk '{ttl=ttl+$5} END {print "Total file size " ttl}'
これはディレクトリ内のファイルサイズの合計を計算します。
次に、ディスク上のセクタ数ls -ls
とセクタ総数を一覧表示します。
ls -ls | awk '{ttl=ttl+$1} END {print "Total sector count " ttl}'
私のシステムでブートディレクトリを確認しました。
ls -lsR /boot | awk '{if (($1+0) >0) tt_sec=tt_sec+$1; tt_byt=tt_byt+$6} END {print "Sectors " tt_sec " Bytes " tt_byt}'
セクタ 151,352 バイト 153,894,246
du -xs /boot
151360
df /boot
1-K ブロック: 499656
使用: 151756
この3つの数字の違いを確認しましたか?
ls
デフォルトでは、サイズはバイト単位で表示されます。
df
特に設定しない限り、1Kブロックを報告します。
マイディスク設定には512バイトのセクタがありますfdisk
。
ls コマンドに隠しファイルとディレクトリを追加すると、
ls -lRsa (…)
セクタ 151,504 バイト 154,045,696 が
近づきますが、まだオフになっています。
それでは、何が起こっているのかを見てみましょう。
- 便宜上、コピー済み -
ls -lsRa /boot | awk '{if (($1+0) >0) tt_sec=tt_sec+$1; tt_byt=tt_byt+$6} END {print "Sectors " tt_sec " Bytes " tt_byt}'
セクタ151,504バイト154,045,696
df /boot
1-Kブロック:499656
使用済み:151756
du -xs /boot
151360
echo "Hi" > junk
ls -ls junk
4 -rw-r--r-- ScottieHユーザー3ジャンクこの3
バイトファイルは4つのセクタを使用しています。
- サイズ再計算 -
ls -lsRa /boot | awk '{if (($1+0) >0) tt_sec=tt_sec+$1; tt_byt=tt_byt+$6} END {print "Sectors " tt_sec " Bytes " tt_byt}'
セクタ 151,508 バイト 154,045,972 <- どのくらい?
du -xs /boot
151364
df /boot
1-K ブロック: 499656
使用: 151760
** この数字はどうなるかをご存知ですか?いいえ合計しますか? **