物理的にディスクを追加しておく
まず、物理サーバであれば、物理的に追加用のディスクを接続しておきます。仮想サーバであれば、管理コンソールより新規ディスクを追加しておきます。(追加手順についてはここでは割愛します)
その前提で、fdiskコマンドを実行して、追加したディスクがOSから参照できることを確認します。
# fdisk -l
ディスク /dev/sda: 20 GiB, 21474836480 バイト, 41943040 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x8f271ec5
デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 41943039 39843840 19G 8e Linux LVM
ディスク /dev/sdb: 3 GiB, 3221225472 バイト, 6291456 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク /dev/mapper/almalinux-root: 17 GiB, 18249416704 バイト, 35643392 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク /dev/mapper/almalinux-swap: 2 GiB, 2147483648 バイト, 4194304 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
今回、追加したディスクは、/dev/sdb で、容量は3GBあることが確認できます。
ラベルの割り当て
追加したディスクにラベルを割り当てします。fdiskコマンドでディスクを指定して実行します。パーティションのタイプは、Linux LVMにします。
# fdisk /dev/sdb
fdisk (util-linux 2.32.1) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。
デバイスには認識可能なパーティション情報が含まれていません。
新しい DOS ディスクラベルを作成しました。識別子は 0x8b88bd1c です。
コマンド (m でヘルプ): p
ディスク /dev/sdb: 3 GiB, 3221225472 バイト, 6291456 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x8b88bd1c
コマンド (m でヘルプ): n
パーティションタイプ
p 基本パーティション (0 プライマリ, 0 拡張, 4 空き)
e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
パーティション番号 (1-4, 既定値 1):
最初のセクタ (2048-6291455, 既定値 2048):
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (2048-6291455, 既定値 6291455):
新しいパーティション 1 をタイプ Linux、サイズ 3 GiB で作成しました。
コマンド (m でヘルプ): t
パーティション 1 を選択
16 進数コード (L で利用可能なコードを一覧表示します): 8e
パーティションのタイプを 'Linux' から 'Linux LVM' に変更しました。
コマンド (m でヘルプ): w
パーティション情報が変更されました。
ioctl() を呼び出してパーティション情報を再読み込みします。
ディスクを同期しています。
ここでラベルが追加されたか確認します。
# fdisk -l
ディスク /dev/sda: 20 GiB, 21474836480 バイト, 41943040 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x8f271ec5
デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 41943039 39843840 19G 8e Linux LVM
ディスク /dev/sdb: 3 GiB, 3221225472 バイト, 6291456 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x8b88bd1c
デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ
/dev/sdb1 2048 6291455 6289408 3G 8e Linux LVM
(以下略)
/dev/sda1として、Linux LVMとして認識されていることが確認できます。
物理ボリュームへ反映
まず現在の物理ボリュームを確認します。
# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name almalinux
PV Size <19.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4863
Free PE 0
Allocated PE 4863
PV UUID MNSWJH-eC1J-NcBS-mLSy-LMLi-YPMu-J33eOG
次のコマンドで、物理ボリュームを作成します。
# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
ボリュームの作成に成功しましたら、確認します。
# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name almalinux
PV Size <19.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4863
Free PE 0
Allocated PE 4863
PV UUID MNSWJH-eC1J-NcBS-mLSy-LMLi-YPMu-J33eOG
"/dev/sdb1" is a new physical volume of "<3.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size <3.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID ebEtlo-gJXJ-Madj-UcrW-G6n9-ImtP-OC9AkR
/dev/sdb1が追加されたことが確認できました。
VG(Volume Group)の作成
ボリュームグループを作成します。ここでは、「home」という名前にしました。
# vgcreate home /dev/sdb1
Volume group "home" successfully created
LV(Logical Volume)作成
次に論理ボリュームを作成します。ここでは、「homedir」という名前で、容量は最大容量の3GBを指定しました。
# lvcreate -n homedir --size 3G home
Volume group "home" has insufficient free space (767 extents): 768 required.
すると、スペースが足りない旨のエラーが出ました。ですので、容量を少し減らして、2.9GBに指定して再度コマンドを実行しました。
# lvcreate -n homedir --size 2.9G home
Rounding up size to full physical extent 2.90 GiB
Logical volume "homedir" created.
今後は問題なく作成できましたので、確認を行います。
# lvdisplay
--- Logical volume ---
LV Path /dev/home/homedir
LV Name homedir
VG Name home
LV UUID kruqsq-l9S8-XABd-9Y4l-tvx6-FBD4-HvpBTq
LV Write Access read/write
LV Creation host, time vhost01, 2024-05-05 23:06:16 +0900
LV Status available
# open 0
LV Size 2.90 GiB
Current LE 743
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
(以下略)
作成したLV領域をファイルシステムxfsでフォーマットします。
# mkfs.xfs /dev/home/homedir
meta-data=/dev/home/homedir isize=512 agcount=4, agsize=190208 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=760832, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
OSで使用できるようにマウントする
最後にOSで使用できるようにしていきます。
今回は /home にしようと新たなディスクを追加したので、もともと/homeにあるファイルを別領域(ここでは、/tmp/home.mv)にいったん退避したのち、/homeを作成して、今回追加した領域を/homeにマウントして、もともとのファイルを移動させます。最後にhome.mvを削除しています。
# mv /home /tmp/home.mv
# mkdir /home
# mount /dev/home/homedir /home
# mv /tmp/home.mv/* /home/
# rmdir /tmp/home.mv/
ここで、いったん確認を行います。
# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 962M 0 962M 0% /dev
tmpfs 980M 0 980M 0% /dev/shm
tmpfs 980M 17M 963M 2% /run
tmpfs 980M 0 980M 0% /sys/fs/cgroup
/dev/mapper/almalinux-root 17G 6.4G 11G 38% /
/dev/sda1 1014M 240M 775M 24% /boot
tmpfs 196M 0 196M 0% /run/user/0
/dev/mapper/home-homedir 2.9G 54M 2.9G 2% /home
最後の行に、/homeがマウントされていることが確認できます。このままではOSを再起動すると、マウントが外れてしまいますので、fstabに記載します。
# cp -p /etc/fstab /etc/fstab.org
# vi /etc/fstab
# diff /etc/fstab /etc/fstab.org
15d14
< /dev/mapper/home-homedir /home xfs defaults 0 0
OSを再起動して、問題なくマウントされているか確認しましょう。
# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 962M 0 962M 0% /dev
tmpfs 980M 0 980M 0% /dev/shm
tmpfs 980M 8.5M 971M 1% /run
tmpfs 980M 0 980M 0% /sys/fs/cgroup
/dev/mapper/almalinux-root 17G 6.4G 11G 38% /
/dev/sda1 1014M 240M 775M 24% /boot
/dev/mapper/home-homedir 2.9G 54M 2.9G 2% /home
tmpfs 196M 0 196M 0% /run/user/0
今回はここまでです。最後までお読みいただきありがとうございました。