こんにちは、クラウドインテグレーション部の加藤ゆです。
暖かい日と、めちゃ寒い日が交互にきてつらいですね。本日は9℃です、さむい。
今回は、EC2の追加ボリュームに対して、パーティション分割とマウント実施手順を記載していきます。
ユースケース
正直、EC2/EBSをご利用の場合、わざわざパーティション分割をするメリットはあまり無いといえるでしょう。
オンプレの場合は、OSインストール時に細かくパーティションを区切り、 LVMを利用してパーティション分割を構築時に実施します。
一方、AWSでEC2/EBSをご利用の場合、EBSは構築後にボリュームの追加可能です。そのため、わざわざLVMでパーティションくぎらなくても、EBSを追加してしまえば良いのです。
リストア作業を考えても、EBS単位であればスナップショットで復元できるため、多くの場合はEBSボリュームを追加し、ボリューム丸ごとマウントしていく場合が多いとご理解ください。
ではいつするか?
考えられるケースは、EBSの容量の限界を超えたい場合です。 本記事では、1つのEBSを小さくパーティション分割していますが、EBS容量を超えて利用する場合として利用が考えられます。
あまりメリットがないものの、技術的には可能という事で記載していきます。
前提
- EBS追加ボリュームがEC2にアタッチ済みであること
ボリューム情報
ボリューム情報 | デバイス名 | ボリュームサイズ(GiB) |
---|---|---|
ルートデバイス | /dev/sda1 | 10 |
追加デバイス | /dev/sdb | 8 |
パーティション
以下2つのパーティションに分割する
デバイス | MountPoint | ファイルシステムタイプ | パーティションサイズ(MiB) |
---|---|---|---|
/dev/sdb | /test1 | ext4 | 2048 |
/dev/sdb | /test2 | xfs | 2048 |
やること概要
- ボリュームのパーティション分割
- ボリュームをマウント
- 再起動後も接続ボリュームを自動的にマウントさせる
AWS公式ドキュメントは以下参照 docs.aws.amazon.com
パーティション分割
1.rootUserにスイッチ
※rootUserでの実行が必要であるためスイッチします
sudo su -
2.作業前ボリューム状況確認
パーティションの空き容量を表示し、追加ボリューム(xvdb)がマウントされていないことを確認します
lsblk
追加ボリューム(デバイス名:xvdb)がマウントされていないことを確認します
[root@ip~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 10G 0 disk ーxvda1 202:1 0 1M 0 part ーxvda2 202:2 0 10G 0 part / xvdb 202:16 0 8G 0 disk
file -s /dev/xvdb
ボリュームに既存のファイルシステムがないことを確認します
※「:data」が出力されれば、存在していない
[root@ip~]# file -s /dev/xvdb /dev/xvdb: data
3.partedコマンドの利用
parted /dev/xvdb
デバイスを指定(/dev/xvdb)してparted を起動します
※指定しない場合、ルートデバイスで立ち上がります
[root@ip~]# parted /dev/xvdb GNU Parted 3.2 Using /dev/xvdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
partedコマンドとは
パーティションの作成や削除などに使うコマンド。 MBR、GPTどちらのパーティション管理方式にも対応しているコマンドです。
unit MiB
MiB表示とする
(parted) unit MiB (parted)
mklabel gpt
GPTに変更
※これにより既存のパーティションテーブル情報は削除されますので、既存データを保持するボリュームでの実施には要ご検討ください。
(parted) mklabel gpt (parted)
設定内容の確認
(parted) print Model: Xen Virtual Block Device (xvd) Disk /dev/xvdb: 8192MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags
MiBで出力されており、パーティションテーブルはGPTとなっていることが分かります。
4.パーティションを作成
mkpart
parted を起動した状態で、mkpartコマンドを実行する
(parted) mkpart Partition name? []? test1 File system type? [ext2]? ext4 Start? 1MiB End? 2049MiB (parted)
以下の情報の入力が求められるので、要件に合わせて設定。
今回は以下のように設定します。
- パーティションの名前
- test1(設定無しも可)
- ファイルシステムタイプ
- ext4(設定無しも可)
- パーティションの先頭位置
- 1MiB(%またはディスクサイズでの指定)
- パーティションの終了位置
- 2049MiB(%またはディスクサイズでの指定)
パーティション(test1)が作成されていることが分かります
(parted) print Model: Xen Virtual Block Device (xvd) Disk /dev/xvdb: 8192MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2049MiB 2048MiB ext4 test1 (parted)
同様に2つ目のパーティション(test2)も作成します
手順は上記同様ですので、コマンドのみ以下に記載します
(parted) mkpart Partition name? []? test2 File system type? [ext2]? xfs Start? 2050MiB End? 4098MiB (parted) (parted) print Model: Xen Virtual Block Device (xvd) Disk /dev/xvdb: 8192MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2049MiB 2048MiB ext4 test1 2 2050MiB 4098MiB 2048MiB xfs test2 (parted)
2つのパーティションが作成されました。
quit
parted を終了します
(parted) quit Information: You may need to update /etc/fstab. [root@ip~]#
Information: You may need to update /etc/fstab.
必要であれば/etc/fstabファイルを更新してね、と言っています。後程、「再起動後も自動的にマウントさせる」項で実施します。
ボリュームをマウント
はじめに、ファイルシステム状況確認をします。
※追加ボリューム(xvdb)のパーティション分けがされていることを確認
[root@ip~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 10G 0 disk ーxvda1 202:1 0 1M 0 part ーxvda2 202:2 0 10G 0 part / xvdb 202:16 0 8G 0 disk ーxvdb1 202:17 0 2G 0 part ーxvdb2 202:18 0 2G 0 part
下2列が作成したパーティションです、正常にパーティション分けされていることが分かります。
1.フォーマットする
mkfs -t ext4 /dev/xvdb1
[root@ip~]# mkfs -t ext4 /dev/xvdb1 mke2fs 1.44.6 (5-Mar-2019) Creating filesystem with 524288 4k blocks and 131072 inodes Filesystem UUID: 41c57a48-237b-49a4-8e65-cbcbcdd9bd0c Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done
mkfs -tコマンド
指定されたデバイス上に新しいファイルシステムを作成します
この場合
- 「/dev/xvdb1」デバイス上に
- 「ext4」システムタイプで
作成されるコマンドとなります
同様に2つ目のパーティション(test2)にも実施します
手順は上記同様ですので、コマンドのみ以下に記載します
[root@ip~]# mkfs -t xfs /dev/xvdb2 meta-data=/dev/xvdb2 isize=512 agcount=4, agsize=131072 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=524288, 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
2.マウントポイントディレクトリを作成
mkdir /test1
[root@ip~]# mkdir /test1
同様に2つ目のパーティション(test2)用のディレクトリ(/test2)も作成します
3.マウントする
mount /dev/xvdb1 /test1
[root@ip~]# mount /dev/xvdb1 /test1
同様に2つ目のパーティション(test2)も実施します
4.マウントの確認
lsblk
【作業前】
[root@ip~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 10G 0 disk ーxvda1 202:1 0 1M 0 part ーxvda2 202:2 0 10G 0 part / xvdb 202:16 0 8G 0 disk
【作業後】
[root@ip~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 10G 0 disk ーxvda1 202:1 0 1M 0 part ーxvda2 202:2 0 10G 0 part / xvdb 202:16 0 8G 0 disk ーxvdb1 202:17 0 2G 0 part /test1 ーxvdb2 202:18 0 2G 0 part /test2
xvdbディレクトリに、2Gのパーティションが作成されマウントされている事が分かります。
再起動後も自動的にマウントさせる
1./etc/fstab ファイルのバックアップ
これから編集する/etc/fstabファイル設定を間違えた場合、システムがブート不能になる可能性があります。
修正する方法が分からなくなった時のための、バックアップ取得となります。
[root@ip~]# cp /etc/fstab /etc/fstab.orig
2.UUID取得
[root@ip~]# blkid /dev/xvda2: UUID="aaaaaaaaaaaaaaaaaaa" TYPE="xfs" PARTUUID="5b8fd93a-8b94-48e0-a932-a8ea4bceda1d" /dev/xvda1: PARTUUID="iiiiiiiiiiiiiiiiiiiii" /dev/xvdb1: UUID="uuuuuuuuuuuuuuuuuuu" TYPE="ext4" PARTLABEL="test1" PARTUUID="5fb0f95d-fdb1-421c-899e-3d71dfddc68b" /dev/xvdb2: UUID="eeeeeeeeeeeeeeeeeee" TYPE="xfs" PARTLABEL="test2" PARTUUID="1242b9ac-2601-4436-971a-b8c26dc7519a"
「/dev/xvdb1」「/dev/xvdb2」が作成したパーティションです
これから使うため、出力されたUUIDを控えておきます
3./etc/fstabの編集
vim ファイルを開きます
[root@ip~]# vi /etc/fstab
指定されたマウントポイントにデバイスをマウントするために、/etc/fstab に以下の内容を追記します
UUID | マウントポイント | ファイルシステムタイプ |
---|---|---|
uuuuuuuuuuuuuuuuuuu | /test1 | ext4 |
eeeeeeeeeeeeeeeeeee | /test2 | xfs |
UUID=uuuuuuuuuuuuuuuuuuu /test1 ext4 defaults,nofail 0 2 UUID=eeeeeeeeeeeeeeeeeee /test2 xfs defaults,nofail 0 2
※defaults フラグと nofail フラグも使用
※ファイルシステムがダンプされないように 0 を指定し、ルート以外のデバイスであることを示すように 2 を指定
※ちなみに、間のスペースは半角スペース2つです!!1つだったり、全角だったりするとコマンドは失敗します
/etc/fstabファイルを確認
書き変わっていることを確認します
[root@ip~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Fri Sep 10 19:38:08 2021 # # 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. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # UUID=aaaaaaaaaaaaaaaaaaa / xfs defaults 0 0 UUID=uuuuuuuuuuuuuuuuuuu /test1 ext4 defaults,nofail 0 2 UUID=eeeeeeeeeeeeeeeeeee /test2 xfs defaults,nofail 0 2 [root@ip-172-30-254-6 ~]#
4./etc/fstabファイル記載内容の確認
入力内容が正しいことを確認するために、
一度デバイスをアンマウントし、すべてのファイルシステムを /etc/fstab にマウントします。
ファイルの記載が間違っていたらオワルので、エラーが出ないことを祈ります。
全てのデバイスをアンマウント
/test1、/test2のデバイスをアンマウントします
[root@ip~]# umount /test1 [root@ip~]# umount /test2
アンマウントを確認
[root@ip~]# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT xvda ーxvda1 ーxvda2 xfs ee754e74-0559-4626-8882-cb7a9b0ed01b / xvdb ーxvdb1 ext4 41c57a48-237b-49a4-8e65-cbcbcdd9bd0c ーxvdb2 xfs d56a34d1-3643-44e0-a4b0-30a3b4ee7282
xvdb1、xvdb2のマウントポイントが消えています
全てのデバイスをマウント
[root@ip~]# mount -a
マウントを確認
[root@ip~]# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT xvda tqxvda1 mqxvda2 xfs ee754e74-0559-4626-8882-cb7a9b0ed01b / xvdb tqxvdb1 ext4 41c57a48-237b-49a4-8e65-cbcbcdd9bd0c /test1 mqxvdb2 xfs d56a34d1-3643-44e0-a4b0-30a3b4ee7282 /test2
xvdb1、xvdb2が正常に、マウントされていることが分かります(やったね
最後に再起動して、本当に正しくマウントされるか確認しましょう
おわり
長くなりましたが、パーティション分割してマウント作業手順のご紹介でした。
AWS公式ドキュメントにはパーティション分けの記載はなかったため、誰かのためになると良いなと思います。
最後までお付き合いいただきありがとうございました~~