Установка Debian/Создание таблицы разделов

Пожалуй, один из наиболее ответственных этапов установки — создание таблицы разделов и, возможно (или же, скорее, — крайне желательно) настройка LVM на целевом носителе.

Возможная схема распределения пространства править

Автор предлагает следующую схему распределения пространства:

  • использование таблицы разделов GPT
    1. с одной стороны, это позволяет избавится от некоторых «наследственных болезней» MBR — в т. ч. использования лишенной в настоящее время смысла CHS-адресации, и необходимости т. н. «extended»-разделов;
    2. также, это дает возможность создания до по меньшей мере 128 разделов; (увы, — с поправкой на то, что Linux поддерживает не более 15);
    3. кроме того, использование GPT необходимо для загрузки системы некоторыми из современных BIOS, а также системами, использующих вместо последнего UEFI;
  • порядка 1 MiB выделяется под раздел «BIOS GRUB», в котором хранится «служебная» часть загрузчика GRUB, — отвечающая, в числе прочего, за поддержку файловой системы (в предлагаемом варианте — /boot), на которой, в свою очередь, размещается «основная» часть загрузчика; (при использовании MBR, для этого используется следующая непосредственно за MBR часть нулевого цилиндра, не доступная для распределения);
  • 1% ÷ 5% от общей емкости носителя (но, пожалуй, в пределах 1 GiB ÷ 16 GiB), отводится под swap-раздел; такой раздел является своеобразной «страховкой» на случай, если некие процессы, по какой-либо причине, захотят «присвоить» себе значительные объемы виртуальной памяти — необходимость обращения к swap замедлит процесс выделения памяти и, возможно, даст администратору время для принятия решительных мер; (к сожалению, эвристика OOM Killer изредка дает сбои; автор припоминает случай, когда оный попытался досрочно завершить init-процесс — с очевидными последствиями);
  • порядка 192 MiB ÷ 512 MiB отводится под отдельный /boot, что обеспечивает возможность переустановки загрузчика (GRUB) даже при отсутствии доступа к LVM (например, с использованием системы, отличной от GNU/Linux); для такого раздела можно, при желании, использовать даже «упрощенную» ФС, в т. ч. FAT32;
  • некоторый объем, от порядка 512 MiB, выделяется как «стратегический резерв» — создается неиспользуемый раздел, или же это пространство не распределяется вовсе; такой резерв может быть использован, например, если совершенно необходимо создать отдельную ФС, но LVM использовать по каким-то причинам невозможно (в частности, — по причине сбоя LVM — для сбора на эту ФС критической информации о состоянии LVM), или же для создания временного физического тома LVM при заполненности основных (до переноса данных, или удаления более ненужных), etc.;
  • оставшееся пространство распределяется между двумя или более физическими томами LVM; использование двух томов позволит, при необходимости, выполнить «дефрагментацию» логических томов используя pvmove(8); (возможности переноса данных в пределах одного тома этот инструмент не предоставляет.)

Использование GNU Parted править

NB
дальнейшие действия предполагают инициализацию служебных областей некоторого носителя информации (НЖМД, ТТН, etc.) Следует быть предельно внимательным, чтобы выполнить команды в отношении именно целевого носителя (а не, к примеру, носителя, на котором установлена используемая система.) Выяснить имена /dev-файлов, соответствующих носителю (или носителям), используемым основной системой, можно, в частности, следующими командами:
  • # pvs
  • # parted /dev/sdQ unit mib print
  • $ cat -- /proc/mounts /proc/swaps
Ясно, что эти имена ни в коем случае не должны появится в командах, подобных приводимым ниже.

Предлагаемую разметку можно реализовать подобно (предполагая емкость целевого носителя порядка 500 GB и «чистую» таблицу разделов GPT; команду создания таблицы — # parted DEV unit mib print mklabel gpt — выполнить по-необходимости):

# parted /dev/sdX \
      unit mib \
      mkpart biosgrub    0%     1mib  set 1 bios_grub on \
      mkpart boot        1mib 512mib \
      mkpart swap      512mib  11gib  set 3 swap on \
      mkpart res-1      11gib  16gib \
      mkpart small-1    16gib  32gib \
      mkpart medium-1   32gib  64gib \
      mkpart large-2    64gib 128gib \
      mkpart large-3   128gib 192gib \
      mkpart large-4   192gib 256gib \
      mkpart large-5   256gib 320gib \
      mkpart large-6   320gib 384gib \
      mkpart medium-12 384gib 416gib \
      mkpart medium-13 416gib 448gib \
      mkpart tail      448gib 100% 

Отметим, что параметры parted(8), подобные приведенным выше, можно сформировать и тривиальным Shell-кодом.

Проверить корректность созданной таблицы разделов можно используя # parted /dev/sdX unit mib print (или же, как вариант, unit s print — чтобы удостоверится, что границы разделов выровнены по размеру физического блока носителя: 8 «секторов» для современных НЖМД, 2097152 для ТТН, etc.)

Инициализация swap и /boot править

Сразу после создания таблицы разделов можно инициализировать swap-раздел и ФС /boot, подобно:

# mkswap /dev/sdX3 
# mke2fs -j -- /dev/sdX2 

Далее, чтобы избежать привязки к конкретному имени файла раздела, несущего swap и ФС /boot, извлечем их UUID:

# blkid -- /dev/sdX[23] 
/dev/sdX2: UUID="7bfad579-8e0f-4ef7-bc58-fad76f5fc83d" SEC_TYPE="ext2" TYPE="ext3"
/dev/sdX3: UUID="d66d7d66-4382-4019-b420-1c47c29f7263" TYPE="swap"
# 

Данные идентификаторы подходят как для «явного» использования в команде # mount -U (# swapon -U), так и для fstab(5). Отметим, однако, что при создании копии ФС на уровне образа (в частности, — используя dd(1), # cp -- /dev/sdX2 /dev/sdYY, и подобные) имеющийся UUID сохраняется, а значит для различения ФС (исходной и ее копии) крайне желательно его переназначить после копирования, подобно:

# tune2fs -U random -- /dev/sdYY .

См. также править