Собирая очередной програмнный RAID5 на FreeBSD [1], решил обратить внимание сообщества на следующий момент:
# df -h Filesystem Size Used Avail Capacity Mounted on /dev/mirror/gm0a 446G 4,4G 405G 1% / devfs 1,0K 1,0K 0B 100% /dev /dev/raid5/raid5 13T 8,0K 12T 0% /raid5 |
"Пропал" терабайт доступного дискового пространства... Как это возможно?
Дело в том, что часть каждого раздела UFS (по умолчанию 8%) зарезервировано для использования операционной системой и пользователем root. Утилита df не учитывает это при подсчёте значения в колонке Capacity, так что оно может превышать 100%. Обратите внимание, что колонка Blocks всегда больше, чем сумма значений в колонках Used и Avail, обычно на 8%.
В моем случае, поскольку раздел довольно большой, потеря дискового пространства довольно существенная, поэтому изменим размер зарезервированного пространства до 2% (260GB должно быть более чем достаточно...)
Отмонтируем раздел:
# umount /dev/raid5/raid5 |
С помощью утилиты tunefs изменим размер зарезервированного дискового пространства:
# tunefs -m 2 /dev/raid5/raid5 tunefs: minimum percentage of free space changes from 8% to 2% tunefs: should optimize for space with minfree < 8% |
Монтируем раздел:
# mount -t ufs /dev/raid5/raid5 /raid5 |
Проверяем результат:
# df -h Filesystem Size Used Avail Capacity Mounted on /dev/mirror/gm0a 446G 4,4G 405G 1% / devfs 1,0K 1,0K 0B 100% /dev /dev/raid5/raid5 13T 8,0K 13T 0% /raid5 |
Поскольку в даном выводе размер зарезервированного пространства не подсчитать, ознакомимся с выводом утилиты df без ключа -h:
# df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/mirror/gm0a 467188468 4627044 425186348 1% / devfs 1 1 0 100% /dev /dev/raid5/raid5 14191346200 8 13907519268 0% /raid5 |
Посчитаем процентное соотношение:
13907519268 х 100 / 14191346200 = 97,99 |
Получается 98% доступно... Все сходится.
Также стоит обратить внимание еще на такой момент. При уменьшении зарезервированного дисткового пространства до 5% и ниже, FFS отключает алгоритм оптимизации выделения свободных блоков, что приводит к росту фрагментации, росту затрат дискового пространства при расположении файлов (из-за неоптимального расположения, части блоков остаются не занятыми, если файл не занимает его целиком) и, теоретически, к снижению скорости чтения. Здесь стоит подумать и выбирать: оставить зарезервированное пространство, либо отказываться от него и иметь возможность заюзать лишние гигабайты, и получить выше перечисленные проблемы.
В моем частном случае даный массив будет использоваться только под хранение бекапов, размеры которых десятки гигабайт одним файлом. Поэтому, исходя из сравнительно небольшого суммарного количества файлов, проблему фрагментации можно игнорировать.