星期六, 11月 28, 2020

AWS EC2 無法 SSH 救援小記

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

點選 ActionsAttach 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:

  • 英明的同事筆記

沒有留言: