14
6

More than 3 years have passed since last update.

【AWS】EBSのマウント手順(EC2にアタッチしただけでは使えません)

Last updated at Posted at 2021-01-26

はじめに

EBSはEC2にアタッチするだけでは使用できません。
アタッチしただけではOS側から"ただのディスク"としか見られていないため、
使用するにはEBSをフォーマットした上でマウントする必要があります。

ここではマウントまでの手順を解説します。

※AWS, Linuxの初学者を対象にしています。

【フォーマット】
記憶装置の内部を小さな区画に分割し、管理用のデータ保管領域などを確保することにより、特定の箇所へのデータの読み書きができるよう準備する操作
IT用語事典 e-words

【マウント】
周辺機器をOSなどのソフトウェアに認識させ、操作・利用可能な状態にすること
IT用語事典 e-words

環境

  • パソコン:Mac
  • AMI:Amazon Linux 2

前提

  • EC2インスタンスを作成していること。
  • EBSを作成しEC2にアタッチしていること。
  • ターミナルからEC2にSSH接続済みであること。

手順

①EC2のコンソールからアタッチしたEBSのデバイス名を確認

スクリーンショット 2021-01-26 7.44.37.png
ここですね。/dev/sdf となっていることを確認できます。

②root権限に切り替える

ここから先はroot権限が必要な操作ばかりなので切り替えます。

[ec2-user@ip-123-45-67-89 ~]$ sudo su -

または

[ec2-user@ip-123-45-67-89 ~]$ sudo -i

▪️参考:sudo -i と sudo su- のどちらを使うべきか?
▪️参考:AWS公式ドキュメント(公式では権限を切り替えずに以降の手順をすべて sudo で実行しています)

③デバイス上にファイルシステムを作成する

ファイルシステムとは?
NTFSFAT32など聞いたことありませんか?
「Windowsで使ってた外付けHDDをMacに接続しても認識しない!」等の経験ありませんか?
今回はその話です。
ファイルシステムとは記憶装置に保存されたデータを管理し操作するために必要な機能です。
ファイルシステムがないとEBSも外付けHDDもただの箱です。
ファイルシステムは様々な種類がありますがLinuxでは主にXFSext4が使われているようです。
▪️参考:ファイルシステムとは?

まず現在のデバイスのファイルシステムをfileコマンドを使って確認します。
対象が今回のようなデバイスファイルの場合は-sオプションを付ける必要があるようです。
▪️参考:wikipedia: file (UNIX)

[root@ip-123-45-67-89 ~]$ file -s /dev/sdf
/dev/sdf: symbolic link to `xvdf'

よくわからないですが/dev/sdfxvdfへのシンボリックリンクですよーと出てきます。
(シンボリックリンクとはショートカットのようなものです)

本体がxvdfであるならばなぜsdfというショートカットを挟まなければいけないのか、
このあたりの理由は調べてもわかりませんでした。「こういうものだ」と処理します。
▪️参考:EC2:EBSデバイスIDの混乱(/ dev / sdfと/ dev / xvdf)

実際にlsblkコマンド(ブロックデバイスを一覧表示するコマンド)を実行してみても
接続されているデバイスはxvdfであることが確認できます。

[root@ip-123-45-67-89 ~]# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0    8G  0 disk
└─xvda1 202:1    0    8G  0 part /
xvdf    202:80   0  500G  0 disk

気を取り直して、改めて現在のファイルシステムを確認します。

[root@ip-123-45-67-89 ~]# file -s /dev/xvdf
/dev/xvdf: data

dataとだけ表示される場合、ファイルシステムが作られていないことを意味します。

ではmkfsコマンド(ファイルシステムを作成するコマンド)でファイルシステムを作成します。
今回はext4にしたいと思いますので-tオプションで指定します。
▪️参考:【 mkfs 】コマンド――HDDなどをフォーマットする

[root@ip-123-45-67-89 ~]# mkfs -t ext4 /dev/xvdf
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
32768000 inodes, 131072000 blocks
6553600 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2279604224
4000 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
    102400000

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

長々と出てきましたが、これでファイルシステムの作成は完了です。
fileコマンドでファイルシステムを確認してみます。

[root@ip-123-45-67-89 ~]# file -s /dev/xvdf
/dev/xvdf: Linux rev 1.0 ext4 filesystem data, UUID=2c3d4ee5-d35f-4344-993f-9fe4303899d5 (extents) (64bit) (large files) (huge files)

ext4 filesystem dataと表示されており、
無事ext4でファイルシステムの作成ができたことを確認できます。

ちなみにここで表示されているUUIDは後ほど使いますのでどこかに控えておいてください。

④マウントするディレクトリを作成する

まずマウントの概念を理解する必要があります。
この2つの記事を読めば大まかには理解できるはずです。
▪️参考:この1ページで一通りわかる!Linuxのマウント(mount)について
▪️参考:「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典:マウント (mount)

ではmkdirコマンド(ディレクトリを作成するコマンド)でマウントするディレクトリを作成します。
ディレクトリ名は自由です。今回はAWS公式ドキュメントに倣ってdataとします。

[root@ip-123-45-67-89 ~]# mkdir /data

lsコマンド(ファイルやディレクトリを一覧確認するコマンド)で確認してみます。

[root@ip-123-45-67-89 ~]# ls /
bin  boot  data  dev  etc ...

無事dataが作成されていることを確認できます。

⑤マウントする

俺お前より詳しいぜ
失礼しました。作成したdataディレクトリに/dev/xvdfをマウントします。

マウントするにはmountコマンドを使います。
▪️参考:【 mount 】コマンド――ファイルシステムをマウントする

[root@ip-123-45-67-89 ~]# mount /dev/xvdf /data

特に何も表示されることなくしれっと完了します。

ではdfコマンド(ディスクの空き領域を調べるコマンド)を使って/dev/xvdfが表示されるかどうかを確認します。
空き領域が表示される=マウントされている を意味します。

-hオプションを付けることでギガバイトはGやメガバイトはMなど、わかりやすい単位で表示してくれます。
▪️参考:【 df 】コマンド――ディスクの空き領域を表示する

[root@ip-123-45-67-89 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        482M     0  482M   0% /dev
tmpfs           492M     0  492M   0% /dev/shm
tmpfs           492M  532K  492M   1% /run
tmpfs           492M     0  492M   0% /sys/fs/cgroup
/dev/xvda1      8.0G  1.4G  6.7G  18% /
tmpfs            99M     0   99M   0% /run/user/1000
/dev/xvdf       493G   73M  467G   1% /data

/dev/xvdfが表示されており、問題なくマウントできていることを確認できます。
これでアタッチされたEBSが使用可能ということになります。

⑥再起動後も自動でマウントされるように設定する

実はマウントをしてもEC2インスタンスの停止や再起動のタイミングで外れてしまいます。
停止や再起動をしても自動で再マウントされるように設定を追加したいと思います。

/etc/fstabというファイルシステムの情報を記述するファイルを編集していきます。
OS起動時にシステムがデバイスをディレクトリにマウントしますが、
どのデバイスにどのディレクトリをマウントするかの処理は/etc/fstabファイルの記述に従って進行されます。
▪️参考:Linux豆知識 175「/etc/fstab」ファイル

手順③のファイルシステム作成時に表示されたUUIDが必要になります。
メモに控えていなかった場合は再度fileコマンドで確認するか、またはblkidコマンド(ブロックデバイスの属性を表示させるコマンド)でも確認できます。

[root@ip-123-45-67-89 ~]# blkid
/dev/xvda1: LABEL="/" UUID="90e29211-2de8-4967-b0fb-16f51a6e464c" TYPE="xfs" PARTLABEL="Linux" PARTUUID="2c7bff30-ed75-4ab8-999f-02e40450fd0f"
/dev/xvdf: UUID="2c3d4ee5-d35f-4344-993f-9fe4303899d5" TYPE="ext4"

...

ではviコマンド(エディタを起動するコマンド)で/etc/fstabの編集画面を出します。
▪️参考:viコマンドについて詳しくまとめました 【Linuxコマンド集】

[root@ip-123-45-67-89 ~]# vi /etc/fstab

以下のような編集画面が表示されます。

#
UUID=90e29211-2de8-4967-b0fb-16f51a6e464c     /           xfs    defaults,noatime  1   1
~
~
~
~
~
"/etc/fstab" 2L, 91C

キーボードのiキーINSERTモード(編集モード)にし、
2行目以降に今回追加するデバイスの情報を入力します。

#
UUID=90e29211-2de8-4967-b0fb-16f51a6e464c     /           xfs    defaults,noatime  1   1
UUID=2c3d4ee5-d35f-4344-993f-9fe4303899d5     /data       ext4   defaults          1   1
~
~
~
~
~
"/etc/fstab" 2L, 91C

第1フィールド:デバイス名
第2フィールド:マウントポイント
第3フィールド:ファイルシステムの種類
第4フィールド:各種オプション
第5フィールド:ファイルシステムをdumpするか否かの指定
第6フィールド:OS起動時にfsckチェックを行うか否かの指定を行う
▪️参考:Linux豆知識 175「/etc/fstab」ファイル

入力後はescキーでコマンドモードに戻り、:wqと打ちreturnキーを押して上書き保存します。

以上で設定は完了です。
これでEC2が再起動をしても指定したデバイスが自動でマウントされます。

終わりに

しゃーしゃーと解説しましたが私自身がAWSの初学者です。
途中でも書きましたが、本体がxvdfであるならば何故sdfと名乗る必要があるのか、
ここだけはどんなに調べてもわからず、ずっとモヤモヤしています。
詳しい方は私にマウントしてください。

追記:

利用するAMIなどによってマウント対象のドライブの命名規則が変動するようです。
これは仕様ということで理解します。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/device_naming.html

14
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
6