ちょっと疑問に思ったので試してみた。例えばこういう状況があって、
- /dev/sda
- ローカルディスク(LVM)
- /dev/sdb
- ローカルディスク(LVM)
- /dev/sdc
- ローカルディスク(LVM)
- /dev/sdd
- ローカルディスク(非LVM)
- /dev/sde
- ローカルディスク(非LVM)
ここにディスクを追加してLVMに参加させる
- /dev/sda
- ローカルディスク(LVM)
- /dev/sdb
- ローカルディスク(LVM)
- /dev/sdc
- ローカルディスク(LVM)
- /dev/sdd
- ローカルディスク(非LVM)
- /dev/sde
- ローカルディスク(非LVM)
- /dev/sdf
- ローカルディスク(LVM)
そして、途中にある非LVMな/dev/sdd, /dev/sdeを取り除いて再起動する。再起動後のディスク名はこうなるはず。
- /dev/sda
- ローカルディスク(LVM)
- /dev/sdb
- ローカルディスク(LVM)
- /dev/sdc
- ローカルディスク(LVM)
- /dev/sdd
- ローカルディスク(LVM)
こうなった場合、LVMはどうなるのだろうか?という話。
やってみる
- VirtualBox
- Ubuntu 18.04LTS
- インストール時にLVMを有効化
- ディスクを2本追加してSATAコントローラに接続
こういう状態
# df -h Filesystem Size Used Avail Use% Mounted on udev 965M 0 965M 0% /dev tmpfs 200M 760K 199M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 19G 3.7G 14G 21% / tmpfs 997M 0 997M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 997M 0 997M 0% /sys/fs/cgroup /dev/sda2 976M 80M 830M 9% /boot tmpfs 200M 0 200M 0% /run/user/1000 # fdisk -l Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: B69B2A9B-16EA-41DE-8A34-E46EB4477426 Device Start End Sectors Size Type /dev/sda1 2048 4095 2048 1M BIOS boot /dev/sda2 4096 2101247 2097152 1G Linux filesystem /dev/sda3 2101248 41940991 39839744 19G Linux filesystem Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdc: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 19 GiB, 20396900352 bytes, 39837696 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
インストーラでは/dev/sda3を使ってLVMボリュームが構成されている。/dev/sdbと/dev/sdcが新たに追加したディスク。こいつを普通にLVMに参加させるのはとてもかんたん。
まずパーティションを切る。
# parted /dev/sdb -s mklabel gpt # parted /dev/sdb -s mkpart primary ext4 0% 100% # parted /dev/sdb -s set 1 lvm on # parted /dev/sdc -s mklabel gpt # parted /dev/sdc -s mkpart primary ext4 0% 100% # parted /dev/sdc -s set 1 lvm on
PV作成
# pvs -v Wiping internal VG cache Wiping cache of LVM-capable devices PV VG Fmt Attr PSize PFree DevSize PV UUID /dev/sda3 ubuntu-vg lvm2 a-- <19.00g 0 <19.00g eE0Pw0-XSAw-E170-zwpF-wAJH-i8d8-88Gj5W # pvcreate /dev/sdb1 # pvcreate /dev/sdc1 # pvs -v Wiping internal VG cache Wiping cache of LVM-capable devices PV VG Fmt Attr PSize PFree DevSize PV UUID /dev/sda3 ubuntu-vg lvm2 a-- <19.00g 0 <19.00g eE0Pw0-XSAw-E170-zwpF-wAJH-i8d8-88Gj5W /dev/sdb1 lvm2 --- <10.00g <10.00g <10.00g fovUGe-k8ab-Ff55-KHO8-SfKc-qPnG-kQ2TmB /dev/sdc1 lvm2 --- <10.00g <10.00g <10.00g vltXDY-QR0h-eq52-Q6mj-SW39-Cn1M-Hn22Sc
VGにPVを追加
# vgs -v VG Attr Ext #PV #LV #SN VSize VFree VG UUID VProfile ubuntu-vg wz--n- 4.00m 1 1 0 <19.00g 0 bdUp1Q-y1ED-3fKi-KuSJ-ksRt-t6Il-FXRBeb # vgextend ubuntu-vg /dev/sdb1 # vgextend ubuntu-vg /dev/sdc1 # vgs -v VG Attr Ext #PV #LV #SN VSize VFree VG UUID VProfile ubuntu-vg wz--n- 4.00m 3 1 0 <38.99g 19.99g bdUp1Q-y1ED-3fKi-KuSJ-ksRt-t6Il-FXRBeb
LVを拡張
# lvs -v LV VG #Seg Attr LSize Maj Min KMaj KMin Pool Origin Data% Meta% Move Cpy%Sync Log Convert LV UUID LProfile ubuntu-lv ubuntu-vg 1 -wi-ao---- <19.00g -1 -1 253 0 hAfmud-82vu-xhHd-mnTB-mfXP-2lqW-RDl1I2 # lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv # lvs -v LV VG #Seg Attr LSize Maj Min KMaj KMin Pool Origin Data% Meta% Move Cpy%Sync Log Convert LV UUID LProfile ubuntu-lv ubuntu-vg 3 -wi-ao---- <38.99g -1 -1 253 0 hAfmud-82vu-xhHd-mnTB-mfXP-2lqW-RDl1I2
ファイルシステムを拡張
# resize2fs /dev/ubuntu-vg/ubuntu-lv # df -h Filesystem Size Used Avail Use% Mounted on udev 965M 0 965M 0% /dev tmpfs 200M 760K 199M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 39G 3.7G 33G 11% / ★19GBから39GBに増えている tmpfs 997M 0 997M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 997M 0 997M 0% /sys/fs/cgroup /dev/sda2 976M 80M 830M 9% /boot tmpfs 200M 0 200M 0% /run/user/1000
問題なし。
でここに非LVMなディスクを2本追加することとする。
Disk /dev/sdd: 1 GiB, 1073741824 bytes, 2097152 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sde: 1 GiB, 1073741824 bytes, 2097152 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
順番にディスク名が振られていることがわかる。
では、改めてLVMを拡張するためにディスクを追加する。
Disk /dev/sdf: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
続けてsdfとして認識されている。ではこいつをLVMに参加させる。
# parted /dev/sdf -s mklabel gpt # parted /dev/sdf -s mkpart primary ext4 0% 100% # parted /dev/sdf -s set 1 lvm on # pvcreate /dev/sdf1 # vgextend ubuntu-vg /dev/sdf1 # lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv # resize2fs /dev/ubuntu-vg/ubuntu-lv # df -h Filesystem Size Used Avail Use% Mounted on udev 965M 0 965M 0% /dev tmpfs 200M 776K 199M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 49G 3.8G 43G 9% / ★さらに10GB増えてる tmpfs 997M 0 997M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 997M 0 997M 0% /sys/fs/cgroup /dev/sda2 976M 80M 830M 9% /boot tmpfs 200M 0 200M 0% /run/user/1000
ではPVがいなくなったと想定して、/dev/sddと/dev/sdeをVirtualBoxマネージャーから取り除いてやる。
3と4がないのがわかると思う。ではこの状態でrebootしてみる。どうなるか?
$ sudo fdisk -l Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: B69B2A9B-16EA-41DE-8A34-E46EB4477426 Device Start End Sectors Size Type /dev/sda1 2048 4095 2048 1M BIOS boot /dev/sda2 4096 2101247 2097152 1G Linux filesystem /dev/sda3 2101248 41940991 39839744 19G Linux filesystem Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: AB3F4A27-6E98-49C5-9837-B6F902D930B5 Device Start End Sectors Size Type /dev/sdb1 2048 20969471 20967424 10G Linux LVM Disk /dev/sdc: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 57BDD116-BEB8-402E-8832-882DD1345CA8 Device Start End Sectors Size Type /dev/sdc1 2048 20969471 20967424 10G Linux LVM Disk /dev/sdd: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: CA56E550-1BDE-48FA-9503-0F3549DEC04F Device Start End Sectors Size Type /dev/sdd1 2048 20969471 20967424 10G Linux LVM Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 49 GiB, 52596572160 bytes, 102727680 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
/dev/sdfだったディスクは/dev/sddとして認識されている。
$ sudo vgdisplay -v --- Volume group --- VG Name ubuntu-vg System ID Format lvm2 Metadata Areas 4 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 4 Act PV 4 VG Size 48.98 GiB PE Size 4.00 MiB Total PE 12540 Alloc PE / Size 12540 / 48.98 GiB Free PE / Size 0 / 0 VG UUID bdUp1Q-y1ED-3fKi-KuSJ-ksRt-t6Il-FXRBeb --- Logical volume --- LV Path /dev/ubuntu-vg/ubuntu-lv LV Name ubuntu-lv VG Name ubuntu-vg LV UUID hAfmud-82vu-xhHd-mnTB-mfXP-2lqW-RDl1I2 LV Write Access read/write LV Creation host, time ubuntu-server, 2021-07-14 16:02:56 +0000 LV Status available # open 1 LV Size 48.98 GiB Current LE 12540 Segments 4 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Physical volumes --- PV Name /dev/sda3 PV UUID eE0Pw0-XSAw-E170-zwpF-wAJH-i8d8-88Gj5W PV Status allocatable Total PE / Free PE 4863 / 0 PV Name /dev/sdb1 PV UUID fovUGe-k8ab-Ff55-KHO8-SfKc-qPnG-kQ2TmB PV Status allocatable Total PE / Free PE 2559 / 0 PV Name /dev/sdc1 PV UUID vltXDY-QR0h-eq52-Q6mj-SW39-Cn1M-Hn22Sc PV Status allocatable Total PE / Free PE 2559 / 0 PV Name /dev/sdd1 PV UUID 0L1Rfr-ve3M-OcP4-1kIG-coUi-R3fX-j0oZ3W PV Status allocatable Total PE / Free PE 2559 / 0
普通にディスク名の順序が詰められて認識されていて、LVM的にはなんの問題もなかった。
今度はさきほど取り外したディスクを追加して起動してみる。fdiskでみてみると、
Disk /dev/sdd: 1 GiB, 1073741824 bytes, 2097152 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sde: 1 GiB, 1073741824 bytes, 2097152 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdf: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: CA56E550-1BDE-48FA-9503-0F3549DEC04F
もとに戻ってる。vgdisplayでも見てみたけどなんの問題もなかった。
$ sudo vgdisplay -v --- Volume group --- VG Name ubuntu-vg System ID Format lvm2 Metadata Areas 4 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 4 Act PV 4 VG Size 48.98 GiB PE Size 4.00 MiB Total PE 12540 Alloc PE / Size 12540 / 48.98 GiB Free PE / Size 0 / 0 VG UUID bdUp1Q-y1ED-3fKi-KuSJ-ksRt-t6Il-FXRBeb --- Logical volume --- LV Path /dev/ubuntu-vg/ubuntu-lv LV Name ubuntu-lv VG Name ubuntu-vg LV UUID hAfmud-82vu-xhHd-mnTB-mfXP-2lqW-RDl1I2 LV Write Access read/write LV Creation host, time ubuntu-server, 2021-07-14 16:02:56 +0000 LV Status available # open 1 LV Size 48.98 GiB Current LE 12540 Segments 4 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Physical volumes --- PV Name /dev/sda3 PV UUID eE0Pw0-XSAw-E170-zwpF-wAJH-i8d8-88Gj5W PV Status allocatable Total PE / Free PE 4863 / 0 PV Name /dev/sdb1 PV UUID fovUGe-k8ab-Ff55-KHO8-SfKc-qPnG-kQ2TmB PV Status allocatable Total PE / Free PE 2559 / 0 PV Name /dev/sdc1 PV UUID vltXDY-QR0h-eq52-Q6mj-SW39-Cn1M-Hn22Sc PV Status allocatable Total PE / Free PE 2559 / 0 PV Name /dev/sdf1 PV UUID 0L1Rfr-ve3M-OcP4-1kIG-coUi-R3fX-j0oZ3W PV Status allocatable Total PE / Free PE 2559 / 0
前後のvgdisplayの結果を見比べてみると、PV UUIDは同じなのでディスク名が変わってもちゃんと管理されているのかもしれない。しらんけど。
PV Name /dev/sdd1 PV UUID 0L1Rfr-ve3M-OcP4-1kIG-coUi-R3fX-j0oZ3W PV Status allocatable Total PE / Free PE 2559 / 0 PV Name /dev/sdf1 PV UUID 0L1Rfr-ve3M-OcP4-1kIG-coUi-R3fX-j0oZ3W PV Status allocatable Total PE / Free PE 2559 / 0
とはいえ、udevを使って一意な名前にしておくのが良いような気はする。