Настройка хранилища#
SberLinux OS Core поставляется с простой компоновкой хранилища по умолчанию и требует не менее 1 ГБ. Если корневая файловая система меньше рекомендуемого размера, при входе в систему появится предупреждение. Если корневая файловая система меньше 1 ГБ и за ней следует другой раздел, OS Core откажется от загрузки.
Корневой раздел является последним и заполняет все доступное дисковое пространство. Все данные хранятся в корневом разделе, отдельно от загрузочного. Чтобы добавить дополнительные разделы после корневой файловой системы, нужно изменить размер корневого раздела, чтобы он был не менее 1 ГБ.
Дополнительная информация приведена в разделе «Разметка диска» ниже.
Ссылки на блочные устройства из файла Ignition#
Многие из приведенных ниже примеров будут ссылаться на блочные устройства, например, /dev/vda. Название доступных блочных устройств зависит от типа инфраструктуры (облачная или без программного обеспечения) и от типа экземпляра. Например, в AWS некоторые типы экземпляров имеют диски NVMe (/dev/nvme*), другие же используют /dev/xvda*.
Во время подготовки к установке можно использовать ссылку /dev/disk/by-id/oscore-boot-disk для более удобного обращения к устройству в случае если конфигурация диска простая и использует тот же диск, с которого была запущена SberLinux OS Core.
Когда необходим доступ к другим дискам, проще всего загрузить одну машину с конфигурацией Ignition, которая предоставляет доступ к SSH, и проверить блочные устройства, например, с помощью команды lsblk.
В случае физической аппаратуры наилучшим способом обратиться к другим устройствам является ссылка /dev/disk/by-id/ или /dev/disk/by-path.
Настройка отдельных разделов /var#
Пример конфигурации Butane для настройки /var на отдельной части основного диска (добавление раздела /var на основной диск):
variant: sbcos
version: 3.2.0
storage:
disks:
- # Ссылка на блочное устройство, с которого была загружена операционная система.
device: /dev/disk/by-id/oscore-boot-disk
# Не стирайте таблицу разделов, так как это основное устройство.
wipe_table: false
partitions:
- number: 4
label: root
# Выделите корневым файлам не менее 8 гигабайт.
size_mib: 8192
resize: true
- size_mib: 0
# Присваиваем разделу описательную метку. Это важно для того, чтобы ссылаться на него независимо от устройства в других частях конфигурации
label: var
filesystems:
- path: /var
device: /dev/disk/by-partlabel/var
# Можно выбрать файловую систему, которая подходит
format: ext4
# Запросите Butane сгенерировать модуль монтирования, чтобы эта файловая система монтировалась в реальном корневом каталоге
with_mount_unit: true
Также возможно отдельно установить подраздел /var. Например, /var/lib/containers. Пример конфигурации для добавления подраздела /var/lib/containers на основной диск:
variant: sbcos
version: 3.2.0
storage:
disks:
- device: /dev/disk/by-id/oscore-boot-disk
wipe_table: false
partitions:
- number: 4
label: root
# Выделяйте как минимум 1 Гб дискового пространства
size_mib: 1024
resize: true
- size_mib: 0
label: containers
filesystems:
- path: /var/lib/containers
device: /dev/disk/by-partlabel/containers
format: xfs
with_mount_unit: true
Можно присоединить хранилище с другого диска. Например, примонтировать информацию об авторизации пользователей /var/log из раздела /dev/vdb.
Также можно добавить информацию об авторизации пользователей /var/log со вторичного диска. Пример конфигурации:
variant: sbcos
version: 3.2.0
storage:
disks:
- device: /dev/vdb
wipe_table: false
partitions:
- size_mib: 0
start_mib: 0
label: log
filesystems:
- path: /var/log
device: /dev/disk/by-partlabel/log
format: xfs
with_mount_unit: true
Определите диск с несколькими разделами. Например, ниже показано, как удалить диск и создать два новых раздела:
variant: sbcos
version: 3.2.0
storage:
disks:
-
# Для гарантии уникальности используется идентификатор World Wide Name (WWN) ID
device: /dev/disk/by-id/wwn-0x50014e2eb507fcdf
# Нужно убедиться, что таблица разделов и сами разделы созданы заново.
wipe_table: true
partitions:
# Размер первого раздела (слот номер 1) составляет 32 ГБ и начинается с нулевой отметки устройства.
# type_guid определен как Linux swap partition
- label: part1
number: 1
size_mib: 32768
start_mib: 0
type_guid: 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f
# Второй раздел (слот номер 2) будет располагаться сразу после первого раздела и займет все доступное дисковое пространство
# type_guid явно не указан, будет использоваться Linux native partititon
- label: part2
Перенастройка корневой файловой системы#
Для перенастройки корневой файловой системы используйте /dev/disk/by-label/root, как ссылку на изначальный тип разделения корневой системы. Убедитесь, что в новой файловой системе присутствует метка root. Пример конфигурации для перехода от файловой системы xfs к ext4, c повторным использованием одного и того же раздела на основном диске:
variant: sbcos
version: 3.2.0
storage:
filesystems:
- device: /dev/disk/by-partlabel/root
wipe_filesystem: true
format: ext4
label: root
Также можно полностью переместить корневую файловую систему. В примере ниже показан перенос root на устройство RAID0:
variant: sbcos
version: 3.2.0
storage:
raid:
- name: myroot
level: raid0
devices:
- /dev/disk/by-id/virtio-disk1
- /dev/disk/by-id/virtio-disk2
filesystems:
- device: /dev/md/myroot
format: xfs
wipe_filesystem: true
label: root
Необязательно указывать параметры (ключи) path и with_mount_unit, SberLinux OS Core найдет и установит специальный раздел root самостоятельно.
Чтобы продублировать загрузочный диск на несколько дисков для обеспечения отказоустойчивости, необходимо отобразить все разделы по умолчанию (корневой, загрузочный, системный раздел EFI и начальный boot). Для этого существует специальный синтаксис конфигурации Butane. Пример разделения загрузочного диска на две копии:
variant: sbcos
version: 3.2.0
boot_device:
mirror:
devices:
- /dev/sda
- /dev/sdb
Определение файловой системы#
Ниже приведен пример создания файловой системы путем определения и маркировки разделов, объединения их в RAID-массив и форматирования этого массива как ext4.
Определение файловой системы на устройстве хранения RAID в конфигурации Butane:
variant: sbcos
version: 3.2.0
storage:
disks:
# Здесь определяются два раздела, каждый на своем диске. Диски идентифицируются по World Wide Name (WWN) ID
- device: /dev/disk/by-id/wwn-0x50014ee261e524e4
wipe_table: true
partitions:
-
# Для каждого раздела назначается имя (label)
label: "raid.1.1"
# Каждый раздел начинается с нулевого сектора и имеет размер 64 ГБ
number: 1
size_mib: 65536
start_mib: 0
- device: /dev/disk/by-id/wwn-0x50014ee0b8442cd3
wipe_table: true
partitions:
- label: "raid.1.2"
number: 1
size_mib: 65536
start_mib: 0
# Используются ранее определенные разделы в качестве устройств в массиве RAID1 MD.
raid:
- name: publicdata
level: raid1
devices:
- /dev/disk/by-partlabel/raid.1.1
- /dev/disk/by-partlabel/raid.1.2
# Полученный массив MD используется для создания файловой системы EXT4.
filesystems:
- path: /var/publicdata
device: /dev/md/publicdata
format: ext4
label: PUB
with_mount_unit: true
Зашифрованное хранилище (LUKS)#
Пример настройки устройства LUKS в /var/lib/data:
variant: sbcos
version: 3.2.0
storage:
luks:
- name: data
device: /dev/vdb
filesystems:
- path: /var/lib/data
device: /dev/mapper/data
format: xfs
label: DATA
with_mount_unit: true
Корневую файловую систему также можно переместить в LUKS. В этом случае устройство LUKS должно быть связано с Clevis (подключаемый пользователем фреймворк для автоматического дешифрования. Его можно использовать для обеспечения автоматического дешифрования данных или даже автоматической разблокировки томов LUKS). Доступны два основных типа плагина: TPM2 и Tang (или комбинация тех плагинов, которые используют Shamir Secret Sharing).
Плагин TPM2 просто связывает шифрование с используемой физической машиной. Обязательно изучите документацию, прежде чем выбирать между TPM2 и Tang.
Примечание
Для работы должно быть не менее 1 ГБ оперативной памяти для повторного выделения корневого раздела.
Существует упрощенный синтаксис конфигурации Butane для настройки шифрования и связывания корневой файловой системы. Ниже приведен пример его использования для создания зашифрованной корневой файловой системы, связанной с плагином TPM2.
Шифрование корневой файловой системы с помощью TPM2 Clevis:
variant: sbcos
version: 3.2.0
boot_device:
luks:
tpm2: true
Это эквивалентно шифрованию корневой файловой системы с помощью TPM2 Clevis без использования boot_device, как представлено в следующей расширенной конфигурации:
variant: sbcos
version: 3.2.0
storage:
luks:
- name: root
label: luks-root
device: /dev/disk/by-partlabel/root
clevis:
tpm2: true
wipe_volume: true
filesystems:
- device: /dev/mapper/root
format: xfs
wipe_filesystem: true
label: root
Примечание
Можно не указывать параметры path и with_mount_unit, SberLinux OS Core найдет и установит специальный раздел root самостоятельно.
Пример шифрования корневой файловой системы с помощью Tang Clevis с упрощенным синтаксисом:
variant: sbcos
version: 3.2.0
boot_device:
luks:
tang:
- url: http://<example_IP>
thumbprint: bV8aajlyN6sYqQ41lGqD4zlhe0E
Далее система свяжется с сервером Tang при загрузке.
Можно настроить Tang и TPM2 связки (в том числе несколько серверов Tang для избыточности). По умолчанию для разблокировки корневой файловой системы требуется только устройство TPM2 или один сервер Tang. Это можно изменить с помощью параметра threshold.
Пример шифрования корневой файловой системы с помощью TPM2 и Tang:
variant: sbcos
version: 3.2.0
boot_device:
luks:
tang:
- url: http://<example_IP>
thumbprint: bV8aajlyN6sYqQ41lGqD4zlhe0E
tpm2: true
# это позволит разблокировать rootfs только в том случае, если PINs TPM 2 и Tag доступны и действительны
threshold: 2
Установка размера корневого раздела#
Если используется Ignition для перенастройки или перемещения корневого раздела, этот раздел не будет расширяться автоматически при первой загрузке. В случае перемещения корневого раздела на новый диск (или на несколько дисков) следует установить желаемый размер раздела с помощью параметра size_mib. При перенастройке корневой файловой системы измените размер существующего раздела, используя поле resize.
Пример переназначения размера корневого раздела до максимального:
variant: sbcos
version: 3.2.0
storage:
disks:
- device: /dev/vda
partitions:
- label: root
number: 4
# 0 означает использование всего доступного пространства
size_mib: 0
resize: true
luks:
- name: root
device: /dev/disk/by-partlabel/root
clevis:
tpm2: true
wipe_volume: true
filesystems:
- device: /dev/mapper/root
format: xfs
wipe_filesystem: true
label: root
Добавление подкачки (swap)#
Можно создать раздел подкачки, охватывающий все устройство sdb, выделить на нем область для работы и создать блок подкачки systemd, чтобы область была включена при загрузке.
На примере ниже представлена настройка раздела подкачки на втором диске:
variant: sbcos
version: 3.2.0
storage:
disks:
- device: /dev/sdb
wipe_table: true
partitions:
- number: 1
label: swap
filesystems:
- device: /dev/disk/by-partlabel/swap
format: swap
wipe_filesystem: true
with_mount_unit: true
Добавление сетевого хранилища#
SberLinux OS Core может быть настроена для монтирования сетевых файловых систем, таких как NFS и CIFS. Рекомендуется это делать с помощью конфигурации Ignition. Файловые системы можно смонтировать при загрузке, создав стандартный блок монтирования. Кроме того, файловая система может быть настроена, когда пользователи получают доступ к точке монтирования, создав дополнительный блок автомонтирования. Ниже приведены примеры каждого из них для файловой системы NFS.
Настройка монтирования NFS#
Пример создания системного устройства для подключения файловой системы NFS при загрузке:
Примечание
Файл .mount должен быть привязан к пути файла (например,/var/mnt/data = var-mnt-data.mount.)
variant: sbcos
version: 3.2.0
systemd:
units:
- name: var-mnt-data.mount
enabled: true
contents: |
[Unit]
Description=Mount data directory
[Mount]
What=example.org:/data
Where=/var/mnt/data
Type=nfs4
[Install]
WantedBy=multi-user.target
Пример создания системного устройства для монтирования файловой системы NFS при доступе пользователей к точке монтирования (автомонтирование):
variant: sbcos
version: 3.2.0
systemd:
units:
- name: var-mnt-data.mount
contents: |
[Unit]
Description=Mount data directory
[Mount]
What=example.org:/data
Where=/var/mnt/data
Type=nfs4
[Install]
WantedBy=multi-user.target
- name: var-mnt-data.automount
enabled: true
contents: |
[Unit]
Description=Automount data directory
[Automount]
TimeoutIdleSec=20min
Where=/var/mnt/data
[Install]
WantedBy=multi-user.target
Разметка диска#
При первой загрузке корневая файловая система заполняет остальную часть диска. Образ диска можно настроить с использованием конфигураций Butane для перераспределения разделов диска и для создания/переформатирования файловых систем. Установка на Bare metall аналогична – установщик копирует изначальный образ на целевой диск и вводит указанный конфигуратор в /boot для использования при первой загрузке.
Таблицы разделов#
Использование чисел для обозначения конкретных разделов не рекомендуется, вместо этого используйте метки (labels) или UUID. В SberLinux OS Core используются следующие labels:
boot;boot-\<number>;root;root-\<number>;BIOS-BOOT;bios-\<number>;EFI-SYSTEM;esp-\<number>;md-boot;md-rootдля имен RAID-устройств.
Примечание
Не рекомендуется создавать новые разделы, файловые системы или RAID-устройства с вышеприведенными именами.
Таблица разделов x86_64#
Образ диска x86_64 отформатирован GPT с защитным MBR. Он поддерживает загрузку через BIOS и UEFI (включая безопасную загрузку).
Макет разделов для x86_64 представлен в таблице ниже:
Номер |
Метка |
Содержание |
Тип раздела |
|---|---|---|---|
1 |
|
Образ BIOS GRUB |
Исходные данные |
2 |
|
Образ EFI GRUB и прокладка безопасной загрузки |
FAT32 |
3 |
|
Конфигурация GRUB, образы |
|
4 |
|
Корневая файловая система |
|
Раздел EFI-SYSTEM можно удалить или переформатировать при загрузке BIOS. Аналогичным образом BIOS-BOOT - при загрузке EFI.
Установленные файловые системы#
SberLinux OS Core использует OSTree — систему для управления несколькими деревьями загрузочных операционных систем, которые совместно используют хранилище. В SberLinux OS Core каждая версия операционной системы является частью файловой системы /. Все развертывания используют одно и то же хранилище /var, которое может находиться в одной файловой системе или монтироваться отдельно. В SberLinux OS Core каждая версия ОС является частью файловой системы.
Ниже показаны точки монтирования по умолчанию на x86_64 для системы SberLinux OS Core, установленной на диске /dev/vda:
findmnt --real #некоторые детали опущены
Пример вывода команды:
TARGET SOURCE FSTYPE OPTIONS
/ /dev/vda4[/ostree/deploy/sb-oscore/deploy/$hash] xfs rw
|-/sysroot /dev/vda4 xfs ro
|-/etc /dev/vda4[/ostree/deploy/sb-oscore/deploy/$hash/etc] xfs rw
|-/usr /dev/vda4[/ostree/deploy/sb-oscore/deploy/$hash/usr] xfs ro
|-/var /dev/vda4[/ostree/deploy/sb-oscore/deploy/var] xfs rw
`-/boot /dev/vda3 ext4 ro
В примере раздел системы EFI, который ранее был установлен на /boot/efi, находится в другом месте. В системах, настроенных с зеркалированием загрузочных устройств, на каждом входящем диске есть независимые разделы EFI.
Неизменяемые точки монтирования / и /usr#
В SberLinux OS Core раздел /usr предназначен только для чтения, поэтому каталог /usr/local/bin/ также будет доступен только для чтения (если не будет смонтирован другой диск). Это позволяет использовать автоматическое обновление SberLinux OS Core.
Поскольку OSTree используется для управления всеми файлами, принадлежащими ОС, точки монтирования / и /usr не предназначены для записи. Любые изменения в ОС должны применяться через rpm-ostree.
Точка монтирования /boot также не предназначена для записи, потому что система разделов EFI не монтируется по умолчанию. Эти файловые системы управляются rpm-ostree и bootupd, и не должны изменяться администратором.
/ (в корне файловой системы в корневом разделе) настроен в режиме «только для чтения» в /sysroot, и также должен быть недоступен для просмотра и изменений напрямую.
Конфигурация /etc и состояние /var#
Единственные поддерживаемые места для записи – это /etc и /var. Каталог /etc должен содержать только файлы конфигурации, хранение данных не допускается. Все данные должны храниться в каталоге /var, не изменяемом при обновлениях системы.
Места, обычно используемые для хранения неизменной информации (например, /home или /srv), являются символическими ссылками на каталоги в /var (например, /var/home или /var/srv).
Выбор версии и загрузка#
Вход в меню загрузчика операционной системы GRUB создается для каждой версии SberLinux OS Core, которая в настоящее время доступна в системе. Вход в меню ссылается на развертывание ostree, которое состоит из ядра Linux, инициатора и хеша, связывающегося с ostreecommit (передается через аргумент ядра Ostree =). Во время загрузки ostree прочитает этот аргумент ядра, чтобы определить, какое развертывание использовать в качестве корневой файловой системы. Каждое обновление или изменение в системе (установка пакета, добавление аргументов ядра) создает новое развертывание. Это позволяет возвращаться к предыдущей версии, если обновление вызывает проблемы.