複数のストレージ領域を統合して大きなボリュームにできる.
RAID5/RAID6で作った領域をLVMで繋げるか、RAID50/RAID60とかで作るか悩みどころではある.
RAID50/RAI60なら個別のRAID5/RAID6のサイズは同じである必要があるけど、LVMの場合は異なるサイズのRAID5/RAID6でも構わない点がいいのかな.
初回は 12slotsのRAID6(4TB*[12-2]:40TB)を2つ作り、容量が切迫したら 12slotsRAID6(6TB*[12-2]:60TB)を追加して、
初回の1つの領域を6TBで作った領域にpvmoveして破棄する. これでトータル 100TB.
その後、また切迫したら空いた初回の領域に12slotsRAID6(8TB*[12-2]:80TB)を追加して、最古の領域をpvmoveしてまた破棄します.
これで 60TB + 80TB --> 140TB
次に、空いた領域に12slots(10TB*[12-2]:100TB)を追加して、6TBの部分をpvmoveさせてこの部分を破棄します
これで 80TB + 100TB --> 180TB
、、っといった具合で同一ボリュームを拡張できる. しかも古い領域を破棄しながら.
ここでは CentOS8 を使ってLVMのボリュームの拡張とその要素の削除を示す.
*古いHDDをそのまま継続して使いたいなら別途エンクロージャが必要
ESXiで試します.
手始めに8GBの領域を設置して、次に11GB、さらに18GBを追加して、初めの8GBの領域を除いてみます。
まずLVMパッケージをインストールします.
[root@lvm ~]# yum install lvm2
まず8GBの領域を追加してみる.
[root@lvm ~]# parted /dev/sdb
(parted) mklabel gpt *gptでラベル(参照:help mklabel)
(parted) unit s *単位をセクターに変更
(parted) mkpart primary 0% 100% *区分作成(参照:help mkpart)
(parted) set 1 lvm on *区分1をlvmとして扱う
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 16777216s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 2048s 16777182s 16775135s primary lvm
(parted) quit
[root@lvm ~]#
用意した8GBの領域をLVMにして、/dataに乗せてみる.
まずpvcreateコマンドでPhysicalVolume(物理ボリューム)としてLVM側に認知させます。
[root@lvm ~]# pvscan
No matching physical volumes found
[root@lvm ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@lvm ~]# pvscan
PV /dev/sdb1 lvm2 [<8.00 GiB]
Total: 1 [<8.00 GiB] / in use: 0 [0 ] / in no VG: 1 [<8.00 GiB]
[root@lvm ~]#
次にボリュームグループ(VolumeGroup)作成を作ります.
vgcreateコマンドで
[root@lvm ~]# vgcreate VG00 /dev/sdb1
Volume group "VG00" successfully created
[root@lvm ~]# vgscan
Found volume group "VG00" using metadata type lvm2
[root@lvm ~]#
作ったボリュームグループから論理ボリューム作成(Logicl Volume)を作る. lvcreateコマンドで
[root@lvm ~]# lvcreate -n L0 -l 100%FREE VG00 <-- VG00の全量でL0を作る
Logical volume "L0" created.
[root@lvm ~]# lvscan
ACTIVE '/dev/VG00/L0' [<8.00 GiB] inherit
[root@lvm ~]#
*VG00を半分半分の2つに分けるには「lvcreate -n L0 -l 50%VG VG00」の後に「lvcreate -n L1 -l 100%FREE VG00」とする
3:3:4にするなら「lvcreate -n L0 -l 30%VG VG00」「lvcreate -n L1 -l 30%VG VG00」「lvcreate -n L2 -l 100%FREE VG00」とします
作った論理ボリューム作成(L0)をフォーマットして /data にmountする
[root@lvm ~]# mkfs.xfs /dev/VG00/L0
[root@lvm ~]# xfs_admin -L data /dev/VG00/L0 <-- ラベルを付けた
writing all SBs
new label = "data"
[root@lvm ~]# vi /etc/fstab
:
LABEL=data /data xfs defaults 0 0
[root@lvm ~]# mkdir /data && mount -a
[root@lvm ~]# df -lTh /data
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VG00-L0 xfs 8.0G 90M 7.9G 2% /data
[root@lvm ~]#
再起動しても/dataが正しくmountされているかを確認します。
のちの削除テストのために/dataにはこの段階で大き目なファイルを配置しました.
[root@lvm ~]# ls -lh /data/
total 4.8G
-rw-r--r--. 1 root root 4.8G Aug 9 2017 en_visual_studio_community_2013_with_update_5_x86_dvd_6816332.iso
[root@lvm ~]# df -lTh /data
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VG00-L0 xfs 8.0G 4.9G 3.2G 61% /data
[root@lvm ~]#
冒頭のように 11GB HDDを追加してみる. 追加した11GB HDDは /dev/sdc として認識されれている. それにパーティションを設けて/dev/sdc1とした.
pvcreateで/dev/sdc1をPhysicalVolumeとさせる.
[root@lvm ~]# pvscan
PV /dev/sdb1 VG VG00 lvm2 [<8.00 GiB / 0 free]
Total: 1 [<8.00 GiB] / in use: 1 [<8.00 GiB] / in no VG: 0 [0 ]
[root@lvm ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created.
[root@lvm ~]# pvscan
PV /dev/sdb1 VG VG00 lvm2 [<8.00 GiB / 0 free]
PV /dev/sdc1 lvm2 [<11.00 GiB]
Total: 2 [<19.00 GiB] / in use: 1 [<8.00 GiB] / in no VG: 1 [<11.00 GiB]
[root@lvm ~]#
次に作った新しいPhysicalVolumeをボリュームグループ VG00 に加えてみる.
[root@lvm ~]# vgextend VG00 /dev/sdc1
Volume group "VG00" successfully extended
[root@lvm ~]# pvscan
PV /dev/sdb1 VG VG00 lvm2 [<8.00 GiB / 0 free]
PV /dev/sdc1 VG VG00 lvm2 [<11.00 GiB / <11.00 GiB free] <-- VG00に参加
Total: 2 [18.99 GiB] / in use: 2 [18.99 GiB] / in no VG: 0 [0 ]
[root@lvm ~]#
そしてVG00から作っている論理ボリューム(L0)を拡張する
[root@lvm ~]# lvextend -l +100%FREE /dev/VG00/L0
Size of logical volume VG00/L0 changed from <8.00 GiB (2047 extents) to 18.99 GiB (4862 extents).
Logical volume VG00/L0 successfully resized.
[root@lvm ~]# df -lTh /data
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VG00-L0 xfs 8.0G 4.9G 3.2G 61% /data
[root@lvm ~]# xfs_growfs /data/ <-- mount場所を指定する
[root@lvm ~]# df -lTh /data
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VG00-L0 xfs 19G 5.0G 15G 26% /data
[root@lvm ~]#
手順は前段と同じ. 追加した18GB HDDは /dev/sdd と認識されている.
[root@lvm ~]# pvcreate /dev/sdd1
[root@lvm ~]# vgextend VG00 /dev/sdd1
[root@lvm ~]# df -lTh /data <-- vgextendしても/dataサイズは変わらない.
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VG00-L0 xfs 19G 5.0G 15G 26% /data
[root@lvm ~]# pvscan
PV /dev/sdb1 VG VG00 lvm2 [<8.00 GiB / 0 free]
PV /dev/sdc1 VG VG00 lvm2 [<11.00 GiB / 0 free]
PV /dev/sdd1 VG VG00 lvm2 [<18.00 GiB / <18.00 GiB free] <-- 同じVG00に配属されてもアサインされてない
Total: 3 [<36.99 GiB] / in use: 3 [<36.99 GiB] / in no VG: 0 [0 ]
[root@lvm ~]#
ボリュームグループ VG00に/dev/sdd1を加えた状態で、取り外ししたい/dev/sdc1の物理ボリュームを他へ移動させる.
とにかく空いているところに移したいので「pvmove /dev/sdb1」とする. 特定の物理ボリュームに移したければ「pvmove <元> <先>」とする.
*pvmoveの際はumountした方がいいみたい
[root@lvm ~]# pvmove /dev/sdb1
/dev/sdb1: Moved: 0.05%
:
/dev/sdb1: Moved: 100.00%
[root@lvm ~]# pvscan
PV /dev/sdb1 VG VG00 lvm2 [<8.00 GiB / <8.00 GiB free] <-- /dev/sdb1が全量freeになった
PV /dev/sdc1 VG VG00 lvm2 [<11.00 GiB / 0 free]
PV /dev/sdd1 VG VG00 lvm2 [<18.00 GiB / 10.00 GiB free] <-- 8GiB分食われた.
Total: 3 [<36.99 GiB] / in use: 3 [<36.99 GiB] / in no VG: 0 [0 ]
[root@lvm ~]# df -lTh /data
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VG00-L0 xfs 19G 5.0G 15G 26% /data
[root@lvm ~]# pvscan
PV /dev/sdb1 VG VG00 lvm2 [<8.00 GiB / <8.00 GiB free]
PV /dev/sdc1 VG VG00 lvm2 [<11.00 GiB / 0 free]
PV /dev/sdd1 VG VG00 lvm2 [<18.00 GiB / 10.00 GiB free]
Total: 3 [<36.99 GiB] / in use: 3 [<36.99 GiB] / in no VG: 0 [0 ]
[root@lvm ~]# vgreduce VG00 /dev/sdb1 <-- VG00から/dev/sdb1 を外した.
Removed "/dev/sdb1" from volume group "VG00"
[root@lvm ~]# pvscan
PV /dev/sdc1 VG VG00 lvm2 [<11.00 GiB / 0 free]
PV /dev/sdd1 VG VG00 lvm2 [<18.00 GiB / 10.00 GiB free]
PV /dev/sdb1 lvm2 [<8.00 GiB]
Total: 3 [36.99 GiB] / in use: 2 [28.99 GiB] / in no VG: 1 [<8.00 GiB]
[root@lvm ~]# pvremove /dev/sdb1 <-- 物理ボリュームとしての任を外す
Labels on physical volume "/dev/sdb1" successfully wiped.
[root@lvm ~]# pvscan
PV /dev/sdc1 VG VG00 lvm2 [<11.00 GiB / 0 free]
PV /dev/sdd1 VG VG00 lvm2 [<18.00 GiB / 10.00 GiB free]
Total: 2 [28.99 GiB] / in use: 2 [28.99 GiB] / in no VG: 0 [0 ]
[root@lvm ~]#
これで/dev/sdbは解放される
partedで付けたlvmフラグを削除する.
[root@lvm ~]# parted /dev/sdb
(parted) p
(略)
Number Start End Size File system Name Flags
1 1049kB 8590MB 8589MB primary lvm
(parted) set 1 lvm off
(parted) p
(略)
Number Start End Size File system Name Flags
1 1049kB 8590MB 8589MB primary
(parted) q
[root@lvm ~]#
[root@lvm ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 8G 0 disk
sda1 8:1 0 2M 0 part
sda2 8:2 0 1G 0 part /boot
sda3 8:3 0 1G 0 part [SWAP]
sda4 8:4 0 1K 0 part
sda5 8:5 0 6G 0 part /
sdb 8:16 0 60G 0 disk
sdb1 8:17 0 60G 0 part
VG0-L0 253:0 0 200G 0 lvm
sdc 8:32 0 100G 0 disk
sdc1 8:33 0 100G 0 part
VG0-L0 253:0 0 200G 0 lvm
sdd 8:48 0 40G 0 disk
sdd1 8:49 0 40G 0 part
VG0-L0 253:0 0 200G 0 lvm
sr0 11:0 1 1024M 0 rom
[root@lvm ~]#
/data(LVM)を削除してみる
[root@lvm ~]# vi /etc/fstab
(/etc/fstab で LVM領域を無効にする)
[root@lvm ~]# umount /data
論理ボリューム(Logicl Volume)を削除
[root@lvm ~]# lvscan
ACTIVE '/dev/VG0/L0' [<199.99 GiB] inherit
[root@lvm ~]# lvremove /dev/VG0/L0
Do you really want to remove active logical volume VG0/L0? [y/n]: y
Logical volume "L0" successfully removed
ボリュームグループ(VolumeGroup)を削除
[root@lvm ~]# vgscan
Reading volume groups from cache.
Found volume group "VG0" using metadata type lvm2
[root@lvm ~]# vgremove VG0
Volume group "VG0" successfully removed
[root@lvm ~]#
物理ボリューム(PhysicalVolume)を削除
[root@lvm ~]# pvscan
PV /dev/sdd1 lvm2 [<40.00 GiB]
PV /dev/sdb1 lvm2 [<60.00 GiB]
PV /dev/sdc1 lvm2 [<100.00 GiB]
Total: 3 [199.99 GiB] / in use: 0 [0 ] / in no VG: 3 [199.99 GiB]
[root@lvm ~]# pvremove /dev/sdd1 /dev/sdb1 /dev/sdc1
Labels on physical volume "/dev/sdd1" successfully wiped.
Labels on physical volume "/dev/sdb1" successfully wiped.
Labels on physical volume "/dev/sdc1" successfully wiped.
[root@lvm ~]#