LVM----拡張/縮小VGと拡張/縮小LV


前編の博文LVM-基本的な作成と使用について紹介したが、LVMの基本的な構成と使用については、この博文ではLVMの他の操作を断続的に紹介する.
1.VGの拡張
2.VGの縮小
3.LVの拡張
4.LVの縮小
------------------VGの拡張、VGの拡張は比較的に簡単な3段階の操作で完成することができます-----------
手順:
  • パーティションを準備し、新しいパーティションを設定するSystem IDは8 e   
  • pvcreateを使用してPV
  • を構築
  • vgextendを使用して新しいPVを既存のVGに
  • 加える.
    現在のシステムで使用されているPVを表示します.
    [root@localhost ~]# pvs
      PV         VG     Fmt  Attr PSize  PFree
      /dev/sdb1  testVG lvm2 a--  10.00g     0
      /dev/sdc1  testVG lvm2 a--  10.00g 10.00g

    パーティションの準備結果:
    [root@localhost ~]# fdisk /dev/sdd
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdd1               1        1306    10490413+  8e  Linux LVM

    pvcreateコマンドを使用してpvを作成します.
    [root@localhost ~]# pvcreate /dev/sdd1
      Physical volume "/dev/sdd1" successfully created

    現在のシステムのすべてのPVを表示するには、次の手順に従います.
    [root@localhost ~]# pvscan
      PV /dev/sdb1   VG testVG          lvm2 [10.00 GiB / 0    free]
      PV /dev/sdc1   VG testVG          lvm2 [10.00 GiB / 10.00 GiB free]
      PV /dev/sdd1                      lvm2 [10.00 GiB]
      Total: 3 [30.00 GiB] / in use: 2 [20.00 GiB] / in no VG: 1 [10.00 GiB]

    sdb 1とsdc 1がtestVGというVGに組み込まれていることがわかります.
    /dev/sdd 1というPVをtestVGに追加します.
    [root@localhost ~]# vgextend testVG /dev/sdd1
      Volume group "testVG" successfully extended

    VG拡張結果を表示するには:
    [root@localhost ~]# pvs
      PV         VG     Fmt  Attr PSize  PFree
      /dev/sdb1  testVG lvm2 a--  10.00g     0
      /dev/sdc1  testVG lvm2 a--  10.00g 10.00g
      /dev/sdd1  testVG lvm2 a--  10.00g 10.00g

    ----------------VGの削減----------
    手順:
  • 削除するPV
  • を決定する
  • pvmoveを使用してこのPV上のデータを他のPV
  • に転送する.
  • vgreduceを使用:このPVをボリュームグループから削除する
  • .
  • pvremoveを使用して物理ボリュームを削除し、pvの物理ボリューム
  • を本当に削除します.
    /dev/sdb 1というpvを削除
    pvmove/path/to/pv  PVのデータを他のPVに転送し、ターゲットPVを指定しない場合、同ボリュームグループの他のPVに転送します.
    [root@localhost ~]# pvmove  /dev/sdb1
      /dev/sdb1: Moved: 0.2%
      /dev/sdb1: Moved: 61.5%
      /dev/sdb1: Moved: 100.0%

    ボリュームグループtestVGの現在の状況:
    [root@localhost ~]# pvs
      PV         VG     Fmt  Attr PSize  PFree
      /dev/sdb1  testVG lvm2 a--  10.00g 10.00g
      /dev/sdc1  testVG lvm2 a--  10.00g     0
      /dev/sdd1  testVG lvm2 a--  10.00g 10.00g

    ボリュームグループtestVGから/dev/sdv 1というPVを削除:
    [root@localhost ~]# vgreduce  testVG /dev/sdb1
      Removed "/dev/sdb1" from volume group "testVG"

    ボリュームグループtestVGの状況を再度確認します.
    [root@localhost ~]# pvs
      PV         VG     Fmt  Attr PSize  PFree
      /dev/sdb1         lvm2 a--  10.00g 10.00g
      /dev/sdc1  testVG lvm2 a--  10.00g     0
      /dev/sdd1  testVG lvm2 a--  10.00g 10.00g

    vgreduceコマンドは、/dev/sdb 1をボリュームグループtestVGから削除するだけで、/dev/sdb 1というPVは削除されていません
    pvremoveを使用して、/dev/sdb 1というPVを本当に削除します.
    [root@localhost ~]# pvremove  /dev/sdb1
      Labels on physical volume "/dev/sdb1" successfully wiped

    pvremoveの操作結果を表示すると、/dev/sdb 1というpvが削除されていることがわかります
    [root@localhost ~]# pvs
      PV         VG     Fmt  Attr PSize  PFree
      /dev/sdc1  testVG lvm2 a--  10.00g     0
      /dev/sdd1  testVG lvm2 a--  10.00g 10.00g

    注意:pvmoveとpvremoveの操作の違いは、pvmoveは移動データであり、pvremoveはPVを削除する.
    VG上の動作はlv中のデータに影響しない
    ----------------------LVの拡張-----------------------
    手順:
  • は、現在の論理ボリュームが存在するボリュームグループに十分な空き領域があることを決定する:
  • 拡張物理境界、すなわちパーティションのサイズ
  • 拡張論理境界、すなわちファイルシステムのサイズ
  • ファイルシステム検出
  • を完了する.
    コマンドpvsを使用してtestVGという名前の情報を表示します.
    [root@localhost ~]# vgs
      VG     #PV #LV #SN Attr   VSize  VFree
      testVG   2   1   0 wz--n- 20.00g 10.00g

    testVGのボリュームグループではPV数2 LV数1,VG総サイズ20 G,アイドル10 Gが見られる
    lvのサイズを表示するには:
    [root@localhost ~]# lvs
      LV     VG     Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
      testLV testVG -wi-ao--- 10.00g

    コマンドlvextend[-L|-l][+]SIZE/path/to/lvを使用して物理境界のサイズを拡張します.
    sizeの前に+番号とプラス記号がない違いがあります.
    プラス記号:表示拡張
    プラス記号なし:
    -L:SIZE B,M,G単位で拡張量を表す
    -l:物理拡張単位で、何個拡張したかを表すpe
    [root@localhost ~]# lvextend -L +5G /dev/testVG/testLV
      Extending logical volume testLV to 15.00 GiB
      Logical volume testLV successfully resized

    lvsを使用して、拡張されたlvの前状況を表示します.
    [root@localhost ~]# lvs
      LV     VG     Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
      testLV testVG -wi-ao--- 15.00g

    拡張に成功したことがわかりますが、なぜlvをマウントしてdf-lhで表示すると、15 Gではなく10 Gしか見えませんか?
    [root@localhost ~]# df -lh /backup/
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/testVG-testLV
                          9.9G  151M  9.2G   2% /backup
    [root@localhost ~]#j ld

    パーティションのサイズを拡張しただけで、拡張ファイルシステムのサイズは拡張されていません.
    コマンドresize 2 fsの使用 /path/to/device拡張ファイルシステム:
    [root@localhost ~]# resize2fs  /dev/testVG/testLV
    resize2fs 1.41.12 (17-May-2010)
    Filesystem at /dev/testVG/testLV is mounted on /backup; on-line resizing required
    old desc_blocks = 1, new_desc_blocks = 1
    Performing an on-line resize of /dev/testVG/testLV to 3932160 (4k) blocks.
    The filesystem on /dev/testVG/testLV is now 3932160 blocks long.

    再びdf-lhを使って文区の大きさを見てみると、結果も15 Gでした
    [root@localhost ~]# df -lh /backup/
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/testVG-testLV
                           15G  153M   14G   2% /backup

    ファイルシステムの検出:
    fsck:サポートされているすべてのファイルシステムを検出できます
    e2fsck [-t  fs_type][-f][-p]  /path/to/deviceはextシリーズファイルシステムのみをサポート 
    -f:強制検出
    -p:検出中に問題があれば修復
    注意現在マウント中のデバイスは検出できません
    [root@localhost ~]# umount /dev/testVG/testLV
    [root@localhost ~]# e2fsck -f /dev/testVG/testLV
    e2fsck 1.41.12 (17-May-2010)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    /dev/testVG/testLV: 12/983040 files (0.0% non-contiguous), 100865/3932160 blocks

    ------------------------------------------------------------------------------------(リスクあり)
    手順:
  • はどのくらい縮小するかを確定しますか?前提は、少なくとも既存のすべてのデータ
  • を収容できることである.
  • 現在マウント中のLVをアンインストールし、ファイルシステム
  • を検出する.
  • 論理境界resize 2 fs/path/to/device SIZE
  • を縮小
  • 物理境界lvreduce[-L|-l]SIZE/path/to/lv
  • を縮小
  • 検出ファイルシステム
  • マウント使用
  • 現在マウント中のデバイスを表示するには、次の手順に従います.
    [root@localhost ~]# mount
    /dev/sda2 on / type ext4 (rw)
    proc on /proc type proc (rw)
    sysfs on /sys type sysfs (rw)
    devpts on /dev/pts type devpts (rw,gid=5,mode=620)
    tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
    /dev/sda1 on /boot type ext4 (rw)
    none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
    sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
    /dev/mapper/testVG-testLV on /backup type ext4 (rw)

    現在マウント中のLVをアンインストールし、ファイルシステムを検出
    [root@localhost ~]# umount /dev/mapper/testVG-testLV
    [root@localhost ~]# e2fsck -f /dev/mapper/testVG-testLV
    e2fsck 1.41.12 (17-May-2010)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    /dev/mapper/testVG-testLV: 12/983040 files (0.0% non-contiguous), 100865/3932160 block

    resize 2 fsを使用して、縮小論理境界を使用します.
    [root@localhost ~]# resize2fs /dev/testVG/testLV  5G
    resize2fs 1.41.12 (17-May-2010)
    Resizing the filesystem on /dev/testVG/testLV to 1310720 (4k) blocks.
    The filesystem on /dev/testVG/testLV is now 1310720 blocks long.

    Lvsを用いてLVを調べたところ,LVは論理境界のみを縮小し,物理境界を縮小していないため変化していないことが分かった.
    [root@localhost ~]# lvs
      LV     VG     Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
      testLV testVG -wi-a---- 15.00g

    lvreduceを使用して物理境界を縮小するには、次の手順に従います.
    [root@localhost ~]# lvchange  -a n /dev/testVG/testLV
    [root@localhost ~]# lvreduce -L 5G /dev/testVG/testLV
      Reducing logical volume testLV to 5.00 GiB
      Logical volume testLV successfully resized
    [root@localhost ~]# lvchange  -a y /dev/testVG/testLV

    lvsを再使用するとlvが減少することが分かった:
    [root@localhost ~]# lvs
      LV     VG     Attr      LSize Pool Origin Data%  Move Log Cpy%Sync Convert
      testLV testVG -wi-a---- 5.00g

    検出ファイルシステム:
    [root@localhost ~]# e2fsck  -f /dev/testVG/testLV
    e2fsck 1.41.12 (17-May-2010)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    /dev/testVG/testLV: 12/327680 files (0.0% non-contiguous), 58463/1310720 blocks

    デバイスをマウントしてサイズを表示するには、次の手順に従います.
    [root@localhost ~]# mount /dev/testVG/testLV  /backup/
    [root@localhost ~]# df -lh /backup/
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/testVG-testLV
                          5.0G  148M  4.6G   4% /backu

    --------------------------------------------------------------------------------