在處理磁盤相關問題時,您可能會碰到操作系統中數據盤分區丟失的情況。本文介紹了Linux系統下常見的數據盤分區丟失的問題以及對應的處理方法,同時提供了使用云盤的常見誤區以及最佳實踐,避免可能的數據丟失風險。
前提條件
背景信息
在Linux實例里,您可以選擇以下任一種工具修復磁盤分區并恢復數據:
fdisk:Linux系統默認安裝的分區工具。
testdisk:主要用于恢復Linux系統的磁盤分區或者數據。Linux系統默認不安裝,您需要自行安裝這個軟件。例如,在CentOS系統里,您可以運行yum install -y testdisk在線安裝。
partprobe:Linux系統默認安裝的工具。主要用于不重啟系統時讓kernel重新讀取分區。
數據恢復方法
在Linux實例里,您重啟系統后,可能會出現數據盤分區丟失或者數據丟失的問題。這可能是因為您未在/etc/fstab文件里設置自動掛載。此時,您可以先手動掛載數據盤分區。如果手動掛載時報分區表丟失,您可以嘗試如下三種辦法進行處理:
通過fdisk恢復分區
對數據盤分區時,分區磁盤的起止扇區一般使用默認的值,所以可以先嘗試直接使用fdisk命令新建分區進行恢復。具體操作,請參見初始化小于等于2 TiB數據盤(Linux)。
如果上述操作無效,您可以使用testdisk工具嘗試修復。
通過testdisk恢復分區
這里假設云盤的設備名為/dev/xvdb。按以下步驟使用testdisk工具恢復分區:
運行testdisk /dev/xvdb(根據實際情況替換設備名),再選擇Proceed(默認值)后按回車鍵。
選擇分區表類型進行掃描:一般選擇Intel(默認)。如果您的數據盤采用GPT分區,選擇EFI GPT。
選擇Analyse后按回車鍵。
如果您沒有看到任何分區信息,選擇Quick Search后按回車鍵快速搜索。
在返回結果中會顯示分區信息,如下圖所示。
選中分區后,按回車鍵。
選擇Write保存分區。
說明如果不是您需要的分區,可以選擇Deeper Search繼續搜索。
按Y鍵確認保存分區。
運行partprobe /dev/xvdb(根據實際情況替換設備名)手動刷新分區表。
重新掛載分區,查看數據盤里的數據情況。
通過testdisk直接恢復數據
在某些情況下,您可以用testdisk掃描出磁盤分區,但是無法保存分區,此時,您可以嘗試直接恢復文件。具體操作步驟如下所示:
用testdisk掃描出磁盤分區。具體操作,請參見通過testdisk恢復分區的第1步到第4步。
按P鍵列出文件。
返回結果如下圖。
選中要恢復的文件,再按C鍵。
選擇目標目錄。本示例中以恢復到/home為例。
如果您看到
Copy done! 1 ok, 0 failed
,表示復制成功,如下圖所示。切換到/home目錄查看。
如果您能看到文件,說明文件恢復成功。
常見誤區與最佳實踐
數據是用戶的核心資產,很多用戶在ECS實例上構建網站、自建數據庫(MySQL/MongoDB/Redis)。數據丟失會給用戶的業務帶來巨大的風險。本節介紹了數據安全方面的常見誤區和最佳實踐。
常見誤區
阿里云的底層存儲基于三副本,因此有些用戶認為操作系統內數據沒有任何丟失風險。實際上這是誤解。底層存儲的三副本提供對數據磁盤的物理層保護,但是,如果系統內部使用云盤邏輯上出現問題,例如中毒、誤刪數據、文件系統損壞等情況,還是可能出現數據丟失。此時,您需要通過快照、異地備份等相關技術最大限度地保證數據的安全性。關于三副本的介紹,請參見云盤三副本技術。
最佳實踐
數據盤分區恢復以及數據恢復是處理數據丟失問題最后的一道防線,但未必一定能夠恢復數據。強烈建議您參考如下最佳實踐,通過對數據創建快照(自動或手動)以及各類備份方案,最大程度地保證數據的安全性。