На том же зеркале репозиториев Debian для пользователей Уфанета я настраивал LVM. У меня было несколько жёстких дисков, которые мне хотелось задействовать для хранения репозиториев. Тогда я решил это сделать, объединив все эти жёсткие диски с помощью LVM, и создав на нём отдельный большой раздел для хранения репозиториев. Для этой цели я даже прикупил SATA-контроллер с интерфейсом PCI, потому что в этом компьютере встроенного контроллера SATA не было.
Надо сказать, что использование LVM на этом компьютере принесло мне не только полезный опыт, но и некоторые неразрешимые проблемы. Компьютер мой с этого контроллера грузиться не умел, и поэтому раздел с загрузчиком я расположил на IDE-диске, за пределами пространства LVM. Однако SATA-диски каким-то образом сбивали нумерацию дисков в BIOS, в результате чего загрузка начиналась именно с них, хотя они не отображались в меню BIOS. Отключить загрузку с SATA-контроллера совсем мне тоже не удалось.
В результате образовалась комичная ситуация - для того, чтобы загрузить систему, мне нужно было перед перезагрузкой отключать SATA-диски от контроллера. А когда BIOS уже начинал загрузку с IDE-диска, мне нужно было быстро их подключить снова, чтобы Linux нормально смонтировал разделы LVM. Впрочем, делать это мне пришлось всего несколько раз - этот домашний сервер никогда специально не выключался и грузить его таким способом приходилось только после сбоев электропитания или после перезагрузки, связанной с установкой обновлений ядра.
Заметка эта так и не была доработана до конца, и в итоге так и осталась схематичной, однако она всё равно остаётся полезной.
Устанавливаем утилиты для работы с томами LVM:
# apt-get install lvm2
Подготовка initrd для работы ядра с корневой файловой системой в томе LVM:
# cp /usr/share/initramfs-tools/hooks/lvm2 /etc/initramfs-tools/hooks/ # cp /usr/share/initramfs-tools/scripts/local-top/* /etc/initramfs-tools/scripts/local-top/ # update-initramfs -u
Теперь очередь GRUB. У меня стоит grub 0.97 и менять мне его пока не хочется. Поэтому нужно создать отдельный раздел для /boot. Оценив объём файлов, находящихся в каталоге /boot с помощью команды du -h --max-depth 0 /boot, я решил создать раздел boot объёмом 50 мегабайт.
Переносим содержимое /boot в новый раздел (описание процедуры переноса опущено), на оставшемся пустом месте диска создаём раздел LVM, в котором создаём логический раздел для корневой файловой системы. Переносим корневой раздел, за исключением содержимого /boot, в логический том LVM.
После того, как перенос окончен, в файле /boot/grub/menu.lst находим строчки:
title Debian GNU/Linux, kernel 2.6.26-2-686 root (hd0,1) kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/hda2 ro initrd /boot/initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode) root (hd0,1) kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/hda2 ro single initrd /boot/initrd.img-2.6.26-2-686
И меняем их на следующие:
title Debian GNU/Linux, kernel 2.6.26-2-686 root (hd0,1) kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/mapper/vg-root ro initrd /boot/initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode) root (hd0,1) kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/mapper/vg-root ro single initrd /boot/initrd.img-2.6.26-2-686
В файле /etc/fstab делаем такую-же замену. Заменяем:
/dev/hda2 / ext3 defaults,errors=remount-ro 0 1
На:
/dev/mapper/vg-root / ext3 defaults,errors=remount-ro 0 1
Можно перезагружаться.