UNIXディスク管理

目次

一般にディスク管理はシステム管理の一部とされていますがRAID5やミラーリング、特にストレージ環境におけるそれら、などはそれ専門の知識が必要です。ここではシステム管理とは切り離してディスク管理方法を考えていく事にします。

ディスクの追加
ディスクパーティションとファイルシステム
ファイルシステムの管理
DiskSuiteによるミラーリング
DiskSuiteによるRAID5ストライピング
DiskSuiteによるディスクの復旧
戻る

ディスクの追加

<ディスクの増設>
新たなディスクを増設した場合、それを認識させる必要があります。認識するにあたりリブートを避けることは出来ませんでした(僕の環境では)。リブート方法は2つあります。ルートディレクトリ(/)にreconfigureファイルを生成してリブートするか、ブート時に-rオプションを指定してください。

新規デバイスを認識させる方法 : 1

# touch /reconfigure

新規デバイスを認識させる方法 : 2

# reboot -- -r

ディスクが認識すれば newfsコマンドを実行して新たなファイルシステムを作成してください。下の例はSCSIドライブの2台目でスライス7を指定しているものとします。目的のディスク内容が分からない場合はformatコマンドで確認してください。(Intel SolarisのIDEディスクの場合はtがありません)

# newfs /dev/rdsk/c0t0d0s7
# fsck -F ufs
/dev/rdsk/c0t0d0s7

fsckが上手く行われればマウントしてみましょう。

# mkdir /mnt/disk1
# mount /dev/dsk/
c0t0d0s7

マウントに成功すれば/etc/vfstabに記述すれば良いかと思います。/etc/vfstabの記述方法はこちらのメインページにあるUNIXシステム基礎を参照してください

ディスクパーティションとファイルシステム

次の章で紹介するミラーリングやRAID5は、構築するにあたってディスクパーティションを分割する必要があります。

<Intel版の注意>
intel Solarisの場合/usr /var のパーティションは区切らない方が無難です。例えばミラーリングを行う場合/usr /varの連結メタデバイスをマウントすると不具合が生じます。また、単に/varを別のスライスに置いても、shutdown時に"INIT: failed write of utmpx entry"のメッセージが出力されます。後者の原因は/varをumountした後でシステムが/var/adm/utmpxに書き込もうとしているからで、障害ではありません。気になる方は一度シングルユーザーモードに切り替えて/varをumountした状態で/var/adm/utmpxファイルを作成して下さい。

c0t0d0のパーティションテーブル

Part Tag Flag Cylinders Size
0 root wm 1044 - 4701 1.76GB
1 swap wu 3 - 1043 512.37MB
2 backup wm 0 - 38767 18.63GB
3 unassigned wm 38719 - 38722 1.97MB
4 unassigned wm 0  
5 var wm 4702 - 21108 7.89GB
6 usr wm 21109 - 23764 1.28GB
7 home wm 23765 - 38718 7.19GB
8 boot wu 0 - 0 0.49MB
9 alternates wu 1 - 2 0.98MB

<metadb領域の生成>
DiskSuiteによりミラーリングやRAID5を構築する場合はメタデータベースを作成する必要がありますので、swapから削るか、余っているディスク領域を使って2〜3MBほど確保してください。今回は上図の様にスライス3に作成することにします。

# unassigned wm 38719 - 38722 1.97MB (4/0/0) 4032

また、使用する全てのディスクにメタデータベース領域が必要です。ミラーリングを行う場合はミラーディスクに同じ容量(あるいはそれ以上)のスライスを割り当てなければなりません。

c0t1d0のパーティションテーブル

Part Tag Flag Cylinders Size
0 unassigned wm 1044 - 4701 1.76GB
1 unassigned wu 3 - 1043 512.37MB
2 backup wm 0 - 38767 18.63GB
3 unassigned wm 38719 - 38722 1.97MB
4 unassigned wm 0  
5 unassigned wm 4702 - 21108 7.89GB
6 unassigned wm 21109 - 23764 1.28GB
7 unassigned wm 23765 - 38718 7.19GB
8 boot wu 0 - 0 0.49MB
9 alternates wu 1 - 2 0.98MB

ファイルシステムの管理

fsckコマンドはシステムファイルの検証し、整合性不良のファイルについては、修復、削除等の操作を自動的に行います。先ほどでも記していますがファイルシステムを作成した後にfsckコマンドを実行しますが、その他にファイルシステムメンテナンスにもこのコマンドを使用します。たとえば次の様に実行すれば全てのディスクとスライスに対して整合性不良のファイルのメンテナンスを行うことができます。

# sync
# fsck -y

それぞれのスライスに対してfsckを行う場合は次の様にしてファイルシステムとデバイスを指定して実行してください。問い合わせにyesと入力すれば修復、削除の操作を実行します。

# fsck -F ufs /dev/rdsk/c0d0s0

尚、fsck 起動後はできるだけrebootしてください。 reboot なしでfsckを続けるとシステムがフリーズする恐れがあります。

DiskSuiteによるミラーリング

<DiskSuite>
Solstice DiskSuiteはSolaris9にはデフォルトでインストールされています。Solaris8の場合でもSoftware CD 2 of 2に同梱されていますので、必要な時にインストールしてください。Solaris8のセットアップ時にSoftware CD 2 of 2をフルインストールしている場合は問題なく動作します。尚、この章ではDiskSuiteを使ったミラーリング方法を紹介するのでRAID5を構築する場合は飛ばしてください。

では各ディスクにメタデータベース領域を作成しましょう。前章で領域を確保できていれば次のコマンドを実行してください。

# metadb -a -f -c2 c0t0d0s3 c0t1d0s3

ここでc2のオプションに注目してください。これはメタデータベースの複製数です。メタデータベースは破損するとシステム自体が起動しなくなりますので複製しておく必要があります。ディスクを2〜4台まで使う場合はこの様にしてください。もしも1台のディスクでメタデバイスを利用するのならば最低でも3つのメタデータベースを生成した方が良いでしょう。その他、5台以上でRAIDを構築する場合は複製数は1つで良いと一般には言われています。メタデータベースの状態を表示するにはmetadbコマンドを引数なしで使います。

# metadb
flags first blk block count
a u 16 1034 /dev/dsk/c0t0d0s3
a u 1050 1034 /dev/dsk/c0t0d0s3
a u 16 1034 /dev/dsk/c0t1d0s3
a u 1050 1034 /dev/dsk/c0t1d0s3

メタデータベースを生成すれば次にミラーリングするメタデバイスの作成です。以下の様にミラーディスクを構成するものとします。

<一般スライスのミラーリング>
ルートパーティション以外はどのスライスでも同じ方法です。まずスライス7から構成していきましょう。次のコマンドを実行してスライス7をメタデバイスにセットします。このとき-fオプションを付け忘れないで下さい。

# metainit -f d50 1 1 c0t0d0s7
# metainit d4 -m d50
# metastat

上の図の様にパーティションc0t0d0s7をd50にセットしています。2行目はメタデバイスd50をd4にセットしています。3行目のmetastatコマンドは状態を表示します。そして同じくミラーディスク(disk2)のパーティションc0t1d0s7をメタデバイスにセットします。

# metainit d51 1 1 c0t1d0s7
# metastat

後はd51をd4に接続すればd50とd51は共通の連結メタデバイスd4が出来上がります。d51をd4にセットするのはリブートしてから行って下さい。

# metattach d4 d51
# metastat

これでc0t0d0s7とc0t1d0s7の再同期が開始されます。他のパーティションも同じ方法です。最後にvfstabのマウントデバイスを連結メタデバイスに変更します。

/etc/vfstabの例
/dev/md/dsk/d4 /dev/md/rdsk/d4 / ufs 1 yes -

<ルートパーティションのミラーリング>
次の様にそれぞれのディスクにブートイメージをインストールしておきます。

# installboot /usr/platform/i86pc/lib/fs/ufs/pboot /usr/platform/i86pc/lib/fs/ufs/bootblk /dev/rdsk/c0t0d0s0
#
installboot /usr/platform/i86pc/lib/fs/ufs/pboot /usr/platform/i86pc/lib/fs/ufs/bootblk /dev/rdsk/c0t1d0s0

metainitコマンドの-fオプションよりマウントしたままのrootパーティションをメタデバイスに変換します。このとき-fオプションを付け忘れないで下さい。

# metainit -f d10 1 1 c0t0d0s0
# metastat

次にミラーディスクのrootパーティションをメタデバイスに変換します。

# metainit d11 1 1 c0t1d0s0
# metastat

rootパーティションで構成されたメタデバイスを連結メタデバイスd0で構成します。

# metainit d0 -m d10
# metastat d0

これらメタデバイスの生成が済めばmetarootコマンドを実行して/etc/vfstab /etc/systemを書き換えます。(まだここでは後戻りできます。次のmetarootコマンドを実行したことによりシステムがブートできなくなっても著者は一切の責任を持ちません)

# metaroot d0

/etc/vfstabを確認してみてください。
/dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no -
この様にメタデバイスがルートパーティションに書き換えられています。問題がなければリブートしてください。

# lockfs -fa
# reboot

ブート時に "WARNING: forceload of misc/md_hotspares faild" の警告が出力されていれば成功です。これはホットスペアがセットされていないために出力された警告メッセージです。ホットスペアについては後の章を参考にしてください。この警告がどうしても気持ちの悪いもとの感じる方はホットスペアを割り当てる様にメタデバイスを構成し直して下さい。ホットスペアにはスライスを割り当てなくても問題ありません。

最後にd0とd11を接続します。

# metattach d0 d11
# metastat

以上でミラーが開始されます。この時にはディスクの再同期がはじまりますのでディスクアクセスに多少の負荷が生じるでしょう。次の様にコマンドを実行すれば、ディスク状況をGUIで見ることができます。

# metatool

下図の様な画面が表示されると思います。

またディスクデバイスの状況をグラフで見たい場合は「ブラウズ」メニューを開けてください。そこで参照したいデバイスをドロップすれば、次の様に表示されるはずです。下図はd0 d10 d11をモニタしています。

<注意>
Intel SolarisではDiskSuiteによるミラーリング によりディスクアクセスの速度が極端に低下するといった不具合があります。その問題はSun Microsystemsの公式ページにあるパッチを当てる事によって解消することができました。

Solaris8 x86の場合 パッチID : 108694
Solaris7 x86以前の場合 パッチID : 106628

尚Sparc Solarisではこのような不具合はありませんでした。

DiskSuiteによるRAID5ストライピング

RAID5 とは3つ以上のディスクを使いパリティとデータをすべてのディスクに分散させたストライプ方式メタデバイスです。これにより、データの冗長性とアクセス速度を同時に上げる事ができます。ただしRAID5は構成時、既存のデータを破壊するため、既存のファイルシステムには使用できません。
ではミラーリングと同じ様に各ディスクにメタデータベース領域を作成しましょう。今回は新たにc0t2d0を付け加えました。

# metadb -a -f -c2 c0t0d0s3 c0t1d0s3 c0t2d0s3
# metainit d0 -r c0t0d0s7 c0t1d0s7 c0t2d0s7

# metastat newfs /dev/md/rdsk/d4
# fsck /dev/md/rdsk/d4
# mount /dev/md/dsk/d4 /export

連載中

DiskSuiteによるディスクの復旧

障害が発生した場合に復旧できるように、実際にハードディスクの電源を落としてみましょう。もちろんシステムが動作中に行いましょう。どちらかのディスクが破損した場合でもシステムが連結メタデバイスをマウントしていれば動作し続けることができるはずです。

<ディスクの復旧>
metastatコマンドによりメタデバイスを確認するとNeeds maintenanceと表示されていれば、新しいディスクに交換してmetareplaceコマンドを実行します。ディスク破損時にmetastatコマンドで出力されるメッセージにもmetareplaceの説明があると思います。

# metareplace -e [連結メタデバイス名] [破損ディスク]

連結メタデバイス名とはフルパスではなくd1 d2などのデバイス名です。破損ディスクとはc0t1d0s0などのディスク名を指定してください。

<ディスクのメンテナンス>
ミラーディスクのバックアップなどを行う際にサブミラーディスクのミラーリングを連結メタデバイスから切り離す場合、metaofflineコマンドを使います。またその逆に連結メタデバイスに連結させる為のmetaonlineコマンドも用意されています。

# metaoffline [連結メタデバイス名] [切り離しデバイス名]

metareplaceコマンドと同じ様に連結メタデバイス名とはd1 d2などのデバイス名です。切り離しデバイスとはフルパスではなくd10 d11などのメタデバイス名を指定して下さい。

# metaonline [連結メタデバイス名] [結合デバイス名]

metaofflineとまったく同じです。metaofflineで切り離したディスクが結合するディスクの対象になりますので、結合デバイス名とはmetaofflineの切り離しデバイス名と同じと考えても良いでしょう。

 


<戻る>