Na początek motto:
- Co to jest: nie świeci i nie mieści się w dupie?
- Radzieckie urządzenie do świecenia w dupie.
To tyle emocji na temat organizacji mpio i używalności komend LVM w Linuxie, a może to są tylko frustracje starego AIXowca? :-P
Aha - tutaj się usuwa dane. W zasadzie nieodwracalnie, więc jak nie wiesz co robisz, to przestań to czytać, albo kup bilet w jedną stronę do kraju, z którym nie ma umowy o ekstradycję... i happy deleting!
Grupa, którą chcę usunąć to tsmadpvg. trzeba się dowiedzieć, jakie wolumeny logiczne są w niej:
- Co to jest: nie świeci i nie mieści się w dupie?
- Radzieckie urządzenie do świecenia w dupie.
To tyle emocji na temat organizacji mpio i używalności komend LVM w Linuxie, a może to są tylko frustracje starego AIXowca? :-P
Wprowadzenie
Sytuacja jest taka: Trzeba usunąć z RedHat Linuxa wystawione z macierzy IBM StorWize V7000 LUNy.
Oryginalna procedura jest tutaj i nie zamierzam jej przepisywać, tylko trochę poprawić, bo niektóre potrzebne informacje można sobie skasować, podczas gdy mogą być potrzebne później.
Aha - tutaj się usuwa dane. W zasadzie nieodwracalnie, więc jak nie wiesz co robisz, to przestań to czytać, albo kup bilet w jedną stronę do kraju, z którym nie ma umowy o ekstradycję... i happy deleting!
Procedura + komentarze
1. Przestać korzystać z urządzenia. Pewnie odmontować filesystem. Może się okazać, że będzie zajęty przez kogoś. Polecenia fuser i lsof na Linuxie mogą być bardzo pomocne.
Warto takżę zadbać o to, żeby filesystemy nie próbowały się już więcej montować. Można to zrobić np poprzez usunięcie bądź zakomentowanie w /etc/fstab wpisów je montujących:
#/dev/tsmadpvg/tsmadplv /tsm/stgpools/adpool xfs defaults 1 2
#/dev/tsmstg2vg/tsmcbdxdplv /tsm/stgpools/cbdxpool xfs defaults 1 2
To jest też dobry moment do zapamiętania w jak się nazywają wolumeny logiczne i do jakiej grupy należą.
2. Znaleźć pozostałe informacje potrzebne do poprawnego usunięcia tego co się chce (i tylko tego). Do znalezienia są jeszcze:
2. Znaleźć pozostałe informacje potrzebne do poprawnego usunięcia tego co się chce (i tylko tego). Do znalezienia są jeszcze:
- UUID LUNów
- nazwy PV
- Nazwy ścieżek.
Logiczne wolumeny według grupy wolumenów:
root@c2-tsm01:mapper# vgscan
Reading all physical volumes. This may take a while...
Found volume group "tsmstgvg" using metadata type lvm2
Found volume group "tsmactlogvg" using metadata type lvm2
Found volume group "tsmadpvg" using metadata type lvm2
Found volume group "vg_c2tsm01" using metadata type lvm2
Found volume group "tsmvg" using metadata type lvm2
Grupa, którą chcę usunąć to tsmadpvg. trzeba się dowiedzieć, jakie wolumeny logiczne są w niej:
root@c2-tsm01:~# lvscan | grep tsmadpvg
ACTIVE '/dev/tsmadpvg/tsmadplv' [20.00 TiB] inherit
ACTIVE '/dev/tsmadpvg/tsmadplv' [20.00 TiB] inherit
Ten krok był tylko, żeby upewnić się, czy na pewno wszystko zostało odmontowane.
Dla porządku wypadałoby się dowiedzieć, jak logiczny wolumen został nazwany przez devmappera:
root@c2-tsm01:~# ls -la /dev/tsmadpvg/tsmadplv
lrwxrwxrwx 1 root root 8 Feb 10 19:58 /dev/tsmadpvg/tsmadplv -> ../dm-25
Pora zidentyfikować fizyczne wolumeny jakich używa usuwana grupa:
root@c2-tsm01:~# pvscan | grep tsmadpvg
PV /dev/mapper/360050768028601c91000000000000002 VG tsmadpvg lvm2 [5.00 TiB / 0 free]
PV /dev/mapper/360050768028601c91000000000000001 VG tsmadpvg lvm2 [5.00 TiB / 0 free]
PV /dev/mapper/360050768028205359800000000000001 VG tsmadpvg lvm2 [5.00 TiB / 0 free]
PV /dev/mapper/360050768028205359800000000000002 VG tsmadpvg lvm2 [5.00 TiB / 0 free]
Te cyferki: 36005.... to UUID LUNu wystawionego z macierzy. Dzięki nim można ustalić jak w systemie nazywają się urządzenia reprezentujące pojedyncze ścieżki:
root@c2-tsm01:~# multipath -l | egrep -A 11 "360050768028601c91000000000000002|360050768028601c91000000000000001|360050768028205359800000000000001|360050768028205359800000000000002"
360050768028205359800000000000002 dm-12 IBM,2145
size=5.0T features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=0 status=active
| |- 2:0:4:1 sdbd 67:112 active undef running
| |- 3:0:4:1 sdbl 67:240 active undef running
| |- 5:0:4:1 sdbr 68:80 active undef running
| `- 8:0:4:1 sdbx 68:176 active undef running
`-+- policy='round-robin 0' prio=0 status=enabled
|- 2:0:5:1 sdbf 67:144 active undef running
|- 3:0:5:1 sdbz 68:208 active undef running
|- 5:0:5:1 sdcb 68:240 active undef running
`- 8:0:5:1 sdcd 69:16 active undef running
360050768028205359800000000000001 dm-11 IBM,2145
size=5.0T features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=0 status=active
| |- 2:0:5:0 sdbe 67:128 active undef running
| |- 3:0:5:0 sdby 68:192 active undef running
| |- 5:0:5:0 sdca 68:224 active undef running
| `- 8:0:5:0 sdcc 69:0 active undef running
`-+- policy='round-robin 0' prio=0 status=enabled
|- 2:0:4:0 sdbc 67:96 active undef running
|- 3:0:4:0 sdbk 67:224 active undef running
|- 5:0:4:0 sdbq 68:64 active undef running
`- 8:0:4:0 sdbw 68:160 active undef running
--
360050768028601c91000000000000002 dm-9 IBM,2145
size=5.0T features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=0 status=active
| |- 2:0:3:1 sdaj 66:48 active undef running
| |- 3:0:2:1 sdbh 67:176 active undef running
| |- 5:0:2:1 sdbn 68:16 active undef running
| `- 8:0:3:1 sdbv 68:144 active undef running
`-+- policy='round-robin 0' prio=0 status=enabled
|- 2:0:2:1 sdah 66:16 active undef running
|- 3:0:3:1 sdbj 67:208 active undef running
|- 5:0:3:1 sdbp 68:48 active undef running
`- 8:0:2:1 sdbt 68:112 active undef running
360050768028601c91000000000000001 dm-10 IBM,2145
size=5.0T features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=0 status=active
| |- 2:0:2:0 sdag 66:0 active undef running
| |- 3:0:3:0 sdbi 67:192 active undef running
| |- 5:0:3:0 sdbo 68:32 active undef running
| `- 8:0:2:0 sdbs 68:96 active undef running
`-+- policy='round-robin 0' prio=0 status=enabled
|- 2:0:3:0 sdai 66:32 active undef running
|- 3:0:2:0 sdbg 67:160 active undef running
|- 5:0:2:0 sdbm 68:0 active undef running
`- 8:0:3:0 sdbu 68:128 active undef running
Tak naprawdę to interesujące są tylko te cześći, które w ostatnim akapicie są zaznaczone na czerwono. Dlatego trzeba się posłużyć dodatkowyum polecem, które przygotuje tę listę w sposób użyteczny dla następnego kroku:
root@c2-tsm01:~# multipath -l | egrep -A 11 "360050768028601c91000000000000002|360050768028601c91000000000000001|360050768028205359800000000000001|360050768028205359800000000000002" | grep running | cut -c 13-18 | while read path; do echo -n $path " " ; done ; echo " "
sdbd sdbl sdbr sdbx sdbf sdbz sdcb sdcd sdbe sdby sdca sdcc sdbc sdbk sdbq sdbw sdaj sdbh sdbn sdbv sdah sdbj sdbp sdbt sdag sdbi sdbo sdbs sdai sdbg sdbm sdbu
Słowo komentarza do powyższego polecenia. Użyłem cut -c 13-18 - to wycina znaki od 13 do 18 w każdej podanej na wejściu linii. To jest mało zgrabne, jak ścieżki będą miały inną długość nazwy (bardzo prawdopodobne!!!) to się zawali. - jako proste zadanie dla czytelnika, zostawiam przerobienie tego na jakiegoś ładnego sed'a czy awk'a :-P. Dlaczego wypisałem wszystkie ścieżki w jednej linii okaże się za chwilę.
3. Jak już wszystkie informacje są na miejscu, można zacząć wycinać. Zaczynamy od góry:
- Umount filesystemu
- Wyciąć w /etc/fstab
- Zdeaktywować grupę wolumenów
root@c2-tsm01:~# vgchange -a n tsmadpvg
0 logical volume(s) in volume group "tsmadpvg" now active
- Usunąć grupę wolumenów:
root@c2-tsm01:~# vgremove tsmadpvg
Do you really want to remove volume group "tsmadpvg" containing 1 logical volumes? [y/n]: y
Logical volume "tsmadplv" successfully removed
Volume group "tsmadpvg" successfully removed
- Usunąć (dla porządku) sygnatury fizycznych wolumenów z LUNów:
root@c2-tsm01:~# pvscan
PV /dev/mapper/360050768028601c91000000000000003 VG tsmstgvg lvm2 [738.99 GiB / 0 free]
PV /dev/mapper/360050768028205359800000000000004 VG tsmstgvg lvm2 [738.99 GiB / 0 free]
PV /dev/mapper/360050768028601c91000000000000004 VG tsmstgvg lvm2 [738.99 GiB / 0 free]
PV /dev/mapper/360050768028205359800000000000003 VG tsmstgvg lvm2 [738.99 GiB / 0 free]
PV /dev/mapper/3600605b004b4ef3017c973413b957cf7p1 VG tsmactlogvg lvm2 [271.94 GiB / 34.49 GiB free]
PV /dev/sda3 VG vg_c2tsm01 lvm2 [135.29 GiB / 77.43 GiB free]
PV /dev/mapper/360080e50002eb72c00000348503ae6e6 VG tsmvg lvm2 [299.99 GiB / 0 free]
PV /dev/mapper/360080e50002eb72c0000034b503ae711 VG tsmvg lvm2 [299.99 GiB / 0 free]
PV /dev/mapper/360080e50002ebe0600000349503ae707 VG tsmvg lvm2 [299.99 GiB / 0 free]
PV /dev/mapper/360080e50002ebe060000034b503ae732 VG tsmvg lvm2 [299.99 GiB / 0 free]
PV /dev/mapper/360080e50002eb72c00000361503aecec VG tsmvg lvm2 [587.99 GiB / 0 free]
PV /dev/mapper/360080e50002ebe0600000371503aed3a VG tsmvg lvm2 [999.99 GiB / 0 free]
PV /dev/mapper/360050768028601c91000000000000002 lvm2 [5.00 TiB]
PV /dev/mapper/360050768028601c91000000000000001 lvm2 [5.00 TiB]
PV /dev/mapper/360050768028205359800000000000001 lvm2 [5.00 TiB]
PV /dev/mapper/360050768028205359800000000000002 lvm2 [5.00 TiB]
Total: 16 [26.01 TiB] / in use: 12 [6.01 TiB] / in no VG: 4 [20.00 TiB]
root@c2-tsm01:~# pvremove /dev/mapper/360050768028601c91000000000000002 /dev/mapper/360050768028601c91000000000000001 /dev/mapper/360050768028205359800000000000001 /dev/mapper/360050768028205359800000000000002
Labels on physical volume "/dev/mapper/360050768028601c91000000000000002" successfully wiped
Labels on physical volume "/dev/mapper/360050768028601c91000000000000001" successfully wiped
Labels on physical volume "/dev/mapper/360050768028205359800000000000001" successfully wiped
Labels on physical volume "/dev/mapper/360050768028205359800000000000002" successfully wiped
- Korzystając w wypisanych w jednej linii nazw ścieżek usunąć je z systemu:
root@c2-tsm01:~# for i in sdbd sdbl sdbr sdbx sdbf sdbz sdcb sdcd sdbe sdby sdca sdcc sdbc sdbk sdbq sdbw sdaj sdbh sdbn sdbv sdah sdbj sdbp sdbt sdag sdbi sdbo sdbs sdai sdbg sdbm sdbu
> do
> echo "echo 1 > /sys/block/$i/device/delete"
> done
echo 1 > /sys/block/sdbd/device/delete
echo 1 > /sys/block/sdbl/device/delete
echo 1 > /sys/block/sdbr/device/delete
echo 1 > /sys/block/sdbx/device/delete
echo 1 > /sys/block/sdbf/device/delete
echo 1 > /sys/block/sdbz/device/delete
echo 1 > /sys/block/sdcb/device/delete
echo 1 > /sys/block/sdcd/device/delete
echo 1 > /sys/block/sdbe/device/delete
echo 1 > /sys/block/sdby/device/delete
echo 1 > /sys/block/sdca/device/delete
echo 1 > /sys/block/sdcc/device/delete
echo 1 > /sys/block/sdbc/device/delete
echo 1 > /sys/block/sdbk/device/delete
echo 1 > /sys/block/sdbq/device/delete
echo 1 > /sys/block/sdbw/device/delete
echo 1 > /sys/block/sdaj/device/delete
echo 1 > /sys/block/sdbh/device/delete
echo 1 > /sys/block/sdbn/device/delete
echo 1 > /sys/block/sdbv/device/delete
echo 1 > /sys/block/sdah/device/delete
echo 1 > /sys/block/sdbj/device/delete
echo 1 > /sys/block/sdbp/device/delete
echo 1 > /sys/block/sdbt/device/delete
echo 1 > /sys/block/sdag/device/delete
echo 1 > /sys/block/sdbi/device/delete
echo 1 > /sys/block/sdbo/device/delete
echo 1 > /sys/block/sdbs/device/delete
echo 1 > /sys/block/sdai/device/delete
echo 1 > /sys/block/sdbg/device/delete
echo 1 > /sys/block/sdbm/device/delete
echo 1 > /sys/block/sdbu/device/delete
Oczywiście jestem ciut nieufny w stosunku do automatów, dlatego wolę jak mi to coś wypisze komendę zamiast ją wykonać. Potem to sobie "przekleję". Opcja dla hardkorowców: Usunąć z powyższego polecenia to co jest na zielono.
- Odmapować luny na macierzy.
- Być może warto usunąć też zoning z SANu.
Zamiast podsumowania
Na AIXie procedura wyglądałaby tak:
- lsvg -o (lista włączonych grup wolumenów)
- lsvg -l grupa_do_usunięcia (lista wolumenów logicznych do zamknięcia/odmontowania)
- umount wszystkich wolumenów z tej grupy
- lsvg -p grupa_do_usunięcia (lista hdisków do wycięcia)
- varyoffvg grupa_do_usunięcia
- exportvg grupa_do_usunięcia
- for każdy PV z grupy_do_usunięcia; do rmdev -Rdl $PV; done
Trochę prościej :-P
Brak komentarzy:
Prześlij komentarz