EBSボリュームをパーティション分割して、マウントする

記事タイトルとURLをコピーする

こんにちは、クラウドインテグレーション部の加藤ゆです。
暖かい日と、めちゃ寒い日が交互にきてつらいですね。本日は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

f:id:swx-yuki-kato:20220404175950p:plain

パーティション

以下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)

print

設定内容の確認

(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公式ドキュメントにはパーティション分けの記載はなかったため、誰かのためになると良いなと思います。

最後までお付き合いいただきありがとうございました~~

加藤 由有希 エンジニアブログの記事一覧はコチラ

エンタープライズクラウド部 所属

2020年4月に新卒入社