アプリケーション開発ポータルサイト
ServerNote.NET
カテゴリー【Amazon/AWSDebian
【Amazon/AWS】メモリ最適化インスタンスr6gdのDebianでNVMe SSDディスクをマウントする
POSTED BY
2023-04-20

前回の記事

【Amazon/AWS】NVMe SSD仕様のコンピューティング最適化(c6gd)・メモリ最適化(r6gd)インスタンスを作成するには

にて、OSにArmのDebianを選んでメモリ最適化インスタンスr6gd.xlargeを起動した。

Debian仮想マシンに初回ログインするには、ユーザー名を「admin」とし登録したSSHキーでログインする。

さて、

https://aws.amazon.com/jp/ec2/instance-types/

にあるとおり、r6gd.xlargeインスタンスには237GBのNVMe SSDが付属する

しかしながら、ログインしてdfしてみたところ、そのようなディスクはマウントされていない。

df -h
Filesystem       Size  Used Avail Use% Mounted on
udev              16G     0   16G   0% /dev
tmpfs            3.2G  8.4M  3.2G   1% /run
/dev/nvme0n1p1   492G  885M  472G   1% /
tmpfs             16G     0   16G   0% /dev/shm
tmpfs            5.0M     0  5.0M   0% /run/lock
tmpfs             16G     0   16G   0% /sys/fs/cgroup
/dev/nvme0n1p15  127M  140K  127M   1% /boot/efi
tmpfs            3.2G     0  3.2G   0% /run/user/1000

あるのは、インスタンス作成時に強制作成させられるルートボリューム(EBS)だけである。
(ルートボリュームEBSもnvmeと出ていて紛らわしいが、付属する237GBのNVMe SSDではない)

そもそも、作成時、237GBのNVMe SSDをルートボリュームに選択することはできず、EBSボリュームを作らされた。

つまり、付属のNVMe SSDを使うには自分でフォーマット&マウントする必要がある。

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-using-volumes.html

に、すべて説明が載っているが、今回Debianなのでext4で付属NVMeのマウントを試みる。

ここから先はすべてスーパーユーザで行う。いちいち1コマンドごとにsudoなどしないでsudo -sでrootになってしまったほうがいい。

1、まずは237GBのNVMe SSDが存在しているか確認する

lsblk、lsblk -f と打ってみる。

lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
nvme0n1      259:0    0   500G  0 disk
tqnvme0n1p1  259:4    0 499.9G  0 part /
mqnvme0n1p15 259:5    0   127M  0 part /boot/efi
nvme1n1      259:3    0 220.7G  0 disk

lsblk -f
NAME         FSTYPE LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
nvme0n1
tqnvme0n1p1  ext4         50a04f92-304f-42e8-81c2-7f0fd039727a    471G     0% /
mqnvme0n1p15 vfat         C839-1D94                             126.6M     0% /boot/efi
nvme1n1

nvme1n1/220.7Gを発見。これだ。これが付属するNVMe SSDで、どこにもマウントされていない。

であれば、これをフォーマット&マウントしてしまえばいい。

/dev/nvm以下のデバイスがあるかどうか確認する。

ls -alF /dev/nvm*
crw------- 1 root root 241, 0 Apr 20 06:52 /dev/nvme0
brw-rw---- 1 root disk 259, 0 Apr 20 06:52 /dev/nvme0n1
brw-rw---- 1 root disk 259, 4 Apr 20 06:52 /dev/nvme0n1p1
brw-rw---- 1 root disk 259, 5 Apr 20 06:52 /dev/nvme0n1p15
crw------- 1 root root 241, 1 Apr 20 06:52 /dev/nvme1
brw-rw---- 1 root disk 259, 3 Apr 20 06:52 /dev/nvme1n1

2、フォーマット&マウントする

ターゲットは/dev/nvme1n1であることが判明したので、mkfs, mountすればいい。
上記Amazonのドキュメントにはxfsでフォーマットする例が出ているが、Debianなので今回はext4でフォーマットする。

file -s /dev/nvme1n1
/dev/nvme1n1: data

mkfs -t ext4 /dev/nvme1n1

mke2fs 1.44.5 (15-Dec-2018)
Discarding device blocks: done
Creating filesystem with 57861328 4k blocks and 14467072 inodes
Filesystem UUID: 1363ebed-011e-4dd8-a666-ee60e369f727
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

file -s /dev/nvme1n1
/dev/nvme1n1: Linux rev 1.0 ext4 filesystem data, UUID=1363ebed-011e-4dd8-a666-ee60e369f727 (extents) (64bit) (large files) (huge files)

fdisk -l
Disk /dev/nvme0n1: 500 GiB, 536870912000 bytes, 1048576000 sectors
Disk model: Amazon Elastic Block Store
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9333AC37-3F82-C142-A1B8-7CE37CFC054B

Device           Start        End    Sectors   Size Type
/dev/nvme0n1p1  262144 1048575966 1048313823 499.9G Linux filesystem
/dev/nvme0n1p15   2048     262143     260096   127M EFI System

Partition table entries are not in disk order.

Disk /dev/nvme1n1: 220.7 GiB, 237000000000 bytes, 462890625 sectors
Disk model: Amazon EC2 NVMe Instance Storage
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

mkfs後、file、fdiskコマンドで無事ext4としてフォーマット完了していることを確認。

あとは以下で手動マウント(ここでは/diskとしてマウント)

cd /
mkdir disk

mount /dev/nvme1n1 /disk

df -h
Filesystem       Size  Used Avail Use% Mounted on
udev              16G     0   16G   0% /dev
tmpfs            3.2G  8.4M  3.2G   1% /run
/dev/nvme0n1p1   492G  885M  472G   1% /
tmpfs             16G     0   16G   0% /dev/shm
tmpfs            5.0M     0  5.0M   0% /run/lock
tmpfs             16G     0   16G   0% /sys/fs/cgroup
/dev/nvme0n1p15  127M  140K  127M   1% /boot/efi
tmpfs            3.2G     0  3.2G   0% /run/user/1000
/dev/nvme1n1     217G   61M  206G   1% /disk

/diskにマウントして、晴れて付属のNVMe SSD 237Gが使えるようになった。

3、起動時に自動マウントさせる

/etc/fstabに起動コマンドを書いて、起動時に自動でマウントさせる。

※自己責任注意※/etc/fstabの記述が間違っていると起動に失敗しマシンに一生ログインできなくなる可能性あり。

/etcをバックアップしておく

cd /
cp -Rp etc etc.default

blkidコマンドで対象ディスクのUUIDを取得する

blkid

/dev/nvme0n1: PTUUID="9333ac37-3f82-c142-a1b8-7ce37cfc054b" PTTYPE="gpt"
/dev/nvme0n1p1: UUID="50a04f92-304f-42e8-81c2-7f0fd039727a" TYPE="ext4" PARTUUID="daa5ac51-f67f-d44c-aa86-26c8646e8781"
/dev/nvme0n1p15: SEC_TYPE="msdos" UUID="C839-1D94" TYPE="vfat" PARTUUID="4389cbe0-c621-d244-9320-5e45ef2249ea"
/dev/nvme1n1: UUID="1363ebed-011e-4dd8-a666-ee60e369f727" TYPE="ext4"

nvme1n1の1363ebed-011e-4dd8-a666-ee60e369f727をコピーする。

fstabの最後に行を足して編集する

vi /etc/fstab

# /etc/fstab: static file system information
UUID=50a04f92-304f-42e8-81c2-7f0fd039727a / ext4 rw,discard,errors=remount-ro,x-systemd.growfs 0 1
UUID=C839-1D94 /boot/efi vfat defaults 0 0
UUID=1363ebed-011e-4dd8-a666-ee60e369f727 /disk ext4 defaults,nofail 0 2

最後の行が、追加編集した、/diskに起動時nvme1n1をマウントする設定。

確認のため、いったん/diskをアンマウントしてマウントし直す

umount /disk
mount -a

エラーが出ず、dfでディスクマウントを確認できれば、fstabにエラーは無いはずで、再起動しても問題なく自動マウントされるはずである。ただしあくまで※自己責任注意※

※追記※付属するNVMe SSDはインスタンスストア=揮発性ストレージであり、マシンを「停止(halt)」すると中のデータはもちろんファイルシステムすらすべて消えてしまい、再び最初からフォーマット&マウント作業が必要になります。頻繁に停止するマシン用途には向かず、一時ファイル置き場としての用途が強いです。

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

【キーワード検索】