AWS EC2 無法 SSH 救援小記
今天來練習一下之前同事遇到的狀況
場景描述:
使用者誤將 swap 寫入 /etc/fstab 導致系統故障,無法 SSH 連入機器
解決方法:
建立一台新機器,將故障機器系統碟解除連結,並將此系統碟掛載到新機器當第二顆硬碟
然後連入新機器將第二顆硬碟的 /etc/fstab 錯誤部分註解起來,再重新掛回原本機器就可以正常 SSH
1. Detach Volume ( 卸除 EBS 硬碟 )
首先將故障機器關機,紀錄 Root device EBS ID
搜尋此 EBS ID 或是直接點選 EBS ID 到 EBS 的 Volume 頁面
確認 EBS 已經被選取
點選 Actions -- > Detach Volume
等待 state 變 available
這樣這顆 EBS 就沒有跟故障的 EC2 掛載
2. Attach Volume (掛載 EBS)
建立一臺新機器 EC2
接下來將剛剛的 EBS 連接當第二顆硬碟
在 Elastic Block Store 的 Volumes
勾選 剛剛的 EBS
點選 Actions → Attach Volume
選取剛剛建立的新 EC2
點選 Attach
這樣新的EC2 就掛載剛剛那顆 EBS
進行檔案修正
使用 SSH 連入新EC2,並建立目錄 mount 第二顆硬碟
# mkdir /mnt/disk
在掛載之前, 可以用 parted -l 觀察之前 EBS 的 file system type
# parted -l
這個可以觀察到 File system 爲 xfs
然後我有碰到 UUID 重複所以不能掛載的情形, 如果掛載失敗可以使用 dmesg 觀察
# dmesg | tail
[ 5.023046] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 447.820731] blkfront: xvdf: barrier or flush: disabled; persistent grants: disabled; indirect descriptors: enabled;
[ 447.845491] xvdf: xvdf1
[ 754.568311] XFS (xvdf1): Filesystem has duplicate UUID 15c7809d-e6e3-4062-a5eb-afeb1939fc6e - can't mount
[ 779.055887] XFS (xvdf1): Filesystem has duplicate UUID 15c7809d-e6e3-4062-a5eb-afeb1939fc6e - can't mount
觀察 UUID 的狀況 可以使用 blkid 觀察
# blkid
/dev/xvda1: LABEL="/" UUID="15c7809d-e6e3-4062-b5eb-afeb1939fc6e" TYPE="xfs" PARTLABEL="Linux" PARTUUID="cfb2e895-ecec-41c5-afc2-40ffe2e4384a"
/dev/xvdf1: LABEL="/" UUID="15c7809d-e6e3-4062-b5eb-afeb1939fc6e" TYPE="xfs" PARTLABEL="Linux" PARTUUID="cfb2e895-ecec-41c5-afc2-40ffe2e4384a"
所以我的解法就是使用 mount 加上指定 file system type 與 nouuid 選項
# mount -t xfs -o rw,nouuid /dev/sdf1 /mnt/disk
然後註解第二顆硬碟裡的 /etc/fstab 錯誤部分
# vim /mnt/disk/etc/fstab
我是有乖乖的先 unmount /mnt/disk
#unmount /mnt/disk
然後 Detach Volume ( 從新的 EC2 )
Attach Volume ,掛回原本機器(按照原來路徑掛回去)
就可以正常 SSH
~ enjoy it
Reference:
英明的同事筆記
沒有留言:
張貼留言