名前 | 機能説明 | IOCTLS | 診断 | ファイル | 関連項目 | 注意事項
md は、ユーザーが構成することができる疑似デバイスドライバであり、ディスクの連結、ストライプ、ミラー、RAID5 メタデバイス、トランスメタデバイス、ホットスペアの各ユーティリティを提供します。トランスデバイスはすでにサポートが中止され、UFS ロギングに置き換えられました。mount_ufs(1M) を参照してください。
ブロックデバイスは、システムの通常のバッファー機構によってディスクにアクセスし、物理ディスクレコードとは無関係に、読み取りや書き込みが行われます。また、ユーザによる読み取りや書き込み処理を直接反映するための raw デバイスもあります。通常、1 回の読み取りまたは書き込みごとに 1 回の入出力処理が行われるので、大量のデータを転送する場合は、raw デバイスによる入出力の方が効率的です。ブロックデバイスは /dev/md/dsk にあり、rawデバイスは /dev/md/rdsk にあります。メタデバイスにはディスク全体の内容が含まれているので、スライス (パーティション) は存在しません。
メタデバイスに対する入出力要求 (lseek(2) など) のオフセットは、512 バイト (DEV_BSIZE) の倍数にしてください。これ以外の数値にすると、EINVAL エラーとなります。入出力を行うデータ が 512 バイトの倍数でない場合は、ドライバによってデータ長が 512 バイトの倍数に切り上げられます。
md 疑似デバイスドライバは、Solaris 2.4 以降のオペレーティ ングシステムで、すべてのディスクデバイスをサポートします。
ここでは、メタディスクドライバでサポートされる ioctl の一覧を示します。
/dev/md/rdsk/d0 などの raw メタデバイスに対して有効な ioctlは、以下のとおりです。詳細は、dkio(7i) を参照してください。
ディスクのジオメトリを把握するために使用されます。メタディスクドライバは、メタデバイスの最初のコンポーネントから dkg_nhead、dkg_nsect、dkg_rpm、dkg_write_reinstruct、dkg_read_reinstruct を調べます(metainit 実行時)。dkg_ncyl は、メタデバイスのサイズ (metastat コマンドによって確認できる) を (dkg_nhead * dkg_nsect) で割ることによって算出されます。合計サイズは必ず (dkg_nhead * dkg_nsect) の倍数になります。メタデバイスの最初のコンポーネントがシリンダ番号 0 から始まらない場合は、dkg_ncyl が 1 シリンダだけ増加します。これは、DKIOCGVTOC がメタデバイスをシリンダ 1 か ら始まるとして通知するからです。この場合、シリンダ 0 が使用されていないように見えるという副作用がありますが、算術演算は正しく行われます。 メタデバイスが設定されていないと、ENXIO エラーとなります。
管理デバイスまたはメタデバイスに対して発行されると、dki_unit にメタデバイスのユニット番号を設定し、dki_ctype に DKC_MD の値を設定し、dki_partition を 0 に設定します (スライスがないため)。
現在の vtoc を返します。vtoc が書き込まれていない場合は、デフォルトの vtoc を返します。v_nparts は、常に 1です。メタデバイスの最初のコンポーネントがシリンダ 0 から始まる場合は、v_part[0].p_start が 0 となります。最初のコンポーネントがシリンダ 0 以外から始まっている場合は、p_start フィールドがシリンダ 1 の開始セクタとなります。v_part[0].p_size は、metastat によって通知される合計サイズと同じです。
メタデバイスの状態データベースに vtoc を格納します。その結果、vtoc がリブート後も保存されます。
md: dnum: Hotspared device dev with dev
最初に表示されている名前のデバイスが、2 番目のデバイス (ホットスペア) に交換されました。
md: dnum: Hotspared device dev(num,num) with dev(num,num)
最初に表示されている番号のデバイスが、2 番目のデバイス (ホットスペア) に交換されました。
md: Could not load misc /dev
指定した misc モジュールをロードできません。このモジュールが見つからないか、このモジュールに何かが上書きされました。
md: dnum: no mem for property dev
prop_op エントリポイントにメモリを割り当てることができません。
md: db: Parsing error on 'dev' |
mddb.bootlist <number> に対して実行した /kernel/drv/md.conf の設定コマンドの形式が正しくありません。metadb -p を実行すると、/kernel/drv/md.conf ファイルに正しい設定コマンドが挿入されます。
md: dnum: dev(num,num) needs maintenance md: dnum: dev needs maintenance
ミラー内のデバイス上で入出力エラーまたはオープンエラーが発生し、ミラー内のコンポーネントが保守 (Maintenance) 状態になりました。
md: dnum: dev(num,num) last erred md: dnum: dev last erred
ミラー内のデバイス上で入出力エラーまたはオープンエラーが発生し、データがミラー内のほかの場所に複製されないので、ミラー内のコンポーネントが最後にエラー (Last Erred) 状態になっています。
md: State database is stale
使用可能な複製が不足しているため、状態データベースがデータベース内のレコードを更新できません。このような状態では、メタデバイスドライバに対するアクセスはすべて失敗します。この問題を解決するには、複製を追加したり、アクセスできない複製を削除してください。
md: dnum: read error on devmd: dnum: write error on dev
指定したデバイス名の指定されたサブミラーで、読み取りまたは書き込みのエラーが発生した
md: dnum: read error on dev(num,num)md: dnum: write error on dev(num,num)
指定されたデバイス番号の指定されたサブミラーで、読み取りまたは書き込みのエラーが発生した
md: State database commit failed md: State database delete failed
状態データベースの複製が含まれているコンポーネントで、デバイスエラーが発生したこれらのエラーメッセージは、過半数の複製にエラーが発生したデバイスがある場合 (たとえば、状態データベースの複製が含まれているコンポーネントが 3 つあり、そのうちの 2 つにエラーが発生した場合など) にだけ発行されます。この場合、状態データベースの確定と削除が定期的に再試行されます。複製を追加すると、確定または削除が終了し、システムが正常に戻ります。複製を追加しないままにしておくとタイムアウトとなり、システム障害が発生します。
md: dnum: Cannot load dev driver |
指定された下位のドライバモジュール (たとえば、sd、id、xy、または他社製のドライバ) をロードできません。このドライバモジュールは、削除されている可能性があります。
md: Open error of hotspare devmd: Open error of hotspare dev(num,num)
指定されたホットスペアをオープンできないか、下位のドライバをロードできません。
md: dnum: Unknown close typemd: dnum: Unknown open type
未知のオープン型 (OTYP) でメタデバイスがオープンまたはクローズされています。
md: State database problem
失敗したメタデバイス状態データベースの確定または削除が、100 回 (デフォルト値) 再試行されました。
ブロックデバイス (n はデバイス番号)
raw デバイス (n はデバイス番号)
ブロックデバイス (setname はディスクセット名、n はデバイス番号)
raw デバイス (setname はディスクセット名、n はデバイス番号)
管理デバイス
ドライバモジュール
ドライバ構成ファイル
ストライプドライバ misc モジュール
ミラードライバ misc モジュール
ホットスペアドライバ misc モジュール
UFS ロギング用メタトランスドライバ
RAID5 ドライバ misc モジュール
mdmonitord(1M), metaclear(1M), metadb(1M), metadetach(1M), metahs(1M), metainit(1M), metaoffline(1M), metaonline(1M), metaparam(1M), metarecover(1M), metarename(1M), metareplace(1M), metaroot(1M), metassist(1M), metaset(1M), metastat(1M), metasync(1M), metattach(1M), md.cf(4), md.tab(4), attributes(5)
トランスメタデバイスは UFS ロギングに置き換えられました。既存のトランスデバイスはロギングを行わず、その基となるデバイスにデータを直接渡します。UFS ロギングの詳細については、mount_ufs(1M) を参照してください。