#author("2023-09-05T06:33:26+00:00","default:sysosa","sysosa") #author("2023-09-05T06:38:05+00:00","default:sysosa","sysosa") 複数のストレージ領域を統合して大きなボリュームにできる. 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 、、っといった具合で同一ボリュームを拡張できる. しかも古い領域を破棄しながら. &ref(2020y07m24d_075715492.png,nolink,noborder); ここでは CentOS8 を使ってLVMのボリュームの拡張とその要素の削除を示す. &color(red){*};&size(10){古いHDDをそのまま継続して使いたいなら別途エンクロージャが必要}; &size(10){[[LVM200704]]}; ***方針 [#m63daa85] ESXiで試します. 手始めに8GBの領域を設置して、次に11GB、さらに18GBを追加して、初めの8GBの領域を除いてみます。 ***準備 [#qe5b967b] まずLVMパッケージをインストールします. #code(nonumber){{ [root@lvm ~]# yum install lvm2 }} ***ストレージの下拵え [#beca7cf8] まず8GBの領域を追加してみる. #code(nonumber){{ [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 ~]# }} ***LVM作成 [#qaaf5e9c] 用意した8GBの領域をLVMにして、/dataに乗せてみる. まず&color(green){''pvcreate''};コマンドでPhysicalVolume(物理ボリューム)としてLVM側に認知させます。 #code(nonumber){{ [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)作成を作ります. &color(green){''vgcreate''};コマンドで #code(nonumber){{ [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)を作る. &color(green){''lvcreate''};コマンドで #code(nonumber){{ [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 ~]# }} &color(red){*};&size(10){VG00を半分半分の2つに分けるには「lvcreate -n &color(magenta){L0}; -l &color(magenta){50%FREE}; VG00」の後に「lvcreate -n &color(orangered){L1}; -l &color(orangered){100%FREE}; VG00」とする}; &color(red){*};&size(10){VG00を半分半分の2つに分けるには「lvcreate -n &color(magenta){L0}; -l &color(magenta){50%VG}; VG00」の後に「lvcreate -n &color(orangered){L1}; -l &color(orangered){100%FREE}; VG00」とする}; &size(10){3:3:4にするなら「lvcreate -n &color(magenta){L0}; -l &color(magenta){30%VG}; VG00」「lvcreate -n &color(orangered){L1}; -l &color(orangered){30%VG}; VG00」「lvcreate -n &color(crimson){L2}; -l &color(crimson){100%FREE}; VG00」とします}; 作った論理ボリューム作成(L0)をフォーマットして /data にmountする #code(nonumber){{ [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にはこの段階で大き目なファイルを配置しました. #code(nonumber){{ [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 ~]# }} ***LVMの領域拡大 [#h45ad9b0] 冒頭のように 11GB HDDを追加してみる. 追加した11GB HDDは /dev/sdc として認識されれている. それにパーティションを設けて/dev/sdc1とした. pvcreateで/dev/sdc1をPhysicalVolumeとさせる. #code(nonumber){{ [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 に加えてみる. #code(nonumber){{ [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)を拡張する #code(nonumber){{ [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を加えるが、そこに/dev/sdb1のPEを移して/dev/sdb1を開放する [#lafc4a1d] 手順は前段と同じ. 追加した18GB HDDは /dev/sdd と認識されている. #code(nonumber){{ [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 <元> <先>」とする. &color(red){*};&size(10){pvmoveの際はumountした方がいいみたい}; #code(nonumber){{ [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フラグを削除する. #code(nonumber){{ [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 ~]# }} ***LVM削除 [#zbdeb891] #code(nonumber){{ [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)を削除してみる #code(nonumber){{ [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 ~]# }}