web-dev-qa-db-ja.com

NFSマウントでのstat、du、ls-lの出力を理解する

ls -l f.txt
-rwxrwxr-x 1 abc abc 1161 Sep  1 02:02 f.txt

stat f.txt
  File: `f.txt'
  Size: 1161        Blocks: 34         IO Block: 524288 regular file
Device: 38h/56d Inode: 6448956669  Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1024/   carle)   Gid: (  100/   users)
Access: 2017-09-09 02:02:36.000000000 -0700
Modify: 2017-09-09 02:02:36.000000000 -0700
Change: 2017-09-11 20:42:00.709807459 -0700

du -h f.txt
17K wiki.txt
  1. F.txtがディスク上で17K(17408バイト)を占めるのはなぜですか?
  2. IOブロックサイズとは何ですか?なぜそれは524288バイトの長さで、ファイルシステムのブロックサイズと等しくないのですか(ファイルシステムのブロックサイズが17Kであると仮定)?

何が起きてる?

3
Ankur Agarwal

どちらも、ファイルシステム上のfile sizesize on diskについて混乱しているだけです。 File System ここで、各ボックス/ブロックサイズはファイルシステム上で17kです。黄色の部分はファイルデータ(f.txt)であり、サイズは約1161ですが、ディスクは17kサイズでいっぱいです。duコマンドは、ディスク上の実際のサイズを示します。

ファイルサイズが18000 bytesであると仮定すると、duコマンドは出力34kを返します!

  1. サイズはファイルの実際のバイト数であり、ディスク上のサイズはファイルがディスク上で占める実際のバイト数です。

  2. ディスク上のサイズは通常、ファイルの実際のサイズよりも大きくなります。

  3. ディスク上のサイズは、スパースとマークされている(「穴」がある)ファイルまたはファイルシステムによって自動的に圧縮されているファイルの実際のサイズよりも小さい場合があります。

1
Nullpointer