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の管理については定期的に知識を補って置いた方がいざというときには役に立ちそうです。