Ubuntu preseed expert_recipe priority / max size не приводит к правильному результату

Несмотря на чтение различных сообщений и ответов в Интернете, мне все еще очень непонятно, как <минимальный размер> <приоритет> <максимальный размер> параметры partman-auto / expert_recipe фактически переводят в определение конечного выделенного дискового пространства.

В приведенном ниже примере базовый диск имеет 64 ГБ пространства, из которых распределения должны быть:

  • 1 ГБ до / boot
  • 8 ГБ до / home
  • 10G в / usr
  • и так далее (см. Полную спецификацию в MiB ниже из preseed / ubuntu-server-unattended.seed )

Фактический результат постоянно на несколько сотен МБ:

enter image description here

Я видел и читал следующее, и никто из них, на мой взгляд, не согласен или не разъясняет простыми формулировками, как поле priority на самом деле ведет себя и преобразуется в окончательные размеры.

В этом примере сумма значений даже близко не приближается к ограничению в 64 ГБ. Итак, что конкретно мне нужно установить для каждого значения , чтобы фактические размеры были согласованы с полем ?

Точная спецификация в preseed / ubuntu-server-unattended.seed :

d-i    partman-auto/method                  string lvm
d-i    partman/default_filesystem           string ext4
d-i    partman-auto/choose_recipe    select boot-root
d-i    partman-auto/expert_recipe    string \
    boot-root ::                            \
        500 1000 1000 ext2                  \
            $primary{ }                     \
            $bootable{ }                    \
            method{ format }                \
            format{ }                       \
            use_filesystem{ }               \
            filesystem{ ext2 }              \
            label{ boot }                   \
            mountpoint{ /boot }             \
            .                               \
        4096 8192 8192 $default_filesystem    \
            $lvmok{ }                       \
            lv_name{ RootVol }      \
            method{ format }                \
            format{ }                       \
            use_filesystem{ }               \
            mountpoint{ / }   \
            $default_filesystem{ }          \
            options/defaults{ defaults }    \
            options/discard{ discard }    \
            options/iversion{ iversion }    \
            .         \
        1024 4096 4096 $default_filesystem    \
            $lvmok{ }                       \
            lv_name{ HomeVol }      \
            method{ format }                \
            format{ }                       \
            use_filesystem{ }               \
            mountpoint{ /home }   \
            $default_filesystem{ }          \
            options/defaults{ defaults }    \
            options/nosuid{ nosuid }    \
            options/nodev{ nodev }    \
            .         \
        8192 10240 10240 $default_filesystem    \
            $lvmok{ }                       \
            lv_name{ UsrVol }      \
            method{ format }                \
            format{ }                       \
            use_filesystem{ }               \
            mountpoint{ /usr }   \
            $default_filesystem{ }          \
            options/defaults{ defaults }    \
            options/nodev{ nodev }    \
            .         \
        2048 4096 4096 $default_filesystem    \
            $lvmok{ }                       \
            lv_name{ VarLogAuditVol }      \
            method{ format }                \
            format{ }                       \
            use_filesystem{ }               \
            mountpoint{ /var/log/audit }   \
            $default_filesystem{ }          \
            options/defaults{ defaults }    \
            options/nodev{ nodev }    \
            options/nosuid{ nosuid }    \
            .         \
        2048 4096 4096 $default_filesystem    \
            $lvmok{ }                       \
            lv_name{ VarLogVol }      \
            method{ format }                \
            format{ }                       \
            use_filesystem{ }               \
            mountpoint{ /var/log }   \
            $default_filesystem{ }          \
            options/defaults{ defaults }    \
            options/nodev{ nodev }    \
            options/nosuid{ nosuid }    \
            .         \
        2048 8192 -1 $default_filesystem    \
            $lvmok{ }                       \
            lv_name{ VarVol }      \
            method{ format }                \
            format{ }                       \
            use_filesystem{ }               \
            mountpoint{ /var }   \
            $default_filesystem{ }          \
            options/defaults{ defaults }    \
            options/nodev{ nodev }    \
            options/nosuid{ nosuid }    \
            .

Из спецификации :

:: = <минимальный размер> _ <приоритет> _ <максимальный размер> _

<минимальный размер> - минимально допустимый размер раздела в мегабайтах. Он округляется до размера цилиндра, поэтому, если вы сделаете <минимальный размер> равным 20 МБ, а размер цилиндра - 12 МБ, тогда возможно , чтобы размер раздела был только 12 МБ. Эти размеры также могут быть заданы в виде процента, что делает размер равным проценту от общего ОЗУ системы, или (как в случае с partman-auto 87) числом плюс процент {{ 1}} (например, "2000 + 50%"), что делает размер равным этому числу плюс этот процент от общего объема ОЗУ системы.

<приоритет> - это некоторый размер, обычно от <минимальный размер> до <максимальный размер> . Он определяет приоритет этого раздела в соревновании с другими разделами по размеру. Обратите внимание, что если он слишком (относительно приоритета других разделов), то размер этого раздела будет близок к.Вот почему рекомендуется давать маленьким разделам <приоритет> больше, чем их <максимальный размер> .

<максимальный размер> - это максимальный размер раздела, т. Е. Предельный размер, при котором нет смысла увеличивать этот раздел. Специальное значение "-1 "используется для обозначения неограниченного размера раздела.

Часть, где спецификация, кажется, не работает, - здесь :

x = min[i] + (free_space - minsum) * factor[i] / factsum;
if (x > max[i])
    x = max[i];

Это означает, что каждый x должен иметь потолок max [i] , если дисковое пространство позволит это. В этом случае это должно быть верно, поскольку остаточного пространства более чем достаточно, даже когда все max суммируются. Так что же дает?

1
задан 24 May 2021 в 21:10

1 ответ

Что конкретно мне нужно установить для каждого значения, чтобы получить фактические размеры, выровненные по полю?

Ваши разделы выровнены по полю . Инструменты просто используют разные единицы измерения. Partman использует MB. lsblk использует MiB и GiB. Например, ваш раздел /boot имеет максимальное значение 1000. Это 1000 МБ, что равно 953 МиБ.

Остальные тоже выравниваются

  • 1000 MB == 953.674 MiB
  • 8192 MB == 7.629395 GiB
  • 4096 MB == 3.814697 GiB
  • 10240 MB == 9.5367432 GiB

См. также

1
ответ дан 28 July 2021 в 11:36

Другие вопросы по тегам:

Похожие вопросы: