問題描述
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