Solaris ボリュームマネージャの管理

第19章 トランザクションボリューム (作業)

この章では、トランザクションボリュームに関連する作業について説明します。 これらの作業に関連する概念については、第18章「トランザクションボリューム (概要)」を参照してください。


将来の Solaris リリースでは、トランザクションボリュームは Solaris オペレーティング環境から削除される予定です。 Solaris 8 リリースからサポートされている UFS ロギングは、トランザクションボリュームと同じ機能を備えており、より高い性能を提供します。UFS ロギングでは、システム管理の要件やオーバーヘッドが軽減されます。 最適な性能と機能を得る上でこれらの利点は非常に重要です。


トランザクションボリューム (作業マップ)

次の表に、Solaris ボリュームマネージャのトランザクションボリュームを管理するのに必要な作業を示します。

作業 

説明 

参照先 

トランザクションボリュームを作成する 

Solaris ボリュームマネージャの GUI か metainit コマンドを使ってトランザクションボリュームを作成します。

「トランザクションボリュームを作成するには」

トランザクションボリュームを UFS ロギングに変換する 

metaclear を使ってトランザクションボリュームを削除してから、mount コマンドを使って、UFS ロギングを使用するファイルシステムをマウントします。

「トランザクションボリュームを 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) のマニュアルページを参照してください。 Solaris ボリュームマネージャにおける大容量ボリュームのサポートの詳細については、「Solaris ボリュームマネージャの大容量ボリュームのサポートについての概要」を参照してください。


Procedureトランザクションボリュームを作成するには

手順
  1. 「Solaris ボリュームマネージャコンポーネントを作成するための前提条件 」「トランザクションボリュームの背景情報」を確認します。

  2. 可能であれば、ロギングを有効にする UFS ファイルシステムのマウントを解除します。


    # umount /export
    

    ファイルシステムのマウントを解除できない場合は、後でトランザクションボリュームをアクティブにする前にシステムを再起動する必要があります。


  3. 次のどちらかの方法でトランザクションボリュームを作成します。

    • 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) をいくつかのマスターデバイスのために使用できます。 つまり、ログデバイスの共有が完全にサポートされています。


  4. /etc/vfstab ファイルを編集して、UFS ファイルシステムの現在の情報を、作成したトランザクションボリュームの情報で置き換えます。

    たとえば、/exportc0t0d0s6 にあり、新しいトランザクションボリュームが 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   -
    
  5. 可能であれば、ファイルシステムをマウントし直します。


    /usrなど、マウント解除できないファイルシステムのトランザクションボリュームを作成する場合は、ここでシステムを再起動して、トランザクションボリュームをマウントし直し、ロギングを開始します。



例 191 スライス用のトランザクションボリュームを作成する


# 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


例 192 /usr 用のトランザクションボリュームを作成する


# 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 -

ファイルシステムのロギングは、システムの再起動時に有効になります。



例 193 論理ボリューム用のトランザクションボリュームを作成する


# 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 ロギングに移行する必要があります。 次の各項ではこの変換手順について説明します。

トランザクションボリュームを UFS ロギングに変換するには


UFS ロギングに移行するためには、ログ用に 1M バイト以上の空き領域が必要です (デフォルトのシステム設定を使用する場合)。これはログが、ログボリュームに置かれるためです。 十分な空き領域がない場合は、ファイルを削除するか、ファイルシステムを拡張してから変換手順を実行する必要があります。


Procedureトランザクションボリュームを UFS ロギングに変換するには

手順
  1. metastat コマンドを使って、トランザクションボリュームと、対応するログデバイスを特定し、出力中で TransLogging 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         

    後で必要になるので、これらの名前を書き留めておきます。

  2. df コマンドを使って、Trans device がマウントされているかチェックします。出力中でトランザクションボリュームの名前を探します。 トランザクションボリュームがマウントされていない場合は、手順1 に進みます。


    # df | grep d2
    /mnt/transvolume   (/dev/md/dsk/d2    ): 2782756 blocks   339196 files
  3. df -k コマンドを使って、トランザクションボリュームに十分な空き容量があることを確認します。


    # df -k /mnt/transvolume
    file system            kbytes    used   avail capacity  Mounted on
    /dev/md/dsk/d2       1391387   91965 1243767     7%    /mnt/transvolume
  4. アプリケーションを停止するか、システムをシングルユーザーモードに移行して、ファイルシステム上のすべてのアクティビティを停止します。


    # 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
    # 
  5. lockfs -f を使って、ファイルシステムのログを消去します。


    # /usr/sbin/lockfs -f /mnt/transvolume
     
    
  6. ファイルシステムをマウント解除します。


    # umount /mnt/transvolume
     
    
  7. ファイルシステムを含むトランザクションボリュームを削除します。

    この操作を実行しても、ファイルシステム上のデータに影響はありません。


    # metaclear d2
    d2: Trans is cleared
     

    この手順の始めで特定した Logging device はもはや使用されないので、他の目的に使用できます。 しかし、この手順の始めに特定したマスターデバイスにはファイルシステムが格納されているため、マスターデバイスはその後マウントされ使用されます。

  8. /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
    
  9. ファイルシステムを再びマウントします。


    # mount /mnt/transvolume
    

    mount コマンドから次のような 「/dev/md/dsk/d0 が正常でありません。読み取り/書き込みとマウントしようとしました。 fsck を実行し、再度行なってください。 」が返されることがあります。この場合には、raw デバイス (fsck /dev/md/rdsk/d0 ) に対して fsck コマンドを実行し、 y を入力して、スーパーブロック内のファイルシステム状態を修正する必要があります。その後で mount コマンドを再び実行します。


  10. マウントしたファイルシステムのロギングが有効になっているか確認します。そのためには、/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
     
  11. この手順の中でシステムをシングルユーザーモードに移行している場合は、ここでマルチユーザーモードに戻ることができます。

例 トランザクションボリュームを UFS ロギングに変換する

トランザクションボリュームを 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
マルチユーザーモードに戻る。

トランザクションボリュームの保守

Procedureトランザクションボリュームの状態をチェックするには

手順

    次のどちらかの方法でトランザクションボリュームの状態をチェックします。

    • Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、ボリュームの状態を表示します。 トランザクションボリュームを右クリックし、「プロパティ (Properties)」を選択して、さらに詳しい状態情報を表示します。 詳細は、オンラインヘルプを参照してください。

    • metastat コマンドを使用します。

      詳細は、metastat(1M) のマニュアルページを参照してください。


例 194 トランザクションボリュームの状態をチェックする

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 

Procedureトランザクションボリュームにログデバイスを接続するには

手順
  1. 「Solaris ボリュームマネージャコンポーネントを作成するための前提条件 」「トランザクションボリュームの背景情報」を確認します。

  2. ロギングを有効にする UFS ファイルシステムのマウントを解除します。

  3. 次のどちらかの方法でトランザクションボリュームにログデバイスを接続します。

    • Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。 ボリュームを右クリックし、「プロパティ (Properties)」を選択します。 詳細については、オンラインヘルプを参照してください。

    • 次の形式の metattach コマンドを実行します。


      metattach master-volume logging-volume 
      

      master-volume は、ロギングするファイルシステムが格納されているトランザクションボリュームの名前です。

      logging-volume は、ログが格納されているボリュームまたはスライスの名前です。

      詳細は、metattach(1M) のマニュアルページを参照してください。


    # metattach d1 d23
    
  4. ファイルシステムを再びマウントします。


例 195 トランザクションボリュームにログデバイスを接続する

この例では、ログデバイス、つまりスライス (c1t1d0s1) を、/fs2 にマウントされているトランザクションボリューム d1 に接続します。


# umount /fs2
# metattach d1 c1t1d0s1
d1: log device d0c1t1d0s1 is attached
# mount /fs2

Procedureトランザクションボリュームからログデバイスを切断するには

手順
  1. 「Solaris ボリュームマネージャコンポーネントを作成するための前提条件 」「トランザクションボリュームの背景情報」を確認します。

  2. ロギングを無効にしたり、ログデバイスを変更したい UFS ファイルシステムのマウントを解除します。

  3. 次のどちらかの方法でトランザクションボリュームからログデバイスを切断します。

    • Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。 ボリュームを右クリックし、「プロパティ (Properties)」を選択します。 詳細は、オンラインヘルプを参照してください。

    • 次の形式の metadetach コマンドを使用します。


      metadetach master-volume 
      

      master-volume は、ロギングするファイルシステムが格納されているトランザクションボリュームの名前です。

      詳細は、metadetach(1M) のマニュアルページを参照してください。

  4. ファイルシステムを再びマウントします。


例 196 トランザクションボリュームからログデバイスを切断する

この例では、ログデバイス、つまりスライス (c1t1d0s1) を、/fs2 にマウントされているトランザクションボリューム d1 から切り離します。


# umount /fs2
# metadetach d1
d1: log device c1t1d0s1 is detached
# mount /fs2

Procedureトランザクションボリュームを拡張するには


トランザクションボリューム内のマスターデバイスを拡張するためには、マスターデバイスがボリューム (RAID 0、RAID 1、または RAID 5) でなければなりません。


手順
  1. 「Solaris ボリュームマネージャコンポーネントを作成するための前提条件 」「トランザクションボリュームの背景情報」を確認します。

  2. マスターデバイスがボリューム (基本スライスではなく) の場合は、次のどちらかの方法でマスターデバイスに他のスライスを追加します。

    • Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。 ボリュームを右クリックし、「プロパティ (Properties)」を選択してから、「コンポーネント (Components)」パネルを選択します。 詳細は、オンラインヘルプを参照してください。

    • 次の形式の metattach コマンドを実行します。


      metattach master-volume component
      

      master-volume は、ロギングするファイルシステムが格納されているトランザクションボリュームの名前です。

      component は、接続するボリュームまたはスライスの名前です。

      詳細は、metattach(1M) のマニュアルページを参照してください。


      マスターデバイスがミラーの場合は、個々のサブミラーにスライスを追加する必要があります。


  3. マスターデバイスがスライスの場合は、そのスライスを直接拡張することはできません。 その場合は、次のようにします。

    • 現在のトランザクションボリュームを削除します。

    • マスターデバイスのスライスをボリュームに含めます。

    • トランザクションボリュームを再び作成します。

    この処理が終わったら、上記の手順に従ってマスターデバイスを拡張します。


例 197 トランザクションボリューム内の RAID 1 マスターデバイスを拡張する


# 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 で、サブミラー d11d12 から構成されています。 そのため、サブミラーごとに metattach コマンドを実行します。 スライスが追加されたことを示すメッセージが表示されます。


参照

UFS の場合は、マスターデバイスではなくトランザクションボリュームに対して growfs コマンドを実行します。 「ファイルシステムを拡張するには」を参照してください。

データベースなど、raw ボリュームを使用するアプリケーションは、独自の方法で領域を拡張できなければなりません。

Procedureトランザクションボリュームを削除するには

手順
  1. 「Solaris ボリュームマネージャコンポーネントを作成するための前提条件 」「トランザクションボリュームの背景情報」を確認します。

  2. トランザクションボリュームを削除し、ロギングを無効にしたい UFS ファイルシステムのマウントを解除します。


    # umount /filesystem
    
  3. 次のどちらかの方法でトランザクションボリュームからログデバイスを切断します。

    • Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。 ボリュームを右クリックし、「プロパティ (Properties)」を選択します。 詳細は、オンラインヘルプを参照してください。

    • 次の形式の metadetach コマンドを使用します。


      metadetach master-volume 
      

      master-volume は、ロギングするファイルシステムが格納されているトランザクションボリュームの名前です。

      詳細は、metadetach(1M) のマニュアルページを参照してください。

  4. 次のどちらかの方法でトランザクションボリュームを削除 (クリア) します。

    • Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。 ボリュームを右クリックし、「削除 (Delete)」を選択します。 詳細は、オンラインヘルプを参照してください。

    • 次の形式の metaclear コマンドを実行します。


      metaclear master-volume  
      

      詳細は、metaclear(1M) のマニュアルページを参照してください。

  5. 必要であれば、/etc/vfstab ファイルを編集して、上記の手順で削除したトランザクションボリュームではなく、トランザクションボリュームを構成するボリュームをマウントします。

  6. ファイルシステムを再びマウントします。


例 198 トランザクションボリュームを削除する

この例では、 /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

Procedureマウントデバイスを保持しながらトランザクションボリュームを削除するには

この手順は、トランザクションボリュームとそのボリュームを構成するデバイスが共に Solaris ボリュームマネージャの論理ボリュームである場合にのみ有効です。

手順
  1. 「Solaris ボリュームマネージャコンポーネントを作成するための前提条件 」「トランザクションボリュームの背景情報」を確認します。

  2. トランザクションボリュームを削除し、ロギングを無効にしたい UFS ファイルシステムのマウントを解除します。

  3. 次のどちらかの方法でトランザクションボリュームからログデバイスを切断します。

    • Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。 ボリュームを右クリックし、「プロパティ (Properties)」を選択します。 詳細は、オンラインヘルプを参照してください。

    • 次の形式の metadetach コマンドを使用します。


      metadetach master-volume 
      

      master-volume は、ロギングするファイルシステムが格納されているトランザクションボリュームの名前です。

      詳細は、metadetach(1M) のマニュアルページを参照してください。

  4. トランザクションボリュームの名前とマスターデバイスの名前を交換します。

  5. 次のどちらかの方法でトランザクションボリュームを削除 (クリア) します。

    • Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。 ボリュームを右クリックし、「削除 (Delete)」を選択します。 詳細は、オンラインヘルプを参照してください。

    • 次の形式の metaclear コマンドを実行します。


      metaclear master-volume  
      

      詳細は、metaclear(1M) のマニュアルページを参照してください。

  6. マスターデバイスに対して fsck コマンドを実行します。

    スーパーブロック内のファイルシステムの状態を修正するかどうかの問い合わせに対して y を入力します。

  7. ファイルシステムを再びマウントします。


例 199 マウントデバイスを保持しながらトランザクションボリュームを削除する

この例では、まず、マウントされたファイルシステムが格納されているトランザクションボリューム 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 ファイルを編集する必要はありません。


ログデバイスの共有

Procedureファイルシステム間でログデバイスを共有するには

この手順では、別のファイルシステム用のログを含むトランザクションボリュームがすでに設定されているものとします。

手順
  1. 「Solaris ボリュームマネージャコンポーネントを作成するための前提条件 」「トランザクションボリュームの背景情報」を確認します。

  2. 可能であれば、ロギングを有効にしたいファイルシステムのマウントを解除します。

  3. ログデバイスがすでに存在している場合は、次のどちらかの方法でトランザクションボリュームから切断します。

    • Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。 ボリュームを右クリックし、「プロパティ (Properties)」を選択します。 詳細は、オンラインヘルプを参照してください。

    • 次の形式の metadetach コマンドを使用します。


      metadetach master-volume 
      

      詳細は、metadetach(1M) のマニュアルページを参照してください。

  4. 次のどちらかの方法でトランザクションボリュームにログデバイスを接続します。

    • Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、リストからトランザクションボリュームを選択します。 ボリュームを右クリックし、「プロパティ (Properties)」を選択します。 詳細は、オンラインヘルプを参照してください。

    • 次の形式の metattach コマンドを実行します。


      metattach master-volume logging-volume 
      

      詳細は、metattach(1M) のマニュアルページを参照してください。

  5. /etc/vfstab ファイル内の、ファイルシステム用のエントリを変更 (または追加) して、そのエントリがトランザクションボリュームを参照するようにします。

  6. ファイルシステムを再びマウントします。 ファイルシステムのマウントを解除できなかった場合は、システムを再起動して変更を有効にします。


例 1910 ログデバイスを共有する


# 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.

エラー発生時のトランザクションボリュームの回復

Procedureパニックした場合のトランザクションボリュームを回復するには

手順

    fsck コマンドでファイルシステムを修復できない場合は、そのログデバイスを共有するファイルシステムが格納されているすべてのトランザクションボリュームに対して fsck コマンドを実行する必要があります。


例 1911 トランザクションボリュームを回復する


# fsck /dev/md/rdsk/trans

fsck コマンドは、関連するすべてのトランザクションボリュームをチェックし、修復してから、障害のあるトランザクションボリュームを「正常 (Okay)」状態にします。


Procedureハードウェアエラー状態のトランザクションボリュームを回復するには

この手順は、トランザクションボリュームを「正常 (Okay)」状態に戻すときに使用します。

トランザクションボリュームの状態をチェックする方法については、「トランザクションボリュームの状態をチェックするには」を参照してください。

ロギングデータの処理中にマスターデバイスまたはログデバイスにエラーがあると、デバイスは「正常 (Okay)」状態から「ハードウェアエラー (Hard Error)」状態に移行します。 デバイスが「ハードウェアエラー (Hard Error)」状態か「エラー (Error)」状態になると、デバイスエラーまたは異常が発生します。 どちらの場合でも、回復方法は同じです。


ログ (ログデバイス) が共有されている場合に、トランザクションボリューム内のどれかのスライスに異常が発生すると、そのトランザクションボリュームに関連しているすべてのスライスまたはボリュームが異常状態に切り換わります。


手順
  1. 「Solaris ボリュームマネージャコンポーネントを作成するための前提条件 」「トランザクションボリュームの背景情報」を確認します。

  2. 「トランザクションボリュームの背景情報」を確認します。

  3. lockfs コマンドを実行して、ロックされているファイルシステムを調べます。


    # lockfs
    

    該当するファイルシステムはロックタイプが hard と表示されます。 同じログデバイスを共有するファイルシステムはすべてハードロックされます。

  4. 該当するファイルシステムのマウントを解除します。

    ロックされているファイルシステムがエラー発生時に使用されていても、そのファイルシステムのマウントを解除できます。 関連するプロセスが、ハードロックまたはマウント解除されているファイルシステム上の開かれたファイルまたはディレクトリにアクセスすると、エラーが返されます。

  5. (省略可能) アクセス可能なデータのバックアップをとります。

    デバイスエラーを修復する前に、通常は、できるだけ多くのデータを回復するようにします。 tarcpio コマンドを使用する場合のように、バックアップ手順を実行するためにはファイルシステムがマウントされていなければならない場合は、ファイルシステムを読み取り専用でマウントできます。 dumpvolcopy コマンドを使用する場合のように、ファイルシステムがマウントされている必要がない場合は、トランザクションボリュームに直接アクセスできます。

  6. デバイスエラーを修復します。

    この時点で、読み書き操作のためにトランザクションボリュームを開くかマウントすると、ログデバイス上にあるアクセス可能なすべてのデータが適切なマスターデバイスに転送されます。 読み取りまたは書き込みできないデータは破棄されます。 しかし、トランザクションボリュームを読み取り専用で開くかマウントすると、ログは再びスキャンされるだけでマスターデバイスに転送されません。したがって、エラーは修復されません。 つまり、マスターデバイスとログデバイスのデータは、読み取りおよび書き込み操作のために最初に開かれるかマウントされるまで、変更されません。

  7. fsck コマンドを実行してファイルシステムを修復します。あるいは、データを復元する場合は、newfs コマンドを実行します。

    同じログデバイスを共有するすべてのトランザクションボリュームに対して fsck コマンドを実行します。 fsck コマンドですべてのトランザクションボリュームが修復されると、各ボリュームは「正常 (Okay)」状態に戻ります。

    newfs コマンドを使用しても、ファイルシステムは「正常 (Okay)」状態に戻ります。しかし、この場合には、ファイルシステムのすべてのデータが破棄されます。 newfs コマンドは、通常、バックアップからファイルシステムを復元したいときに使用します。

    同じログデバイスを共有するすべてのトランザクションボリュームに対して fsck または newfs コマンドを実行しないと、デバイスは「正常 (Okay)」状態に戻されません。

  8. metastat コマンドを実行して、関連するデバイスが「正常 (Okay)」状態になっていることを確認します。


例 1912 ロギングデバイスのエラーを修復する


# 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)」状態になっていることを確認します。