#author("2020-07-23T23:13:21+00:00","default:sysosa","sysosa") #author("2020-07-23T23:15:57+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で試すのでストレージのサイズは1000分の1で行います。 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 2048s -1s *区分作成(参照: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 ~]# }} 作った論理ボリューム作成(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 ~]# }}