По умолчанию Linux резервирует некоторую часть файловой системы для пользователя root, по крайней мере, для ext4 (чтобы обычные пользователи не могли полностью заполнить диск и привести к сбою системы и уменьшить фрагментацию). Однако df
отображает только свободное пространство, видимое обычным пользователям (даже при запуске от имени пользователя root). Как вы отображаете "реальное" свободное пространство, которое было бы доступно для root?
3 ответа
Используя команду tune2fs (находится в /sbin/tune2fs), вы можете легко определить зарезервированное пространство: (и многое другое!)
tune2fs -l /dev/sda1
Я предоставлю информацию о моей системе для справки, я собираюсь удалить посторонние строки, не важные для этого вопроса:
Заголовок ... и имя тома, я маркирую все мои диски, позволяет легко идентифицировать их при необходимости.
tune2fs 1.42.4 (12-Jun-2012)
Filesystem volume name: xenon
Last mounted on: /
...
ДЕЙСТВИТЕЛЬНО хочу, чтобы это говорило "чистый" во время работы системы. Честное слово!
Filesystem state: clean
Здесь начинается информация о емкости хранилища данных:
Здесь вы можете видеть, что у меня всего 121 179 648 блоков ... с размером блока 4 КБ (4096), который умножается до некоторого большого числа (462 гигабайта ГБ). (Размер блока указан ниже)
Block count: 121179648
И зарезервированные блоки ... посмотрев на число выше и число ниже ... вы сможете относительно быстро выяснить, у меня зарезервирован 1%. В этом случае (4,62 ГБ)
Reserved block count: 1211796
Сколько свободного места сейчас доступно? Прямо здесь!
Free blocks: 104090586
...
И все важные размеры блока. Полезно для умножения.
Block size: 4096
...
Эти строки говорят, КТО блоки зарезервированы для ... пользователя 0, root, в данном случае
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
...
Здесь доступно гораздо больше информации, но это должно дать вам возможность быстро определить, сколько доступно и сколько еще зарезервировано для root. Простая математика.
Надеюсь это поможет. Помните ... справочные страницы - ваши друзья.
Я не уверен, что есть встроенный инструмент, но если вы оставили зарезервированные значения по умолчанию 5%, то это скажет вам:
df / | grep dev | cut -f 3,6 -d\ | awk '{print ($1*.05)+$2}'
df
root, grep
для строки с dev (чтобы удалить заголовок), cut
размер и доступные поля, затем использовать скрипт awk
для расчета 5% от размера диска, добавленного к доступному.
Вы можете извлечь фактическое резервирование из tune2fs -l <device>
и объединить это с вышеупомянутым в скрипте.
Это отображает свободное место в байтах в разделе, связанном с "/ путь"
printf '%s' $(($(stat -f --format='%f*%S' /path)))
Вы не должны быть суперпользователем, чтобы запустить его.
Кстати, я не совсем понимаю, в чем разница
% s размер блока (для более быстрой передачи)
% S размер основного блока (для количества блоков)
в использовании stat
.