Вопрос или проблема
Сегодня я изучаю mkfs/newfs на Solaris, в man-страницах я прочитал
-c cgsize
Количество цилиндров на цилиндровую
группу, от 16 до 256.
Значение по умолчанию рассчитывается путем
деления количества секторов в файловой
системе на количество секторов в гигабайте.
Затем результат умножается на 32.
Значение по умолчанию всегда находится в диапазоне от 16 до 256.
Для диска на 40 Гб newfs рассчитывает для меня эти значения
mkfs -F ufs /dev/rdsk/c0t2d0s1 81819045 63 -1 8192 1024 264 1 6 8192 t 0 -1 8 128 n
264 — это cgsize.
Как они его получают?
Как сказано в man-странице, я делю количество секторов fs (81819045) на количество секторов в одном гигабайте, что составляет 2104515
81819045/2104515
38
Затем я умножаю на 32
38*32 = 1216
Почему они используют 264, а не 1216?
Ответ или решение
Калькуляция размера группы цилиндров (cgsize) в Solaris для файловых систем UFS может вызывать вопросы из-за различий между теоретическими значениями и тем, что реально используется в команде newfs. На основе представленной информации постараюсь объяснить, как именно определяется cgsize и почему вычисленное вами значение может не совпадать с тем, что фактически применяется.
Теория: В документации Solaris для mkfs/newfs указано, что размер группы цилиндров (-c cgsize) находится в диапазоне от 16 до 256. Это значение рассчитывается как количество секторов в файловой системе, деленное на количество секторов в гигабайте (2104515 секторов), умноженное на 32. Таким образом, с использованием вашей калькуляции:
[ \text{cgsize_calc} = \left( \frac{81819045}{2104515} \right) \times 32 = 38 \times 32 = 1216 ]
Пример: В вашем случае newfs использует команду:
mkfs -F ufs /dev/rdsk/c0t2d0s1 81819045 63 -1 8192 1024 264 1 6 8192 t 0 -1 8 128 n
где 264 является фактически используемым значением cgsize.
Применение: Причины такого расхождения могут быть следующими:
-
Пороговые ограничения: Несмотря на расчет по вышеописанной формуле, фактически применяемое значение cgsize может ограничиваться более узкими пределами, которые зависят от специфики текущей версии Solaris или драйвера, использующегося для оборудования. Значение 264 может являться более подходящим с точки зрения производительности или надежности, что обеспечивает корректную работу системы.
-
Оптимизация: Solaris может использовать дополнительные параметры или алгоритмы оптимизации, которые корректируют вывод команды newfs для достижения наилучшей производительности или обеспечения конкретной конфигурации оборудования.
-
Исторические и системные настройки: Значение cgsize может быть предварительно установлено системной политикой или основано на предыдущем опыте использования similar hardware and software configurations.
Таким образом, актуальное значение cgsize в 264 может быть обусловлено как структурными и техническими ограничениями, так и оптимизационными решениями, заложенными разработчиками Solaris для конкретного типа конфигураций файловых систем.