Кто поднимает объемы lvm и как при загрузке? - PullRequest
0 голосов
/ 24 мая 2019

Я знаю, что информация о логических томах сохраняется в метаданных lvm, и инструменты из lvm2 можно использовать для их сканирования и настройки DM ядра с помощью ioctl. Мне любопытно, кто это делает во время загрузки, чтобы мы могли монтировать lv как rootfs, systemd?

1 Ответ

0 голосов
/ 27 мая 2019

Я только что нашел ответ сам. http://www.system -rescue-cd.org / LVM-гид-ен / Загрузка-линукс-из-LVM-томов /

Цитировать содержание по ссылке выше.

Вот важные шаги при загрузке с LVM:

1. BIOS выполняет загрузчик, который очень часто Grub

2.В загрузчике имеется собственный код для чтения разделов и файловых систем. Так что он знает, как читать файлы из раздела / boot который содержит образ ядра Linux (vmlinuz-x.y.z) и initramfs (initrd-x.y.z.gz). Сначала эти два файла загружаются в объем памяти. Затем он выполняет образ ядра и сообщает ядру где initramfs находится в памяти. Командная строка загрузки также перешел на ядро. Эта командная строка содержит важные параметры для ядра, такие как root = / dev / volgroup / lvroot.

3. Ядро Linux запускается и выполняет свой код инициализации. Затем он читает initramfs из памяти. Содержимое распаковано в новое место в памяти.

4. Содержимое initramfs теперь доступно. Программа / скрипт с именем init теперь выполняется. Этот скрипт, который специфичен для каждого Дистрибутив linux отвечает за поиск корневой файловой системы.

5.Если физические тома LVM хранятся в верхней части диска RAID, программа init сначала выполняет dmraid / mdadm, чтобы выполнить этот рейд. диск доступен.

6. Затем сценарий инициализации будет запускать такие программы, как pvscan / vgscan / lvscan, для определения томов LVM, расположенных на дисках. Тома LVM не являются можно использовать еще. Они должны быть активированы в первую очередь. Это сделано vgchange --доступно y или vgchange -ay.

7. Сценарий init считывает виртуальный файл / proc / cmdline, чтобы увидеть, какое имя корневой файловой системы указано в команде загрузки. линия.

8. Корневая файловая система монтируется во временный каталог, такой как / rootfs, и другие вещи, такие как / rootfs / proc и / rootfs / dev, также могут быть установленным.

9. Initscript выполняет chroot для / rootfs. Это означает, что этот каталог становится новым корнем для процессов, которые будут казнены. Когда процесс читает / bin / что-то, он будет читать / rootfs / bin / что-то в реальности.

10. Вторичная программа init, которая хранится в корневой файловой системе, теперь выполняется и завершает инициализацию с помощью доступ к настоящей корневой файловой системе.

...