おっさんエンジニアの忘備録

Linux系の各種作業を自分用の忘備録として残しています

RHEL6で論理ボリューム拡張

前提条件、環境

  • OS:RHEL6.7

  • 物理サーバの空きスロットに900GBのディスクを3本増設し、RAID5を構築(ハードウェアRAID)

  • 拡張するLV(Logical Volume、論理ボリューム)は「VolGroup00-LogVol00」

# df -m
Filesystem           1M-ブロック    使用   使用可 使用% マウント位置
/dev/mapper/VolGroup-LogVol00
                        492150    153556    313594  33% /
tmpfs                     5950         1      5950   1% /dev/shm
/dev/mapper/VolGroup00-LogVol00
                        297651    167939    114597  60% /backup
/dev/sda1                  243        60       171  26% /boot
/var/opt/aipsnap/aiptmpfile.img
                         20353       130     19189   1% /var/opt/aipsnap/tmp

パーティションテーブルの確認

# fdisk /dev/sdbバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルをディスク識別子 0xd322afdb で作成します。
あなたが書き込みを決定するまで、変更はメモリ内だけに残します。
その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
      強く推奨します。 and change display units to
         sectors (command 'u').

コマンド (m でヘルプ): p

ディスク /dev/sdb: 1799.3 GB, 1799255752704 バイ
ヘッド 255, セクタ 63, シリンダ 218747
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0xd322afdb

デバイス ブート      始点        終点     ブロック   Id  システム

コマンド (m でヘルプ):q

今回追加したディスクが/dev/sdbとして認識されています。

拡張パーティションの作成

# fdisk /dev/sdbバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルをディスク識別子 0x63fff6ee で作成します。
あなたが書き込みを決定するまで、変更はメモリ内だけに残します。
その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
      強く推奨します。 and change display units to
         sectors (command 'u').

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
e
パーティション番号 (1-4): 1
最初 シリンダ (1-218747, 初期値 1):(何も入力せずにenter)
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-218747, 初期値 218747): +900G

コマンド (m でヘルプ): p

ディスク /dev/sdb: 1799.3 GB, 1799255752704 バイト
ヘッド 255, セクタ 63, シリンダ 218747
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x63fff6ee

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1               1      117489   943730361    5  拡張領域

上記の通り拡張パーティション/dev/sdb1が作成されています。
後々いろいろ調べていたのですが、Lastシリンダの選択に関してはディスク全てを拡張パーティションにする場合はデフォルト値(何も入力せずにenter)のほうがいいみたいです。

論理パーティションの作成

コマンド (m でヘルプ): n
コマンドアクション
   l   論理 (5 以上)
   p   基本パーティション (1-4)
l
最初 シリンダ (1-117489, 初期値 1):(何も入力せずにenter)
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-117489, 初期値 117489): +900G

コマンド (m でヘルプ): p

ディスク /dev/sdb: 1799.3 GB, 1799255752704 バイト
ヘッド 255, セクタ 63, シリンダ 218747
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x63fff6ee

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1               1      117489   943730361    5  拡張領域
/dev/sdb5               1      117489   943730329+  83  Linux

コマンド (m でヘルプ):

論理パーティションsdb5が作成されています。

論理パーティションファイルシステム(システムID)変更

コマンド (m でヘルプ): t
パーティション番号 (1-5): 5
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 5 から 8e (Linux LVM) に変更しました

コマンド (m でヘルプ): p

ディスク /dev/sdb: 1799.3 GB, 1799255752704 バイト
ヘッド 255, セクタ 63, シリンダ 218747
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x63fff6ee

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1               1      117489   943730361    5  拡張領域
/dev/sdb5               1      117489   943730329+  8e  Linux LVM

コマンド (m でヘルプ):

ファイルシステムが「Linux LVM」に変更されています。

変更の保存

コマンド (m でヘルプ): wq
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
#

新しいパーティションをシステムに認識させる

# partprobe
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (デバイスもしくはリソースがビジー状態です).  As a result, it may not reflect all of your changes until after reboot.

サーバ再起動

# shutdown -r now

念のため変更が反映されているか確認

# fdisk /dev/sdb

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
      強く推奨します。 and change display units to
         sectors (command 'u').

コマンド (m でヘルプ): p

ディスク /dev/sdb: 1799.3 GB, 1799255752704 バイト
ヘッド 255, セクタ 63, シリンダ 218747
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x63fff6ee

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1               1      117489   943730361    5  拡張領域
/dev/sdb5               1      117489   943730329+  8e  Linux LVM

コマンド (m でヘルプ): q

変更が反映されています。

物理ボリューム作成

# pvcreate /dev/sdb5
  Physical volume "/dev/sdb5" successfully created
# pvdisplay
              ・
              ・
  "/dev/sdb5" is a new physical volume of "900.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb5
  VG Name
  PV Size               900.01 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               k7nprd-HXRc-MmRQ-dfEP-JerS-vtqn-ybm0CK

物理ボリューム「/dev/sdb5」が作成されています。

現在のVG(VolumeGroup)の確認

# vgdisplay
  --- Volume group ---
  VG Name               VolGroup00
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               295.31 GiB
  PE Size               4.00 MiB
  Total PE              75599
  Alloc PE / Size       75599 / 295.31 GiB
  Free  PE / Size       0 / 0
  VG UUID               HstdF7-UfHF-h2vK-mHpB-iURB-YO4a-ZIeTSs

  --- Volume group ---
  VG Name               VolGroup
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               488.28 GiB
  PE Size               4.00 MiB
  Total PE              124999
  Alloc PE / Size       124999 / 488.28 GiB
  Free  PE / Size       0 / 0
  VG UUID               5o8RVG-g0kR-ncUN-K44V-xcVw-esne-HQKHrR

2つのVGがありますが、今回は「VolGroup00」を拡張します。

VG(VolumeGroup)拡張

# vgextend VolGroup00 /dev/sdb5
  Volume group "VolGroup00" successfully extended
# pvdisplay -v /dev/sdb5
    Using physical volume(s) on command line
  --- Physical volume ---
  PV Name               /dev/sdb5
  VG Name               VolGroup00
  PV Size               900.01 GiB / not usable 3.65 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              230402
  Free PE               230402
  Allocated PE          0
  PV UUID               k7nprd-HXRc-MmRQ-dfEP-JerS-vtqn-ybm0CK
# vgdisplay
  --- Volume group ---
  VG Name               VolGroup00
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               1.17 TiB
  PE Size               4.00 MiB
  Total PE              306001
  Alloc PE / Size       75599 / 295.31 GiB
  Free  PE / Size       230402 / 900.01 GiB
  VG UUID               HstdF7-UfHF-h2vK-mHpB-iURB-YO4a-ZIeTSs

物理ボリュームがVG「VolGroup00」に所属しており、かつVG「VolGroup00」の容量が拡張されています。

LV(Logical Volume)の確認

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/VolGroup00/LogVol00
  LV Name                LogVol00
  VG Name                VolGroup00
  LV UUID                Gu5YIo-HjiV-OcdP-xzeX-g9xn-oyr6-tbqDvU
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2013-08-13 22:51:36 +0900
  LV Status              available
  # open                 1
  LV Size                295.31 GiB
  Current LE             75599
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/VolGroup/LogVol00
  LV Name                LogVol00
  VG Name                VolGroup
  LV UUID                WAReRP-SClk-MpsC-oITR-Fpfb-QCbr-8IdWPY
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2013-08-13 22:50:31 +0900
  LV Status              available
  # open                 1
  LV Size                488.28 GiB
  Current LE             124999
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

LV拡張用のパラメータ取得

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               VolGroup00
  PV Size               195.31 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              49999
  Free PE               0
  Allocated PE          49999
  PV UUID               Y8cRJ0-DARD-YFA2-3Ncq-OHOo-JUk5-fheULi

  --- Physical volume ---
  PV Name               /dev/sda6
  VG Name               VolGroup00
  PV Size               100.00 GiB / not usable 1.65 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              25600
  Free PE               0
  Allocated PE          25600
  PV UUID               K9z05R-knpR-2dFz-zN17-yDec-9tS7-P0441N

  --- Physical volume ---
  PV Name               /dev/sdb5
  VG Name               VolGroup00
  PV Size               900.01 GiB / not usable 3.65 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              230402
  Free PE               230402
  Allocated PE          0
  PV UUID               k7nprd-HXRc-MmRQ-dfEP-JerS-vtqn-ybm0CK

  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup
  PV Size               488.28 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              124999
  Free PE               0
  Allocated PE          124999
  PV UUID               bZ3rT7-eX3B-Z93t-TrJl-5vPc-m1X1-grykyP

物理ボリューム「/dev/sdb5」の物理エクステントのサイズ(PE Size)と物理エクステントの総数(Total PE)を取得します。 PE(物理エクステント)はLVMが扱う記憶領域の最小単位となり、4MiBがデフォルトのようです。ちなみにPE Sizeに出ている「MiB」ですが、メビバイトと言ってコンピューター上での「MB」ということです。詳しくはこちらを。

拡張できるサイズの計算

拡張できるサイズに関しては「PE Size×Total PE」で求められるので、拡張できるサイズは4×230402=921608MBになります。

LV(Logical Volume)拡張

# lvextend -L +921608M /dev/VolGroup00/LogVol00
  Extending logical volume LogVol00 to 1.17 TiB
  Logical volume LogVol00 successfully resized

LV拡張確認

# lvdisplay /dev/VolGroup00/LogVol00
  --- Logical volume ---
  LV Path                /dev/VolGroup00/LogVol00
  LV Name                LogVol00
  VG Name                VolGroup00
  LV UUID                Gu5YIo-HjiV-OcdP-xzeX-g9xn-oyr6-tbqDvU
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2013-08-13 22:51:36 +0900
  LV Status              available
  # open                 1
  LV Size                1.17 TiB
  Current LE             306001
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

LVのサイズが拡張されています。

ファイルシステムの拡大

# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /backup; on-line resizing required
old desc_blocks = 19, new_desc_blocks = 75
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 313345024 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 313345024 blocks long.

ディスク容量確認

# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/VolGroup-LogVol00
                      481G  150G  307G  33% /
tmpfs                 5.9G   72K  5.9G   1% /dev/shm
/dev/mapper/VolGroup00-LogVol00
                      1.2T  168G  950G  15% /backup
/dev/sda1             243M   60M  171M  26% /boot
/var/opt/aipsnap/aiptmpfile.img
                       20G  130M   19G   1% /var/opt/aipsnap/tmp

ディスク容量が拡張されています。