wiki:linux/dumb-dc

Version 4 (modified by root, at 2015-04-21T09:28:38Z) (diff)

--

если в dc работают инвалиды

синопсис

возникла необходимость арендовать сервер без ip-kvm в датацентре, по всей видимости, не предназначенном для аренды с соответствующим уровнем специалистов. сервер представляет из себя обычную банку с двумя винтами с обычным sata контроллером без поддержки raid1, который для надёжности получить, тем не менее хотелось бы. даже несмотря на выданный образ centos 6.6 с kickstarter эти специалисты умудрились установить от него /boot на первый диск, а /root через lvm на второй диск, заняв его полностью.

как всё это выглядело:

первый диск:

Disk /dev/sda: 500.1 GB, 500107862016 bytes
225 heads, 26 sectors/track, 166969 cylinders
Units = cylinders of 5850 * 512 = 2995200 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x0007a041

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         195      568320   83  Linux

второй диск:

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x0009c1ca

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       60802   488385536   8e  Linux LVM

pvdisplay:

[root@server ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg_main
  PV Size               465.76 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              119234
  Free PE               0
  Allocated PE          119234
  PV UUID               AWo7Gx-kM1o-6ADb-Gl4Q-QyWy-tHTX-4Wze8c

и mount:

[root@server ~]# mount
/dev/mapper/vg_main-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

на этом помощь специалистов я решил остановить, чтобы не сделать ещё хуже и привести всё это в желаемый формат уже своими силами.
к слову, как я ни пытался повторить этот фокус со своим kickstarter - у меня так и не получилось.

конфигурирование

d0=/dev/sda; d1=/dev/sdb
vg=vg_md; r=lv_r; s=lv_swp
r0=/dev/md10; r1=/dev/md11
yum install -y dump
cd /boot
tar --create --file /root/boot.tar .
cd
umount /boot
dd if=/dev/zero of=${d0} bs=1048576 count=128

содержимое следующих строчек можно получить, создав все разделы через cfdisk ${d0} с красивыми графическим интерфейсом, а потом экспортировать их через sfdisk -d ${d0}.

sfdisk ${d0} << EOF
unit: sectors
0:start=63, size=1076292, Id=fd, bootable
0:start=1076355, size=65111445, Id=fd
EOF
mdadm --create ${r0} \
 --force \
 --level=1 \
 --metadata=0.90 \
 --raid-devices=1 \
 ${d0}1
mdadm --create ${r1} \
 --force \
 --level=1 \
 --metadata=0.90 \
 --raid-devices=1 \
 ${d0}2
printf "MAILADDR root\n" >/etc/mdadm.conf
mdadm --examine --scan >>/etc/mdadm.conf
mke2fs -t ext4 -m 1 -L boot ${r0}
sed -ri "s#.+/boot#LABEL=boot /boot#" /etc/fstab
mount /boot
cd /boot
tar xpf /root/boot.tar
pvcreate ${r1}
vgcreate ${vg} ${r1}
lvcreate -L 16G -n ${s} ${vg}
lvcreate -l 100%FREE -n ${r} ${vg}
mkswap /dev/${vg}/${s}
mke2fs -t ext4 -m 1 /dev/${vg}/${r}
mount /dev/${vg}/${r} /mnt
cd /mnt
dump -a0f - / | restore -rf -
sed -i "
  s#/dev/mapper/vg_main-lv_root#/dev/mapper/${vg}-${r}#;
  s#vg_main/lv_root #${vg}/${r}#;
  s# rd_LVM_LV=vg_main/lv_swap##;
  s#rd_NO_MD ##
 " \
 /boot/grub/grub.conf
sed -i "
  s#/dev/mapper/vg_main-lv_root#/dev/mapper/${vg}-${r}#;
  s#/dev/mapper/vg_main-lv_swap#/dev/mapper/${vg}-${s}#
 " \
 /mnt/etc/fstab
printf "(hd0) ${d0}\n(hd1) ${d1}\n" >/boot/grub/device.map
grub-install --root-directory=/ ${d0}
grub-install --root-directory=/ ${d0}1
dracut -f
reboot

если всё было сделано правильно, то сервер загрузится уже с переразбитого первого диска. останется разбить второй диск и добавить его разделы в зеркала.

lvremove -f vg_main
vgremove vg_main
pvremove ${d1}1
dd if=/dev/zero of=${d1} bs=1048576 count=128
sfdisk ${d1} << EOF
unit: sectors
0:start=63, size=1076292, Id=fd, bootable
0:start=1076355, size=65111445, Id=fd
EOF
mdadm --grow ${r0} \
 --raid-devices=2 \
 --add ${d1}1
mdadm --grow ${r1} \
 --raid-devices=2 \
 --add ${d1}2
grub-install --root-directory=/ ${d1}
grub-install --root-directory=/ ${d1}1

обсуждение

почесать языком можно здесь.