9

По умолчанию Linux резервирует некоторую часть файловой системы для пользователя root, по крайней мере, для ext4 (чтобы обычные пользователи не могли полностью заполнить диск и привести к сбою системы и уменьшить фрагментацию). Однако df отображает только свободное пространство, видимое обычным пользователям (даже при запуске от имени пользователя root). Как вы отображаете "реальное" свободное пространство, которое было бы доступно для root?

3 ответа3

14

Используя команду 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. Простая математика.

Надеюсь это поможет. Помните ... справочные страницы - ваши друзья.

6

Я не уверен, что есть встроенный инструмент, но если вы оставили зарезервированные значения по умолчанию 5%, то это скажет вам:

df / | grep dev | cut -f 3,6 -d\  | awk '{print ($1*.05)+$2}'

df root, grep для строки с dev (чтобы удалить заголовок), cut размер и доступные поля, затем использовать скрипт awk для расчета 5% от размера диска, добавленного к доступному.

Вы можете извлечь фактическое резервирование из tune2fs -l <device> и объединить это с вышеупомянутым в скрипте.

1

Это отображает свободное место в байтах в разделе, связанном с "/ путь"

printf '%s' $(($(stat -f --format='%f*%S' /path)))

Вы не должны быть суперпользователем, чтобы запустить его.

Кстати, я не совсем понимаю, в чем разница

% s размер блока (для более быстрой передачи)

% S размер основного блока (для количества блоков)

в использовании stat .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .