如何解決虛擬機頻繁分離和附加磁盤導致的識別錯誤

問題描述

CentOS 6.5 (2.6.32-431.29.2.el6.x86_64)中正常啟動時附帶兩塊數據磁盤 A 和 B,大小為 10G 和 50G,分別對應 OS 中的 sdc 和 sdd。開機狀態下,在很短時間內先后將磁盤 A 和 B 分離,再將磁盤 B 附加上去。此時系統中使用 fdisk,看到磁盤 B(50G)已經映射為盤符 sdc,但磁盤信息還是磁盤 A(10G)的信息。且無法對 B 磁盤的文件系統進行正常操作,如 mount。

操作前

從平臺層面觀察數據磁盤信息,注意磁盤名,LUN ID 和 Disk size 的對應。

復制

#fdisk -l

系統層面掃描到的磁盤信息

復制

#dumpe2fs

文件系統信息。

復制

#lsblk

查看塊設備。注意 MAJ:MIN 和 SIZE 代表的主要:次要驅動號和磁盤尺寸。

操作后

在門戶中連續執行分離磁盤 A 和 B,再附加磁盤 B 的操作。

從平臺層面觀察數據磁盤信息,注意磁盤名,LUN ID 和 Disk size 的變化,這表示該虛擬機只有一塊 50GB 的數據磁盤。

系統內運行mount和fdisk查看掛載和磁盤信息。

sdd 還掛載在 /data 上。但已經無法正常工作,任何操作會報 IO 錯誤。

fdisk顯示數據磁盤 sdc 的大小還是磁盤 A 的信息(我們掛載的是磁盤 B)。

而對應該成為 sdc 的 B 磁盤進行掛載會發現讀取不到文件系統信息。

#lsblk信息也未更正。

問題分析

對磁盤進行分離和附加的操作間隔時間太小,該案例中 3 分鐘內完成了三次操作;導致內核對磁盤的信息未得到及時更新。誤認為被附加回的磁盤還是原來的磁盤,但因為磁盤的幾何構造發生了變化,因此導致沖突。文件系統也無法正確識別出來。

解決方法

通過下面命令強制對該設備進行刷新,使內核重新讀取其構造信息。

復制

echo 1 > /sys/class/scsi_device//device/rescan

Note

device 為磁盤的 SCSI 地址。

這里我們的測試結果。立即訪問http://market.azure.cn

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容