さくせいちゅう

複数のストレージ領域を統合して大きなボリュームにできる.

RAID5/RAID6で作った領域をLVMで繋げるか、RAID50/RAID60とかで作るか悩みどころではある.

RAID50/RAI60なら個別のRAID5/RAID6のサイズは同じである必要があるけど、LVMの場合は異なるサイズのRAID5/RAID6でも構わない点がいいのかな.

初回は 12slotsのRAID6(8TB*[12-2]:80TB)を作り、容量が切迫したら 12slotsRAID5(10TB*[12-1]:110TB)を追加してトータル 190TB へ.

その後、さらに 12slotsRAID5(16TB*[12-1]:176TB)を追加して 80TB+110TB+176TB= 366TB になるが、古い初期のRAID6を外すて 286TB へ.

空にした初期の12slotsに、、っといった具合で同一ボリュームを拡張できる. しかも古い領域を破棄しながら.

ここでは CentOS8 を使ってボリュームの拡張とその要素の削除を示す.

LVM200704

方針

ESXiで試すのでストレージのサイズは1000分の1で行います。
手始めに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 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作成

用意した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 ~]#

作った論理ボリューム作成(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 ~]#

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拡張してみる.

手順は前段と同じ. 追加した11GB HDDは /dev/sdd と認識されている.

[root@lvm ~]# pvcreate /dev/sdd1
[root@lvm ~]# vgextend VG00 /dev/sdd1
[root@lvm ~]# lvextend -l +100%FREE /dev/VG00/L0
[root@lvm ~]# xfs_growfs /data
[root@lvm ~]# df -lTh /data
Filesystem          Type  Size  Used Avail Use% Mounted on
/dev/mapper/VG00-L0 xfs    37G  5.1G   32G  14% /data
 
[root@lvm ~]#

LVM削除

一度作ったLVMを削除・崩壊させるには下記の手順が必要らしいです。

  • 1.まず、削除対象のLVMをアンマウントして、論理ボリューム(Logicl Volume)を削除します。
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
    
    # df | grep home3
    /dev/mapper/VG01-L0   10475520     32928  10442592   1% /home3
    #
    # lvscan
      ACTIVE            '/dev/VG00/L0' [25.00 GiB] inherit
      ACTIVE            '/dev/VG00/L1' [6.99 GiB] inherit
      ACTIVE            '/dev/VG01/L0' [10.00 GiB] inherit
    #
    # lvremove /dev/VG01/L0
    Do you really want to remove active logical volume L0? [y/n]: y
      Logical volume "L0" successfully removed
    #
    # lvscan                                                   *確認
      ACTIVE            '/dev/VG00/L0' [25.00 GiB] inherit
      ACTIVE            '/dev/VG00/L1' [6.99 GiB] inherit
    #
    これでボリュームグループ01(VolumeGroup)の論理ボリューム0(Logicl Volume)[/dev/VG01/L0]が解放された。
    しかしLVM向けのボリュームグループ(VolumeGroup)としては健在なので、
      1
      2
      3
      4
      5
    
    # vgscan
      Reading all physical volumes.  This may take a while...
      Found volume group "VG00" using metadata type lvm2
      Found volume group "VG01" using metadata type lvm2       <----これ
    #
  • 2.vgremoveにてボリュームグループ(VolumeGroup)を削除します
      1
      2
      3
      4
      5
      6
    
    # vgremove VG01
     Volume group "VG01" successfully removed
    # vgscan
      Reading all physical volumes.  This may take a while...
      Found volume group "VG00" using metadata type lvm2
    #
    消えたことを確認してから、次に物理ボリューム(PhysicalVolume)を削除します。
      1
      2
      3
      4
      5
      6
    
    # pvscan
      PV /dev/sdb1   VG VG00            lvm2 [16.00 GiB / 0    free]
      PV /dev/sdc1   VG VG00            lvm2 [16.00 GiB / 0    free]
      PV /dev/sdd1                      lvm2 [16.00 GiB]
      Total: 3 [47.99 GiB] / in use: 2 [31.99 GiB] / in no VG: 1 [16.00 GiB]
    #
  • 3.物理ボリューム(PhysicalVolume)の削除には pvremove コマンドを使います。
      1
      2
      3
      4
      5
      6
      7
    
    # pvremove /dev/sdd1
      Labels on physical volume "/dev/sdd1" successfully wiped
    #
    # pvscan
      PV /dev/sdb1   VG VG00   lvm2 [16.00 GiB / 0    free]
      PV /dev/sdc1   VG VG00   lvm2 [16.00 GiB / 0    free]
      Total: 2 [31.99 GiB] / in use: 2 [31.99 GiB] / in no VG: 0 [0   ]

これで削除されました。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2020-07-04 (土) 08:32:34 (21m)