что такое 1К-блоки в df и как рассчитать процент использования?

что такое 1К-блоки в df и как рассчитать процент использования?

Я много искал и не нашел 1K-blocksзначения в команде df (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%должно быть (15481840-8532088)/15481740 = 44,88%, а не 42%.

Так как же получить результат 42%?

решение1

Блок 1K в GNU coreutils df(1) означает 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     }

Как видите, размер выходного блока по умолчанию составляет 1024, если не POSIXLY_CORRECTзадана переменная окружения.

При расчете процента использования 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     }

Подводя итог, официальным источником в этом и каждом случае является исходный код.

Связанный контент