DiskSuite の metarename コマンドは、メタデバイスのリネーム機能に加えて、「階層化」メタデバイスの切り替え機能を提供します。metarename に -x オプションを付けて使用すると、既存の階層化メタデバイスとそのサブデバイスの 1 つの名前を切り替え (交換) ます。この操作には、ミラーとそのサブミラーの 1 つ、またはトランスメタデバイスとそのマスターデバイスを含みます。
メタデバイスを交換するにはコマンド行を使用しなければなりません。この機能は DiskSuite ツールでは現在使用できませんが、コマンド行や DiskSuite ツールを使用して、メタデバイスをリネームすることはできます。
メタデバイス名の切り替えをいつ行うか - metarename -x コマンドを使用すれば、既存のストライプや連結を簡単にミラー化およびミラー化解除したり、既存のメタデバイスのトランスメタデバイスを簡単に作成および除去することができます。
メタデバイス名の切り替えを行うメリット - メタデバイス名の切り替えは、メタデバイス名を管理する上で好都合です。たとえば、ファイルシステムのマウント先をすべて希望の数値範囲内で定めることができます。
切り替えできるメタデバイスの組み合わせ - metarename -x コマンドは、次のものの切り替えに使用できます。
ミラーとサブミラー (連結またはストライプ)
トランスメタデバイスとマスターデバイス。ここで、マスターデバイスは、連結、ストライプ、ミラー、または RAID5 メタデバイスのいずれか。
メタデバイス名の切り替えは、いずれの方向にも行えます。
ミラー化されたマスターデバイスのあるトランスメタデバイス - マスターデバイスがミラーである場合、ミラーのサブミラーの 1 つをトランスメタデバイスと直接切り替えることはできません。ミラーとトランスメタデバイスの名前、あるいはミラーとそのサブミラーの 1 つを切り替えることはできます。切り替えの関係は、常に親子です。本質的には、次に紹介する 2 手順のプロセスを使用すれば、サブミラーとトランスメタデバイスとの交換と同じ結果が得られます。まず、サブミラーとミラーとを切り替え、さらにミラーとトランスメタデバイスとを切り替えます。
トランスメタデバイスのコンポーネントを切り替えるときに「Rename busy」メッセージが表示された - このメッセージは、次の 1 つ以上の状況を意味します。
i. 最初にロギングデバイスを切断しなかった。
ii. トランスメタデバイスを使用してファイルシステムをマウント解除しなかった。
現在使用中のメタデバイスは切り替え (またはリネーム) できません。
これには、マウントされたファイルシステム、swap、またはアプリケーションやデータベースの有効な記憶領域として使用されるメタデバイスが含まれます。したがって、metarename コマンドを使用する前に、リネームされるメタデバイスに対するすべてのアクセスを停止します。たとえば、メタデバイスを使用してマウントされたファイルシステムをマウント解除します。アプリケーションやデータベースには、アクセスを停止するために指定された方法で行うことが必要です。
エラー状態のメタデバイスを切り替えたり、ホットスペア交換を使用してメタデバイスを切り替えることはできません。
切り替えは、直接的な親と子の関係にあるメタデバイス間でのみ行えます。
たとえば、マスターデバイスであるミラー内のストライプとトランスメタデバイスを直接に交換することはできません。
トランスデバイスのメンバーを切り替える場合は、-f (強制) フラグを使用する必要があります。
ロギングデバイスを切り替える (またはリネームする) ことはできません。
この回避策としては、ロギングデバイスを切断してリネームしてからトランスデバイスに再接続するか、またはロギングデバイスを切断して、希望する名前をもつ別のロギングデバイスを接続します。
既存のストライプがある場合、metarename -x コマンドを使用して複合メタデバイスを作成することができます。これには、マスターデバイスとしてメタデバイスをもつトランスデバイス、または連結方式からのミラー作成が含まれます。
この例は、マウントされたファイルシステムをもつ連結 d1 で始まり、d1 という名前の 2 面のミラーにマウントされたファイルシステムで終わります。
# metastat d1 d1: Concat/Stripe Size: 5600 blocks Stripe 0: Device Start Block Dbase c0t0d0s1 0 No # metainit d2 1 1 c1t3d0s1 d2: Concat/Stripe is setup # metainit -f d20 -m d1 d20: Mirror is setup # umount /fs2 # metarename -x d20 d1 d20 and d1 have exchanged identities # metastat d1 d1: Mirror Submirror 0: d20 State: Okay ... d20: Submirror of d1 State: Okay ... # metattach d1 d2 d1: submirror d2 is attached # metastat d1 d1: Mirror Submirror 0: d20 State: Okay Submirror 1: d2 State: Okay ... # mount /fs2 |
metastat コマンドは、連結 d1 が「Okay (正常)」状態であることを確認します。metainit コマンドを使用して 2 番目の連結 (d2) を作成し、さらに d1 からミラー d20 を強制的に (-f) 作成します。metarename -x を使用して d20 と d1 を切り替える前に、ファイルシステムをマウント解除しなければなりません。d1 はトップレベルのデバイス (ミラー) となり、metastat がそのことを確認します。d2 を 2 番目のサブミラーとして接続し、metastat でミラーの状態を確認してから、ファイルシステムを再マウントします。なお、/fs2 用のマウントデバイスは変化していないため、/etc/vfstab ファイルを編集する必要はありません。
この例は、マウントされたファイルシステムをもつミラー d1 から始まり、d1 という名前のトランスデバイスにマウントされたファイルシステムで終わります。
# metastat d1 d1: Mirror Submirror 0: d20 State: Okay Submirror 1: d2 State: Okay ... # umount /fs2 # metainit d21 -t d1 d21: Trans is setup # metarename -f -x d21 d1 d21 and d1 have exchanged identities # metastat d1 d1: Trans State: Detached Size: 5600 blocks Master Device: d21 ... # metattach d1 d0 d1: logging device d0 is attached # mount /fs2 |
metastat コマンドは、ミラー d1 が「Okay (正常)」状態であることを確認します。metainit コマンドを使用して、マスターとして d1 をもつトランスデバイス d21 を作成する前に、ファイルシステムをマウント解除しなければなりません。metarename -f -x コマンドは、d21 と d1 を強制的に切り替えます。d1 は現在トップレベルのトランスメタデバイスであり、そのことは metastat コマンドによって確認されます。ロギングデバイス d0 は、metattach コマンドによって接続されます。それから /fs2 を再マウントします。なお、/fs2 用のマウントデバイスは変化していないため (まだ d1 です)、/etc/vfstab ファイルを編集する必要はありません。
既存のミラーやトランスメタデバイスがある場合、metarename -x コマンドを使用してミラーやトランスメタデバイスを除去し、配下のメタデバイスにデータを保持できます。トランスメタデバイスの場合、マスターデバイスがメタデバイス (ストライプ / 連結、ミラー、または RAID5 メタデバイス) である限り、そのメタデバイス上にデータを保持できます。
このプロセスの一部として metarename -x を使用する場合、ファイルシステムのマウント先には変化がありません。
この例は、マウントされたファイルシステムを含むミラー d1 で始まり、d1 という名前のストライプにマウントされたファイルシステムで終わります。
# metastat d1 d1: Mirror Submirror 0: d20 State: Okay Submirror 1: d2 State: Okay Pass: 1 ... # umount /fs2 # metarename -x d1 d20 d1 and d20 have exchanged identities # metastat d20 d20: Mirror Submirror 0: d1 State: Okay Submirror 1: d2 State: Okay ... # metadetach d20 d1 d20: submirror d1 is detached # metaclear -r d20 d20: Mirror is cleared d2: Concat/Stripe is cleared # mount /fs2 |
metastat コマンドは、ミラー d1 が「Okay (正常)」状態であることを確認します。このファイルシステムは、ミラー d1 とそのサブミラー d20 を交換する前に、マウント解除されます。これによってミラーは d20 となり、そのことは metastat で確認されます。次に、d1 が d20 から切断され、ミラー d20 ともう一方のサブミラー d2 が削除されます。最後に、/fs2 が再マウントされます。なお、/fs2 用のマウントデバイスは変化していないため、/etc/vfstab ファイルを編集する必要はありません。
この例は、マウントされたファイルシステムを含むトランスメタデバイス d1 で始まり、トランスメタデバイスの配下のマスターデバイス (d1 となる) 上にマウントされたファイルシステムで終わります。
# metastat d1 d1: Trans State: Okay Size: 5600 blocks Master Device: d21 Logging Device: d0 d21: Mirror Submirror 0: d20 State: Okay Submirror 1: d2 State: Okay ... d0: Logging device for d1 State: Okay Size: 5350 blocks # umount /fs2 # metadetach d1 d1: logging device d0 is detached # metarename -f -x d1 d21 d1 and d21 have exchanged identities # metastat d21 d21: Trans State: Detached Size: 5600 blocks Master Device: d1 d1: Mirror Submirror 0: d20 State: Okay Submirror 1: d2 State: Okay # metaclear 21 # fsck /dev/md/dsk/d1 ** /dev/md/dsk/d1 ** Last Mounted on /fs2 ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups FILE SYSTEM STATE IN SUPERBLOCK IS WRONG; FIX? y 3 files, 10 used, 2493 free (13 frags, 310 blocks, 0.5% fragmentation) # mount /fs2 |
metastat コマンドは、トランスメタデバイス d1 が「Okay (正常)」状態にあることを確認します。ファイルシステムは、トランスメタデバイスのロギングデバイスを切断する前に、マウント解除されます。トランスメタデバイスとそのミラー化されたマスターデバイスは、-f (強制) フラグを使用して交換されます。metastat を再実行すると、交換が行われたことを確認できます。必要ならば、トランスメタデバイスとロギングデバイス (この場合は、それぞれ d21 と d0) が除去されます。次に、ミラー d1 上で fsck コマンドを実行し、入力要求に対して y と応答します。fsck コマンドが終了すると、ファイルシステムが再マウントされます。なお、/fs2 用のマウントデバイスは変化していないため、/etc/vfstab ファイルを編集する必要はありません。