LPS:Linux/Diskové nástroje

Z HelpDesk

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 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 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 migrace XEN

Postupně po jednotlivých Xen serverech, kde /dev/mapper/fc-pX-xen je cílový prostor:

lvs -o +devices | egrep "\s+(`xl list |tail -n +2 | awk '{print $1}' | paste -s -d\| -`)\." | awk '{print $2" "$1" "$5}' |awk -F\( '{print $1}' | awk '{print $1": time pvmove "$3" /dev/mapper/fc-pX-xen -n "$2 }' |grep ^vgxen: |awk -F: '{print $2}' | grep -v 'pvmove /dev/mapper/fc-pX-xen' | uniq > /tmp/move.sh
time /bin/bash -x /tmp/move.sh

FibreChannel

On-line zvětšení disků

Sepsáno dle návodu, kde část 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

Pokud se používá LVM, pak na jednom stroji rozšíříme fyzický volume, na ostatních (pokud je svazek sdílen) stačí pvscan:

# 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