CentOS7のインストール時にパーティション作成を「おまかせ」で進めると、LVMを使って後でいろいろ変更出来る様に設定した状態でインストールしてくれます。
今回はこの状態から、新たにHDDを追加しその領域を全て /homeパーティションの領域として追加する手順を書いておこうと思います。
LVM(Logical Volume Manager)、論理ボリュームマネージャを使うには、いくつかの概念を理解しておく必要があります。
簡単にまとめておきます。
- lvmパーティション
LVM配下で使いたいディスク領域をパーティション単位で指定したい場合は「lvmパーティション」を作成します。
通常のfdiskやpartedで切ったパーティションに lvmフラグ を立てておきます。
- PV(Physical volume)
LVMに登録する物理的なディスク領域です。lvmパーティションやHDD丸ごと全て登録する事も出来ます。
- VG(Volume group)
PVを集めたものです。複数のPVをひとつのディスク領域の様に扱うことが出来る様になります。
- LV(Logical volume)
VGから割り当てたディスク領域で作成した論理的なパーティションです。これにファイルシステムを作成しマウントして利用します。
まず、現状を確認してみます。
500GByteのHDDにCentOS7のインストーラーおまかせのパーティション作成でインストールしてあります。
現状確認
HDDのパーティションの状態
1 2 3 4 5 6 7 8 9 10 |
# parted -l Model: ATA Hitachi HDP72505 (scsi) Disk /dev/sda: 500GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 525MB 524MB primary xfs boot 2 525MB 500GB 500GB primary lvm |
LVMはLinuxカーネルに組み込まれた機能です。Linuxカーネルが立ち上がってから利用出来る機能ですから、LVMの論理ボリュームからブートは行なえません。
ですので、/bootパーティションだけ通常通り primaryのパーティションを切って直接xfsのファイルシステムが作成されています。
他の領域は全てLVM配下の領域としている様です。
LVの状態を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# lvdisplay --- Logical volume --- LV Path /dev/centos/root LV Name root VG Name centos LV UUID ull5Qa-g5Mp-r7WE-l1rv-8Q13-SfcV-OxYEui LV Write Access read/write LV Creation host, time backup.dmz.hogehoge-k.com, 2016-11-15 23:47:49 +0900 LV Status available # open 1 LV Size 50.00 GiB Current LE 12800 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/centos/home LV Name home VG Name centos LV UUID YGZHXL-tiAv-wfqr-jD8T-O6pY-V0bV-Py7SsI LV Write Access read/write LV Creation host, time backup.dmz.hogehoge-k.com, 2016-11-15 23:47:50 +0900 LV Status available # open 1 LV Size 465.27 GiB Current LE 1893809 Segments 5 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 --- Logical volume --- LV Path /dev/centos/swap LV Name swap VG Name centos LV UUID qAM1WV-GAvU-bxjf-AlOv-89Iq-G8gB-Vd2KHB LV Write Access read/write LV Creation host, time backup.dmz.hogehoge-k.com, 2016-11-15 23:47:54 +0900 LV Status available # open 2 LV Size 3.88 GiB Current LE 992 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 |
ルートパーティション、/home/パーティション、swapパーティションの領域が centosという名前のVGから領域を切り取って作成されているのがわかります。
では、VG centosの中身を確認しておきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# vgdisplay -v centos Using volume group(s) on command line. --- Volume group --- VG Name centos System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 465.27 GiB PE Size 4.00 MiB Total PE 119109 Alloc PE / Size 119093 / 465.21 GiB Free PE / Size 16 / 64.00 MiB VG UUID Jp7cdQ-3e1a-95wo-bDP1-3api-z26n-S3dLv3 --- Logical volume --- LV Path /dev/centos/root LV Name root VG Name centos LV UUID ull5Qa-g5Mp-r7WE-l1rv-8Q13-SfcV-OxYEui LV Write Access read/write LV Creation host, time backup.dmz.hogehoge-k.com, 2016-11-15 23:47:49 +0900 LV Status available # open 1 LV Size 50.00 GiB Current LE 12800 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/centos/home LV Name home VG Name centos LV UUID YGZHXL-tiAv-wfqr-jD8T-O6pY-V0bV-Py7SsI LV Write Access read/write LV Creation host, time backup.dmz.hogehoge-k.com, 2016-11-15 23:47:50 +0900 LV Status available # open 1 LV Size 411.33 GiB Current LE 105301 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 --- Logical volume --- LV Path /dev/centos/swap LV Name swap VG Name centos LV UUID qAM1WV-GAvU-bxjf-AlOv-89Iq-G8gB-Vd2KHB LV Write Access read/write LV Creation host, time backup.dmz.hogehoge-k.com, 2016-11-15 23:47:54 +0900 LV Status available # open 2 LV Size 3.88 GiB Current LE 992 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 --- Physical volumes --- PV Name /dev/sda2 PV UUID m7EO5K-2Cd3-iaAZ-DDnq-82sZ-6nxN-vec9x5 PV Status allocatable Total PE / Free PE 119109 / 16 |
VG centos はPV /dev/sda2 の物理ディスク領域が登録されている事が解ります。
PVの登録状況を確認しましょう。
1 2 3 4 5 6 7 8 9 10 11 |
# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name centos PV Size 465.27 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 119109 Free PE 0 Allocated PE 119109 PV UUID m7EO5K-2Cd3-iaAZ-DDnq-82sZ-6nxN-vec9x5 |
lvmビットが立っていた /dev/sda2パーティションが登録されているのが解ります。
まとめると、/dev/sda2のディスク領域を VG centos に登録し、そのVGの領域を切り分け ルート、ホーム、スワップの各論理パーティションを作成している。という事になります。
HDDの追加登録
新たにHDDを追加し、この領域を全て /homeパーティションに追加していきます。
新しいHDDは、4TB、2TB、1.5TB の3本を一気に追加しちゃいます。
容量もメーカーもバラバラ、柔軟性に富んでいるのがLVMの良いところです。
HDDをサーバーに搭載し、Linuxからは以下の様に認識しています。
もともと接続されていたシステムが入っているHDDは /dev/sda、500GBのものです。
- 4TB /dev/sdb
- 2TB /dev/sdc
- 1.5TB /dev/sdd
1 2 3 4 5 |
# lsscsi [0:0:0:0] disk ATA Hitachi HDP72505 A52A /dev/sda [1:0:0:0] disk ATA TOSHIBA MD04ACA4 FP2A /dev/sdb [2:0:0:0] disk ATA ST32000542AS CC34 /dev/sdc [3:0:0:0] disk ATA WDC WD15EARS-00Z 0A80 /dev/sdd |
PVへの登録
HDDにパーティションテーブルを作成し、LVMパーティションを作成してこれを登録する方法もありますが、今回はHDD全てをLVM配下で利用しますので、HDDデバイスを直接PVとして登録しちゃいます。
PVの登録は「pvcreate」コマンドを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# pvcreate /dev/sdb # pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name centos PV Size 465.27 GiB / not usable 3.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 119109 Free PE 16 Allocated PE 119093 PV UUID m7EO5K-2Cd3-iaAZ-DDnq-82sZ-6nxN-vec9x5 "/dev/sdb" is a new physical volume of "3.64 TiB" --- NEW Physical volume --- PV Name /dev/sdb VG Name PV Size 3.64 TiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 91H4pk-Vxw7-loEn-7ax8-KaZ4-Zz4K-KmvIHE # pvcreate /dev/sdc # pvcreate /dev/sdd |
/dev/sdb、/dev/sdc、/dev/sdd 全てPVに登録しました。
これらのディスク領域がLVM配下で利用出来る様になりました。
VGへの登録
VG centos へ新たに作成したPVを全て追加登録して、VG centosのディスク領域を拡張していきます。
VGへのPVの追加登録は「vgextend」コマンドを実行します。
1 2 3 4 5 6 7 8 |
# vgextend centos /dev/sdb Volume group "centos" successfully extended # vgextend centos /dev/sdc Volume group "centos" successfully extended # vgextend centos /dev/sdd Volume group "centos" successfully extended |
VGを確認してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# vgdisplay -v centos Using volume group(s) on command line. --- Volume group --- VG Name centos System ID Format lvm2 ~~~ snip... ~~~ --- Physical volumes --- PV Name /dev/sda2 PV UUID m7EO5K-2Cd3-iaAZ-DDnq-82sZ-6nxN-vec9x5 PV Status allocatable Total PE / Free PE 119109 / 0 PV Name /dev/sdb PV UUID 91H4pk-Vxw7-loEn-7ax8-KaZ4-Zz4K-KmvIHE PV Status allocatable Total PE / Free PE 953861 / 953861 PV Name /dev/sdc PV UUID DjbPeY-LltG-vm1I-ruv6-YL2a-UJef-MIqO9h PV Status allocatable Total PE / Free PE 476932 / 476932 PV Name /dev/sdd PV UUID CbWv5n-l2GX-1Fqw-WI6x-dZ9B-0guu-EwE8NR PV Status allocatable Total PE / Free PE 357699 / 357699 |
PV /dev/sdb、/dev/sdc、/dev/sdd が新たに加わっていればOKです。
VG centosに新たに空き容量が増え、新たにLVへ容量を割り当てる準備が整いました。
LV(home)への登録
VG centosの新たに増えたディスク領域をLV home に全て追加登録していきます。
LVへのVG領域の追加割当は「lvextend」コマンドを実行します。
1 2 3 |
# lvextend -l +100%FREE /dev/centos/home Size of logical volume centos/home changed from 411.33 GiB (105301 extents) to 7.22 TiB (1893809 extents). Logical volume home successfully resized. |
ここまでの作業で、論理的な /home/パーティションの容量は新たに追加登録したディスク領域によって拡張されました。
この状態では以前の小さなパーティションサイズに合わせて作成されたファイルシステムが存在していますので、そのファイルシステムの容量でしか利用する事が出来ません。
新しいパーティションサイズをフルに利用する為には、新たにファイルシステムを作成し直すか、既存のファイルシステムを拡張する必要があります。
今回はファイルシステムを拡張する方法を行ってみます。
ファイルシステムの拡張
CentOS7の標準ファイルシステムは XFSとなった様です。
今回インストールしたマシンでも XFSでホームパーティションがフォーマットされていました。
このXFSのファイルシステムの拡張を行います。
XFSの拡張を行うコマンドは「xfs_growfs」です。
1 2 3 4 5 6 7 8 9 10 11 |
# xfs_growfs /home/ meta-data=/dev/mapper/centos-home isize=256 agcount=4, agsize=26957056 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=107828224, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=52650, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 107828224 to 1084598272 |
容量を確認してみます。
1 2 3 4 5 6 7 8 9 10 |
# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 50G 856M 50G 2% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 8.4M 2.0G 1% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/sda1 497M 108M 389M 22% /boot tmpfs 392M 0 392M 0% /run/user/0 /dev/mapper/centos-home 7.3T 35M 7.3T 1% /home |
/home にマウントされたファイルシステムが想定される容量になっていればOKです。
以前の ext3/ext4 ファイルシステムの場合は「resize2fs」コマンドで同様の作業を行います。
感想
LVMは非常に柔軟的なディスク管理が行え、とても便利な仕組みです。
長く運用する予定のサーバーを構築する際には導入を検討するべきだと思います。
あるパーティションの容量が逼迫した際には、楽に対応策が考えられる事でしょう。
しかしながら、私としてはあまり積極的に使用してはきませんでした。
高度な処理が追加されるからには、それに伴いオーバーヘッドが発生するからです。
重いのか軽いのかは私には解りませんが、必ずオーバーヘッドは発生します。
という事なので、普段働かせているサーバーは極力付加機能を省いたパフォーマンス第一の構成でサーバー構築する事にしています。
今回作成したマシンは、データバックアップ用のサーバーとして作成したものです。
この様な用途の場合、ディスクI/Oの性能を最大化する必要もありませんし、何よりLVMの機能の恩恵にあずかりたい用途です。
容量が不足したらHDDの追加だけで簡単に対応出来ますからね。これは大きなメリットです。
何でもそうですが、適材適所で効率良く使っていきたいですね。
Leave A Comment