Solaris 格式命令失敗,並顯示警告:設定驅動器幾何形狀時發生錯誤。警告:寫入 VTOC 時發生錯誤。標籤失敗。
Summary: 無法在 PowerPath 控制下格式化新指派的裝置。當虛擬裝置名稱作為格式命令的參數給出時,找不到裝置...當按本機名稱選取裝置時,格式化命令會失敗,並顯示警告:設定磁碟機幾何形狀時發生錯誤。警告:寫入 VTOC 時發生錯誤。標籤失敗。
Symptoms
或者裝置已新增至組態中,但之後發生錯誤,導致開機歸檔檔案不一致。
環境:Solaris 10 或 Solaris 11
EMC SW:適用於 Solaris 的 PowerPath (任何版本)
# 格式 emcpower0a
找不到磁碟!
# 格式
...
指定磁碟 (輸入磁碟編號):165
選取 C1T500009792318B960d42
[磁碟格式化]
格式化> p
分割區>標籤
已準備好標記磁碟,請繼續嗎? y
警告:設定磁碟機幾何結構時發生錯誤。
警告:寫入 VTOC 時發生錯誤。
標籤失敗。
隔>
Cause
中的項目。/dev/dsk 和 /dev/rdsk 中的所有項目皆正確...但無處可去:
294998 2 lrwxrwxrwx 1 根根 34 Jun 26 12:55 emcpower0 -> ../../devices/pseudo/emcp@0:wd,blk
294997 2 lrwxrwxrwx 1 root root 33 Jun 26 12:55 emcpower0a -> ../../devices/pseudo/emcp@0:a,blk
291378 2 lrwxrwxrwx 1 root root 33 Jun 26 12:55 emcpower0b -> ../../devices/pseudo/emcp@0:b,blk
289256 2 lrwxrwxrwx 1 root root 33 Jun 26 12:55 emcpower0c -> ../../devices/pseudo/emcp@0:c,blk
295005 2 lrwxrwxrwx 1 root root 33 Jun 26 12:55 emcpower0d -> ../../devices/pseudo/emcp@0:d,blk
289257 2 lrwxrwxrwx 1 root root 33 Jun 26 12:55 emcpower0e -> ../../devices/pseudo/emcp@0:e,blk
289258 2 lrwxrwxrwx 1 root root 33 Jun 26 12:55 emcpower0f -> ../../devices/pseudo/emcp@0:f,blk
289259 2 lrwxrwxrwx 1 root root 33 Jun 26 12:55 emcpower0g -> ../../devices/pseudo/emcp@0:g,blk
/devices/pseudo 中沒有 emcp@0 項目。
Resolution
需要重新建立 /devices/pseudo 中的項目。首先,請檢查問題不是由 HPOvPerfAgt 套裝所造成。否則,請使用以下 4 種方法之一。如果第一種方法失敗,則第二種方法應成功。在最壞的情況下,最後一個應該會成功。
1) 嘗試使用「devfsadm -i emcp」命令
# devfsadm -i emcp
# ls /devices/pseudo/emcp@0 重新建立 emcp 項目 (檢查項目現在是否存在 - 請注意,emcp@0 代表 emcpower0;若為 emcpowerXX,請尋找 emcp@XX)
# bootadm update-archive (以整合開機資訊中的組態變更)
2) 先前的命令可能無法成功在 /devices 中建立新項目。以下命令是基於以下事實:當成功的「emcpadm renamepseudo」命令執行時,會重新建置 /devices 中的所有項目。這是此命令的副作用,對於修復此處的問題非常有用。
拾取未使用的虛擬設備(當前未掛載,是文件系統的一部分),該設備沒有任何問題(以格式顯示,其條目存在於/devices下)。假設這個好的偽設備是emcpower7。假設組態中沒有 emcpower1007,因此 emcpower1007 可能是一個新名稱。執行 :
# emcpadm renamepseudo -s 7 -t 1007
# emcpadm renamepseudo -s 1007 -t 7
# powermt save
# bootadm update-archive
使用“好”的偽設備很重要....而不是在 /devices 中沒有條目的偽設備,否則命令將失敗(請參閱下面的第 4 段)並且不會修復 /devices 條目。
使用上述命令,在第一個命令之後,問題應該已經修復。第二次重命名只是為了恢復原始偽名。最後 2 個命令用於合併更改。
3) 嘗試取消管理/管理有問題的裝置 (這可能會失敗)
# powermt unmanage dev=emcpower0a
錯誤:取消管理失敗
4) 嘗試重新命名有問題的虛擬裝置 (這可能會失敗)
# emcpadm renamepseudo -s 0 -t 1000
<ERROR: 無法重新命名裝置。emcpower0>
不存在 5) 完全重新設定有問題的裝置
# powermt remove dev=0
# powermt save
>> 從儲存群組
# devfsadm -C 中取消遮罩裝置 (移除原生路徑在 /dev/dsk 和 /dev/rdsk 中的項目)
# rm /dev/dsk/emcpower0*
# rm /dev/rdsk/emcpower0*
>> 將裝置遮罩回儲存群組
# devfsadm (重新建立原生路徑的項目)
# powermt config (重新設定 Powerpath)
# powermt display dev=all (檢查虛擬裝置是否已重新設定)
# powermt save
# ls /devices/pseudo/emcp@0 (檢查項目現在是否存在 - 請注意,emcp@0 代表 emcpower0;若為 emcpowerXX,請尋找 emcp@XX)
# bootadm update-archive (以整合開機資訊中的組態變更)