Перенос ALT Linux 5.9.9 на программный RAID
				
				
							
					Есть рабочий сервер ALT Linux 5.9.9, с него содержимое диска перенесено на 1 из 2х жестких дисков на новом сервере. Нужно объединить 2 жестких диска на новом сервере в программный RAID 1. Загружаем Live CD ALT (у меня версии 5.0) на новом сервере.
Диск с перенесенными данными:
Пустой жесткий диск:
На 1м диске меняем типы разделов на fd (linux raid), кроме /dev/sda2 — это swap раздел:
Создаем raid массив с первым жестким диском. Устройство /dev/md1 будет содержать раздел /dev/sda1 (там /boot) и, /dev/md3 — /dev/sda3 (там корневая файловая система):
Проверяем:
Если пришлось перезагрузиться, снова подключить raid разделы можно командой:
Монтируем корневую файловую систему:
Редактируем настройки mdadm.conf. Смотрим старые насторйки:
Добавляем наши raid устройства:
Теперь файл выглядит так:
Правим /etc/fstab. Старый выглядит так:
Заменяем UUID=* на /dev/md*, также подключаем 2 swap раздела — /dev/sda2 и /dev/sdb2:
Заходим в старую систему, используя chroot:
Монтируем в ней /boot раздел (т.к. он располагается на /dev/md1):
Теперь нам придется пересобрать ядро для того, чтобы оно включало в себя статически вкомпилированные модули raid и ext3, иначе при загрузке система зависнет при попытке смонтировать корневую файловую систему с устройства /dev/md3:
Устанавливаем подходящее нам ядро и исходники ядра (в моем случае — версии 2.6.37):
Копируем настройки ядра в распакованные исходники ядра /usr/src/kernel/sources/kernel-source-2.6.37:
Теперь удаляем все ненужные ядра, отныне будем использовать только наше самодельное:
Запускаем конфигурацию ядра:
В Device Drivers -> Multiple devices driver support (RAID and LVM) делаем модули raid статическими:

В File systems делаем модули ext2 и ext3 статическими:

Собираем ядро:
Устанавливаем новое ядро:
Правим /etc/grub.d/grub.cfg, кардинально его упростив. После правки не забываем куда-нибудь сохранить новый config, чтобы после неосторожного обновления дистрибутива можно было восстановить:
Смотрим файл /boot/grub/device.map:
ata-MAXTOR_STM3250310AS_6RYJEGZR — воспоминания о жестком диске, который был установлен в старом сервере. Нам необходимо заменить на новый. Список всех дисков можно просмотреть так:
Правим /boot/grub/device.map:
Устанавливаем загрузчик:
Перезагружаемся...
Добавим 2й жесткий диск в raid массив:
Копируем таблицу разделов с 1го диска на 2й:
Смотрим, что получилось:
Активируем swap раздел на 2м диске:
mdadm автоматически подхватывает разделы с типом fd диска /dev/sdb, но нам это не нужно:
Удаляем автоматически добавленные устройства:
Добавляем разделы /dev/sdb1 и /dev/sdb3 в RAID 1:
Проверяем, что процесс пошел и на разделы /dev/sdb делается копия:
Такие дела. Мне не нравится, как происходит установка ядер в ALT Linux. Для пользователя это удобно, а для меня нет, поэтому все ядра я удалил и оставил только одно свое с поддержкой загрузки с программного RAID.
www.linuxconfig.org/Linux_Software_Raid_1_Setup
				
								
				
			
			Диск с перенесенными данными:
/sbin/fdisk -l /dev/sdaДиск /dev/sda: 500.1 ГБ, 500107862016 байт
255 heads, 63 sectors/track, 60801 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1               1          64      514048+  83  Linux
/dev/sda2              65         829     6144862+  82  Linux своп / Solaris
/dev/sda3             830       60801   481725090   83  LinuxПустой жесткий диск:
/sbin/fdisk -l /dev/sdbДиск /dev/sdb: 500.1 ГБ, 500107862016 байт
255 heads, 63 sectors/track, 60801 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x1783f861
Устр-во Загр     Начало       Конец       Блоки   Id  СистемаНа 1м диске меняем типы разделов на fd (linux raid), кроме /dev/sda2 — это swap раздел:
/sbin/sfdisk --change-id /dev/sda 1 fd
/sbin/sfdisk --change-id /dev/sda 3 fdСоздаем raid массив с первым жестким диском. Устройство /dev/md1 будет содержать раздел /dev/sda1 (там /boot) и, /dev/md3 — /dev/sda3 (там корневая файловая система):
/sbin/mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sda1
/sbin/mdadm --create /dev/md3 --level=1 --raid-disks=2 missing /dev/sda3Проверяем:
cat /proc/mdstatPersonalities : [raid1]
md1 : active raid1 sda1[1]
      513984 blocks [2/1] [_U]
md3 : active raid1 sda3[1]
      481724992 blocks [2/1] [_U]Если пришлось перезагрузиться, снова подключить raid разделы можно командой:
/sbin/mdadm --auto-detectМонтируем корневую файловую систему:
mkdir /mnt/old && mount /dev/md3 /mnt/oldРедактируем настройки mdadm.conf. Смотрим старые насторйки:
cat /mnt/old/etc/mdadm.conf#
#  /etc/mdadm.conf  --  mdadm configuration file
#
#  Customized for ALTLinux
#  See complete sample on manual page and in documentation directory
#
#  This is a minimalistic skeleton but it should work out-of:a+box!
#
MAILADDR root
PROGRAM /sbin/mdadm-syslog-events
DEVICE partitionsДобавляем наши raid устройства:
/sbin/mdadm --detail --scan >> /mnt/old/etc/mdadm.confТеперь файл выглядит так:
cat /mnt/old/etc/mdadm.conf#
#  /etc/mdadm.conf  --  mdadm configuration file
#
#  Customized for ALTLinux
#  See complete sample on manual page and in documentation directory
#
#  This is a minimalistic skeleton but it should work out-of:a+box!
#
MAILADDR root
PROGRAM /sbin/mdadm-syslog-events
DEVICE partitions
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=510d9c07:30cf085b:5ad24bd1:97278a7d
ARRAY /dev/md3 level=raid1 num-devices=2 UUID=238fb70f:5062c6d3:f3093ac7:66b17487Правим /etc/fstab. Старый выглядит так:
cat /mnt/old/etc/fstabproc            /proc                   proc    nosuid,noexec,gid=proc          0 0
devpts          /dev/pts                devpts  nosuid,noexec,gid=tty,mode=620  0 0
tmpfs           /tmp                    tmpfs   nosuid                          0 0
UUID=84f7b84c-5b15-41c5-be7b-f25ee4d9fe44       /       ext3    defaults,errors=remount-ro    0 0
UUID=b4d6e146-865c-4c2e-8906-27239a2be101       /boot   ext2    nodev,nosuid,noexec,relatime  1 2
UUID=e78e7b68-dc62-4077-b97f-9868ee48e6c1       swap    swap    defaults        0 0
/dev/sr0        /media/cdrom            udf,iso9660 ro,noauto,user,utf8         0 0Заменяем UUID=* на /dev/md*, также подключаем 2 swap раздела — /dev/sda2 и /dev/sdb2:
proc            /proc                   proc    nosuid,noexec,gid=proc          0 0
devpts          /dev/pts                devpts  nosuid,noexec,gid=tty,mode=620  0 0
tmpfs           /tmp                    tmpfs   nosuid                          0 0
/dev/md3        /                       ext3    defaults,errors=remount-ro      0 0
/dev/md1        /boot                   ext2    nodev,nosuid,noexec,relatime    1 2
/dev/sda2       swap                    swap    defaults                        0 0
/dev/sdb2       swap                    swap    defaults                        0 0
/dev/sr0        /media/cdrom            udf,iso9660     ro,noauto,user,utf8     0 0Заходим в старую систему, используя chroot:
mount -o bind /dev /mnt/old/dev/ && mount -o bind /proc /mnt/old/proc/ && mount -o bind /sys /mnt/old/sys//sbin/chroot /mnt/old/Монтируем в ней /boot раздел (т.к. он располагается на /dev/md1):
mount /dev/md1 /boot/Теперь нам придется пересобрать ядро для того, чтобы оно включало в себя статически вкомпилированные модули raid и ext3, иначе при загрузке система зависнет при попытке смонтировать корневую файловую систему с устройства /dev/md3:
Устанавливаем подходящее нам ядро и исходники ядра (в моем случае — версии 2.6.37):
apt-get install kernel-image-std-pae kernel-source-2.6.37Копируем настройки ядра в распакованные исходники ядра /usr/src/kernel/sources/kernel-source-2.6.37:
cp /boot/config-2.6.35-std-pae-alt9 /usr/src/kernel/sources/kernel-source-2.6.37/.configТеперь удаляем все ненужные ядра, отныне будем использовать только наше самодельное:
apt-get remove kernel-image-std-paeЗапускаем конфигурацию ядра:
make menuconfigВ Device Drivers -> Multiple devices driver support (RAID and LVM) делаем модули raid статическими:

В File systems делаем модули ext2 и ext3 статическими:

Собираем ядро:
make all
make modules_installУстанавливаем новое ядро:
cp /usr/src/kernel/sources/kernel-source-2.6.37/arch/x86/boot/bzImage /boot/vmlinuz-2.6.37
cp /usr/src/kernel/sources/kernel-source-2.6.37/System.map /boot/System.map-2.6.37
/sbin/mkinitrd /boot/initrd.img-2.6.37 2.6.37Правим /etc/grub.d/grub.cfg, кардинально его упростив. После правки не забываем куда-нибудь сохранить новый config, чтобы после неосторожного обновления дистрибутива можно было восстановить:
set timeout=5
menuentry "ALT Linux 2.6.37 PAE MDRAID " --class gnu-linux --class gnu --class os {
        set root='(md1)'
        search --no-floppy --fs-uuid --set b4d6e146-865c-4c2e-8906-27239a2be101
        echo    'Loading Linux  ...'
        linux   /vmlinuz-2.6.37 root=/dev/md3 ro panic=30
        echo    'Loading initial ramdisk ...'
        initrd  /initrd.img-2.6.37
}Смотрим файл /boot/grub/device.map:
cat /boot/grub/device.map(fd0)   /dev/fd0
(hd0)   /dev/disk/by-id/ata-MAXTOR_STM3250310AS_6RYJEGZRata-MAXTOR_STM3250310AS_6RYJEGZR — воспоминания о жестком диске, который был установлен в старом сервере. Нам необходимо заменить на новый. Список всех дисков можно просмотреть так:
ls /dev/disk/by-id/Правим /boot/grub/device.map:
(fd0)   /dev/fd0
(hd0)   /dev/disk/by-id/ata-WDC_WD5003ABYX-01WERA0_WD-WMAYP0095893Устанавливаем загрузчик:
/usr/sbin/grub-install /dev/md1Перезагружаемся...
Добавим 2й жесткий диск в raid массив:
Копируем таблицу разделов с 1го диска на 2й:
/sbin/sfdisk -d /dev/sda | /sbin/sfdisk /dev/sdbСмотрим, что получилось:
/sbin/fdisk -l /dev/sdbDisk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, всего 976773168 секторов
Units = секторы of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1783f861
Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdb1              63     1028159      514048+  fd  Автоопределение Linux raid
/dev/sdb2         1028160    13317884     6144862+  82  Linux своп / Solaris
/dev/sdb3        13317885   976768064   481725090   fd  Автоопределение Linux raidАктивируем swap раздел на 2м диске:
/sbin/mkswap /dev/sdb2
/sbin/swapon /dev/sdb2mdadm автоматически подхватывает разделы с типом fd диска /dev/sdb, но нам это не нужно:
cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty] 
md126 : inactive sdb3[0](S)
      481724992 blocks
       
md127 : inactive sdb1[0](S)
      513984 blocks
       
md1 : active raid1 sda1[1]
      513984 blocks [2/1] [_U]
      
md3 : active raid1 sda3[1]
      481724992 blocks [2/1] [_U]Удаляем автоматически добавленные устройства:
/sbin/mdadm -S /dev/md126
/sbin/mdadm -S /dev/md127Добавляем разделы /dev/sdb1 и /dev/sdb3 в RAID 1:
/sbin/mdadm --add /dev/md1 /dev/sdb1
/sbin/mdadm --add /dev/md3 /dev/sdb3Проверяем, что процесс пошел и на разделы /dev/sdb делается копия:
cat /proc/mdstatPersonalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty] 
md1 : active raid1 sdb1[0] sda1[1]
      513984 blocks [2/2] [UU]
      
md3 : active raid1 sdb3[2] sda3[1]
      481724992 blocks [2/1] [_U]
      [>....................]  recovery =  0.3% (1560448/481724992) finish=76.9min speed=104029K/sec
      
unused devices: <none>Такие дела. Мне не нравится, как происходит установка ядер в ALT Linux. Для пользователя это удобно, а для меня нет, поэтому все ядра я удалил и оставил только одно свое с поддержкой загрузки с программного RAID.
www.linuxconfig.org/Linux_Software_Raid_1_Setup

Комментарии (3)
RSS свернуть / развернутьMarkony
yababay
Sergei_T
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.