4.2. ファイルシステムの作成 (/mnt-handson-cli-instance-stateful-ssh)¶
作業の目的 [why]¶
デバイス"/dev/sdh"にファイルシステムを作成して、マウントポイント"/mnt-handson-cli-instance-stateful-ssh"にマウントします。
作業対象 [what]¶
AmazonLinux2環境
標準時間(合計)¶
8分
パラメータ設定¶
- パラメータ設定の標準時間
2分
作業に必要なモノ・情報 [resource]¶
作業開始には、以下が全て揃っていることが必要です。
リソース1: ターゲットデバイス名
ファイルシステムを作成するターゲットデバイス名です。
今回は"sdh"とします。
リソース2: マウントポイント名
作成したファイルシステムをマウントするマウントポイント名です。
今回は"/mnt-handson-cli-instance-stateful-ssh"とします。
リソース3: ファイルシステムタイプ名
作成したファイルシステムのタイプ名です。
今回は"xfs"とします。
パラメータの指定¶
作業に必要なパラメータを変数に格納をします。
パラメータの保存¶
設定されている変数の保存先となるファイル名を指定します。
変数の設定:
DIR_PARAMETER="${HOME}/tmp/parameter-handson-cli-instance-stateful-ssh" FILE_PARAMETER="${DIR_PARAMETER}/$(date +%Y-%m-%d)-amazonlinux-filesystem-create.env" \ && echo ${FILE_PARAMETER}
結果(例):
${HOME}/tmp/parameter-handson-cli-instance-stateful-ssh/2019-09-16-amazonlinux-filesystem-create.env
各変数に正しいパラメータ値が格納されていることを確認しながら保存します。
変数の確認:
cat << EOF > ${FILE_PARAMETER} # 0.1. DEVICE_FILE_NAME:"sdh" DEVICE_FILE_NAME="${DEVICE_FILE_NAME}" # 0.2. MOUNT_POINT_NAME:"/mnt-handson-cli-instance-stateful-ssh" MOUNT_POINT_NAME="${MOUNT_POINT_NAME}" # 0.3. DISK_TYPE:"xfs" DISK_TYPE="${DISK_TYPE}" EOF cat ${FILE_PARAMETER}
下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。
タスクの実施¶
課題
(未検証)
- タスク標準時間
6分
1. 前処理¶
主処理に必要な情報の取得¶
初期化対象ディスクの指定
変数の設定:
DISK_TARGET="/dev/${DEVICE_FILE_NAME}" \ && echo ${DISK_TARGET}
結果(例):
/dev/sdh
2. 主処理¶
ディスクの初期化¶
変数の確認:
cat << ETX # DISK_TYPE:"xfs" DISK_TYPE="${DISK_TYPE}" # DISK_TARGET:"/dev/sdh" DISK_TARGET="${DISK_TARGET}" ETX
コマンド:
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 << ETX # MOUNT_POINT_NAME:"/mnt-handson-cli-instance-stateful-ssh" MOUNT_POINT_NAME="${MOUNT_POINT_NAME}" ETX
コマンド:
sudo mkdir ${MOUNT_POINT_NAME}
結果(例):
(出力なし)
ディスクのマウント¶
変数の確認:
cat << ETX # DISK_TARGET:"/dev/sdh" DISK_TARGET="${DISK_TARGET}" # MOUNT_POINT_NAME:"/mnt-handson-cli-instance-stateful-ssh" MOUNT_POINT_NAME="${MOUNT_POINT_NAME}" ETX
コマンド:
sudo mount ${DISK_TARGET} ${MOUNT_POINT_NAME}
ディスクのマウント確認¶
コマンド:
df | grep ${MOUNT_POINT_NAME}
結果(例):
/dev/xvdh 8378368 41392 833697 1% /mnt-handson-cli-instance-stateful-ssh
ディスクの所有者の変更
コマンド:
sudo chown ec2-user:ec2-user ${MOUNT_POINT_NAME}
結果(例):
(出力なし)
/etc/fstabへの反映¶
コマンド:
DEVICE_LINK_NAME=$( \ file -s ${DISK_TARGET} \ | sed "s/^.*\`//" \ | sed "s/'$//" \ ) \ && echo "${DEVICE_LINK_NAME}"
結果(例):
xvdh
コマンド:
sudo blkid
注釈
blkidコマンドは、rootで実行するとキャッシュが残り、そのキャッシュを一般ユーザからも取得ができる(らしい)。
コマンド:
DISK_UUID=$( \ blkid \ | grep /dev/${DEVICE_LINK_NAME} \ | sed "s/^.*UUID=\"//" \ | sed "s/\".*$//" \ ) \ && echo ${DISK_UUID}
結果(例):
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
コマンド:
DISK_TYPE_TARGET=$( \ blkid \ | grep /dev/${DEVICE_LINK_NAME} \ | sed "s/^.*TYPE=\"//" \ | sed "s/\".*$//" \ ) \ && echo ${DISK_TYPE_TARGET}
結果(例):
xfs
コマンド:
sudo cp /etc/fstab /etc/fstab.$(date +%s)
変数の確認:
cat << ETX # DISK_UUID:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" DISK_UUID="${DISK_UUID}" # MOUNT_POINT_NAME:"/mnt-handson-cli-instance-stateful-ssh" MOUNT_POINT_NAME="${MOUNT_POINT_NAME}" # DISK_TYPE_TARGET:"xfs" DISK_TYPE_TARGET="${DISK_TYPE_TARGET}" ETX
コマンド:
if [ ! $( grep ${DISK_UUID} /etc/fstab ) ]; then sudo sh -c "echo \"UUID=${DISK_UUID} ${MOUNT_POINT_NAME} ${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-instance-stateful-ssh xfs defaults,nofail 0 2