Зарезервированное место для root в файловой системе - почему?

105

Я понимаю, что по умолчанию вновь созданные файловые системы будут создаваться с 5% пространства, выделенного для root. Я также знаю, что вы можете изменить определенное пространство с помощью:

tune2fs -m 1 /dev/sdXY

Что меня интересует, так это то, какова реальная цель этого зарезервированного пространства. Служит ли это для каких-либо практических целей, которые в некоторых случаях заслуживают более 5% пространства?

Причина, по которой я наткнулся на этот вопрос, заключается в том, что мы недавно создали хранилище файлов объемом 1 ТБ и не могли понять, почему из-за df -h мы упустили 5% нашей емкости.

suitedupgeek
источник
1
Хорошо, теперь это огромная трата «недоступного» пространства. Возможно, 5% должны быть ограничены размерами дисков меньше X (например, 5% дискового пространства максимум до 100 МБ).
Чепанг
3
На моей 8 ТБ файловой системе 400 ГБ просто ушли - это настоящая трата пространства !! :)
Илья Ростовцев

Ответы:

102

Экономия места для важных корневых процессов (и возможных действий по спасению) является одной из причин.

Но есть и другое. Ext3 довольно хорошо избегает фрагментации файловой системы, но как только вы наберете около 95% заполнения, такое поведение сойдет с обрыва, и вдруг производительность файловой системы станет беспорядочной. Таким образом, оставив зарезервированные 5%, вы получите буфер против этого.

Ext4 должен быть лучше в этом, как объяснил разработчик файловой системы Linux / гуру Теодор Цо :

Если вы установите зарезервированное количество блоков равным нулю, это не сильно повлияет на производительность, за исключением случаев, когда вы выполняете в течение длительных периодов времени (с большим количеством файлов, создаваемых и удаляемых), пока файловая система почти заполнена (то есть, скажем, выше 95%), в этот момент вы будете подвержены проблемам фрагментации. Многоблочный распределитель Ext4 гораздо более устойчив к фрагментации, поскольку он пытается гораздо сложнее найти смежные блоки, поэтому даже если вы не включите другие функции ext4, вы увидите лучшие результаты, просто смонтировав файловую систему ext3 с использованием ext4 перед файловой системой. становится полностью полным.

Если вы просто используете файловую систему для долгосрочного архивирования, где файлы меняются не очень часто (например, огромный магазин mp3 или видео), это, очевидно, не будет иметь значения.

mattdm
источник
3
Как отмечается на сайте superuser.com/a/1257550/38062 , эти цифры «90%» и «95%» берут свое начало в измерениях по FFS Беркли, проведенных в 1980-х годах. В последующие десятилетия другие люди бросали вызов этой часто повторяющейся мудрости.
JdeBP
1
С этим зарезервированным пространством не снижается производительность для обычных пользователей. Они просто не получат места на устройстве раньше, чем ожидалось. Однако у корня будет достаточно места, чтобы исправить любую проблему с заполнением диска.
Рождество
44

Если вы разрешите другим входить в вашу систему, например, через ssh, резервирование этих 5% блоков гарантирует, что внешние пользователи не смогут заполнить диск. Даже если вы не разрешаете другим входить в вашу систему, зарезервированные блоки не позволяют программам, не запущенным от имени root, заполнить ваш диск.

LawrenceC
источник
Спасибо за это, искренне боролись с тем, какой ответ пометить как правильный - ответ проголосовал, как он был первым и на месте, mattdm помечен как правильный из-за дополнительного фона и деталей, которые помогли мне понять «почему» больше.
suitedupgeek
22

С блоками, зарезервированными вашими пользователями, и сервисы, которые работают как определенные пользователи, а не как root, не могут заполнить файловую систему и потенциально могут нарушить другие функции, которые необходимо записать в указанную файловую систему - хотя сервисы, работающие как root, все еще могут сделать это полностью полный конечно.

Это также дает вам некоторое пространство для работы, когда пользователи жалуются, что диск заполнен, или службы начинают отказывать, потому что файловая система заполнена. Например, вы можете заархивировать некоторые файлы в zip / gz / 7zip архивы перед их удалением (хотя, если файловая система была полностью заполнена, есть вероятность, что у вас есть какая-то другая файловая система, в которой вы могли бы вместо этого создать архивный файл).

Долгое время по умолчанию было 5% , со времен, когда диски были намного меньше (десятки мегабайт, а не сотни гигабайт), поэтому 5% было не так уж много. К счастью , она легко может быть настроена вниз на меньший процент , как вы говорите, или установить на определенное количество блоков , если вы используете tune2fs«ы -rвариант вместо -m. В обоих случаях вы можете дать параметр 0 , чтобы включить резервирование от полностью - я бы не сделать это для /, /tmp, /varи так далее, но вы можете для файловой системы , которая только действует как хранилище пользователя (скажем , глобальное file- поделиться) или тот, который просто содержит файлы фиксированного размера (например, виртуальные машины фиксированного размера), которые будут расти только при создании нового.

Дэвид Спиллетт
источник
22

Значение по умолчанию 5% предназначено для системных разделов. Например, если ваше дисковое пространство заполнено, системные журналы ( /var/log) и почтовый ящик root ( /var/mail/root) могут по-прежнему получать важную информацию. Для /homeобщего или общего хранилища данных нет необходимости оставлять место для root. Для особых нужд вы можете сменить пользователя, который получает аварийное пространство ( tune2fs -u 1234).

Есть еще одна причина, по которой файловая система ext [234] не заполняется полностью - это фрагментация .

жилль
источник