LPS:Linux/Diskové nástroje
Postupy na nejčastější operace s disky v linuxu.
Technologie
LVM
On-line migrace diskoveho oddílu
Máme oddíl /dev/mapper/fc-old a chceme jej dat na nový oddíl /dev/mapper/fc-new, který je větší. Napřed co máme k dispozici:
# pvscan PV /dev/mapper/fc-old VG vgvicepx lvm2 [800.05 GiB / 0 free]
Inicializace nového diskového oddílu PV (Physical Volume) a přiřazení do VG (Volume Group):
# pvcreate /dev/mapper/fc-new Writing physical volume data to disk "/dev/mapper/fc-new" Physical volume "/dev/mapper/fc-new" successfully created # vgextend vgvicepx /dev/mapper/fc-nex Volume group "vgvicepx" successfully extended # pvscan PV /dev/mapper/fc-old VG vgvicepx lvm2 [800.05 GiB / 0 free] PV /dev/mapper/fc-new VG vgvicepx lvm2 [1.00 TiB / 1.00 TiB free]
Nyní pustíme online přesun, nejlépe ve screen:
# pvmove /dev/mapper/fc-old /dev/mapper/fc-new ...progres s 10sec aktualizaci...
Po dokončení zkontrolujeme, odebereme disk ze skupiny (VG) a odstraníme informaci o LVM oddílu:
# pvscan PV /dev/mapper/fc-old VG vgvicepx lvm2 [800.05 GiB / 800.05 GiB free] PV /dev/mapper/fc-new VG vgvicepx lvm2 [1.00 TiB / 223.27 GiB free] # vgreduce vgvicepx /dev/mapper/fc-old Removed "/dev/mapper/fc-old" from volume group "vgvicepx" # pvremove /dev/mapper/fc-old Labels on physical volume "/dev/mapper/fc-old" successfully wiped
Zvětšení logického volumu (LV) o volné místo, napřed si vypíšeme info, zvětšíme a zkontrolujeme:
# lvscan ACTIVE '/dev/vgvicepx/part1' [800.05 TiB] inherit # lvextend -l +100%FREE /dev/vgvicepx/part1 Extending logical volume part1 to 1.00 TiB Logical volume part1 successfully resized # lvscan ACTIVE '/dev/vgvicepx/part1' [1.00 TiB] inherit # pvsan PV /dev/mapper/fc-new VG vgvicepx lvm2 [1.00 TiB / 0 free]
Dalším krokem je už jen zvětšení souborového systému, např. xfs_grow.
Snapshot
Vytvoření
Když potřebuji udělat snapshot jako backup, napred co chci zalohovat
# lvscan | grep virtual ACTIVE '/dev/vgxen/virtual.disk' [50.00 GiB] inherit
Zjistit, zda je dostatek mista na cílovém disku (vgxen):
# vgdisplay vgxen-data --- Volume group --- VG Name vgxen-data System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 52 VG Access read/write VG Status resizable MAX LV 0 Cur LV 14 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size 10.00 TiB PE Size 4.00 MiB Total PE 2621439 Alloc PE / Size 2606592 / 9.94 TiB Free PE / Size 14847 / 58.00 GiB VG UUID CE4KeQ-QenK-Cut0-TflA-dQ5b-J2f3-C8QyF5
V tomto případě je volno 58GB a my potřebujeme 50GB (snapshot v LVM vyžaduje stejnou velikost jako je original), napřed zrušíme aktivitu v případě cluster režimu:
for i in zen1 hippod polyxen xen1 xen2 xen3 xen4; do ssh root@$i "hostname ; lvchange -an /dev/vgxen/virtual.disk" ; done
A vytvoření snapshotu:
lvcreate --size 50G --snapshot --name virtual.disk.snap /dev/vgxen/virtual.disk
A aktivace lunu:
for i in zen1 hippod polyxen xen1 xen2 xen3 xen4; do ssh root@$i "hostname ; lvscan > /dev/null ; lvchange -ay /dev/vgxen/virtual.disk" ; done
Restore
Zrušení
On-line zvětšení FibreChannel disků (resize bez rebootu)
Sepsáno dle http://linuxweather.blogspot.cz/2011/06/dynamically-resize-multipath-scsi.html kde cast s dmsetup je možno přeskočit.
Napřed aktualizovat informace na FC ovladači, pro každou kartu zvlášť:
# ls /sys/class/fc_host/ host0 host3 # echo 1 > /sys/class/fc_host/host0/issue_lip # echo 1 > /sys/class/fc_host/host3/issue_lip
Kontrola multipathu a zjištění jmen zařízení jednotlivých cest:
# multipath -ll fc-p1-xen-data fc-p1-xen-data (360a980003753626d342b41594d453476) dm-0 NETAPP,LUN size=10T features='1 queue_if_no_path' hwhandler='0' wp=rw |-+- policy='round-robin 0' prio=16 status=active | |- 0:0:0:1 sdb 8:16 active ready running | |- 0:0:1:1 sdh 8:112 active ready running | |- 3:0:0:1 sdz 65:144 active ready running | `- 3:0:1:1 sdaf 65:240 active ready running `-+- policy='round-robin 0' prio=4 status=enabled |- 0:0:2:1 sdn 8:208 active ready running |- 0:0:3:1 sdt 65:48 active ready running |- 3:0:2:1 sdal 66:80 active ready running `- 3:0:3:1 sdar 66:176 active ready running
Počet 512 bytových bloků zařízení
# blockdev --getsize /dev/sdb 21474836480
Načtení aktuální velikosti disku (nutno opakovat pro všechny zařízení):
# blockdev --rereadpt /dev/sdb
Ověření aktuální velkosti:
# blockdev --getsize /dev/sdb 30064771072
Aktualizace multipathu:
# multipathd -k multipathd> resize multipath fc-p1-xen-data multipathd> exit # multipath -ll fc-p1-xen-data fc-p1-xen-data (360a980003753626d342b41594d453476) dm-0 NETAPP,LUN size=14T features='1 queue_if_no_path' hwhandler='0' wp=rw |-+- policy='round-robin 0' prio=16 status=active | |- 0:0:0:1 sdb 8:16 active ready running | |- 0:0:1:1 sdh 8:112 active ready running | |- 3:0:0:1 sdz 65:144 active ready running | `- 3:0:1:1 sdaf 65:240 active ready running `-+- policy='round-robin 0' prio=4 status=enabled |- 0:0:2:1 sdn 8:208 active ready running |- 0:0:3:1 sdt 65:48 active ready running |- 3:0:2:1 sdal 66:80 active ready running `- 3:0:3:1 sdar 66:176 active ready running
Resize v LVM
Pokud se používá LVM, pak na jednom stroji rozšíříme fyzický volume, na ostatních stačí scan:
# pvscan PV /dev/mapper/fc-p1-xen-data-mirror VG vgxen-data-mirror lvm2 [5.00 TiB / 3.88 TiB free] PV /dev/mapper/fc-p1-xen-data VG vgxen-data lvm2 [10.00 TiB / 0.06 TiB free] PV /dev/mapper/fc-p1-xen-a VG vgxen lvm2 [2.00 TiB / 118.66 GiB free] PV /dev/mapper/fc-p1-xen-b VG vgxen lvm2 [2.00 TiB / 566.16 GiB free] Total: 4 [19.00 TiB] / in use: 4 [19.00 TiB] / in no VG: 0 [0 ] # pvresize /dev/mapper/fc-p1-xen-data Physical volume "/dev/dm-0" changed 1 physical volume(s) resized / 0 physical volume(s) not resized # pvscan PV /dev/dm-2 VG vgxen-data-mirror lvm2 [5.00 TiB / 3.88 TiB free] PV /dev/dm-0 VG vgxen-data lvm2 [14.00 TiB / 4.06 TiB free] PV /dev/dm-1 VG vgxen lvm2 [2.00 TiB / 118.66 GiB free] PV /dev/dm-5 VG vgxen lvm2 [2.00 TiB / 566.16 GiB free] Total: 4 [23.00 TiB] / in use: 4 [23.00 TiB] / in no VG: 0 [0 ]
SW RAID (mdadm)
multipath
Návody
Výměna disku
Scénář: v serveru vypadl disk v RAIDu, kolegové jej vyměnili, ale "nějak" to nefunguje, disk nelze připojit do raidu.
V první řadě je třeba z mdadm odebrat původní disk /dev/sda, ale to už nám odebral udev, bohužel mdadm i při odebírání trvá na existujícím zařízení. Proto je třeba zařízení ručně vytvořit, původní disk odebrat a pak zařízení zrušit
# cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4] md1 : active raid1 sdb2[1] sda2[2](F) 20482752 blocks [2/1] [_U] # mdadm --manage /dev/md1 --remove /dev/sda2 mdadm: cannot find /dev/sda2: No such file or directory # mkdir /dev/.static ; cd /dev/.static # /dev/MAKEDEV sda # mdadm --manage /dev/md1 --remove /dev/.static/sda2 mdadm: hot removed /dev/sda2 # cd / ; rm -rf /dev/.static # cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4] md1 : active raid1 sdb2[1] 20482752 blocks [2/1] [_U]
Nyní rozdělíme nový disk /dev/sdc podle funkčního originálu /dev/sdb:
# sfdisk -d /dev/sdb | sfdisk /dev/sdc
Přiřazení disku do SW RAIDu ale zkolabuje na jeho použití jiným systémem:
# mdadm /dev/md0 --add /dev/sdc1 mdadm: Cannot open /dev/sdc1: Device or resource busy
Problém je, že na všechny neobsazené disky si automaticky sedne multipath, takže jej odebereme a přidáme do RAIDu:
# multipath -ll -d SATA_WDC_WD5003ABYX-_WD-WMAYP0907635dm-0 ATA ,WDC WD5003ABYX [size=466G][features=0][hwhandler=0] \_ round-robin 0 [prio=1][active] \_ 2:0:2:0 sdc 8:32 [active][ready] # multipath -f SATA_WDC_WD5003ABYX-_WD-WMAYP0907635 libdevmapper: libdm-common.c(374): Removed /dev/mapper/SATA_WDC_WD5003ABYX-_WD-WMAYP0907635 # mdadm /dev/md0 --add /dev/sdc1 mdadm: added /dev/sdc1
Nyní stačí zavést grub do MBR nového disku, funkční originál si zatím ponecháme:
# grub-install /dev/sdc