xserver
Home クッキー及びWeb ビーコンについて



ディスククォータを設定する

ソフトウェアRAID の実装

自宅サーバーとはいえ、いつどんな災害やトラブルに見舞われても動じないようにするためにも、RAIDを組んでおいたほうが安心ですし、精神衛生上、好ましい事です。ここでは、ソフトウェアRAIDを使って2台のHDDを同期させる方法について解説していきます。




 まず、raidtools パッケージがインストールされていることを確認します。
 ※Fedora Core2からはRAIDの管理にraidtools ではなく、mdadm を用います。

# rpm -q raidtools
raidtools-1.00.3-2



■fdisk によるパーティションの作成

 まず、アレイ構成にするため極力、同容量のディスクサイズのHDDを2台以上用意します。ここでは、30GBのHDDを2台用意し、RAID1(ミラーディスク)を組んでみることにします。パーティションを作成するには、fdisk コマンドに続いて、2台目のデバイス(通常は、/dev/hdb)を引数に指定します。パーティションの作成方法は、m を入力してヘルプを表示すればおおまかな操作方法はわかると思います。なお、1台目のHDD(/dev/hda )と同じパーティション構成にするため、予め、/dev/hda をの構成を確認しておきましょう。また、/dev/hdaと/dev/hdb のhead 数が違う場合もあり、始点・終点を目安にパーティションを作成する場合は正確な値を指定できなくなってしまうので、「x」(エキスパートモード)をタイプしてデフォルトのhead数を/dev/hda と同じ値に変更しておきましょう。

# fdisk /dev/hda # 1台目のHDDのパーティション構成を確認する 

コマンド (m でヘルプ): p # p で現在の構成を確認する

Disk /dev/hda: 27.2 GB, 27201871872 bytes
255 heads, 63 sectors/track, 3307 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート 始点 終点 ブロック ID システム
/dev/hda1 * 1 6 48163+ 83 Linux
/dev/hda2 7 1089 8699197+ 83 Linux
/dev/hda3 1090 2172 8699197+ 83 Linux
/dev/hda4 2173 3307 9116887+ f Win95 拡張領域 (LBA)
/dev/hda5 2173 2205 265041 82 Linux スワップ
/dev/hda6 2206 2335 1044193+ 83 Linux
/dev/hda7 2336 3307 7807558+ 83 Linux

# fdisk /dev/hdb  # 2台目のHDDのパーティションが存在しないことを確認する


コマンド (m でヘルプ): p

Disk /dev/hdb: 30.0 GB, 30003240960 bytes
255 heads, 63 sectors/track, 3647 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート 始点 終点 ブロック ID システム


 /dev/hdb にパーティションを作成するには、n(新規作成)をタイプし、プライマリパーティション(p)、あるいは拡張パーティション(e)のどちらを作成するか選択します。プライマリパーティションは1台のHDDに対して3つまで作成することが可能で、拡張パーティションはひとつだけ作成することができます。また、拡張パーティション内には、HDDの要領が許す限りの論理ディスクを作成することができます。

# fdisk /dev/hdb

コマンド (m でヘルプ): n # パーティションを作成する
コマンドアクション
e 拡張
p 基本領域 (1-4)
p  # 基本領域(プライマリ)を作成する
領域番号 (1-4): 1 # 領域番号を指定する
最初 シリンダ (1-3647, 初期値 1): # シリンダ数の初期値を指定する
初期値 1 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-3647, 初期値 3647): 6
# シリンダ数の終点シリンダを指定する

# 以下同様にして、/dev/hda と同様の構成となるようにパーティションを作成する

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 2
最初 シリンダ (7-3647, 初期値 7):
初期値 7 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (7-3647, 初期値 3647): 1089

 全てのパーティションを作成し終えたら、w をタイプして上記で作成した構成を保存しておきます。もう一度、最初から作成しなおすには、q を入力します。

コマンド (m でヘルプ): w # パーティション構成を保存する
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

# fdisk /dev/hdb # 正常に作成されているかどうか p で確認する

コマンド (m でヘルプ): p

Disk /dev/hdb: 30.0 GB, 30003240960 bytes
255 heads, 63 sectors/track, 3647 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート 始点 終点 ブロック ID システム
/dev/hdb1 1 6 48163+ 83 Linux
/dev/hdb2 7 1089 8699197+ 83 Linux
/dev/hdb3 1090 2172 8699197+ 83 Linux
/dev/hdb4 2173 3647 11847937+ 5 拡張領域
/dev/hdb5 2173 2205 265041 83 Linux
/dev/hdb6 2206 2335 1044193+ 83 Linux
/dev/hdb7 2336 3307 7807558+ 83 Linux

■パーティションタイプの変更

 最後に、領域のシステムタイプを Linux(0x83)からLinux raid 自動検出(0xfd)に変更しておく必要があります。パーティションタイプを変更するには、t を入力し、16進数コードに fd と入力します。これは、拡張パーティションを除く全てのパーティションに対して同様の操作を繰り返します。

# fdisk /dev/hdb

コマンド (m でヘルプ): t # パーティションタイプの変更
領域番号 (1-7): 1 
16進数コード (L コマンドでコードリスト表示): fd # コードを fd にする
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): t
領域番号 (1-7): 2
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 2 から fd (Linux raid 自動検出) に変更しました

中略

コマンド (m でヘルプ): p

Disk /dev/hdb: 30.0 GB, 30003240960 bytes
255 heads, 63 sectors/track, 3647 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

# 以下のように拡張パーティションを除く全てのパーティションが自動検出に設定されたことを確認しておく(最後に w を入力して、設定を保存しておきましょう)
デバイス ブート 始点 終点 ブロック ID システム
/dev/hdb1 1 6 48163+ fd Linux raid 自動検出
/dev/hdb2 7 1089 8699197+ fd Linux raid 自動検出
/dev/hdb3 1090 2172 8699197+ fd Linux raid 自動検出
/dev/hdb4 2173 3647 11847937+ 5 拡張領域
/dev/hdb5 2173 2205 265041 fd Linux raid 自動検出
/dev/hdb6 2206 2335 1044193+ fd Linux raid 自動検出
/dev/hdb7 2336 3307 7807558+ fd Linux raid 自動検出

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。


 最終的な構成を確認するには、fdisk -l コマンドを使用します。以下のように設定されていれば問題ないでしょう。なお、ブートフラグをまだ設定していない方はきちんと設定しておきましょう。ブートフラグを設定するには、プロンプトで a

# fdisk -l

Disk /dev/hda: 27.2 GB, 27201871872 bytes
255 heads, 63 sectors/track, 3307 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート 始点 終点 ブロック ID システム
/dev/hda1 * 1 6 48163+ 83 Linux
/dev/hda2 7 1089 8699197+ 83 Linux
/dev/hda3 1090 2172 8699197+ 83 Linux
/dev/hda4 2173 3307 9116887+ f Win95 拡張領域 (LBA)
/dev/hda5 2173 2205 265041 82 Linux スワップ
/dev/hda6 2206 2335 1044193+ 83 Linux
/dev/hda7 2336 3307 7807558+ 83 Linux

Disk /dev/hdb: 30.0 GB, 30003240960 bytes
255 heads, 63 sectors/track, 3647 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート 始点 終点 ブロック ID システム
/dev/hdb1 * 1 6 48163+ fd Linux raid 自動検出
/dev/hdb2 7 1089 8699197+ fd Linux raid 自動検出
/dev/hdb3 1090 2172 8699197+ fd Linux raid 自動検出
/dev/hdb4 2173 3647 11847937+ 5 拡張領域
/dev/hdb5 2173 2205 265041 fd Linux raid 自動検出
/dev/hdb6 2206 2335 1044193+ fd Linux raid 自動検出
/dev/hdb7 2336 3307 7807558+ fd Linux raid 自動検出

■array の再構築 [ /etc/raidtab ]

# cd /usr/share/doc/raidtools-1.00.3
# cp raid1.conf.sample /etc/raidtab

 それでは、実際に/etc/raidtab を編集していきます。まず、重要な設定項目としてchunk-size というものがあります。これは、デバイスに書き込む最小データ量(KB)を示しており、各自の環境に応じて適切に設定しておく必要があります。仮にHDDが大容量の場合に、4KBと指定した場合などは、扱うデータの分割が細かすぎて読み書きの効率が悪くなったりします。また、chunk-size値が大きすぎても、chunk-sizeを書き込む時間が長くなり、非効率になります。また、データが破損した際の修復率も値が小さい時に比べてより大雑把なものになります。効率よくパフォーマンスを求めるのであれば、chunk-sizeの値を色々と変更し、使用環境に適したサイズを設定するようにしてください。

◎各項目の意味
 raiddev RAIDデバイスファイル名
 raid-level RAIDレベル(0,1,5 のいずれかを指定)
 nr-raid-disks 使用するディスクの数
 nr-spare-disks 予備のディスク数
 chunk-size デバイスに書き込む最小データ量(KB)
 persistent-superblock RAIDデバイスの自動認識
 device RAIDを構成するデバイス名
 raid-disk deviceパラメータディスク番号

 筆者の環境での/etc/raidtab は以下のように設定しました。

# boot ------------------------------
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
persistent-superblock 1

device /dev/hda1
raid-disk 0

device /dev/hdb1
raid-disk 1

# usr -------------------------------
raiddev /dev/md1
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
persistent-superblock 1

device /dev/hda2
raid-disk 0

device /dev/hdb2
raid-disk 1

# var -------------------------------
raiddev /dev/md2
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
persistent-superblock 1

device /dev/hda3
raid-disk 0

device /dev/hdb3
raid-disk 1

# swap ------------------------------

raiddev /dev/md3
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
persistent-superblock 1

device /dev/hda5
raid-disk 0

device /dev/hdb5
raid-disk 1

# / --------------------------------
raiddev /dev/md4
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
persistent-superblock 1

device /dev/hda6
raid-disk 0

device /dev/hdb6
raid-disk 1

# home -----------------------------
raiddev /dev/md5
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
persistent-superblock 1

device /dev/hda7
raid-disk 0

device /dev/hdb7
raid-disk 1

■RAIDアレイの構築

 RAID アレイを構築するには、mkraid コマンドを使用します。

# mkraid /dev/md0
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hda1, failed
disk 1: /dev/hdb1, 64228kB, raid superblock at 64128kB
# mkraid /dev/md1
# mkraid /dev/md2
# mkraid /dev/md3
# mkraid /dev/md4
# mkraid /dev/md5

 もし、上記コマンド実行時に以下のようなエラーメッセージが表示された場合は、--really-force をつけてコマンドを実行します。

# mkraid /dev/md0
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hda1, 48163kB, raid superblock at 48064kB
/dev/hda1 appears to contain an ext2 filesystem -- use -f to override
mkraid: aborted.
(In addition to the above messages, see the syslog and /proc/mdstat as well
for potential clues.)
# mkraid --really-force /dev/md0
DESTROYING the contents of /dev/md0 in 5 seconds, Ctrl-C if unsure!
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hda1, 48163kB, raid superblock at 48064kB
disk 1: /dev/hdb1, 48163kB, raid superblock at 48064kB

■ファイルシステムをフォーマットする

 次に、mkfs コマンドを使用してファイルシステムを初期化しておきます。今回は、ファイルシステムはEXT3を使用することとします。

# mkfs.ext3 /dev/md0
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
16064 inodes, 64128 blocks
3206 blocks (5.00%) reserved for the super user
First data block=1
8 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# mkfs.ext3 /dev/md1
# mkfs.ext3 /dev/md2
# mkfs.ext3 /dev/md4
# mkfs.ext3 /dev/md5

■swap領域のフォーマット

# mkswap /dev/md3
Setting up swapspace version 1, size = 1077407 kB

■ファイルシステムのパラメータの調整

# tune2fs -j -c 3 /dev/md0
tune2fs 1.32 (09-Nov-2002)
Setting maximal mount count to 3
The filesystem already has a journal.
# tune2fs -j -c 3 /dev/md1
# tune2fs -j -c 3 /dev/md2
# tune2fs -j -c 3 /dev/md3
# tune2fs -j -c 3 /dev/md4
# tune2fs -j -c 3 /dev/md5



■raidhotaddコマンドでRAIDの再構築(復旧方法)

/etc/raidtab を参照し、その内容からどのパーティション(/dev/hd?)が、どのRAIDボリューム(/dev/md?)に関連付けられているかを確認しておきます。続いて、/dev/hdb3側のパーティションをraidhotaddコマンドを用いてRAIDデバイスに関連付けます。

# cat /etc/raidtab
raiddev /dev/md1
raid-level 1
nr-raid-disks 2
chunk-size 64
persistent-superblock 1
nr-spare-disks 0
device /dev/hda3
raid-disk 0
device /dev/hdb3
raid-disk 1

# raidhotadd /dev/md1 /dev/hdb3

raidhotadd コマンドを実行すると直ちにRAIDの再構築が始まります。また、システム起動時にバックグラウンドでRAIDの再構築が始まりますが、大容量なRAIDボリュームがある場合は、RAIDボリュームの構築が間に合わず、以下の例のように再構築が継続される場合があります。いずれも、cat /proc/mdstat コマンドで現在の状況がわかり、全てのmdデバイスがアクティブな状態であるかどうか確認してください。[2/2] や[UU] と表示されていれば問題ありません。

# cat /proc/mdstat
Personalities : [raid0] [raid1]
md2 : active raid0 hdb2[1] hda2[0]
17398144 blocks 64k chunks

md3 : active raid1 hdb5[2] hda5[0]
4200896 blocks [2/1] [U_]
[================>....] recovery = 83.5% (3509760/4200896) finish=1.6min speed=7184K/sec

md4 : active raid1 hdb6[1] hda6[0]
264960 blocks [2/2] [UU]



■トラブルシューティング [ no MD device file in /dev ]

 なんらかの拍子(?)で、/dev 以下のmd デバイスを削除してしまったり、なにもしてないはずなのにmd0 やmd1 がない場合は、mkraid コマンド実行時に「cannot determine md version: no MD device file in /dev.」のようなエラーメッセージが表示されます。その場合は、以下のようにして、md デバイスを作成します。

# cd /dev
# ./MAKEDEV md
# ls md*







TOPに戻る

Sponcerd Link


Search
 
Web サイト内
Rental Server

【レンタルサーバのXbit】 低価格・高品質のビジネスクオリティー。300メガ1,050円~30分で サービススタート可能!


容量300MB、月額125円、高性能なサーバが日本最大級のバックボーンに直結。
さくらのレンタルサーバ



当サイトはLinux自宅サーバーの構築を目的としたサイトです。
当サイトに関するご意見、ご要望等は、こちらのメールアドレスよりお願いします。
Beginning | Introduction | Installation | Server |
Security | Tips | Related-Sites
Copyright©2003-2006 KORO All Rights Reserved.
総計:
今日:
昨日: