Перенос Calculate на LVM2 раздел

Доброго времени суток!

Хотелось бы поделиться опытом переноса CDS на LVM том. К сожалению, пока в калькулейте нет поддержки LVM томов, хотя сам софт присутствует. Так что дело остаеться за малым — пересобрать ядро с поддержкой Device Mapper:

Для этих целей используем скрипт genkernel:

 # genkernel --menuconfig --lvm2 all

Другие интересные параметры смотрим здесь и в манах. После запуска скрипта появиться меню, в котором нам нужно будет включить следующие пункты:

Device Drivers --->
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
< > RAID support
<*> Device mapper support

По окончании сборки ядра и 3х кружек кофе, новое ядро и initramfs сами появяться в папке /boot. Далее правим /boot/grub/grub.conf, где заменяем следующие значения:

kernel /boot/vmlinuz --> /boot/ kernel-x86_64-2.6.31-gentoo-r6
initrd /boot/initrd --> initrd /boot/initramfs-x86_64-2.6.31-gentoo-r6

После чего перезагружаемся с новым ядром и поднимаем зеркальный рэйд. Для начала укажем какие разделы будут использоваться в рэйде:

 # pvcreate /dev/sda3 /dev/sda4 /dev/sdb

В данном случае я добавил 3 раздела, т.к. на одном из них будет распологаться журнал, используемый для синхронизации зеркал, но об этом ниже. А пока добавим эти диски в виртуальную группу VGMirror:

 # vgcreate VGMirror /dev/sda3 /dev/sda4 /dev/sdb

А вот теперь можно создать зеркало размером 20Гб:

 # lvcreate -L 20G -m 1 -n MirrorVolume VGMirror

Вот вы и стали счастливым обладателем рэйда 1 уровня, находящийся по адресу /dev/VGMirror/MirrorVolume :slight_smile: Так же можно было создать зеркальный рэйд из двух дисков, используя параметр --corelog, но при этом при каждой перезагрузке производилась бы полная ресинхронизация дисков, что не по феншую.
Теперь можем приступить к переносу системы на новый раздел. Для начала создадим на нем файловую систему:

 # mkfs.ext4 /dev/VGMirror/MirrorVolume

И смонтируем, куда не жалко :wink:

 # mount /dev/VGMirror/MirrorVolume /mnt/calculate

И, собственно говоря, переносим все из корня на новый раздел, кроме папочки /proc:

 # cd / ;cp $(ls /|sed 's\proc\\') /mnt/calculate -axv

А пока копируется вся эта куча хлама, лезем в /boot/grub/grub.conf (который все еще находиться на /dev/sda2) и добавляем к параметрам ядра dolvm директиву для автоматического обнаружения и активации LVM томов и меняем параметр root:

root=/dev/sda2 --> root=/dev/mapper/VGMirror-MirrorVolume

Вот и все, тепереь можно перезагрузиться и помолиться:)

PS После удачного запуска системы можно сносить первоначальную, а /boot перенести на свой маленький и шустренький раздел под ext2. Но лучше все же ограничиться переносом /boot’а, а root на /dev/sda2 оставить для такой замечательной вещи, присутствующей в Calculate Linux, как обновление системы.

PSS Кстати, если вы планируете удалять винты из раздела, то советую использовать ext* разделы, т.к. их можно не только увеличивать, но и урезать.

Источники:
LVM Configuration
Повесть о Linux и LVM (Logical Volume Manager)
LVM HOWTO
man

Оригинал моей статьи можно посмотреть на хабре

Это подойдёт только для серверов, на которых есть функция горячей замены жд… В иных случаях RAID подобного плана на мой взгляд бесполезен. А я бы не сказал, что так много людей ставят в офисах именно сервера.

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

Для зеркалирования необходимо включить CONFIG_DM_MIRROR.

–lvm2 заменён на (просто) --lvm

Как ни странно, но в офисах сервера тоже бывают нужны, даже очень.

Под словом “сервер” в последнем предложении я имел в виду именно специализированную под это машину. :slight_smile:

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

Я про это и говорил… :slight_smile: Наиболее полезные в этом смысле именно RAID 5 и 6.

так или иначе, но переносить систему методом

# cd / ;cp $(ls /|sed 's\proc\\') /mnt/calculate -axv

не очень разумно.
во первых хард линки не цепляются,во вторых кроме proc существуют еще udev, sysfs и у каждого куча разного хлама подобного. думаю гораздо разумнее будет

mkdir /tmp/root
mount --bind / /tmp/root
rsync -avHA /tmp/root /mnt/calculate