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 ]