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

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