この章では、トランザクションボリュームに関連する作業について説明します。これらの作業に伴う概念については、第 17 章「トランザクションボリューム (概要)」を参照してください。
将来の Solaris リリースでは、トランザクションボリュームは Solaris オペレーティング環境から削除される予定です。Solaris 8 リリースからサポートされている UFS ロギングは、トランザクションボリュームと同じ機能を備えており、より高い性能を提供します。UFS ロギングでは、システム管理の要件やオーバーヘッドが軽減されます。最適な性能と機能を得る上でこれらの利点は非常に重要です。
次の表に、Solaris ボリュームマネージャのトランザクションボリュームを管理するのに必要な作業を示します。
作業 |
説明 |
参照先 |
---|---|---|
トランザクションボリュームを作成する |
Solaris ボリュームマネージャの GUI か metainit コマンドを使ってトランザクションボリュームを作成します。 | トランザクションボリュームを作成するには |
トランザクションボリュームを UFS ロギングに変換する |
metaclear を使ってトランザクションボリュームを削除してから、mount コマンドを使って、UFS ロギングを使用するファイルシステムをマウントします。 | |
トランザクションボリュームの状態をチェックする |
Solaris ボリュームマネージャの GUI か metastat コマンドを使って、トランザクションボリュームの状態をチェックします。 | トランザクションボリュームの状態をチェックするには |
トランザクションボリュームにログデバイスを接続する |
Solaris ボリュームマネージャの GUI か metattach コマンドを使ってログデバイスを接続します。 | |
トランザクションボリュームからログデバイスを切断する |
Solaris ボリュームマネージャの GUI か metadetach コマンドを使ってログデバイスを切り離します。 | トランザクションボリュームからログデバイスを切断するには |
トランザクションボリュームを拡張する |
Solaris ボリュームマネージャの GUI か metattach コマンドを使ってトランザクションボリュームを拡張します。 | トランザクションボリュームを拡張するには |
トランザクションボリュームを削除する |
Solaris ボリュームマネージャの GUI か、 metadetach または metarename コマンドを使ってトランザクションボリュームを削除します。 | トランザクションボリュームを削除するには |
トランザクションボリュームの削除とマウントポイントの保持 |
Solaris ボリュームマネージャの GUI か metadetach コマンドを使ってトランザクションボリュームを削除します。 | トランザクションボリュームを削除した状態でマウントデバイスを保持するには |
ログデバイスを共有する | Solaris ボリュームマネージャの GUI か metainit コマンドを使ってトランザクションボリュームのログデバイスを共有します。 | ファイルシステム間でログデバイスを共有するには |
ファイルシステムに障害が発生した場合のトランザクションボリュームの回復 | fsck コマンドを使って、障害のあるトランザクションボリュームを回復します。 | パニックした場合のトランザクションボリュームを回復するには |
ハードウェアエラー時のトランザクションボリュームの回復 | fsck コマンドを使って、ハードエラーのあるトランザクションボリュームを回復します。 | ハードウェアエラー状態のトランザクションボリュームを回復するには |
将来の Solaris リリースでは、トランザクションボリュームは Solaris オペレーティング環境から削除される予定です。Solaris 8 リリースからサポートされている UFS ロギングは、トランザクションボリュームと同じ機能を備えており、より高い性能を提供します。UFS ロギングでは、システム管理の要件やオーバーヘッドが軽減されます。最適な性能と機能を得る上でこれらの利点は非常に重要です。
Solaris ボリュームマネージャのトランザクションボリュームは大容量ボリューム (1T バイト超) をサポートしません。どのような場合でも、UFS ロギング (mount_ufs(1M) を参照) はトランザクションボリュームよりも高い性能を示します。UFS ロギングは大容量ボリュームもサポートします。Solaris ボリュームマネージャの大容量ボリュームのサポートについての詳細は、Solaris ボリュームマネージャの大容量ボリュームのサポートについての概要を参照してください。
可能であれば、ロギングを有効にする UFS ファイルシステムのマウントを解除します。
# umount /export |
ファイルシステムのマウントを解除できない場合は、後でトランザクションボリュームをアクティブにする前にシステムを再起動する必要があります。
次のどちらかの方法でトランザクションボリュームを作成します。
Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes)」ノードを開き、「アクション (Action)」、「ボリュームを作成 (Create Volume)」の順に選択し、ウィザードの指示に従ってトランザクションボリュームを作成します。詳細は、オンラインヘルプを参照してください。
次の形式の metainit コマンドを使用します。
metainit trans-volume -t master-device log-device |
trans-volume は、作成するトランザクションボリュームの名前です。
master-device は、ロギングするファイルシステムが格納されているデバイスの名前です。
log-device は、ログを格納するデバイスの名前です。
ログデバイスやマスターデバイスは、スライスでも論理ボリュームでもかまいません。詳細は、metainit(1M) のマニュアルページを参照してください。
たとえば、スライス c0t0d0s6 にあるファイルシステムのログ格納先として c0t0d0s7 を指定し、トランザクションボリューム (d10) を作成するには、次のように指定します。
# metainit d10 -t c0t0d0s6 c0t0d0s7 |
同じログデバイス (この例では c0t0d0s7) をいくつかのマスターデバイスのために使用できます。つまり、ログデバイスの共有が完全にサポートされています。
/etc/vfstab ファイルを編集して、UFS ファイルシステムの現在の情報を、作成したトランザクションボリュームの情報で置き換えます。
たとえば、/export が c0t0d0s6 にあり、新しいトランザクションボリュームが d10 であれば、 /etc/vfstab を次のように編集します。これによって、マウントは、raw ディスクスライスではなく、トランザクションボリュームをポイントします。
#/dev/dsk/c0t0d0s6 /dev/rdsk/c0t0d0s6 /export ufs 2 yes - /dev/md/dsk/d10 /dev/md/rdsk/d10 /export ufs 2 yes - |
可能であれば、ファイルシステムをマウントし直します。
/usrなど、マウント解除できないファイルシステムのトランザクションボリュームを作成する場合は、ここでシステムを再起動して、トランザクションボリュームをマウントし直し、ロギングを開始します。
# umount /home1 # metainit d63 -t c0t2d0s2 c2t2d0s1 d63: Trans is setup (ファイルシステムがトランザクションボリュームを参照するように /etc/vfstab ファイルを編集する) # mount /home1 |
スライス /dev/dsk/c0t2d0s2 には、/home1 にマウントされているファイルシステムが格納されています。 ログデバイスとして使用するスライスは /dev/dsk/c2t2d0s1 です。 最初にファイルシステムのマウントを解除します。metainit コマンドに -t オプションを指定して、トランザクションボリューム d63 を作成します。
次に、このファイルシステムのエントリがトランザクションボリュームを参照するように /etc/vfstab ファイルを編集します。たとえば、次の行を見てください。
/dev/dsk/c0t2d0s2 /dev/rdsk/c0t2d0s2 /home1 ufs 2 yes - |
上記の行を次のように変更します。
/dev/md/dsk/d63 /dev/md/rdsk/d63 /home1 ufs 2 yes - |
ファイルシステムのロギングは、ファイルシステムをマウントし直したときに有効になります。
以降の再起動では、 fsck コマンドは、このファイルシステムをチェックする代わりに、トランザクションボリュームに対するログメッセージを表示します。
# reboot ... /dev/md/rdsk/d63: is logging |
# metainit -f d20 -t c0t3d0s6 c1t2d0s1 d20: Trans is setup (ファイルシステムがトランザクションボリュームを参照するように /etc/vfstab ファイルを編集する) # reboot |
スライス /dev/dsk/c0t3d0s6 にはファイルシステム /usr が格納されています。ログデバイスとして使用されるスライスは /dev/dsk/c1t2d0s1 です。/usr はマウント解除できないため、metainit コマンドに -f オプションを指定して、トランザクションボリューム d20 を強制的に作成します。次に、/etc/vfstab ファイルを編集して、このファイルシステムをマウントする行がトランザクションボリュームを参照するようにします。たとえば、次の行を見てください。
/dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6 /usr ufs 1 no - |
上記の行を次のように変更します。
/dev/md/dsk/d20 /dev/md/rdsk/d20 /usr ufs 1 no - |
ファイルシステムのロギングは、システムの再起動時に有効になります。
# umount /home1 # metainit d64 -t d30 d12 d64: Trans is setup (ファイルシステムがトランザクションボリュームを参照するように /etc/vfstab ファイルを編集する) # mount /home1 |
RAID 1 ボリューム d30 には、/home1 にマウントされているファイルシステムが格納されています。 ログデバイスが格納されるミラーは d12 です。 最初にファイルシステムのマウントを解除します。 metainit コマンドに -t オプションを指定して、トランザクションボリューム d64 を作成します。
次に、/etc/vfstab ファイルを編集して、このファイルシステムをマウントする行がトランザクションボリュームを参照するようにします。たとえば、次の行を見てください。
/dev/md/dsk/d30 /dev/md/rdsk/d30 /home1 ufs 2 yes - |
上記の行を次のように変更します。
/dev/md/dsk/d64 /dev/md/rdsk/d64 /home1 ufs 2 yes - |
ファイルシステムのロギングは、ファイルシステムをマウントし直したときに有効になります。
これ以降のファイルシステムの再マウントやシステムの再起動では、 fsck はこのファイルシステムをチェックする代わりに、トランザクションボリュームに対するログメッセージを表示します。
# reboot ... /dev/md/rdsk/d64: is logging |
/etc/vfstab ファイルの編集を避けたい場合は、metarename(1M) コマンドを使って、元の論理ボリュームの名前と新しいトランザクションボリュームを入れ換えることができます。詳細は、ボリューム名の変更を参照してください。
既存のトランザクションボリュームを UFS ロギングに変換すれば、 性能と保守性を向上できます。また、トランザクションボリュームは将来サポートされなくなるため、いつかは UFS ロギングに移行する必要があります。次の各項ではこの変換手順について説明します。
UFS ロギングに移行するためには、ログ用に 1M バイト以上の空き領域が必要です (デフォルトのシステム設定を使用する場合)。これはログが、ログボリュームに置かれるためです。十分な空き領域がない場合は、ファイルを削除するか、ファイルシステムを拡張してから変換手順を実行する必要があります。
metastat コマンドを使って、トランザクションボリュームと、対応するログデバイスを特定し、出力中で Trans と Logging device を探します。
# metastat d2: Trans State: Okay Size: 2869209 blocks Master Device: d0 Logging Device: d20 d20: Logging device for d2 State: Okay Size: 28470 blocks d20: Concat/Stripe Size: 28728 blocks Stripe 0: (interlace: 32 blocks) Device Start Block Dbase State Reloc Hot Spare d10 0 No Okay No d11 0 No Okay No d12 |
後で必要になるので、これらの名前を書き留めておきます。
df コマンドを使って、Trans device がマウントされているかチェックします。出力中でトランザクションボリュームの名前を探します。トランザクションボリュームがマウントされていない場合は、手順 7 に進みます。
# df | grep d2 /mnt/transvolume (/dev/md/dsk/d2 ): 2782756 blocks 339196 files |
df -k コマンドを使って、トランザクションボリュームに十分な空き容量があることを確認します。
# df -k /mnt/transvolume file system kbytes used avail capacity Mounted on /dev/md/dsk/d2 1391387 91965 1243767 7% /mnt/transvolume |
アプリケーションを停止するか、システムをシングルユーザーモードに移行して、ファイルシステム上のすべてのアクティビティを停止します。
# init s [root@lexicon:lexicon-setup]$ init s INIT: New run level: S The system is coming down for administration. Please wait. Dec 11 08:14:43 lexicon syslogd: going down on signal 15 Killing user processes: done. INIT: SINGLE USER MODE Type control-d to proceed with normal startup, (or give root password for system maintenance): single-user privilege assigned to /dev/console. Entering System Maintenance Mode Dec 11 08:15:52 su: 'su root' succeeded for root on /dev/console Sun Microsystems Inc. SunOS 5.9 s81_51 May 2002 # |
lockfs -f を使って、ファイルシステムのログを消去します。
# /usr/sbin/lockfs -f /mnt/transvolume |
ファイルシステムをマウント解除します。
# umount /mnt/transvolume |
ファイルシステムを含むトランザクションボリュームを削除します。
この操作を実行しても、ファイルシステム上のデータに影響はありません。
# metaclear d2 d2: Trans is cleared |
この手順の始めで特定した Logging device はもはや使用されないので、他の目的に使用できます。しかし、この手順の始めに特定したマスターデバイスにはファイルシステムが格納されているため、マスターデバイスはその後マウントされ使用されます。
/etc/vfstab ファイルを編集して、ファイルシステムのマウント情報を変更します。
raw およびブロックマウントポイントを変更し、ファイルシステムのオプションに logging を追加する必要があります。トランザクションボリュームが使用されている場合には、/etc/vfstab ファイルのエントリは次のようになっています。
/dev/md/dsk/d2 /dev/md/rdsk/d2 /mnt/transvolume ufs 1 no - |
マウントポイントをトランザクションボリューム d2 からそのデバイス d0 に変更し、ロギングオプションを追加したした後の /etc/vfstab のエントリは次のようになります。
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/md/dsk/d0 /dev/md/rdsk/d0 /mnt/transvolume ufs 1 no logging |
ファイルシステムをマウントし直します。
# mount /mnt/transvolume |
mount コマンドから次のような「 /dev/md/dsk/d0 が正常でありません。読み取り/書き込みとマウントしようとしました。fsck を実行し、再度行なってください。 」が返されることがあります。この場合には、raw デバイス (fsck /dev/md/rdsk/d0 ) に対して fsck コマンドを実行し、 y を入力して、スーパーブロック内のファイルシステム状態を修正する必要があります。その後で mount コマンドを再び実行します。
マウントしたファイルシステムのロギングが有効になっているか確認します。そのためには、/etc/mnttab ファイルを調べ、ファイルシステムのオプションとしてロギングが指定されていることを確認します。
# grep mnt /etc/mnttab mnttab /etc/mnttab mntfs dev=43c0000 1007575477 /dev/md/dsk/d0 /mnt/transvolume ufs rw,intr,largefiles, logging,xattr,onerror=panic,suid,dev=1540000 1008085006 |
この手順の中でシステムをシングルユーザーモードに移行している場合は、ここでマルチユーザーモードに戻ることができます。
トランザクションボリュームを UFS ロギングに変換する例を以下に示します。
# metastat d50: Trans State: Okay Size: 204687 blocks Master Device: c1t14d0s0 Logging Device: c1t12d0s0 Master Device Start Block Dbase Reloc c1t14d0s0 0 No Yes c1t12d0s0: Logging device for d50 State: Okay Size: 30269 blocks Logging Device Start Block Dbase Reloc c1t12d0s0 5641 No Yes この後のステップで必要になるので、マスターデバイスとログデバイスの名前を書き留めておく。 トランザクションボリュームに、マウントされたファイルシステムが格納されているか判別する。 # df | grep d50 /home1 (/dev/md/dsk/d50 ): 161710 blocks 53701 files 十分な空き領域 (1M バイト以上) があることを確認する。 # df -k /home1 filesystem kbytes used avail capacity Mounted on /dev/md/dsk/d50 95510 14655 71304 18% /home1 シングルユーザーモードにする。 # /usr/sbin/lockfs -f /home1 # /usr/sbin/umount /home1 # /usr/sbin/metaclear d50 d50: Trans is cleared /etc/vfstab ファイルを編集して、関連するボリュームをマウントし、ロギングオプションを追加する。 # cat /etc/vfstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options /dev/dsk/c1t14d0s0 /dev/rdsk/c1t14d0s0 /home1 ufs 2 yes logging # mount /home1 # /usr/bin/grep /home1 /etc/mnttab /dev/dsk/c1t14d0s0 /home1 ufs rw,intr,largefiles,logging,xattr,onerror=panic,suid,dev=740380 1008019906 マルチユーザーモードに戻る。 |
次のどちらかの方法でトランザクションボリュームの状態をチェックします。
Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes)」ノードを開き、ボリュームの状態を表示します。トランザクションボリュームを右クリックし、「プロパティ (Properties)」を選択して、さらに詳しい状態情報を表示します。詳細は、オンラインヘルプを参照してください。
metastat コマンドを使用します。
詳細は、metastat(1M) のマニュアルページを参照してください。
metastat コマンドを使って表示したトランザクションボリュームの出力例を以下に示します。
# metastat d20: Trans State: Okay Size: 102816 blocks Master Device: c0t3d0s4 Logging Device: c0t2d0s3 Master Device Start Block Dbase c0t3d0s4 0 No c0t2d0s3: Logging device for d0 State: Okay Size: 5350 blocks Logging Device Start Block Dbase c0t2d0s3 250 No |
metastat コマンドを使用して、マスターデバイスとログデバイスの情報を表示します。デバイスごとに次の情報が表示されます。
「デバイス (Device)」はスライスまたはボリュームのデバイス名です。
「開始ブロック (Start Block)」はデバイスの開始ブロックです。
「Dbase」は、デバイスに状態データベースの複製が含まれているかどうかを示します。
次の表に、トランザクションボリュームの状態と実行可能な処置を示します。
表 18–1 トランザクションボリュームの状態
状態 |
説明 |
処置 |
---|---|---|
正常 (Okay) |
デバイスは正常に機能している。マウントされているファイルシステムに対してはロギングが実行されているため、起動時にファイルシステムのチェックは行われません。 |
必要ない |
接続中 (Attaching) |
ログデバイスは、トランザクションボリュームが閉じられるかマウント解除されたときに、トランザクションボリュームに接続されます。接続されると、デバイスは「正常 (Okay)」状態に移行します。 |
必要ない |
切断済み (Detached) |
トランザクションボリュームにはログデバイスがない。UFS ロギングの利点は無効になっています。 |
起動時に fsck コマンドがデバイスを自動的にチェックする。詳細は、fsck(1M) のマニュアルページを参照。 |
切断中 (Detaching) |
ログデバイスは、トランザクションボリュームが閉じられるかマウント解除されたときに、トランザクションボリュームから切断されます。切断されると、デバイスは「切断済み (Detached)」状態になります。 |
必要ない |
ハードウェアエラー (Hard Error) |
デバイスの使用中にデバイスエラーまたはパニックが発生した。デバイスが閉じられるかマウント解除されるまで、すべての読み取りと書き込みに対して入出力エラーが返されます。デバイスは、最初に開かれたときに「エラー (Error)」状態に移行します。 |
トランザクションボリュームを修復します。詳細は、パニックした場合のトランザクションボリュームを回復するにはか ハードウェアエラー状態のトランザクションボリュームを回復するにはを参照。 |
エラー (Error) |
デバイスは読み書き可能。ファイルシステムを読み取り専用でマウントできるが、実際には読み取りや書き込みを行うたびに入出力エラーが返されます。読み取りや書き込みはデバイスエラーを受け取ります。この後でデバイスエラーが起っても、デバイスは「ハードウェアエラー (Hard Error)」 状態には戻りません。 |
トランザクションボリュームを修復します。詳細は、パニックした場合のトランザクションボリュームを回復するにはか ハードウェアエラー状態のトランザクションボリュームを回復するにはを参照。fsck または newfs コマンドが正常に終了すると、デバイスは「正常 (Okay)」状態に戻る。デバイスが「ハードウェアエラー (Hard Error)」か「エラー (Error)」状態にある場合は、システムの起動時に fsck コマンドがファイルシステムを自動的にチェックし、修復する。newfs コマンドを実行すると、デバイスのデータは破棄される。 |
ロギングを有効にする UFS ファイルシステムのマウントを解除します。
次のどちらかの方法でトランザクションボリュームにログデバイスを接続します。
Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。ボリュームを右クリックし、「プロパティ (Properties)」を選択します。 詳細は、オンラインヘルプを参照してください。
次の形式の metattach コマンドを実行します。
metattach master-volume logging-volume |
master-volume は、ロギングするファイルシステムが格納されているトランザクションボリュームの名前です。
logging-volume は、ログが格納されているボリュームまたはスライスの名前です。
詳細は、metattach(1M) のマニュアルページを参照してください。
# metattach d1 d23 |
ファイルシステムを再びマウントします。
この例では、ログデバイス、つまりスライス (c1t1d0s1) を、/fs2 にマウントされているトランザクションボリューム d1 に接続します。
# umount /fs2 # metattach d1 c1t1d0s1 d1: log device d0c1t1d0s1 is attached # mount /fs2 |
ロギングを無効にしたり、ログデバイスを変更したい UFS ファイルシステムのマウントを解除します。
次のどちらかの方法でトランザクションボリュームからログデバイスを切り離します。
Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。ボリュームを右クリックし、「プロパティ (Properties)」を選択します。 詳細は、オンラインヘルプを参照してください。
次の形式の metadetach コマンドを使用します。
metadetach master-volume |
master-volume は、ロギングするファイルシステムが格納されているトランザクションボリュームの名前です。
詳細は、metadetach(1M) のマニュアルページを参照してください。
ファイルシステムを再びマウントします。
この例では、ログデバイス、つまりスライス (c1t1d0s1) を、/fs2 にマウントされているトランザクションボリューム d1 から切り離します。
# umount /fs2 # metadetach d1 d1: log device c1t1d0s1 is detached # mount /fs2 |
トランザクションボリューム内のマスターデバイスを拡張するためには、マスターデバイスがボリューム (RAID 0、RAID 1、または RAID 5) でなければなりません。
マスターデバイスがボリューム (基本スライスではなく) の場合は、次のどちらかの方法でマスターデバイスに他のスライスを追加します。
Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。ボリュームを右クリックし、「プロパティ (Properties)」を選択してから、「コンポーネント (Components)」パネルを選択します。詳細は、オンラインヘルプを参照してください。
次の形式の metattach コマンドを実行します。
metattach master-volume component |
master-volume は、ロギングするファイルシステムが格納されているトランザクションボリュームの名前です。
component は、接続するボリュームまたはスライスの名前です。
詳細は、metattach(1M) のマニュアルページを参照してください。
マスターデバイスがミラーの場合は、個々のサブミラーにスライスを追加する必要があります。
マスターデバイスがスライスの場合は、そのスライスを直接拡張することはできません。その場合は、次のようにします。
現在のトランザクションボリュームを削除します。
マスターデバイスのスライスをボリュームに含めます。
トランザクションボリュームを再び作成します。
この処理が終わったら、上記の手順に従ってマスターデバイスを拡張します。
# metastat d10 d10: Trans State: Okay Size: 102816 blocks Master Device: d0 Logging Device: d1 d0: Mirror Submirror 0: d11 State: Okay ... Submirror 1: d12 State: Okay ... # metattach d11 c0t2d0s5 d11: component is attached # metattach d12 c0t3d0s5 d12: component is attached |
この例では、トランザクションボリューム d10 を拡張します。このマスターデバイスは 2 面の RAID 1 ボリューム d0 で、サブミラー d11 と d12 を含んでいます。そのため、サブミラーごとに metattach コマンドを実行します。スライスが追加されたことを示すメッセージが表示されます。
UFS の場合は、マスターデバイスではなくトランザクションボリュームに対して growfs コマンドを実行します。詳細は、ファイルシステムを拡張するにはを参照してください。
データベースなど、raw ボリュームを使用するアプリケーションは、独自の方法で領域を拡張できなければなりません。
トランザクションボリュームを削除し、ロギングを無効にしたい UFS ファイルシステムのマウントを解除します。
# umount /filesystem |
次のどちらかの方法でトランザクションボリュームからログデバイスを切り離します。
Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。ボリュームを右クリックし、「プロパティ (Properties)」を選択します。 詳細は、オンラインヘルプを参照してください。
次の形式の metadetach コマンドを使用します。
metadetach master-volume |
master-volume は、ロギングするファイルシステムが格納されているトランザクションボリュームの名前です。
詳細は、metadetach(1M) のマニュアルページを参照してください。
次のどちらかの方法でトランザクションボリュームを削除 (クリア) します。
Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。ボリュームを右クリックし、「削除 (Delete)」を選択します。 詳細は、オンラインヘルプを参照してください。
次の形式の metaclear コマンドを実行します。
metaclear master-volume |
詳細は、metaclear(1M) のマニュアルページを参照してください。
必要であれば、/etc/vfstab ファイルを編集して、上記の手順で削除したトランザクションボリュームではなく、トランザクションボリュームを構成するボリュームをマウントします。
ファイルシステムを再びマウントします。
この例では、 /fs2 にマウントされているトランザクションボリューム d1 を削除します。 この処理が終わると、トランザクションボリュームを構成するスライス c1t1d0s1 が直接マウントされます。
# umount /fs2 # metadetach d1 d1: log device d2 is detached # metaclear d1 d1: Trans is cleared (/etc/vfstab を編集して、/fs2 に c1t1d0s1 (d1 ではなく)をマウントする 。) # mount /fs2 |
この手順は、トランザクションボリュームとそのボリュームを構成するデバイスが共に Solaris ボリュームマネージャの論理ボリュームである場合にのみ有効です。
トランザクションボリュームを削除し、ロギングを無効にしたい UFS ファイルシステムのマウントを解除します。
次のどちらかの方法でトランザクションボリュームからログデバイスを切断します。
Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。ボリュームを右クリックし、「プロパティ (Properties)」を選択します。 詳細は、オンラインヘルプを参照してください。
次の形式の metadetach コマンドを使用します。
metadetach master-volume |
master-volume は、ロギングするファイルシステムが格納されているトランザクションボリュームの名前です。
詳細は、metadetach(1M) のマニュアルページを参照してください。
トランザクションボリュームの名前とマスターデバイスの名前を交換します。
次のどちらかの方法でトランザクションボリュームを削除 (クリア) します。
Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。ボリュームを右クリックし、「削除 (Delete)」を選択します。 詳細は、オンラインヘルプを参照してください。
次の形式の metaclear コマンドを実行します。
metaclear master-volume |
詳細は、metaclear(1M) のマニュアルページを参照してください。
マスターデバイスに対して fsck コマンドを実行します。
スーパーブロック内のファイルシステムの状態を修正するかどうかの問い合わせに対して y を入力します。
ファイルシステムを再びマウントします。
この例では、まず、マウントされたファイルシステムが格納されているトランザクションボリューム 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: log 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 (必要な場合)を削除します。fsck コマンドをミラー d1 に対して実行し、プロンプトの問い合わせに対して y を入力します。 fsck コマンドの実行が終わったら、ファイルシステムを再びマウントします。/fs2 のマウントデバイスは変更されていないため、/etc/vfstab ファイルを編集する必要はありません。
この手順では、別のファイルシステム用のログを含むトランザクションボリュームがすでに設定されているものとします。
可能であれば、ロギングを有効にしたいファイルシステムのマウントを解除します。
ログデバイスがすでに存在している場合は、次のどちらかの方法でトランザクションボリュームから切断します。
Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。ボリュームを右クリックし、「プロパティ (Properties)」を選択します。 詳細は、オンラインヘルプを参照してください。
次の形式の metadetach コマンドを使用します。
metadetach master-volume |
詳細は、metadetach(1M) のマニュアルページを参照してください。
次のどちらかの方法でトランザクションボリュームにログデバイスを接続します。
Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。ボリュームを右クリックし、「プロパティ (Properties)」を選択します。 詳細は、オンラインヘルプを参照してください。
次の形式の metattach コマンドを実行します。
metattach master-volume logging-volume |
詳細は、metattach(1M) のマニュアルページを参照してください。
/etc/vfstab ファイル内の、ファイルシステム用のエントリを変更 (または追加) して、そのエントリがトランザクションボリュームを参照するようにします。
ファイルシステムをマウントし直します。 ファイルシステムのマウントを解除できなかった場合は、システムを再起動して変更を有効にします。
# umount /xyzfs # metainit d64 -t c0t2d0s4 d10 d64: Trans is setup (/etc/vfstab ファイルを編集して、/xyzfs のエントリがトランザクションボリューム d64 を参照するようにする) # mount /xyzfs # metastat ... d10: Logging device for d63 d64 ... |
この例では、他のトランザクションボリュームのログとして設定されているログデバイス (d10) を新しいトランザクションボリューム (d64) と共有します。 マスターデバイスとして設定するファイルシステムは /xyzfs で、これにはスライス/dev/dsk/c0t2d0s4 を使用します。metainit -t コマンドを使用して、この構成がトランザクションボリュームであることを指定します。次に /etc/vfstab ファイル内の、ファイルシステム用のエントリを変更 (エントリがなければ作成) して、そのエントリがトランザクションボリュームを参照するようにします。たとえば、次の行を見てください。
/dev/dsk/c0t2d0s4 /dev/rdsk/c0t2d0s4 /xyzfs ufs 2 yes - |
上記の行を次のように変更します。
/dev/md/dsk/d64 /dev/md/rdsk/d64 /xyzfs ufs 2 yes - |
metastat コマンドを実行して、ログが共有されていることを確認します。ファイルシステムのロギングは、システムの再起動時に有効になります。
これ以降の再起動では、 fsck コマンドは、このファイルシステムをチェックする代わりに、2 つのファイルシステムについて次のようなメッセージを表示します。
/dev/md/rdsk/d63: is logging. /dev/md/rdsk/d64: is logging. |
fsck コマンドでファイルシステムを修復できない場合は、そのログデバイスを共有するファイルシステムが格納されているすべてのトランザクションボリュームに対して fsck コマンドを実行する必要があります。
# fsck /dev/md/rdsk/trans |
fsck コマンドは、関連するすべてのトランザクションボリュームをチェックし、修復してから、障害のあるトランザクションボリュームを「正常 (Okay)」状態にします。
この手順は、トランザクションボリュームを「正常 (Okay)」状態に戻すときに使用します。
トランザクションボリュームの状態をチェックする手順については、トランザクションボリュームの状態をチェックするにはを参照してください。
ロギングデータの処理中にマスターデバイスまたはログデバイスにエラーがあると、デバイスは「正常 (Okay)」状態から「ハードウェアエラー (Hard Error)」状態に移行します。デバイスが「ハードウェアエラー (Hard Error)」状態か「エラー (Error)」状態になると、デバイスエラーまたは異常が発生します。どちらの場合でも、回復方法は同じです。
ログデバイスが共有されている場合に、トランザクションボリューム内のいずれかのスライスに異常が発生すると、そのトランザクションボリュームに関連しているすべてのスライスまたはボリュームが異常状態に切り換わります。
トランザクションボリュームの背景情報を読みます。
lockfs コマンドを実行して、ロックされているファイルシステムを特定します。
# lockfs |
該当するファイルシステムはロックタイプが hard と表示されます。 同じログデバイスを共有するファイルシステムはすべてハードロックされます。
該当するファイルシステムのマウントを解除します。
ロックされているファイルシステムがエラー発生時に使用されていても、そのファイルシステムのマウントを解除できます。関連するプロセスが、ハードロックまたはマウント解除されているファイルシステム上の開かれたファイルまたはディレクトリにアクセスすると、エラーが返されます。
(省略可能) アクセス可能なデータのバックアップをとります。
デバイスエラーを修復する前に、通常は、できるだけ多くのデータを回復するようにします。tar や cpio コマンドを使用する場合のように、バックアップ手順を実行するためにはファイルシステムがマウントされていなければならない場合は、ファイルシステムを読み取り専用でマウントできます。dump や volcopy コマンドを使用する場合のように、ファイルシステムがマウントされている必要がない場合は、トランザクションボリュームに直接アクセスできます。
デバイスエラーを修復します。
この時点で、読み書き操作のためにトランザクションボリュームを開くかマウントすると、ログデバイス上にあるアクセス可能なすべてのデータが適切なマスターデバイスに転送されます。読み取りまたは書き込みできないデータは破棄されます。しかし、トランザクションボリュームを読み取り専用で開くかマウントすると、ログはスキャンされるだけでマスターデバイスに転送されません。したがって、エラーは修復されません。つまり、マスターデバイスとログデバイスのデータは、読み取りおよび書き込み操作のために最初に開かれるかマウントされるまで、変更されません。
fsck コマンドを実行してファイルシステムを修復します。あるいは、データを復元する場合は、newfs コマンドを実行します。
同じログデバイスを共有するすべてのトランザクションボリュームに対して fsck コマンドを実行します。fsck コマンドですべてのトランザクションボリュームが修復されると、各ボリュームは「正常 (Okay)」状態に戻ります。
newfs コマンドを使用しても、ファイルシステムは「正常 (Okay)」状態に戻ります。しかし、この場合には、ファイルシステムのすべてのデータが破棄されます。newfs コマンドは、通常、バックアップからファイルシステムを復元したいときに使用します。
同じログデバイスを共有するすべてのトランザクションボリュームに対して fsck または newfs コマンドを実行しないと、デバイスは「正常 (Okay)」状態に戻されません。
metastat コマンドを実行して、関連するデバイスが「正常 (Okay)」状態になっていることを確認します。
# metastat d5 d5: Trans State: Hard Error Size: 10080 blocks Master Device: d4 Logging Device: c0t0d0s6 d4: Mirror State: Okay ... c0t0d0s6: Logging device for d5 State: Hard Error Size: 5350 blocks ... # fsck /dev/md/rdsk/d5 ** /dev/md/rdsk/d5 ** Last Mounted on /fs1 ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups WARNING: md: log device: /dev/dsk/c0t0d0s6 changed state to Okay 4 files, 11 used, 4452 free (20 frags, 554 blocks, 0.4% fragmentation) # metastat d5 d5: Trans State: Okay Size: 10080 blocks Master Device: d4 Logging Device: c0t0d0s6 d4: Mirror State: Okay ... c0t0d0s6: Logging device for d5 State: Okay ... |
この例では、「ハードウェアエラー (Hard Error)」状態のログデバイスを含むトランザクションボリューム d5 を修復します。このトランザクションボリュームに対して fsck コマンドを実行すると、トランザクションボリュームは「正常 (Okay)」状態に戻されます。metastat コマンドを実行して、「正常 (Okay)」状態になっていることを確認します。