SVMでILM : やっぱり Sun がスキ! やっぱり Sun がスキ!

やっぱり Sun がスキ!

http://blogs.sun.com/yappri/date/20060418 2006年 4月 18日 火曜日

SVMでILM

SVMで手軽に始めるILM

現在コンピュータストレージの世界では、急増するデータをいかに 効率的に保存・管理するかが大きな課題となっており、情報の生成から 破棄まで、時間と共に変化する価値と特性に応じてデータを動的かつ 最適に配置するという、情報ライフサイクルマネジメント (ILM : Information Lifecycle Management) の考え方が注目を集めています。 ILM を実現する技術としては、ニアライン・ストレージ (ディスクと テープの中間的な位置付けのストレージ) としての大容量 SATAディスクや、 アクセス頻度に応じて自動的にデータをテープライブラリへ移動させる アーカイビング・ソフトウェアなどがあります。一般的にデータ管理の 課題を抱えるシステムが大型システムであるため、ILM の実現には高機能な ディスクアレイや高額なソフトウェアが必要であると受け取られがちですが、 実は非常に手軽に使えて、かつPCクラスの小型システムでも有効性を実感 できる技術なのです。以下に Solaris のボリューム管理機能である Solaris Volume Manager (SVM) を使った ILM をご紹介します。是非お手元のマシンで ILM の良さを実感してください。


Solaris Volume Manager を使った ILM ソリューション

一口に ILM と言っても、ファイル単位で細かくアーカイビングする ものや、ボリューム(ファイルシステム)単位でディスク間を移動させる ものなど、いろいろなソリューションがあります。ここでご紹介するは、 ボリューム単位でディスク間を移動させるもので、一旦 SVM の管理下に 入ったボリュームは、システムを停止させずに極めて簡単に物理ディスク間を 移動できるようになります。例えば次のような状況においてこの仕組みが効果を 発揮します。

  • 新型ディスク装置を導入したのでボリュームを移行したいが、システム停止は許されない。
  • 旧版アプリケーションへのアクセスが減ったため、ボリュームごと SATA ストレージへ移動したい。
  • 本番データのクローンを使ってテストを行いたい。
  • ニアラインストレージを使って Disk-to-Disk オンラインバックアップを実現したい。
  • 古いディスクを有効活用したい。

以下の例では、SVM を使って2台のディスク間でボリューム移動を行います。 OS は Solaris 10 1/06 を使用しています。

jws50# cat /etc/release
                       Solaris 10 1/06 s10s_u1wos_19a SPARC
           Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                           Assembled 07 December 2005

jws50# format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
       0. c0t0d0 
          /pci@1c,600000/scsi@2/sd@0,0
       1. c0t1d0 
          /pci@1c,600000/scsi@2/sd@1,0
Specify disk (enter its number): ^D

1つ目のディスクスライス (Disk#0) は c0t0d0s5 (5.0 GB)を使用します。 UFS ファイルシステムとして /data にマウントされています。

Part      Tag    Flag     Cylinders         Size            Blocks
  5 unassigned    wm   20328 - 23957        5.00GB    (3630/0/0)  10487070


jws50# df -k|grep data
/dev/dsk/c0t0d0s5    5163909  266337 4845933     6%    /data

2つ目のディスクスライス (Disk#1) は少し容量の大きい c0t1d0s3 (6.0 Gb)を使用します。 現状未使用で、この後 Disk#0 のデータがここへ移行されます。

Part      Tag    Flag     Cylinders         Size            Blocks
  3 unassigned    wm   16840 - 21195        6.00GB    (4356/0/0)  12584484

ボリュームの SVM への取り込み

Disk#0 をマウントしたまま SVM の管理下に置きます。

jws50# metainit -f d91 1 1 c0t0d0s5
d91: 連結/ストライプがセットアップされます


jws50# metastat
d91: Concat/Stripe
    サイズ: 10487070 ブロック (5.0 GB)
    ストライプ 0:
	デバイス   開始ブロック Dbase	Reloc
	c0t0d0s5          0     No   	Yes

Device Relocation Information:
Device   Reloc	Device ID
c0t0d0   はい 	id1,sd@SSEAGATE_ST336704LSUN36G_3CD1G92300002128HRPP

さらにこれをサブミラーとするミラーボリュームを作成します。

jws50# metainit d81 -m d91 
d81: ミラーがセットアップされます

jws50# metastat
d81: ミラー
    サブミラー 0: d91
      状態: 正常         
    パス: 1
    読み込みオプション: roundrobin (デフォルト)
    書き込みオプション: parallel (デフォルト)
    サイズ: 10487070 ブロック (5.0 GB)

d91: d81 のサブミラー
    状態: 正常         
    サイズ: 10487070 ブロック (5.0 GB)
    ストライプ 0:
	デバイス   開始ブロック Dbase         状態 Reloc ホットスペア
	c0t0d0s5          0     No            正常   Yes 

Device Relocation Information:
Device   Reloc	Device ID
c0t0d0   はい 	id1,sd@SSEAGATE_ST336704LSUN36G_3CD1G92300002128HRPP

/data がこのミラーボリューム d81 を参照するよう /etc/vfstab を編集し、 /data をマウントし直します。

jws50# df -k|grep data
/dev/dsk/c0t0d0s5    5163909  266337 4845933     6%    /data

jws50# umount /data
jws50# mount  /data

jws50# df -k|grep data
/dev/md/dsk/d81      5163909  266337 4845933     6%    /data

残念ながらここで umount を行うため、このボリュームに依存するアプリケー ションは一度停止する必要があります。しかし一度ミラーボリュームを作って しまえば今後この操作は不要です。

次に2つ目のディスクスライス (Disk#1) を SVM に取り込みます。

jws50# metainit d92 1 1 c0t1d0s3
d92: 連結/ストライプがセットアップされます


jws50# metastat
d81: ミラー
    サブミラー 0: d91
      状態: 正常         
    パス: 1
    読み込みオプション: roundrobin (デフォルト)
    書き込みオプション: parallel (デフォルト)
    サイズ: 10487070 ブロック (5.0 GB)

d91: d81 のサブミラー
    状態: 正常         
    サイズ: 10487070 ブロック (5.0 GB)
    ストライプ 0:
	デバイス   開始ブロック Dbase         状態 Reloc ホットスペア
	c0t0d0s5          0     No            正常   Yes 


d92: Concat/Stripe
    サイズ: 12584484 ブロック (6.0 GB)
    ストライプ 0:
	デバイス   開始ブロック Dbase	Reloc
	c0t1d0s3          0     No   	Yes

Device Relocation Information:
Device   Reloc	Device ID
c0t1d0   はい 	id1,sd@SSEAGATE_ST336605LSUN36G_3FP14N3H00002224GE8R
c0t0d0   はい 	id1,sd@SSEAGATE_ST336704LSUN36G_3CD1G92300002128HRPP

データの再同期とボリュームの切り替え

Disk#1 (d92) を先ほどのミラーボリュームに追加します。自動的に同期処理が 開始されます。

jws50# metattach d81 d92
d81: サブミラー d92 is attached


jws50# metastat
d81: ミラー
    サブミラー 0: d91
      状態: 正常         
    サブミラー 1: d92
      状態: 再同期中     
    再同期実行中: 0 % 完了
    パス: 1
    読み込みオプション: roundrobin (デフォルト)
    書き込みオプション: parallel (デフォルト)
    サイズ: 10487070 ブロック (5.0 GB)

d91: d81 のサブミラー
    状態: 正常         
    サイズ: 10487070 ブロック (5.0 GB)
    ストライプ 0:
	デバイス   開始ブロック Dbase         状態 Reloc ホットスペア
	c0t0d0s5          0     No            正常   Yes 

d92: d81 のサブミラー
    状態: 再同期中     
    サイズ: 12584484 ブロック (6.0 GB)
    ストライプ 0:
	デバイス   開始ブロック Dbase         状態 Reloc ホットスペア
	c0t1d0s3          0     No            正常   Yes 

Device Relocation Information:
Device   Reloc	Device ID
c0t1d0   はい 	id1,sd@SSEAGATE_ST336605LSUN36G_3FP14N3H00002224GE8R
c0t0d0   はい 	id1,sd@SSEAGATE_ST336704LSUN36G_3CD1G92300002128HRPP

同期処理完了後、元のディスクをミラーボリュームから切り離します。

jws50# metadetach d81 d91
d81: サブミラー d91 は切断中

jws50# metaclear d91
d91: 連結/ストライプがクリアされます


jws50# metastat
d81: ミラー
    サブミラー 1: d92
      状態: 正常         
    パス: 1
    読み込みオプション: roundrobin (デフォルト)
    書き込みオプション: parallel (デフォルト)
    サイズ: 10487070 ブロック (5.0 GB)

d92: d81 のサブミラー
    状態: 正常         
    サイズ: 12584484 ブロック (6.0 GB)
    ストライプ 0:
	デバイス   開始ブロック Dbase         状態 Reloc ホットスペア
	c0t1d0s3          0     No            正常   Yes 

Device Relocation Information:
Device   Reloc	Device ID
c0t1d0   はい 	id1,sd@SSEAGATE_ST336605LSUN36G_3FP14N3H00002224GE8R

これでボリュームの移行が完了しました。

ところで、Disk#1 の容量が少し大きかった (6.0 GB) ことを思い出してください。 データ移行と同時にファイルシステムの容量も拡張しておきましょう。


ボリュームとファイルシステムの拡張

metattach によってサブミラーの容量をもう一度スキャンします。

jws50# metattach d81


jws50# metastat
d81: ミラー
    サブミラー 1: d92
      状態: 正常         
    パス: 1
    読み込みオプション: roundrobin (デフォルト)
    書き込みオプション: parallel (デフォルト)
    サイズ: 12584484 ブロック (6.0 GB)

d92: d81 のサブミラー
    状態: 正常         
    サイズ: 12584484 ブロック (6.0 GB)
    ストライプ 0:
	デバイス   開始ブロック Dbase         状態 Reloc ホットスペア
	c0t1d0s3          0     No            正常   Yes 


Device Relocation Information:
Device   Reloc	Device ID
c0t1d0   はい 	id1,sd@SSEAGATE_ST336605LSUN36G_3FP14N3H00002224GE8R
jws50# 

ミラーボリュームの容量が 6.0 GB に増えました。今度は growfs コマンドを使って ファイルシステムを拡張します。

jws50# df -k|grep data
/dev/md/dsk/d81      5163909  193121 4919149     4%    /data

jws50# 
jws50# growfs -M /data /dev/md/rdsk/d81
警告: 最終シリンダで 4572 セクタが割り当てられません。
/dev/md/rdsk/d81:	全セクター数: 12584484  (シリンダ数: 2049、トラック数: 48、セクター数: 128)
	6144.8MB、129 シリンダグループ (16 c/g, 48.00MB/g, 5824 i/g)
スーパーブロックのバックアップの位置 (fsck -F ufs -o b=# のため) :
 32, 98464, 196896, 295328, 393760, 492192, 590624, 689056, 787488, 885920,
 11705248, 11803680, 11902112, 12000544, 12098976, 12197408, 12295840,
 12394272, 12492704, 12582944
jws50# 

df コマンドを使ってファイルシステムが拡張されたことを確認します。

jws50# df -k|grep data
/dev/md/dsk/d81      6196247  251609 5892999     5%    /data

SVM を使って手軽に ILM を実現する例をご紹介しましたが、大規模なシステムでは やはり管理が複雑になってしまうかも知れません。このような場合は SAN によってストレージを統合し、ストレージ側の ILM 機能で一元管理した方が良いでしょう。 データ移行に加え、差分データコピーや外部ストレージ接続といった強力な機能を持つ Sun StorEdge 6920 や Sun StorEdge 9985 などがお薦めです。システム規模とご予算に 応じてお選びください。

  


投稿されたコメント:

コメント
  • HTML文法 不許可