ハンズオン(簡易版): EC2基礎(EBS)

インスタンス作業.2.1. ファイルシステムの作成 (/mnt-handson-cli-ec2-ebs)

手順の目的 [why]

AmazonLinuxリソース"AmazonLinux2"を作成します。

設定値の指定

設定値の指定

手順に必要な設定値を変数に格納をします。

1. ターゲットデバイス

ターゲットデバイスを指定します。

変数の設定:

DEVICE_FILE_NAME='sdh'

2. マウントポイント

マウントポイントを指定します。

変数の設定:

DIR_MOUNT_POINT="/mnt-handson-cli-ec2-ebs"

3. ファイルシステムタイプの指定

ファイルシステムタイプを指定します。

変数の設定:

DISK_TYPE='xfs'

設定値の確認

各変数に正しい設定値が格納されていることを確認しながら保存します。

変数の確認:

cat << END

  # 1. DEVICE_FILE_NAME:"sdh"
       DEVICE_FILE_NAME="${DEVICE_FILE_NAME}"
  # 2. DIR_MOUNT_POINT:"/mnt-handson-cli-ec2-ebs"
       DIR_MOUNT_POINT="${DIR_MOUNT_POINT}"
  # 3. DISK_TYPE:"xfs"
       DISK_TYPE="${DISK_TYPE}"

END

下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。

処理の実行

初期化の対象となるディスクを指定します。

変数の設定:

DISK_TARGET="/dev/${DEVICE_FILE_NAME}" \
  && echo ${DISK_TARGET}

結果(例):

/dev/sdh

ディスクの初期化

ディスクを初期化します。

変数の確認:

cat << END

  # DISK_TYPE:"xfs"
    DISK_TYPE="${DISK_TYPE}"
  # DISK_TARGET:"/dev/sdh"
    DISK_TARGET="${DISK_TARGET}"

END

コマンド:

sudo mkfs \
   -t ${DISK_TYPE} \
   ${DISK_TARGET}

結果(例):

meta-data=/dev/sdh               isize=512    agcount=4, agsize=524288 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0
data     =                       bsize=4096   blocks=2097152, 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

マウントポイントの作成

マウントポイントを作成します。

変数の確認:

cat << END

  # DIR_MOUNT_POINT:"/mnt-handson-cli-ec2-ebs"
    DIR_MOUNT_POINT="${DIR_MOUNT_POINT}"

END

コマンド:

sudo mkdir ${DIR_MOUNT_POINT}

結果(例):

(出力なし)

ディスクのマウント

ディスクをマウントします。

変数の確認:

cat << END

  # DISK_TARGET:"/dev/sdh"
    DISK_TARGET="${DISK_TARGET}"
  # DIR_MOUNT_POINT:"/mnt-handson-cli-ec2-ebs"
    DIR_MOUNT_POINT="${DIR_MOUNT_POINT}"

END

コマンド:

sudo mount ${DISK_TARGET} ${DIR_MOUNT_POINT}

結果(例):

(出力なし)

マウントポイントの所有者を変更します。

変数の確認:

cat << END

  # DIR_MOUNT_POINT:"/mnt-handson-cli-ec2-ebs"
    DIR_MOUNT_POINT="${DIR_MOUNT_POINT}"

END

コマンド:

sudo chown ec2-user:ec2-user ${DIR_MOUNT_POINT}

結果(例):

(出力なし)

完了確認

「マウントポイント"/mnt-handson-cli-ec2-ebs"にターゲットデバイス名"sdhのデバイスがマウントされている。」ことを確認します。

コマンド:

df | grep ${DIR_MOUNT_POINT}

結果(例):

/dev/nvme1n1      8378368   41392   833697    1% /mnt-handson-cli-ec2-ebs

fstabファイルのバックアップファイルを作成します。

コマンド:

sudo cp /etc/fstab /etc/fstab.$(date +%s)

結果(例):

(出力なし)

デバイスリンク名を取得します。

コマンド:

DEVICE_LINK_NAME=$( \
  file -s ${DISK_TARGET} \
  | sed "s/^.*\`//" \
  | sed "s/'$//" \
) \
  && echo "${DEVICE_LINK_NAME}"

結果(例):

nvme1n1

ディスクのUUIDを取得します。

コマンド:

DISK_UUID=$( \
  sudo blkid \
    | grep /dev/${DEVICE_LINK_NAME} \
    | sed "s/^.*UUID=\"//" \
    | sed "s/\".*$//" \
) \
  && echo ${DISK_UUID}

結果(例):

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

ディスクのタイプを取得します。

コマンド:

DISK_TYPE_TARGET=$( \
  sudo blkid \
    | grep /dev/${DEVICE_LINK_NAME} \
    | sed "s/^.*TYPE=\"//" \
    | sed "s/\".*$//" \
) \
  && echo ${DISK_TYPE_TARGET}

結果(例):

xfs

/etc/fstabにマウント情報を反映します。

変数の確認:

cat << END

  # DISK_UUID:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    DISK_UUID="${DISK_UUID}"
  # DIR_MOUNT_POINT:"/mnt-handson-cli-ec2-ebs"
    DIR_MOUNT_POINT="${DIR_MOUNT_POINT}"
  # DISK_TYPE_TARGET:"xfs"
    DISK_TYPE_TARGET="${DISK_TYPE_TARGET}"

END

コマンド:

if [ ! $( grep ${DISK_UUID} /etc/fstab ) ]; then
  sudo sh -c "echo \"UUID=${DISK_UUID}     ${DIR_MOUNT_POINT} ${DISK_TYPE_TARGET} defaults,nofail  0  2\" >> /etc/fstab" \
    && sudo cat /etc/fstab |grep ${DISK_UUID}
fi

結果(例):

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx     /mnt-handson-cli-ec2-ebs xfs defaults,nofail  0  2

手順の完了