こんにちはますのです。
先日AzureVMにディスクの追加と物理ボリュームとしてそのままマウント設定を実施しました。
【Azure】ディスク追加後にLinux仮想マシンへアタッチ&マウント設定をする
今度は物理ボリュームとしてではなく論理ボリューム(LVM)として増設してほしいとお話がありましたので対応することに。
論理ボリューム(LVM)って何だっけ…。※LPIC2所有ですすみません。
昔勉強した本に書いてあったので復習がてら実施です。CentOS8の書籍もまだ少ないので、CentOS7の技術書もまだまだ現役です。
やりたいこと
- AzureVMに作成したCentOS8/Rhel8に5GBのLVMを設定する
- マウント先:/data/test01
- partedコマンドでパーティションを作成する
fdiskコマンドでは2TB未満の場合にで利用可能、パーティションテーブルは旧式のMBRのみ対応となり若干の制限があります。
partedコマンドでは2TB以上、パーティションテーブルはMBR/GPT共に設定可能となります。パーティション作成までのデータ保持方法等、細かな違いはまだありますが割愛。多くの認識では上記の違いとなるようです。
今回の例ではpartedを使いますが、fdiskでも問題無く設定は出来たことを検証済なのでお好みにて。
設定前の構成
sdc1は既に物理ボリュームとしてパーティション設定済のものです。
今回はsddをLVMの対象として設定を進めていきます。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
L sda1 8:1 0 500M 0 part /boot
L sda2 8:2 0 29G 0 part /
L sda14 8:14 0 4M 0 part
L sda15 8:15 0 495M 0 part /boot/efi
sdb 8:16 0 4G 0 disk
L sdb1 8:17 0 4G 0 part /mnt/resource
sdc 8:32 0 10G 0 disk
L sdc1 8:33 0 10G 0 part
sdd 8:48 0 5G 0 disk
partedコマンドでパーティションを作成
コマンド「parted (デバイス名)」を行うと「(parted)」と表示されて、partedの各種オプションが打てるようになります。
partedを起動する
# parted /dev/sdd
GNU Parted 3.2
Using /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
ディスク管理の方式を「gpt」に設定する
(parted) mklabel gpt ///★gptに設定する
(parted)
(parted) p ///★pで設定状態を確認する
Model: Msft Virtual Disk (scsi)
Disk /dev/sdd: 5369MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:Number Start End Size File system Name Flags
ちなみにMBRにする場合は、「mklabel msdos」と設定するようになります。
パーティションを作成する
(parted) mkpart
Partition name? []? ///★[空白]でEnter(Part1等、任意の名前をつけてもOK)
File system type? [ext2]? ///★[空白]でEnter
Start? 1 ///★[1]を入力(最初から作成)
End? -0 ///★[-0]を入力(最後までを指定)
Warning: The resulting partition is not properly aligned for best performance: 1953s % 2048s != 0s
Ignore/Cancel? I ///★[I]を入力して警告を無視する
(parted)
(parted)
(parted) p ///★pで設定状態を確認する
Model: Msft Virtual Disk (scsi)
Disk /dev/sdd: 5369MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1000kB 5369MB 5368MB ext2
Endで「5G」として容量を指定することも出来ます。
mkpartでパーティションを作成したので「Disk Flags」に作成した領域が表示されるようになりました。
LVMに設定する
続いて対象となるパーティションナンバー「1」に対してLVMを有効にします。
(parted) set 1 lvm on
(parted)
(parted) p ///★pで設定状態を確認する
Model: Msft Virtual Disk (scsi)
Disk /dev/sdd: 5369MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1000kB 5369MB 5368MB ext2 lvm
「Flags」に「lvm」と表示されたら設定完了です。
partedコマンドを終了する
(parted) quit
Information: You may need to update /etc/fstab.
以上でパーティションの作成とLVMの設定が完了となります。
最後にメッセージで「必要に応じてfstabを修正してね」って出てくれるのは親切設計。
ハードディスクの増設設定(LVM)
パーティションの作成が終わったので、作成したパーティションを論理ボリュームとして増設する設定を行います。
PV(物理ボリューム)の作成
# pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created.
///★物理ボリュームの作成結果を確認する
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdd1 lvm2 --- <5.00g <5.00g
VG(ボリュームグループ)の作成
# vgcreate vgdata /dev/sdd1
Volume group "vgdata" successfully created
///★ボリュームグループの作成結果を確認する
# vgs
VG #PV #LV #SN Attr VSize VFree
vgdata 1 0 0 wz--n- <5.00g <5.00g
LV(論理ボリューム)の作成
# lvcreate -n lvdata -l 100%FREE vgdata
Logical volume "lvdata" created.
///★論理ボリュームの作成結果を確認する
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvdata vgdata -wi-a----- <5.00g
ファイルシステム形式の設定
今回はxfs形式に変換します。
# mkfs.xfs /dev/vgdata/lvdata
動作確認:マウント設定をする
///再帰的にフォルダ作成のためオプション「-p」を指定
# mkdir -p /data/test01
///作成したlvdataのボリュームグループ等の状態を確認
# lsblk | grep lvdata
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
L vgdata-lvdata 253:0 0 5G 0 lvm
///マウントの実施
# mount /dev/mapper/vgdata-lvdata /data/test01
自動起動時にもマウントされるように「/etc/fstab」へも追記しましょう。
# vi /etc/fstab
///一番下などに追記する
/dev/mapper/vgdata-lvdata /data/test01 xfs defaults 0 0
fstab追記後は念のため「mount -a」で問題が出ないかを確認しましょう。
万が一記載に誤りがあった場合、再起動後に起動しないなどのトラブルのもととなるので注意ですね。
また、色々と忘れてることがあったので、初学者で購入した書籍は持っていると有事の際や見返すと気づきがあるので何かしら良書をもっておくことが良いと感じた対応となりました。
CentOS8とかですとこのあたりがオススメです。
既に存在しているボリュームグループや論理ボリュームに増設していくには「vgextend」や「lvextend」のコマンドを使うようです。LVMにしておけば自由にボリュームの追加が出来るメリットがあるので、初期構築の時などにはこのあたりを考えながらやると幸せになれるかもしれないですね。