VMware上のLinuxサーバのストレージを増強してLVMを拡張する

VMware上に構成したサーバのストレージを増強していきます。

しかし、単純にストレージのサイズを拡張するだけではOSで利用可能にする事が出来ません。

今回はファイルシステムでLVMを利用している場合の拡張手順を紹介していきます。

環境はOracle DBを構成したOracle Linux 7.3です。

今回はHDDのサイズを拡張していますがディスク追加でも手順は同じです。

それほど難しい手順でもありません。

では早速紹介していきます。

スポンサーリンク

仮想LinuxサーバでLVMを拡張する

サーバ停止してHDDを拡張

まずはシャットダウン状態で「設定の編集」を開いてHDDを増やしていきます。

注意点として、「スナップショット」が存在していると構成に失敗するので確認して削除しておきましょう。

ハードディスク1の「50」を「100」に変更します。

※一度80GBへ増強したため80GBへ拡張する手順になっています。

保存を実行すればVMware上は問題なく拡張完了です。

ここからは仮想マシンをパワーオンしてOS作業に入ります。

LVMの構成の確認

まずは現状を確認します。

「lsblk」コマンドで確認します。

[root@oracle12c ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part
├─ol-root 249:0 0 45G 0 lvm /
└─ol-swap 249:1 0 4G 0 lvm [SWAP]
sr0 11:0 1 1024M 0 rom
[root@oracle12c ~]#

パーティションの情報を確認をして、次は「LV」の確認をします。

[root@oracle12c ~]# lvdisplay
--- Logical volume ---
LV Path /dev/ol/swap
LV Name swap
VG Name ol
LV UUID RwGa42-2eLi-PfIH-Ilps-vXKz-tiUU-5OfCxk
LV Write Access read/write
LV Creation host, time localhost, 2018-03-18 21:30:55 +0900
LV Status available
# open 2
LV Size 4.00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 249:1

--- Logical volume ---
LV Path /dev/ol/root
LV Name root
VG Name ol
LV UUID lmU8Vp-bP0b-yo2n-ZsGw-sWqQ-ZKXw-8Tvjnu
LV Write Access read/write
LV Creation host, time localhost, 2018-03-18 21:30:55 +0900
LV Status available
# open 1
LV Size 44.99 GiB
Current LE 11518
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 249:0

[root@oracle12c ~]#

LVはrootとswapの二つです。

では今回はrootを拡張していきたいと思います。

パーティションを新規追加

まず、拡張した領域を使って新しいパーティションを作成します。

既存のパーティションを拡張するよりも、新規追加して既存のLVMのボリュームグループ(VG)へ追加する方が安全かつ簡単です。

ファイルシステムの操作は「fdisk」コマンドで実行していきます。

「p」を入力して新規でパーティションを確認していきます。

[root@oracle12c ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

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

Disk /dev/sda: 85.9 GB, 85899345920 bytes, 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000aa1e8

デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 104857599 51379200 8e Linux LVM

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

今回、30GBをフルに新規パーティションに割り当てていきます。

fdiskコマンドから新規でパーティションを作成する場合は「n」を入力していきます。

[root@oracle12c ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

コマンド (m でヘルプ): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p

使用する容量を指定しない場合は、全て空エンターで問題ありません。

逆にパーティション番号やサイズを指定したい倍は数字を指定します。

パーティション番号 (3,4, default 3):
最初 sector (104857600-167772159, 初期値 104857600):
初期値 104857600 を使います
Last sector, +sectors or +size{K,M,G} (104857600-167772159, 初期値 167772159):
初期値 167772159 を使います
Partition 3 of type Linux and of size 30 GiB is set

実際に作業が完了してから再度「p」を入力して確認します。

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

Disk /dev/sda: 85.9 GB, 85899345920 bytes, 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000aa1e8

デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 104857599 51379200 8e Linux LVM
/dev/sda3 104857600 167772159 31457280 83 Linux

正常にパーティションが作成(保存は出来ていない)がされたことを確認したら、次はパーティションのタイプをLVM変更していきます。

「m」を入力すると、マニュアルが表示されます。

コマンド (m でヘルプ): m
コマンドの動作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

タイプの変更は「t change a partition’s system id」になるので「t」を入力していきます。

Linux LVMのSystem IDは「8e」なので、追加したパーティション番号を指定し、IDを入力します。

コマンド (m でヘルプ): t
パーティション番号 (1-3, default 3): 3
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

「p」を入力して確認すると「システム」の項目が「Linux」から「Linux LVM」に変わりました。

これで新規パーティションは完成です。

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

Disk /dev/sda: 85.9 GB, 85899345920 bytes, 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000aa1e8

デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 104857599 51379200 8e Linux LVM
/dev/sda3 104857600 167772159 31457280 8e Linux LVM

最期に「w」を入力して保存します。

これをしないと、作成したパーティション情報は消えてしまうので注意しましょう。

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

ioctl() を呼び出してパーティションテーブルを再読込みします。

WARNING: Re-reading the partition table failed with error 16: デバイスもしくはリソー
スがビジー状態です.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
ディスクを同期しています。
[root@oracle12c ~]#

LVMでLVを拡張

ここからはLVMを操作していきます。

念のため、VGの情報などを確認しておきます。

[root@oracle12c ~]# vgdisplay
--- Volume group ---
VG Name ol
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <49.00 GiB
PE Size 4.00 MiB
Total PE 12543
Alloc PE / Size 12542 / 48.99 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID Upbu5S-2ybZ-QPrr-sMHE-TYBq-l1t4-XB4dg0

[root@oracle12c ~]#

VGは一つだけで「ol」がVG名です。

では新規追加したパーティションに「PV」を作成してLVMとして利用できるようにします。

[root@oracle12c ~]# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created.

rootディレクトリを拡張する際に、もしPVの作成に失敗する場合は再起動を検討してください。

通常はオンラインメンテナンスが可能ですが「デバイスがビジー」で作成できない事があります。

PVを作成したら確認してみます。

[root@oracle12c ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name ol
PV Size <49.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 12543
Free PE 1
Allocated PE 12542
PV UUID 3Oqxw6-A4ZD-j8AB-zGVi-vMHB-5zjF-ljiwUL

"/dev/sda3" is a new physical volume of "30.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda3
VG Name
PV Size 30.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID xlhZMY-uNec-S2xj-YJFA-wiTu-R3Ek-MgcW28

[root@oracle12c ~]#

正常に30GBが認識されました。

次は、拡張したいLVが所属するVGにPVを割り当てます。

[root@oracle12c ~]# vgextend ol /dev/sda3
Volume group "ol" successfully extended
[root@oracle12c ~]#

オプションをコマンドにつけて簡易的な結果表示をします。

30GB空き領域が出来て事が割ります。

[root@oracle12c ~]# vgdisplay -C
VG #PV #LV #SN Attr VSize VFree
ol 2 2 0 wz--n- 78.99g 30.00g
[root@oracle12c ~]#

VGにPVを割り当てたので、実際にLVを拡張します。

「lvextend」コマンドに「-L」と「+」でサイズを指定して、最後に拡張するLVのパスを入力して実行します。

[root@oracle12c ~]# lvextend -L +25GB /dev/ol/root
Size of logical volume ol/root changed from 44.99 GiB (11518 extents) to 69.99 GiB (17918 extents).
Logical volume ol/root successfully resized.
[root@oracle12c ~]#

正常に設定が反映されたことを確認します。

これでLVMによるLV拡張作業は完了となります。

[root@oracle12c ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 49G 0 part
│ ├─ol-root 249:0 0 70G 0 lvm /
│ └─ol-swap 249:1 0 4G 0 lvm [SWAP]
└─sda3 8:3 0 30G 0 part
└─ol-root 249:0 0 70G 0 lvm /
sr0 11:0 1 1024M 0 rom
[root@oracle12c ~]#

ファイルシステムに反映する

最期はファイルシステムに拡張した要領を認識させていきます。

これをしないと、ソフトウェアインストール時に容量があっても空き領域が見えずにエラーとなる事があります。

[root@oracle12c ~]# xfs_growfs /dev/mapper/ol-root
meta-data=/dev/mapper/ol-root    isize=256    agcount=4, agsize=2948608 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=11794432, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=5759, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 11794432 to 18348032

上記のコマンドを実行した後にdfコマンドを実行します。

そすると正常に容量が追加されて見えてきます。

[root@oracle12c ~]# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 9.0M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/ol-root 70G 43G 28G 61% /
/dev/sda1 1014M 201M 814M 20% /boot
tmpfs 405M 24K 405M 1% /run/user/1200
tmpfs 405M 0 405M 0% /run/user/0
[root@oracle12c ~]#

これでOS側で空き容量が使用可能になります。

やり方と順番さえ間違わなければ簡単に作業が出来ます。

スポンサーリンク

最期に

久しぶりにLVMで作業をしてみました。

HDDやパーティションの構成に関係なくボリュームを操作できるのはかなりメリットです。

Linux上のファイルシステムやRDMの管理については定期的に知識を補って置いた方がいざというときには役に立ちそうです。

スポンサーリンク

フォローする

合わせて読んでみる

良ければ他の記事もどうぞ!



スポンサーリンク