(2020年8月改変)
本投稿は CentOS 7.8 (2003) で更新しました。
##はじめに
CentOS 7 を お名前.com VPS にインストールしたときの手順をご紹介します。
VPSプランは2ギガメモリプランです。
12ヶ月まとめ払いならば1ギガメモリプランとさほど金額差はありませんのでおすすめです。
記事では CentOS 7 インストールから各種さまざまなサーバーアプリケーションのセットアップまでを複数に渡ってご紹介したいと思います。
- CentOS 7 でサーバー構築(インストール編)
- CentOS 7 でサーバー構築(論理ボリュームマウント編)
- CentOS 7 でサーバー構築(ユーザー作成~SSH開通編)
- CentOS 7 でサーバー構築(パッケージ管理編)
さて、今回は140Gのストレージを /home
にマウントする方法をご紹介したいと思います。
一応ストレージを分けたいと考えたのは、バックアップやサーバー引っ越しの際に分けておいた方が良いような気がしたからなのですが、そもそも勉強不足でそこまで明確な理由はありません。
「別ストレージを /home
にマウントする方法はこうだな」ぐらいに見てもらえれば良いかと思います。
ここでの作業は CentOS 7 でサーバー構築(インストール編) の最後にシリアルコンソールの設定が完了済ですので、シリアルコンソール接続で進めてまいります。
root
ユーザーでログインして作業してください。
##ストレージ構成を把握する
CentOS 7 は60GBのストレージデバイスにインストールされています。ストレージ構成がどのようになっているかは別記事 論理ボリュームマネージャー(Linux LVM)について調査してみました をご覧ください。
今回は、140GBをすべて /home
へマウントしようとしていますが、すでに論理ボリューム /dev/centos/home
がマウント済で19GBを使用しています。マウントを単純に変更するだけでは、元々の'/dev/centos/home' が宙に浮いてしまいますので、無駄となってしまいます。
無駄とならないように以下の手順で進めたいと思います。
1. 140Gの領域に新たな論理ボリュームを作成
2. 140Gを /home
へマウント付け替え
3. 論理ボリューム /dev/centos/home
を削除
##1.140Gの領域に新たな論理ボリュームを作成
140Gの領域に論理ボリュームを作成します。
まずは、140Gの物理デバイスである /dev/vdb
にパーティションを fdisk
コマンドで作成します。
[root@localhost ~]# fdisk /dev/vdb
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.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xdcadc61b.
コマンド (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)
コマンド (m でヘルプ): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-293601279, 初期値 2048):
初期値 2048 を使います
Last sector, +sectors or +size{K,M,G} (2048-293601279, 初期値 293601279):
初期値 293601279 を使います
Partition 1 of type Linux and of size 140 GiB is set
コマンド (m でヘルプ): t
Selected partition 1
Hex code (type L to list all codes): L
0 空 24 NEC DOS 81 Minix / 古い Li bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux スワップ c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 隠し C: ド c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux 拡張領域 c7 Syrinx
5 拡張領域 41 PPC PReP Boot 86 NTFS ボリューム da 非 FS データ
6 FAT16 42 SFS 87 NTFS ボリューム db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux プレーン de Dell ユーティリ
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX ブート可能 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 ブートマネ 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad ハ eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 拡張領域 (L 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC
11 隠し FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq 診断 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 隠し FAT16 <32M 61 SpeedStor ab Darwin ブート f2 DOS セカンダリ
16 隠し FAT16 63 GNU HURD または af HFS / HFS+ fb VMware VMFS
17 隠し HPFS/NTFS 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI スワップ fd Linux raid 自動
1b 隠し W95 FAT32 70 DiskSecure Mult bb 隠し Boot Wizar fe LANstep
1c 隠し W95 FAT32 75 PC/IX be Solaris ブート ff BBT
1e 隠し W95 FAT16 80 古い Minix
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
[root@localhost ~]#
設定の流れは下記のとおりです。(基本的にすべてデフォルト)
-
m
コマンドでコマンドのHELPが表示されます。 -
n
コマンドで新規パーティションを作成する操作に入ります。 - Partition typeの候補が表示されますので、
p (primary)
を選択します。 - パーティション番号は
1
を選択します。 - 割当領域の開始・終了セクターを入力しますが、デフォルトなのでどちらも入力せずに
Enter
してください。 - 次に
t
コマンドでパーティションをLinux LVM
に変更する操作に入ります。 - Hex code での入力を指示されますが、
Linux LVM
の Hex code が不明なので、L
を押下してリストを表示してください。 -
8e
がLinux LVM
を示す Hex code であることが確認できますので、8e
を入力します。 - 最後に
w
コマンドでパーティションテーブルに書込みが実行されるので、これで完了です。
想定した内容で作成できているか、 fdisk
コマンドで確認します。
[root@localhost ~]# fdisk -l /dev/vdb
Disk /dev/vdb: 150.3 GB, 150323855360 bytes, 293601280 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0xdcadc61b
デバイス ブート 始点 終点 ブロック Id システム
/dev/vdb1 2048 293601279 146799616 8e Linux LVM
[root@localhost ~]#
想定どおり、/dev/vdb1
が Linux LVM
として作成されています。
/dev/vdb1
パーティションを物理ボリュームにします。
[root@localhost ~]# pvcreate /dev/vdb1
Physical volume "/dev/vdb1" successfully created.
[root@localhost ~]#
pvdisplay
コマンドで確認します。
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name centos
PV Size <59.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 15103
Free PE 1
Allocated PE 15102
PV UUID CB3IX6-yrff-GJBK-qqBP-fqcM-lGkX-duzc3x
"/dev/vdb1" is a new physical volume of "<140.00 GiB"
--- NEW Physical volume ---
PV Name /dev/vdb1
VG Name
PV Size <140.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID dNqs9f-jx0L-rfc5-WZbx-2JoK-llTy-JGT8nP
[root@localhost ~]#
140Gの物理ボリュームが作成できていることが確認できました。
物理ボリューム /dev/vdb1
にボリュームグループを作成します。
[root@localhost ~]# vgcreate lvguserdata /dev/vdb1
Volume group "lvguserdata" successfully created
[root@localhost ~]#
vgdisplay
コマンドで確認します。
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name lvguserdata
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <140.00 GiB
PE Size 4.00 MiB
Total PE 35839
Alloc PE / Size 0 / 0
Free PE / Size 35839 / <140.00 GiB
VG UUID nJK3rO-YOm4-1YMD-PuMW-8K2e-9Ofy-fkxGcV
--- 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 <59.00 GiB
PE Size 4.00 MiB
Total PE 15103
Alloc PE / Size 15102 / 58.99 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID tFVUKa-9h5u-h2uO-cbqS-jLD3-T6n6-g8s4lt
[root@localhost ~]#
140Gのボリュームグループが作成できていることが確認できました。
今回は /dev/vdb1
単体パーティションでボリュームグループを作成しているので、140Gの領域となります。
vgscan
コマンドを実行してLVMキャッシュファイルを更新しておきます。
[root@localhost ~]# vgscan
Reading volume groups from cache.
Found volume group "lvguserdata" using metadata type lvm2
Found volume group "centos" using metadata type lvm2
[root@localhost ~]#
最後にボリュームグループ lvguserdata
に論理ボリュームを作成します。
/home
にしか割り当てませんので、すべての領域を指定して home
論理ボリュームを作成します。
[root@localhost ~]# lvcreate --name home -l 100%FREE lvguserdata
Logical volume "home" created.
[root@localhost ~]#
lvdisplay
コマンドで確認します。
[root@localhost ~]# lvdisplay lvguserdata
--- Logical volume ---
LV Path /dev/lvguserdata/home
LV Name home
VG Name lvguserdata
LV UUID 4Svjix-p0Ta-wg4u-QeI1-r0av-mozR-ebFKgr
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-09-09 09:01:56 +0900
LV Status available
# open 0
LV Size <140.00 GiB
Current LE 35839
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
[root@localhost ~]#
論理ボリュームができました。
もし、論理ボリュームを複数に分けたい場合はサイズを指定する必要があります。
以下のようにすればサイズを指定して論理ボリュームが作成できます。
[root@localhost ~]# lvcreate --name <論理ボリューム名> --size <サイズ> <ボリュームグループ名>
(例) 論理ボリューム /dev/lvguserdata/home を 30GB で作成します。
[root@localhost ~]# lvcreate --name home --size 30GB lvguserdata
仕上げに作成した論理ボリュームにXFSファイルシステムを作成します。
[root@localhost ~]# mkfs.xfs /dev/lvguserdata/home
meta-data=/dev/lvguserdata/home isize=512 agcount=4, agsize=9174784 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=36699136, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=17919, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]#
これで /home
へマウントするための論理ボリュームの作成は完了しました。
##2. 140Gを /home
へマウント付け替え
論理ボリュームを作成しましたが、/home
へマウントする前に実際にマウントできるかテストします。
mount
コマンドでマウントし、df
コマンドでマウントできているか確認できます。
[root@localhost ~]# mount -t xfs /dev/lvguserdata/home /mnt
[root@localhost ~]# df
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
devtmpfs 929004 0 929004 0% /dev
tmpfs 940912 0 940912 0% /dev/shm
tmpfs 940912 8648 932264 1% /run
tmpfs 940912 0 940912 0% /sys/fs/cgroup
/dev/mapper/centos-root 40137576 1253344 38884232 4% /
/dev/vda1 1038336 153056 885280 15% /boot
/dev/mapper/centos-home 19593216 32992 19560224 1% /home
tmpfs 188184 0 188184 0% /run/user/0
/dev/mapper/lvguserdata-home 146724868 32992 146691876 1% /mnt
[root@localhost ~]#
最後のエントリに /dev/mapper/lvguserdata-home
が /mnt
にマウントできていることがわかります。
マウントテストはこれで終了です。マウントは一旦解除します。
[root@localhost ~]# umount /mnt
これから /home
に /dev/lvguserdata/home
をマウントしますが、すでに /dev/centos/home
がマウントされています。
まずは /dev/centos/home
のマウントを解除する必要があります。
今回はOSインストールに引き続き、この作業を行っているので /home
にはなにも存在していないはずです。
念の為に確認してからマウント解除します。
[root@localhost ~]# cd /home
[root@localhost home]# ls -la
合計 0
drwxr-xr-x. 2 root root 6 4月 11 2018 .
dr-xr-xr-x. 17 root root 244 8月 30 02:23 ..
[root@localhost home]#
なにもなかったので、マウントを解除します。
[root@localhost home]# cd
[root@localhost ~]# umount /home
[root@localhost ~]# df
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
devtmpfs 929004 0 929004 0% /dev
tmpfs 940912 0 940912 0% /dev/shm
tmpfs 940912 8648 932264 1% /run
tmpfs 940912 0 940912 0% /sys/fs/cgroup
/dev/mapper/centos-root 40137576 1253324 38884252 4% /
/dev/vda1 1038336 153056 885280 15% /boot
tmpfs 188184 0 188184 0% /run/user/0
[root@localhost ~]#
/home
をマウント解除しますので、/home
に居座っていてはビジーで怒られて解除できません。
なので、cd
コマンドで rootユーザーのホームである /root
に移動してからマウント解除します。
df
コマンドでマウント解除されていることを確認します。
引き続き、/dev/lvguserdata/home
を /home
にマウントしますが、再起動時にマウント解除状態に戻らないように、/etc/fstab
を編集しておきます。
[root@localhost ~]# vi /etc/fstab
下記のとおり、元々の定義である /dev/mapper/centos-home
をコメントアウトし、/dev/mapper/lvguserdata-home
を追加しました。
ちなみに、/dev/mapper/lvguserdata-home
はデバイスマッパーでのデバイスパスであり、/dev/lvguserdata/home
とイコールです。
#
# /etc/fstab
# Created by anaconda on Sat Aug 29 23:19:21 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=a138d722-b2e0-4373-9c9e-b7c232bdab5c /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
#
# /etc/fstab
# Created by anaconda on Sat Aug 29 23:19:21 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=a138d722-b2e0-4373-9c9e-b7c232bdab5c /boot xfs defaults 0 0
#/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/lvguserdata-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
再起動時に想定どおりマウントされるかを確認するため、reboot
します。
[root@localhost ~]# reboot
再起動したらrootでログインし、df
コマンドで確認します。
[root@localhost ~]# df
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
devtmpfs 929004 0 929004 0% /dev
tmpfs 940912 0 940912 0% /dev/shm
tmpfs 940912 8668 932244 1% /run
tmpfs 940912 0 940912 0% /sys/fs/cgroup
/dev/mapper/centos-root 40137576 1273336 38864240 4% /
/dev/vda1 1038336 153056 885280 15% /boot
/dev/mapper/lvguserdata-home 146724868 32992 146691876 1% /home
tmpfs 188184 0 188184 0% /run/user/0
[root@localhost ~]#
再起動してもちゃんとマウントされていることが確認できました。
##3. 論理ボリューム /dev/centos/home
を削除
元々 /home
にマウントしていた論理ボリューム /dev/centos/home
は不要なので削除します。
[root@localhost ~]# lvremove /dev/centos/home
Do you really want to remove active logical volume centos/home? [y/n]: y
Logical volume "home" successfully removed
[root@localhost ~]#
lvdisplay
コマンドで削除されたことを確認します。
[root@localhost ~]# lvdisplay centos
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID JKZJkH-1MVr-u80X-FpYO-kmUp-1Nk1-Rb96qu
LV Write Access read/write
LV Creation host, time localhost, 2020-08-29 23:19:18 +0900
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID 6oBeb9-etCU-2WwT-G5wh-D39C-JKU1-pqK1SM
LV Write Access read/write
LV Creation host, time localhost, 2020-08-29 23:19:19 +0900
LV Status available
# open 1
LV Size <38.30 GiB
Current LE 9804
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
[root@localhost ~]#
削除されたことが確認できたので、解放された領域を /dev/centos/root
に割り当てることにします。
lvextend
コマンドで論理ボリュームの拡張を行います。
[root@localhost ~]# lvextend -l +100%FREE /dev/centos/root
Size of logical volume centos/root changed from <38.30 GiB (9804 extents) to <57.00 GiB (14591 extents).
Logical volume centos/root successfully resized.
[root@localhost ~]#
論理ボリュームの拡張が成功したので、ファイルシステムを拡張します。
ファイルシステムを拡張しないと、使用可能なサイズは拡張されたことにはなりません。
[root@localhost ~]# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=2509824 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=10039296, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=4902, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 10039296 to 14941184
[root@localhost ~]#
ファイルシステムの拡張も完了しました。
df
コマンドで確認します。
[root@localhost ~]# df
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
devtmpfs 929004 0 929004 0% /dev
tmpfs 940912 0 940912 0% /dev/shm
tmpfs 940912 8652 932260 1% /run
tmpfs 940912 0 940912 0% /sys/fs/cgroup
/dev/mapper/centos-root 59745128 1253572 58491556 3% /
/dev/vda1 1038336 153056 885280 15% /boot
/dev/mapper/lvguserdata-home 146724868 32992 146691876 1% /home
tmpfs 188184 0 188184 0% /run/user/0
[root@localhost ~]#
/dev/mapper/centos-root
が拡張されて以前より利用可能なサイズが増えています。
これで今回の作業は完了です。
##さいごに
今回は新しく論理ボリュームを作成し、/home
にマウントする作業を実施しました。論理ボリュームは現在の状態を損なわずにサイズの拡張や縮小ができることが非常に便利ですね。
さて、次はネットワーク設定を行い、外部ネットワークからSSH接続ができる状態にしたいと思います。