幾天前接到一個客戶的求援,說是阿里雲上誤刪除了服務器,問我有沒有什麼辦法進行恢復,我當時的第一反應是:希望渺茫!因為據我所知,可能是出於數據隱私保護的角度考慮,假如客戶主動刪除了ECS,阿里雲的技術人員也是沒有辦法幫客戶恢復的。
所以我首先詢問有沒有做快照的備份?得到的答覆是否定的。這下更懸了,我建議客戶還是儘快清點線下的備份數據吧,大概率是沒轍了。
接下來,客戶的技術人員告訴我們是這樣刪除的:
看起來本意就是要刪除日誌目錄下的所有文件,但加了一個斜槓把根下的所有文件及目錄都連根拔起了。
看到這裡情況發生了反轉,我立即告訴客戶,數據可能還有救,因為畢竟只是Linux下的文件系統操作,假如沒有後續的寫入操作,通過Linux 的文件系統調試命令是有可能恢復一些關鍵數據的。這些命令包括debugfs、dd等,具體操作可以自行百度,我在這裡就不再贅述了。
接下來,因為服務器已經無法登錄,需要將服務器的數據盤掛載到其他服務器進行恢復,在進行恢復之前還可以為數據盤生成快照以支持隨時回退到最初狀態。另外,還可以通過數據盤生成的快照來克隆出新的數據盤用於數據的並行恢復。
最後,客戶那裡傳來喜訊,數據庫全都找了回來,刪除並沒有刪除到數據庫,可能是管理人員發現情況不對及時終止了刪除進程吧。
通過這件事情,客戶為所有的服務器都配置了自動快照策略,畢竟這樣的驚喜誰也不想要。
其實對於快照很對客戶都存在誤區,認為每一次快照都會佔用完整的空間,其實阿里雲的ECS快照只會記錄變化的數據塊,當數據的變化不是特別劇烈的情況下快照所佔用的空間其實不大。
另外一個啟發就是阿里雲支持將ECS的系統盤、數據盤先進行卸載後再作為數據盤掛載到其他的ECS,這樣出現一些系統無法啟動的問題可以方便的進行故障修復和數據恢復。也可以利用系統盤或數據盤的快照來創建新的數據盤掛載到更多的服務器來進行並行的恢復操作。
希望上面的案例對大家有所幫助。