DF の 1K ブロックとは何ですか? また、使用率を計算するにはどうすればよいでしょうか?

DF の 1K ブロックとは何ですか? また、使用率を計算するにはどうすればよいでしょうか?

いろいろ検索しましたが、1K-blocksdf コマンド (gnu) の意味は見つかりませんでした。しかし、計算してみると、等しいと思います1K Byte。公式の説明はありますか?

では、どのように計算するのでしょうかUsed Percentage?

例えば:

tankywoo@gentoo-jl::~/ » df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/sda3                     15G  5.9G  8.2G  42% /

tankywoo@gentoo-jl::~/ » df
Filesystem                  1K-blocks    Used Available Use% Mounted on
/dev/sda3                    15481840 6163320   8532088  42% /

私のローカルマシンには、 があることがわかっていますreserved space

使用済みは 6163320、空きは 8532088 なので、次のようになります。

Used%42%ではなく、(15481840-8532088)/15481740 = 44.88%であるべきだと思います。

それで、どうやって結果を得るのでしょうか42%?

答え1

GNU coreutils df(1) の 1K ブロックは 1024 バイトを意味します。GNU coreutils バージョン 8.13 のソース コードを簡単に確認すると、次のようになります。

964   if (human_output_opts == -1)
965     {
966       if (posix_format)   
967         {
968           human_output_opts = 0;
969           output_block_size = (getenv ("POSIXLY_CORRECT") ? 512 : 1024);
970         }
971       else             
972         human_options (getenv ("DF_BLOCK_SIZE"),
973                        &human_output_opts, &output_block_size);
974     }

ご覧のとおり、環境変数POSIXLY_CORRECTが設定されていない限り、デフォルトの出力ブロック サイズは 1024 です。

使用率を計算する際、基礎となるファイルシステムが予約済みスペース/ブロックをサポートしている場合(ほとんどの場合サポートされています)、df(1) は使用可能なスペースから root ユーザー用に予約済みのスペース/ブロックを差し引きます。

529   if (known_value (total) && known_value (available_to_root))
530     {
531       used = total - available_to_root;
532       negate_used = (total < available_to_root);
533     }

まとめると、この場合も、またあらゆる場合も、正式な権限はソース コードです。

関連情報