Solaris 10 リリースのファイルシステムに関するバグ情報について説明します。
ZFS は POSIX 準拠のファイルシステムとして設計されており、ほとんどの場合、ZFS は POSIX に準拠しています。ただし、次の 2 つの極端な状況では、ZFS は POSIX 準拠テストに適合しません。
ZFS ファイルシステム容量統計の更新。
100 パーセント満杯のファイルシステムによる既存のデータの変更。
関連する CR:
6362314
6362156
6361650
6343113
6343039
ZFS パッチを Solaris 10 6/06 システムに追加すると、ZFS パッケージがシステムにはじめて追加されるため、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 コマンドから表示される誤ったメッセージを無視します。
POSIX ドラフト ACL を含む UFS アーカイブが ZFS ファイルシステムで復元される場合、ufsrestore ユーティリティーはエラーを生成します。ファイルは正しく復元されますが、ACL 情報は無視されます。
ufsrestore 操作中に、次のエラーメッセージが生成されます。
setacl failed: Invalid argument |
回避方法:
次のいずれかの ACL 対応コマンドを使用して、ACL を含む UFS ファイルを ZFS ファイルシステムに転送してください。
cp
mv
tar
cpio
rcp
POSIX ドラフト ACL は同等の NFSv4 スタイル ACL に変換されます。
fdisk -E コマンドを使用して ZFS ストレージプールによって使用されているディスクを変更する場合、そのプールは使用不可になり、入出力エラーまたはシステムパニックを引き起こすことがあります。
回避方法:
ZFS ストレージプールによって使用されているディスクの変更に fdisk コマンドを使用しないでください。ZFS ストレージプールによって使用されているディスクにアクセスする必要がある場合は、format ユーティリティーを使用してください。一般に、ファイルシステムが使用中のディスクを変更するべきではありません。
Sun UltraTM 20 ワークステーションまたは Sun FireTM X2100 サーバーに接続されているディスクに ZFS ストレージプールが含まれている場合、これらのシステムはリブート時にハングアップする可能性があります。
この問題が発生する可能性がある BIOS バージョンは次のとおりです。
2.2.3 より下位の BIOS バージョンを使用する Sun Ultra 20 ワークステーション
1.1.1 より下位の BIOS バージョンを使用する Sun Fire X2100 サーバー
回避方法:
システムをリブートする前に、これらのシステムで ZFS をサポートする最低限の BIOS レベルをインストールできるまで、ZFS によって使用されているディスクを切り離します。
リリース 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-style ACL を含む ZFS ファイルを正しく処理します。
tar コマンドに -p オプションを使用して、または cpio コマンドに -P オプションを使用して、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 |
ZFS/NFSv4 ACL のサポートは、次回の Sun StorEdge EBS 7.3 Service Update 1 リリースで利用可能になる予定です。
回避方法:
別のシステム上で NFSv4 を使用して ZFS ファイルシステムをマウントします。
NFSv4 がマウントされているディレクトリから ZFS ファイルをバックアップまたは復元します。
embedded_su パッチのない Solaris 10 6/06 より前のリリースを実行するシステムに Solaris 10 6/06 リリースの SUNWzfsg パッケージを追加する場合、ZFS 管理アプリケーションウィザードは十分に機能しません。
embedded_su パッチのないシステム上で ZFS 管理アプリケーションを実行しようとすると、ZFS 構成を参照することしかできません。次のエラーメッセージが表示されます。
/usr/lib/embedded_su: not found |
回避方法:
embedded_su パッチ (119574-02) を、Solaris 10 6/06 より前のリリースを実行するシステムに追加します。
RAID-Z 仮想デバイスに対して、次のコマンドは誇張された「使用済みスペース」および「空きスペース」のサイズ情報を報告します。
du
df
zfs list
報告されるスペース情報にはパリティーデータの格納に使用されるスペースが含まれます。
ターゲットに対して発生する (Solaris iSCSI ソフトウェアイニシエータを使用して接続される) ファイルシステムの入出力によってホストがパニック状態に陥った場合、入出力はターゲットデバイスのフラッシュまたはターゲットデバイスへの同期を実行できないことがあります。このフラッシュまたは同期の不能によってファイルシステムが破壊される場合があります。エラーメッセージは表示されません。
回避方法:
UFS などのジャーナリングファイルシステムを使用します。Solaris 10 以降では、UFS ロギングはデフォルトで使用可能になっています。UFS の詳細については、『Solaris のシステム管理 (デバイスとファイルシステム)』の「Solaris 10 リリースにおける新しいファイルシステム機能」 を参照してください。
データの scrub または resilver 操作の進行中に ZFS スナップショットが作成された場合、scrub または resilver 操作は最初から再開されます。スナップショットが頻繁に取得された場合、scrub または resilver 操作は完了しない可能性があります。
回避方法:
scrub または resilver 操作の実行中にスナップショットを取得しないでください。
NFSv4 サーバーをSolaris Express 6/05 から 7/05 以降にアップグレード (すべてのSolaris 10 アップデートを含む) したあと、プログラムによってEACCES エラーが検出されることがあります。さらに、ディレクトリが間違って空になっているように見えることもあります。
これらのエラーを回避するには、クライアントのファイルシステムをいったんマウント解除してから再マウントします。マウント解除がうまくいかない場合は、umount -f を使用して強制的にファイルシステムをマウント解除する必要があります。あるいは、クライアントをリブートしてもかまいません。
ネットワーク上のクライアントとサーバーが、異なる以前の Solaris 10 リリースでインストールされている場合、NFSv4 アクセス制御リスト (ACL) の関数が正しく動作しないことがあります。対象となる ACL 関数とその関数を使用するコマンド行ユーティリティーは次のとおりです。
acl()
facl()
getfacl
setfacl
これらの関数とユーティリティーについては、それぞれのマニュアルページを参照してください。
たとえば、次の構成を含むネットワークではエラーが検出される可能性があります。
Solaris 10 ベータ版ソフトウェアが稼働しているクライアント
Solaris 10 ソフトウェアが稼働しているサーバー
次の表に、異なる Solaris 10 リリースがインストールされているクライアントとサーバーの構成における ACL 関数の結果を示します。
操作 |
クライアントの S10 OS |
サーバーの S10 OS |
結果 |
---|---|---|---|
get ACL |
S10 ベータ版 |
S10 OS |
正しくない ACL * が作成されます |
get ACL |
S10 OS |
S10 ベータ版 |
正常に機能します |
set ACL |
S10 ベータ版 |
S10 OS |
正常に機能します |
set ACL |
S10 OS |
S10 ベータ版 |
エラー: EOPNOTSUP |
回避方法: NFSv4 ACL の機能を正しく動作させるには、サーバーとクライアントの両方で Solaris 10 OS の完全なインストールを実行します。
現在の Solaris 10 バージョンでは、NFSv4 アクセス制御リスト (ACL) の Solaris 実装は RFC 3530 仕様に準拠しています。しかし、Solaris 10 ベータ版 (Beta 2 または Beta 1) を使用する NFSv4 クライアントではエラーが発生します。これらのクライアントでは、現在の Solaris 10 リリースを使用している NFSv4 サーバー内にファイルを作成することができません。次のエラーメッセージが表示されます。
NFS getacl failed for server_name: error 9 (RPC: Program/version mismatch) |
回避方法: ありません。
ディスクジオメトリによっては、8G バイトより大きなサイズのディスク上に mkfs コマンドを使用してファイルシステムを作成できないことがあります。生成されるシリンダグループのサイズは、1K バイトのフラグメントを使用するには大きすぎます。シリンダグループのサイズが大きいため、メタデータのサイズが大きくなり、1 ブロックに収めることができません。
次のエラーメッセージが表示されます。
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 ファイルシステムを作成しようとすると、失敗することがあります。
スライスのサイズが小さい (約 4M バイト未満)。
ディスクのサイズが 8G バイトを超えている。
このエラーは、メタデータのために大きなサイズのファイルシステムが必要な場合に発生します。次の警告メッセージが表示されます。
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) |
回避方法: ファイルシステムの容量がほとんどいっぱいになっているクライアントシステムでは、作業を行わないでください。
システムでは、1T バイト以上のパーティションにダンプを生成することができません。システム上にこのようなデバイスがある場合は、システムパニックが発生したあとにシステムをブートすると、次のようなエラーが発生することがあります。
システムがダンプを保存しない。
次のメッセージが表示されます。
0% done: 0 pages dumped, compression ratio 0.00, dump failed: error 6 |
回避方法: システムのダンプデバイスのサイズを 1T バイト未満に設定してください。
smosservice コマンドを使用して OS サービスを UFS ファイルシステムに追加すると、利用可能なディスク容量が不足しているというメッセージが表示されます。このエラーは、EFI ラベル付きディスクの UFS ファイルシステムでのみ発生します。
回避方法: 次の回避方法を完了してください。
SMI VTOC ディスクラベルを適用します。
ファイルシステムを作成し直します。
smosservice コマンドを再実行します。