rilpoint_mw113

Перенос CentOS

Ситуация: нужно заменить в сервере жесткий диск, на котором стоит CentOS(или любой другой дистрибутив Linux) на новый, другого размера. CentOS установлен с разбиением диска по умолчанию, т.е. /boot на маленькой ext3 партиции, / в LVM и swap в LVM

Исходно: /boot /dev/hda1 / /dev/VolGroup00/LogVol00 swap /dedev/VolGroup00/LogVol01

Выключаем сервер.

Подключаем новый жесткий диск. (предположим, что он встал на pri.slave и называется /dev/hdb)

Загружаемся с установочного диска CentOS в rescue режиме

linux rescue

Соглашаемся с предложением найти и примонтировать системную партицию. Проверяем.

# ls /mnt/sysimage ; ls /mnt/sysimage/boot

Создаем новые партиции на новом диске

# fdisk /dev/hdb

n (новая партиция)
p (primary партиция)
1 (номер партиции)
<enter> (начало партиции)
+100M (размер партиции)
(это будет /boot)

n
p
2
<enter>
<enter>
(а это будущий LVM)

t (меняем тип партиции чтобы не спутать ее с другими)
2 (вторая партиция - LVM)
8e (тип партиции - Linux LVM)

w (сохранили и вышли)

Далее создаем партиции внутри LVM

lvm
> pvcreate /dev/hdb2
> vgcreate VolGroup01 /dev/hdb2
> lvcreate -L 10G -n LogVol00 VolGroup01 (10G - размер будущей / партиции.
     должен быть не меньше объема информации в текущей
     партиции и не больше свободного места в новом VG.
     размер считаем с учетом swap'а.)
> lvcreate -L 1G -n LogVol01 VolGroup01 (партиция под swap.
     можно занять все оставшееся место, если посмотреть
     количество Free PE в новом VG командой vgdisplay
     и задать вместо -L 10G флаг -l <количество свободных PE>)
> quit

Создаем файловые системы

# mkfs.ext3 /dev/hdb1
# mkfs.ext3 /dev/VolGroup01/LogVol00
# mkswap /dev/VolGroup01/LogVol01

Монтируем

# mkdir /mnt/newsys
# mkdir /mnt/newsysboot
# mount /dev/hdb1 /mnt/newsysboot
# mount /dev/VolGroup01/LogVol00 /mnt/newsys

Переносим файлы

# cd /mnt/newsysboot ; dump -f- /mnt/sysimage/boot | restore -rf-
# cd /mnt/newsys ; dump -f- /mnt/sysimage | restore -rf-

Первая команда выполнится почти моментально - файлов в /boot немного. А вот после запуска второй можно спокойно дойти до ближайшей кафешки и перекусить, параллельно почитав man'ы на наладоннике. На IDE жестких дисках почти новая система(стандартный server комплект плюс еще немного дополнительного софта плюс конфиги) переносится чуть больше часа.

Кстати, по умолчанию /boot монтируется из fstab по метке. Новая система не найдет партицию. Надо либо изменить fstab, либо изменить метку партиции:

# e2label /dev/hdb1 /boot

Выключаем компьютер.

# poweroff

Отцепляем старый диск, ставим новый нужным устройством(pri.master в нашем случае).

Загружаемся... нет, не угадали, опять с установочного диска в rescue. Что мы забыли? Поставить загрузчик в MBR нового диска, без него система не загрузится.

# chroot /mnt/sysimage /bin/bash
# grub-install /dev/hda
# exit

И переименовать VolGroup01 в VolGroup00, чтобы система нашла свои диски.

# umount /mnt/sysimage/boot /mnt/sysimage/dev /mnt/sysimage/proc /mnt/sysimage
# lvm
> vgrename VolGroup01 VolGroup00
> quit
# exit

Грузимся с нового жесткого диска.

Ура, все заработало. Требуем с хозяина сервера ящик пива.

# mail owner@ourserver.com
Subj: Все заработало
Сабж. В качестве моральной компенсации прошу выделить мне ящик пива.
.

Пьем пиво с хозяином сервера.