boot disk met lvm naar andere disk.

Bij een klant hebben we een aantal machines met veel intern disken (hadoop cluster) deze machine zijn altijd geboot van het SAN. maar door dat de SAN edge switches uit het onderhoud contract lopen en er op de core niet genoeg plek is heeft men besloten om de machine ook van intern disken te laten booten. daar voor zijn 2 extra disken in de machines geschoven.
je kan deze handleiding ook gebruiken voor andere disk to disk migratie, het maakt niet uit of de disk op het SAN zit of een sata of wat voor een disk, voorwaarde is dat er gebruik word gemaakt van LVM. er zijn dus stukken in dit document die dan niet voor je gelden of anders moeten.

in dit geval moet eerst een mirror op gezet worden voor de de nieuwe boot disken middels hpsscli. meer info en commando vind je op deze pagina

bekijk de unassigned disk en maak er een raid 1 volume in mijn geval zitten de nieuwe disken in slot 25 en 26

hpssacli "ctrl slot=0 pd all show"
 \ - knip - \
   unassigned

      physicaldrive 1I:1:25 (port 1I:box 1:bay 25, SAS, 600 GB, OK)
      physicaldrive 1I:1:26 (port 1I:box 1:bay 26, SAS, 600 GB, OK)

hpssacli "ctrl slot=0 create type=ld drives=1I:1:25,1I:1:26 raid=1"

belangrijk is nu te zoeken welke de nieuwe disk is in dit geval /dev/sdm je kan snel kijken met “fdisk -l” in de oude situatie maken we gebruik van een SAN disk waar boot volume opligt en vg00/vg.root en 1 SAN disk met een aparte vg (vg.appl) we hebben dus 3 partities nodig op deze disk 1 boot. 1 voor de lv00/vg.root en 1 voor vg.appl dit document is gebruikt voor een kleine 40 machines. dus was het handiger om de partitie layout reproduceerbaar te maken. dat kan met sfdisk.

sfdisk /dev/sdm --force << EOF
unit: sectors

/dev/sdq1 : start=     2048, size=   583680, Id=83, bootable
/dev/sdq2 : start=   585728, size= 67774464, Id=8e
/dev/sdq3 : start= 68360192, size=1103695872, Id=8e
/dev/sdq4 : start=        0, size=        0, Id= 0
EOF

als dit gebeurt is partitie table online bekend maken aan de kernel. en de de disken toevoegen aan de lvm om vervolgens de vg uit te breiden.

partprobe /dev/sdm
pvcreate /dev/sdm2
pvcreate /dev/sdm3

vgextend vg.root /dev/sdm2
vgextend vg.appl /dev/sdm3

als de VG's uitgebreid zijn dan een pvmove dit loopt afhankelijk van de grote een tijdje. maar dit kan gewoon online.

pvmove /dev/mapper/mpathap2 /dev/sdm2
pvmove /dev/mapper/mpathb /dev/sdm3

als de data verplaats is kan je de oude disken uit de VG halen. en het de PV verwijderen.

 
vgreduce vg.appl /dev/mapper/mpathb 
vgreduce vg.root /dev/mapper/mpathap2 
pvremove /dev/mapper/mpathap2 /dev/mapper/mpathb

alle data staat nu op de nieuwe disk. rest alleen nog de /boot omdat /boot alleen tijdens booten gebruikt worden kunnen we deze gewoon umounten en middels een dd copieren. ik heb de nieuwe nieuwe /boot iets groter gemaakt dus na de copy nog ff een resize2fs.

umount /boot
dd if=/dev/mapper/mpathap1 of=/dev/sdm1 bs=1M
mount /dev/sdm1 /boot
resize2fs /dev/sdm1

in dit geval word /boot middels de UUID gemount, moet je het device wel aanpassen in de /etc/fstab houd er dan rekening mee dat na de reboot het device waarschijnlijk /dev/sda1 heet.
we moeten nu alleen nog de mbr op de nieuwe disk zetten. en omdat we nu van SAN naar direct attached disken gaan maken we ook een nieuwe initramfs zonder multipath config
pas eerst /boot/grub/device.map hd0 aan zet deze tijdelijk op /dev/sdm als je alles hebt uitgevoerd kan je hem alvast /dev/sda zetten.
draai daarna een dracut -f om de nieuwe initramfs te maken. en plaats dan de mbr op disk met grub-install(rhel5/6) grub2-install(rhel7)

vi /boot/grub/device.map
dracut -f
grub-install /dev/sdm

reboot nu de machine en pas de boot disk aan.