EC2にてDisk枯渇が発生した場合に何が起きるのかと対応方法ハンズラボ株式会社ハンズ事業部CRMグループSREチーム中川皓紘2023年01月17日ハンズラボ株式会社1
View Slide
自己紹介2名前:中川皓紘(Nakagawa Akihiro)経歴:2020/12 ~ ハンズラボ株式会社勤務出身地:神奈川県Twitter:@sam_eng3336趣味:カメラ, 旅行, 技術検証, 最近リモワで太ったのでダイエット中 etc…※写真はイメージです
早速本題へ!3皆様はDiskの管理や監視をしていますか!?
障害対応フロー(起動できる場合)4EC2へ接続できる場合・SSHで接続・SystemsManagerで接続・シリアルコンソールで接続EC2へ接続できない場合・再起動・ユーザーデータによる対応・起動できないパターン時の対応などTipsEBSの残容量を増やす方法に拡張という選択肢があるがAL2の場合コマンドでパーティションを変更する必要があるのでこういった場合には使いにくい
障害対応フロー(起動できない場合)5Step1・起動確認・CloudWatchのメトリックス等確認・Disk監視等あれば状況確認Step2・障害中EC2インスタンスの停止・EBSのデタッチ・復旧用EC2インスタンスにアタッチ・復旧作業Step3・復旧させたEBS Aを元のEC2へア タッチし直す・起動テスト
6一番汎用的に対応できそうなこのパタ ーンを検証してみた
EC2インスタンスを使って検証7これによりDisk枯渇状態を再現できた!・現在のDisk残容量を確認 ・約6.5GBの残容量がある・残容量不足を再現するために6.6GBのファイルを作成する・No space left no deviceの警告が出ている・Disk残容量0%状態になっていることを確認
障害を意図的に起こす8Disk枯渇状態から再起動実施Diskが足りずOSが起動できないorミドルウェアが立ち上がらない・起動不可・起動はできるがセッションマネージャで接続できない
復旧手順(AWSコンソール上での作業)9Step1障害を起こしたEC2インスタンスからEBSをデタッチ※EC2は予め停止しておくStep2復旧用EC2インスタンスに先程デタッチした EBSをアタッチするStep3復旧用EC2インスタンスを起動する
復旧手順(EC2内部での作業)10dfコマンドにてDisk状態を確認↓新規でアタッチしたEBSはマウントされない・「sdf1」でアタッチしたが、インスタンス内部では「xvdf1」でアタッチされている・そのまま「/dev/xvdf1」を「/mnt/ebs」にマウントを実施↓・エラーが発生してマウントできない
復旧手順(EC2内部での作業)11・「/var/log/messages」にてエラー原因を確認・DiskのUUIDが重複しマウント不可になっている「blkid」でDiskのUUIDを確認すると競合してることが確認できる
復旧手順(EC2内部での作業)12「mount」コマンドのオプション「 -o nouuid」を設定※今回は一時的なマウントなので UUIDの競合を無視
復旧手順(EC2内部での作業)13・「du」コマンドで先程マウントした「/mnt/ebs/*」内部のDiskを精査・今回作成したダミーファイルを確認・削除後Disk残容量を確認Disk残容量が危険域から脱したので元のEBSへ再アタッチを実施する
復旧手順(EC2内部での作業)14・復旧用EC2の「停止」を実行・復旧用EC2から対象のEBSをデタッチし元のEC2へアタッチ・障害を起こしていたEC2を起動・EC2内部へ接続しDisk残容量を再度確認する
復旧手順(EC2内部での作業)15・「du」コマンドで先程マウントした「/mnt/ebs/*」内部のDiskを精査・今回作成したダミーファイルを確認・削除後Disk残容量を確認無事復旧!
Copyright © All rights reserved.製作者:中川皓紘お わ り