RIGHT:[[Sun 関係覚え書き]]

//*ファイルシステムのオン・ザ・フライバックアップ
*参考文献 [#g16fb79d]
-Sun BigAdmin の
「Backing Up the Data of a File System on the Fly(By Joseph Gen)」
(http://www.sun.com/bigadmin/content/submitted/backup_filesystem.html)
より.
-UNIX USER 2002-04 p.148(UNIX 処方箋)

*バックアップ概要 [#v50c4dee]
Solaris OSでバックアップを取る際,
ファイルシステムは非アクティブでないといけない.
さもないと,出力は一致しないものになることがある.
(バックアップ元のデータとバックアップしたデータが一致したものに
なるとは限らない.)
ファイルシステムがアンマウントされていたり,
OS により書き込みがロックされている場合に,
ファイルシステムは非アクティブである.
Solaris OS では "fssnap" ユーティリティでオンラインバックアップができるが,
ファイルシステムを書き込みロックすることができなければ
うまくいかない.

一方,Solaris Volume Manager は,
オン・ザ・フライで他のファイルシステムへデータを転送するための
"橋渡し(bridge)" として使える.
これなら,いつでもデータをバックアップできる.

ここにファイルシステム "/test" を使った例を示す.
 # df -k /test
 FileSystem        kbytes   used     avail     capacity Mounted on
 /dev/dsk/c0t2d1s3 50700783 39746386 10530839  80%      /test

まず,"/test" ファイルシステムがマウントしている状態で,
そのファイルシステム上に "d101" という名前でメタデバイスを作成する.
 # metainit -f d101 1 1 c0t2d1s3

次に,先ほど作った "d101" をサブミラーとする
One-Way ミラー(片肺)メタデバイスを "d100" という名前で初期化する.
 # metainit d100 -m d101
 # metastat d100
 d100: Mirror
     Submirror 0: d101
       State: Okay
     Pass: 1
     Read option: roundrobin (default)
     Write option: parallel (default)
     Size: 102961152 blocks
 
 d101: Submirror of d100
     State: Okay
     Size: 102961152 blocks
     Stripe 0:
         Device    Start Block  Dbase State  Hot Spare
         c0t2d1s3         0     No    Okay

そして,新しい場所(ミラー先のスライス) c0t2d1s7 上に
もうひとつのメタデバイス "d102" を作成する.
新しいパーティションのサイズは d101 と同じにしておく必要がある.
 # metainit d102 1 1 c0t2d1s7
 d102: Concat/Stripe is setup
 
 # metastat d102
 d102: Concat/Stripe
     State: Okay
     Size: 102975488 blocks
     Stripe 0:
         Device    Start Block  Dbase
         c0t2d1s7         0     No

メタデバイス "d102" を "d100" のサブミラーとして加えと,
再同期が自動的に走る.
 # metattach d100 d102

再同期が正常に終了すると,Two-Way ミラーが出来上がっており,
バックアップの準備ができたことになる.

 # metastat d100
 d100: Mirror
     Submirror 0: d101
       State: Okay
     Submirror 0: d102
       State: Okay
     Pass: 1
     Read option: roundrobin (default)
     Write option: parallel (default)
     Size: 102961152 blocks
 
 d101: Submirror of d100
     State: Okay
     Size: 102961152 blocks
     Stripe 0:
         Device    Start Block  Dbase State  Hot Spare
         c0t2d1s3         0     No    Okay
 
 d102: Submirror of d100
     State: Okay
     Size: 102961152 blocks
     Stripe 0:
         Device    Start Block  Dbase State  Hot Spare
         c0t2d1s7         0     No    Okay

これで,取りたいときにいつでもファイルシステムバックアップが
できるようになった.

バックアップする前には,2番目のメタデバイス "d102" をデタッチするか
オフラインにする必要がある.

デタッチするには
 # metadetach d100 d102
とし,オフラインにするには
 # metaoffline d100 d102
とする.

c0t2d1s7 にはデタッチした時点のデータがすべて含まれているので,
バックアップは "c0t2d1s7" 上のものをとることだけに
気をつけなければならない.
 # ufsdump 0f /dev/rmt/0 /dev/md/rdsk/d102

バックアップが終わったあと,
すべてのメタデバイスを削除することもできるし,
後で使うために残しておくこともできる.
次のバックアップまでに,次のコマンドを実行しておかなければならない.
 # metattach d100 d102
か
 # metaonline d100 d102
そして,再同期が完了するまで待つ必要がある.

上記 2つの方法(デタッチとオフライン)の違いは,
前者のほうは,
"metaattach"コマンドをした後の同期に,後者のものより時間がかかり,
後者のほうは,
"metaonline" コマンドでファイルシステムをオンラインにするまで,
そのファイルシステムがリードオンリーになるということである.
(metastat での表示を見ると,
metaoffline をしたメタデバイスは「保守中」となるのに対して,
metadetach をしたメタデバイスは,サブミラーから外れて最下方に表示される.)

複数のファイルシステムに対して,
矛盾なくある時点のバックアップが必要なのであれば,
すべてのファイルシステムの 2番目のメタデバイスを同時にデタッチする必要がある.
そうすれば,ひとつずつバックアップができる.

*リストア手順 [#q9c450fd]
CDROM で miniroot をたちあげ作業する.

 # tapes <-テープデバイスを作成
 # mt -f /dev/rmt/0 rewind テープを巻き戻し
 # newfs /dev/rdsk/c0t0d0s0 <-ファイルシステム作成
 # fsck /dev/rdsk/c0t0d0s0 <-ファイルシステムチェック
 # mount -F ufs /dev/dsk/c0t0d0s0 /mnt <-適当なところにマウント
 # cd /mnt
 # ufsrestore rf /dev/rmt/0 <-リカバリ
 # rm restoresymtable <-ufsrestore コマンドが作成した作業ファイルを削除

この後,vfstab(/mnt/etc/vfstab) と system(/mnt/etc/system) を修正する.
system はメタデバイスを root ファイルシステムとして指定しているところを
コメントアウトしておく.
 *rootdev:/pseudo/md@0,0,blk <-先頭に * を付与

最後に bootblk でブートブロックを書いてやる.

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS