RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


bsd:df_du_different

df и du показывают разные значения

Исходные данные: VPS с FreeBSD 11.0, диск 75 GB. Система только установлена, но значение Avail всего 65 GB.

Вывод df

# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2     73G    1.4G     65G     2%    /
devfs          1.0K    1.0K      0B   100%    /dev

# df -H
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2     78G    1.5G     70G     2%    /
devfs          1.0k    1.0k      0B   100%    /dev

Виной всему Миша 2% невнимательное чтение Handbook.

Это связано с тем, как эти команды на самом деле работают. du проходит по дереву каталогов, замеряя, насколько большой объем занимает каждый файл, и выдает общий объем. df просто запрашивает файловую систему об оставшемся объеме. Это выглядит как одно и то же, однако файл без записи в каталоге затронет df, но не повлияет на du. Когда программа использует файл и этот файл удаляется, то на самом деле он не удаляется из файловой системы, пока программа не прекратит его использовать. Однако файл тут же удаляется из списка каталога. Представим себе файл достаточно большого размера, чтобы его присутствие влияло на вывод du и df. Если файл удаляется в процессе работы с ним команды more, команда more не сообщает сразу же, что не может просматривать файл. Запись о файле просто удалена из каталога, так что другие программы или пользователи не смогут к нему обратиться. Тем не менее, du покажет, что файл исчез, поскольку она просматривает дерево каталогов, а файла там нет. df показывает, что файл всё ещё здесь, так как файловая система знает, что more всё ещё использует это пространство. Как только закончится работа с more, команды du и df придут в соответствие.

По-умолчанию 8% дискового пространства на разделе резервируется для пользователя root. - т.е. по достижении этого порога обычные пользователи не смогут вести запись в раздел.

И чтобы окончательно всё понимать внимательно читаем:

FAQ прочитан и осмыслен и можно бороться с несправедливостью root-узурпатора.

Смотрим информацию о разделе

# tunefs -p /dev/ada0p2
tunefs: POSIX.1e ACLs: (-a)                                disabled
tunefs: NFSv4 ACLs: (-N)                                   disabled
tunefs: MAC multilabel: (-l)                               disabled
tunefs: soft updates: (-n)                                 enabled
tunefs: soft update journaling: (-j)                       enabled
tunefs: gjournal: (-J)                                     disabled
tunefs: trim: (-t)                                         disabled
tunefs: maximum blocks per file in a cylinder group: (-e)  4096
tunefs: average file size: (-f)                            16384
tunefs: average number of files in a directory: (-s)       64
tunefs: minimum percentage of free space: (-m)             8%
tunefs: space to hold for metadata blocks: (-k)            6408
tunefs: optimization preference: (-o)                      time
tunefs: should optimize for space with minfree < 8%
tunefs: volume label: (-L)

Уменьшить данное значение можно через утилиту tunefs.

Попробуем поставить резерв 1%

# tunefs -m 1 /dev/ada0p2
tunefs: minimum percentage of free space changes from 8% to 1%
tunefs: should optimize for space with minfree < 8%
tunefs: /dev/ada0p2: failed to write superblock

И если бы я внимательно прочитал сначала документацию, а потом уже вводил волшебные команды, то не получил бы ошибку tunefs failed to write superblock. tunefs можно запускать только на отмонтированных, или смонтированных в режиме "только чтение" файловых системах.

А так как у нас VPS, то перезагружаемся в Single Mode и выполняем команду ещё раз.

tunefs -m 1 /dev/ada0p2
tunefs: minimum percentage of free space changes from 8% to 1%
tunefs: should optimize for space with minfree < 8%

Смотрим вывод df после применения изменений

# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2     73G    1.4G     71G     2%    /
devfs          1.0K    1.0K      0B   100%    /dev

# df -H
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2     78G    1.5G     76G     2%    /
devfs          1.0k    1.0k      0B   100%    /dev

Вот они наши драгоценные гигабайты.

Такие дела. Читайте доки товарищи админы!

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 
bsd/df_du_different.txt · Последнее изменение: 2016/12/20 16:57 — 127.0.0.1