Linux Multipath & Logical Volume Manager

Liitetään 100Gt ulkoista levyä palvelimelle, luodaan volume group ja logical volume, sekä mountataan levy /data mount pointiin. Esimerkissä dev/cciss/c0d0* ovat palvelimen sisäiset SAS-levyt ja /dev/sd* ulkoinen levy.

# fdisk -l
Disk /dev/cciss/c0d0: 73.3 GB, 73372631040 bytes
255 heads, 63 sectors/track, 8920 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1          13      104391   83  Linux
/dev/cciss/c0d0p2              14        8920    71545477+  8e  Linux LVM

Levyjä voi koittaa skannata ilman boottia.

# more /sys/class/scsi_host/host*/state
::::::::::::::
/sys/class/scsi_host/host0/state
::::::::::::::
Link Down
::::::::::::::
/sys/class/scsi_host/host1/state
::::::::::::::
Link Down
::::::::::::::
/sys/class/scsi_host/host2/state
::::::::::::::
Link Up - F_Port
::::::::::::::
/sys/class/scsi_host/host3/state
::::::::::::::
Link Up - F_Port

Host2 ja 3 on kuituportteja, joten koitetaan echolla skannata levyt näkyviin

# echo "- - -" > /sys/class/scsi_host/host2/scan
# echo "- - -" > /sys/class/scsi_host/host3/scan

Palvelimen uudelleenkäynnistys auttaa, jos levyt ei näy. Bootin jälkeen levyt pitäisi näkyä /dev/ -alla "sd*" -laitteina.

# fdisk -l
Disk /dev/cciss/c0d0: 73.3 GB, 73372631040 bytes
255 heads, 63 sectors/track, 8920 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1          13      104391   83  Linux
/dev/cciss/c0d0p2              14        8920    71545477+  8e  Linux LVM

Disk /dev/sda: 110.8 GB, 110886912000 bytes
255 heads, 63 sectors/track, 13481 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sda doesn't contain a valid partition table

Disk /dev/sdb: 110.8 GB, 110886912000 bytes
255 heads, 63 sectors/track, 13481 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table

Kaivetaan SAN-levyn wwid esiin ja lisätään myöhemmin multipath.confiin alias wwid:lle, jotta polku olisi selkeämpi:

# /lib/udev/scsi_id -g -u -d /dev/sda
360060480000290103612533030383131

Levypöntön tiedot löytyy tarvittaessa:

# cat /sys/block/sda/device/model
SYMMETRIX
# cat /sys/block/sda/device/vendor
EMC


Tarkistetaan, että multipathin moduli on ladattu:

# lsmod |grep dm_multipath
dm_multipath          55257  0
scsi_dh               41665  1 dm_multipath
dm_mod                100369 15 dm_multipath,dm_raid45,dm_snapshot,dm_zero,dm_mirror,dm_log

Asetetaan multipathd käynnistymään bootissa:

# systemctl enable multipathd

Käynnistetään multipathd:

# systemctl start multipathd

Nyt ulkoisen levyn pitäisi näkyä /dev/mapper alla

# fdisk -l /dev/mapper/mpath0
Disk /dev/mapper/mpath0: 110.8 GB, 110886912000 bytes
255 heads, 63 sectors/track, 13481 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mapper/mpath0 doesn't contain a valid partition table

Luodaan physical volume.

# pvcreate /dev/mapper/mpath0
  Physical volume "/dev/mapper/mpath0" successfully created

# pvdisplay
 pvdisplay
  --- Physical volume ---
  PV Name               /dev/cciss/c0d0p2
  VG Name               volgroup00
  PV Size               68.23 GB / not usable 12.63 MB
  Allocatable           yes
  PE Size (KByte)       32768
  Total PE              2183
  Free PE               1599
  Allocated PE          584
  PV UUID               yzuvQ8-awvh-jHuL-72S5-73eB-sHBH-vHoWkE

  "/dev/dm-4" is a new physical volume of "103.27 GB"
  --- NEW Physical volume ---
  PV Name               /dev/dm-4
  VG Name
  PV Size               103.27 GB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               EGydJX-3ehi-c3Fy-mqce-HnRf-i9D2-wySbiq

Luodaan data_vg volume group.

# vgcreate data_vg /dev/mapper/mpath0
  Volume group "data_vg" successfully created

Luodaan data niminen 100Gt logical volume.

# lvcreate -L 100G data_vg -n data
  Logical volume "data" created

# mkfs.ext3 /dev/data_vg/data

# mkdir /data
# mount /dev/data_vg/data /data
# echo "/dev/data_vg/data /data ext3 defaults 1 2" >> /etc/fstab

LVM saa nähdä levyt vain MPIO-kerroksen läpi, joten estetään fyysisten polkujen skannaus muokkaamalla lvm.confia. Filter rivejä saa olla vain yksi, joten kaikki filtterit pitää kirjoittaa samalle riville.

# vi /etc/lvm/lvm.conf
filter = [ "a|/dev/mapper/.*|", "a|/dev/cciss/.*|", "r|.*|" ]
types = [ "device-mapper", 1 ]