Перенос сервера на диск большего размера

Новая задача: на дисках закончилось место под данные - нужно ставить новые. Выбор пал на Seagate Barracuda XT 2 TB. В диске реализована технология Advanced Format (www.seagate.com), поэтому для максимальной эффективности (hdparm показывал скорость чтения/записи порядка 120-130 мегабайт/сек) разделы нужно выравнивать на границах 4Kb, т.е. 8 секторов по 512 байт. Этот диск больше 2 терабайт, и при разметке обычная MBR уже не применяется, нужно использовать GPT, а работает с ней parted.

Для начала выведем диск из raid1:

# cat /proc/mdstat
# mdadm --detail /dev/md0
# mdadm --manage /dev/md0 --fail /dev/sdb1
# mdadm --manage /dev/md0 --remove /dev/sdb1

К слову, после замены диска собрать массив обратно можно будет следующими командами (только в случае старой MBR):

# sfdisk -d /dev/sda | sfdisk /dev/sdb
# mdadm --manage /dev/md0 --add /dev/sdb1
# mdadm --wait /dev/md0

После вставки нового диска создаём новую таблицу разделов и разделы:

# parted /dev/sdb
...
(parted) u                                                                
Unit?  [compact]? s                                                       
(parted) mklabel gpt
(parted) mkpart bios_boot 40 2047 # раздел для GRUB
(parted) set 1 bios_grub on
(parted) mkpart swap 2048 16779263 # swap
(parted) mkpart boot 16779264 17827839 # разделы системы
(parted) set 3 raid on
(parted) mkpart root 17827840 84936703
(parted) set 4 raid on
...

Если используем Advanced Forman + GPT + GRUB, то в начале диска должен быть раздел для тела загрузчика, причём начинаться он должен с сектора 40 (для выравнивания по внутренним границам HDD). Рекомендуемый его размер 1Мб, но я делаю чуть меньше (на те же 40 секторов или 20Кб), чтобы границы разделов были кратны 1Мб и parted был доволен.

При создании раздела указываем первый и последний сектора, для чего используем формулу
<последний сектор> = <предыдущий последний сектор> + 2*1024*<размер раздела в мегабайтах>
или
<последний сектор> = <предыдущий последний сектор> + 2*1024*1024*<размер раздела в гигабайтах>

...

После разбивки диска командой partprobe заставляем систему перечитать раблицы разделов и создаём raid1 (зеркало) без одного диска:

# mdadm --create --level=1 --raid-devices=2 /dev/md3 /dev/sdb missing

...

# pvcreate /dev/md3
# vgcreate `hostname`-vg0 /dev/md3
# lvcreate -n usr -L10G `hostname`-vg0

...

# rsync -avxHS -P /path/to/old/directory/ /new/directory

Дополнительные материалы:
http://avreg.net/howto_software-raid-replacing-faulty-drive.html

( categories: )