Solaris 10 發行版本存在下列檔案系統錯誤。
ZFS 是設計為要與 POSIX 相容的檔案系統,在大多數情況中,ZFS 與 POSIX 相容。但是,當 ZFS 未通過 POSIX 相容性測試時,會發生兩種邊界情況:
更新 ZFS 檔案系統容量統計。
用完全已滿的檔案系統來修改現有的資料。
相關 CR:
6362314
6362156
6361650
6343113
6343039
因為 ZFS 套裝軟體是第一次附加到系統上,所以將 ZFS 修補程式附加到 Solaris 10 6/06 系統會造成 patchadd 指令產生假性警告訊息。螢幕上將顯示下列錯誤訊息:
The following requested patches have packages not installed on the system: Package SUNWzfskr from directory SUNWzfskr in patch 122641-03 is not installed on the system. Changes for package SUNWzfskr will not be applied to the system. |
解決方法:
忽略 patchadd 指令產生的假性訊息。
如果在 ZFS 檔案系統中復原具有 POSIX 草案 ACL 的 UFS 歸檔,則 ufsrestore 公用程式會產生錯誤。系統會正確復原檔案,但會忽略 ACL 資訊。
在 ufsrestore 作業期間,會產生下列錯誤訊息:
setacl failed: Invalid argument |
解決方法:
請使用下列任何顧及 ACL 設定的指令,將具有 ACL 的 UFS 檔案傳送至 ZFS 檔案系統:
cp
mv
tar
cpio
rcp
POSIX 草案 ACL 會轉譯為對等的 NFSv4 樣式 ACL。
如果您使用 fdisk -E 指令來修改 ZFS 儲存池使用的磁碟,儲存池將無法使用並可能會造成 I/O 失敗或系統程式錯誤。
解決方法:
請勿使用 fdisk 指令來修改 ZFS 儲存池使用的磁碟。如果您必須存取 ZFS 儲存池使用的磁碟,請使用 format 公用程式。通常不應該修改檔案系統正在使用的磁碟。
如果連接 Sun UltraTM 20 工作站或 Sun FireTM X2100 伺服器的磁碟包含 ZFS 儲存池,則上述這些系統可能會在重新啟動時當機。
可能存有此種問題的 BIOS 版本如下:
BIOS 版本低於 2.2.3 的 Sun Ultra 20 工作站
BIOS 版本低於 1.1.1 的 Sun Fire X2100 伺服器
解決方法:
請先結束 ZFS 使用的磁碟之連線,再重新啟動系統,直到在這些系統上可以安裝支援 ZFS 的最低 BIOS 層級為止。
通過發行版本 1.4 補充 CD 以安裝支援 ZFS 的 BIOS 最低支援版本。
支援的 BIOS 版本如下:
用於 Sun Ultra 20 工作站的 BIOS 版本 2.2.3。
用於 Sun Fire X2100 伺服器的 BIOS 版本 1.1.1。
您還可以從下列位置下載用於發行版本 1.4 的補充 CD 影像:
下列為 Veritas NetBackup 和 Sun StorEdgeTM Enterprise Backup Software (EMC 和 Legato NetWorker®) 產品的問題。
Veritas NetBackup 產品可以用來備份 ZFS 檔案,而且此配置是受支援的。但是,本產品目前不支援備份或復原來自 ZFS 檔案的 NFSv4 樣式 ACL 資訊。系統會正確備份和復原傳統的權限位元和其他檔案屬性。
如果使用者嘗試備份或復原 ZFS 檔案,系統會以無訊息的方式捨棄來自 ZFS 檔案的 NFSv4 樣式 ACL 資訊。不會發出錯誤訊息指出已捨棄來自 ZFS 檔案的 ACL 資訊。
對 ZFS/NFSv4 ACL 的支援正在開發中,預期能在下一個 Veritas NetBackup 發行版本中提供。
解決方法 1:
對於 Solaris 10 06/06 發行版本,tar 和 cpio 指令都可以正確處理具有 NFSv4 樣式 ACL 的 ZFS 檔案。
使用具有 -p 選項的 tar 指令或具有 -P 選項的 cpio 指令,將 ZFS 檔案寫入某一檔案中。然後,使用 Veritas NetBackup 來備份 tar 或 cpio 歸檔。
解決方法 2:
若不使用 Veritas NetBackup,另一種替代方式是使用 ZFS send 和 receive 指令來備份 ZFS 檔案。這些指令可以正確處理 ZFS 檔案的所有屬性。
Sun StorEdge Enterprise Backup Software 產品目前無法用來備份或復原 ZFS 檔案。
如果使用者嘗試備份或復原 ZFS 檔案,則會顯示下列錯誤訊息:
save: Unable to read ACL information for '/path': Operation not applicable |
在即將推出的 Sun StorEdge EBS 7.3 Service Update 1 發行版本中預期可以提供對 ZFS/NFSv4 ACL 的支援。
解決方法:
使用 NFSv4 將 ZFS 檔案系統掛載至另一個系統上。
從掛載 NFSv4 的目錄備份或復原 ZFS 檔案。
如果您將 SUNWzfsg 套裝軟體從 Solaris 10 6/06 發行版本增加到執行 Solaris 10 6/06 之前發行版本 (其中不具有 embedded_su 修補程式) 的系統,則 ZFS Administration 應用程式精靈將不具有完整功能。
如果您嘗試在不具有 embedded_su 修補程式的系統上執行 ZFS Administration 應用程式,您只能瀏覽您的 ZFS 配置。螢幕上將顯示下列錯誤訊息:
/usr/lib/embedded_su: not found |
解決方法:
將 embedded_su 修補程式 (119574-02) 增加到執行 Solaris 10 6/06 之前發行版本的系統中。
對於 RAID-Z 虛擬裝置,下列指令報告過大的「已用空間」和「可用空間」大小資訊:
du
df
zfs list
所報告的空間資訊包含用來儲存同位資料的已用空間。
如果主機在目標 (使用 Solaris iSCSI 軟體初始器進行連線) 進行檔案系統 I/O 時發生程式錯誤,則 I/O 可能無法清除或無法與目標裝置同步化。無法清除或無法同步化可能會造成檔案系統毀損。不會顯示錯誤訊息。
解決方法:
使用如同 UFS 的日誌記錄檔案系統。從 Solaris 10 開始,UFS 記錄預設為啟用。如需有關 UFS 的更多資訊,請參閱「System Administration Guide: Devices and File Systems」中的「What’s New in File Systems in the Solaris 10 Release?」。
如果在資料 scrub 或 resilver 作業正在執行的期間建立 ZFS 快照,則 scrub 或 resilver 作業會從頭重新啟動。如果經常進行快照,則 scrub 或 resilver 作業可能永遠無法完成。
解決方法:
請勿在 scrub 或 resilver 作業執行期間進行快照。
將 NFSv4 伺服器從 6/05 升級至 Solaris Express 7/05 或更新版本 (包含所有 Solaris 10 更新) 之後,您的程式可能會發生 EACCES 錯誤。此外,目錄可能會錯誤地顯示為空。
若要避免發生這些錯誤,請卸載後再重新掛載用戶端檔案系統。在卸載失敗的情況下,您可能需要使用 umount -f 來強行卸載檔案系統。或者,您也可以重新啟動用戶端。
如果網路中的用戶端和伺服器各使用不同的先前 Solaris 10 發行版本來安裝,NFSv4 存取控制清單 (ACL) 功能可能無法正常運作。使用這些功能的受到影響的 ACL 功能和指令行公用程式如下:
acl()
facl()
getfacl
setfacl
如需有關這些功能和公用程式的更多資訊,請參閱它們各自的線上手冊。
例如,包含下列配置的網路有可能發生此錯誤:
執行 Solaris 10 Beta 版本軟體的用戶端
執行 Solaris 10 軟體的伺服器
下表說明在使用不同 Solaris 10 發行版本之主從式配置中執行 ACL 功能的結果。
作業 |
用戶端 S10 作業系統 |
伺服器 S10 作業系統 |
結果 |
---|---|---|---|
取得 ACL |
S10 Beta |
S10 作業系統 |
偽裝 ACL * |
取得 ACL |
S10 作業系統 |
S10 Beta |
運作正常 |
設定 ACL |
S10 Beta |
S10 作業系統 |
運作正常 |
設定 ACL |
S10 作業系統 |
S10 Beta |
錯誤:EOPNOTSUP |
解決方法:若要 NFSv4 ACL 功能正常運作,請在伺服器和用戶端上皆執行 Solaris 10 作業系統的完整安裝。
在目前的 Solaris 10 版本中,Solaris 實作的 NFSv4 存取控制清單 (ACL) 現在符合 RFC 3530 規格。然而,使用 Solaris 10 Beta 2 或 Beta 1 版本的 NFSv4 用戶端會發生錯誤。這些用戶端無法在使用目前的 Solaris 10 發行版本的 NFSv4 伺服器中建立檔案。螢幕上將顯示下列錯誤訊息:
NFS getacl failed for server_name: error 9 (RPC: Program/version mismatch) |
解決方法:無。
mkfs 指令可能無法在具有大小超過 8 GB 之磁碟幾何的磁碟上建立檔案系統。衍生的磁柱群組大小過大,不適用於 1 KB 的分段。大型的磁柱群組大小表示區段無法容納超量的中介資料。
螢幕上將顯示下列錯誤訊息:
With 15625 sectors per cylinder, minimum cylinders per group is 16. This requires the fragment size to be changed from 1024 to 4096. Please re-run mkfs with corrected parameters. |
解決方法:請改用 newfs 指令。或在使用 mkfs 指令時,指定較大的分段大小,如 4096。
在下列情況中使用 newfs 指令建立 UFS 檔案系統可能會失敗:
磁碟片段大小過小 (約小於 4 MB)。
磁碟大小超過 8 GB。
造成此錯誤是因為需要大量的中介資料檔案系統。螢幕上會顯示以下警告訊息:
Warning: inode blocks/cyl group (295) >= data blocks (294) in last cylinder group. This implies 4712 sector(s) cannot be allocated. /dev/rdsk/c0t0d0s6: 0 sectors in 0 cylinders of 48 tracks, 128 sectors 0.0MB in 0 cyl groups (13 c/g, 39.00MB/g, 18624 i/g) super-block backups (for fsck -F ufs -o b=#) at: # |
解決方法:請以超級使用者身份執行下列任一解決方法:
解決方法 1:使用 newfs 指令時請指定磁軌數。請執行以下步驟。
使用 format 指令找出要指定的磁軌數。例如:
# format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c0t0d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248> /pci@1f,4000/scsi@3/sd@0,0 Specify disk (enter its number): |
此範例的磁軌數為 19。
將此數字指定至使用 newfs 指令建立的檔案系統。例如:
# newfs -v -t 19 /dev/dsk/c0t0d0s6 newfs: construct a new file system /dev/rdsk/c0t0d0s6: (y/n)? y mkfs -F ufs /dev/rdsk/c0t0d0s6 4712 -1 19 8192 1024 16 10 167 2048 t 0 -1 8 128 n mkfs: bad value for nsect: -1 must be between 1 and 32768 mkfs: nsect reset to default 32 Warning: 152 sector(s) in last cylinder unallocated /dev/rdsk/c0t0d0s6: 4712 sectors in 8 cylinders of 19 tracks, 32 sectors 2.3MB in 1 cyl groups (16 c/g, 4.75MB/g, 2304 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, # |
解決方法 2:請指定 newfs 指令中每個 I 節點的位元組數 (nbpi),以降低檔案系統中的 I 節點密度。例如:
# newfs -i 4096 /dev/dsk/c0t0d0s6 newfs: construct a new file system /dev/rdsk/c0t0d0s6: (y/n)? y Warning: 1432 sector(s) in last cylinder unallocated /dev/rdsk/c0t0d0s6: 4712 sectors in 1 cylinders of 48 tracks, 128 sectors 2.3MB in 1 cyl groups (16 c/g, 48.00MB/g, 11648 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, # |
當 NFSv4 用戶端的檔案系統接近滿容量時,將無法正確處理伺服器傳回的錯誤碼。此用戶端會收到伺服器傳回的正確 (NFS4ERR_NOSPC) 錯誤碼。但用戶端卻無法將 (ENOSPC) 錯誤碼傳輸至應用程式。應用程式未經由 write()、close() 或 fsync() 等正常的系統函數接到錯誤通知。因此,應用程式持續寫入或修改資料的嘗試,會造成資料遺失或損毀。
下列錯誤訊息會記錄在 /var/adm/messages 中:
nfs: [ID 174370 kern.notice] NFS write error on host hostname : No space left on device. nfs: [ID 942943 kern.notice] File: userid=uid, groupid= gid nfs: [ID 983240 kern.notice] User: userid=uid, groupid= gid nfs: [ID 702911 kern.notice] (file handle: 86007000 2000000 a000000 6000000 32362e48 a000000 2000000 5c8fa257) |
解決方法:請勿在檔案系統接近滿容量的用戶端系統上執行工作。
系統無法在等於或超過 1 TB 大小的分割區上產生傾印。如果系統上有這類裝置,系統發生程式錯誤之後,重新啟動時可能會發生下列情形:
系統沒有儲存傾印。
螢幕上將會顯示以下訊息:
0% done: 0 pages dumped, compression ratio 0.00, dump failed: error 6 |
解決方法:將系統的傾印裝置的大小配置為小於 1 TB。
如果您使用 smosservice 指令將作業系統服務增加到 UFS 檔案系統,會顯示磁碟可用空間不足的訊息。此錯誤僅出現在位於標示為 EFI 磁碟的 UFS 檔案系統上。
解決方法:請完成以下解決方法。
套用 SMI VTOC 磁碟標籤。
重新建立系統檔案。
重新執行 smosservice 指令。