>お楽しみコーナー>Linux>RAID サイトマップ 最終更新日:2005/07/22

センリュウのホームページへ ようこそ!

 RAID   FedoraCore2でソフトウェアRAID(RAID1) 

ここでは、FedoraCore2でOSまるごとのミラーリング(RAID1)を行います。また、障害時には、ブザーで知らせるようにしてみました。

●インストール

ハードディスクは、同じものを2つ用意。

パーティションの設定(FedoraCore2インストール時)
DiskDruidを使用して手動設定
@それぞれのハードディスク(hdaとhdcとする)→編集
ファイルシステムタイプは、hda1、hda3にはsoftwareRAID、hda2にはswapを指定
容量は、hda1に100M(/boot用)、hda2(swap用)に512M以上、残りをhda3(/用)に配分。
もう一つのハードディスクも全く同じように構成。
ARAIDデバイスの作成
/dev/md0
 RAID(A)→RAIDデバイスを作成
 hda1とhdb1をチェック、マウントポイントを/boot、RAIDデバイスはmd0、RAIDレベルをRAID1。
/dev/md1
 再び同じようにして、hda3とhdb3を設定。マウントポイントを/、RAIDデバイスはmd1、RAIDレベルをRAID1。

NetAtalkのインストール
/mnt/cdrom/Fedora/RPMSのnetatalk-devel-***.i386.rpmとnetatalk-***.i386.rpm。
# rpm -i *******.rpm

RAIDの確認
# df  RAIDデバイスがマウントされているか確認
# cat /proc/mdstat  RAIDデバイスの動作状況

1台目がダウンした場合、2台目のハードディスクからも起動できるようにしておく(2台目のMBRマスターブートレコーダにもgrubを書き込んでおく)
# grub
grub> device (hd0) /dev/hdc  hd0をhdcにフィックス
grub> root (hd0,0)  GRUBのルートパーティションを(hd0,0)に指定
grub> install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf  GRUBをhd0のMBRにインストール
grub> quit
grubではhda1などlinux流の命名とは異なり、BIOSに認識された順番でハードディスクにhd0、hd1と名前が付く。また、パーティションには、0から始まる連番が振られる。(hd0,0)、(hd0,1)等々。

/boot/grub/grub.conf  復旧の時必要となるので記録しておく
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Fedora Core (2.6.5-1.358)
root (hd0,0)
kernel /vmlinuz-2.6.5-1.358 ro root=/dev/md1 rhgb quiet
initrd /initrd-2.6.5-1.358.img

●sambaの設定

sambaユーザーの登録
linuxユーザーとsambaユーザーの両方に作る必要がある。
パスワードはsamba独自のものが使われるので、linuxユーザーには設定する必要はない。
# groupadd sambauser   グループの作成 
# adduser -g sambauser -s /bin/false user1
# pdbedit -a -u user1   user1のパスワードを2回入力
削除は、# pdbedit -x -u user1

/etc/samba/smb.confの編集
頭の#や;はコメントアウト行なので、使用するときは;をはずす。
[global]、[homes]、[printers]セクションだけは特別な意味をもっている。

[global]
workgroup = WORKGROUP  編集。
server string = Samba Server
hosts allow = 192.168.0. 127.0.0.1  編集。
printcap name = /etc/printcap
load printers = yes
log file = /var/log/samba/%m.log
max log size = 50
security = user  ユーザー・アカウントを使ってアクセスする。
encrypt passwords = yes  以下2行、パスワード関係。;をはずす。
smb passwd file = /etc/samba/smbpasswd
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no 
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
template shell = /bin/false
winbind use default domain = no
unix charset = UTF-8  最後に以下2行を加える。文字コードに関する設定。
dos charset = CP932

[homes]
comment = Home Directories
browseable = no  セクション名での表示をさせない。(そうでないとhomesとユーザーの2つになる。)
writable = yes
valid users = %S  アクセスを許可するユーザー。%Sは、現在のサービス名→現在ログインしているユーザーの意。
create mode = 0664
directory mode = 0775

[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes

[public]  ;をはずす。
comment = Public Stuff
path = /home/samba  このディレクトリを作成して、グループ所有をsambauser、モードを770にしておく。
public = yes
read only = yes  yes のままでよい。下のwrite listで書き込みは限定許可する。
write list = @sambauser  sambauserグループに許可。
create mode = 0664
directory mode = 0775

●NetAtalk(Mac用 双方向暗号化パスワード環境)

linuxユーザーの登録
linuxユーザーに登録するとき、sambaとは違ってシェルは/bin/falseではなく、/bin/bashなどを使わないと認証されないので注意。
パスワードはnetatalk独自のものが使われるので、linuxユーザーには設定する必要はない。
所属グループはsambaユーザーと同じグループにしておくと便利。
# adduser -g sambauser -s /bin/bash ***

設定ファイル(/etc/atalk/)
AppleVolumes.default ~
/home/samba public
atalked.conf eth0    eth0とだけ書き込んでおくと、細かい設定は自動的に書き込まれる。
afpd.conf - -transall -uamlist uams_randnum.so,uams_guest.so -passwdfile /etc/atalk/afppasswd

netatalk用のパスワードファイル(afppasswd)の作成
# afppasswd -c -a -p /etc/atalk/afppasswd
これで自動的に/etc/atalk/afppasswdが作成される(目的のユーザーが登録されているか確認しておく)。

ユーザー(****)のパスワードの登録(または変更)
# afppasswd -p /etc/atalk/afppasswd ****
Enter NEW AFP password: 
Enter NEW AFP password again: 
afppasswd: updated password.

●障害時のディスク復旧

障害が生じてないか確認
# cat /proc/mdstat  [UU]になっていればOK、[U_]などだと障害発生。
# lsraid -A -p  missingが出ていれば、障害発生。

復旧作業
hdaが壊れたとする。構成 hda1=/boot、hda2=swap、hda3=/
@まず、電源を落として壊れたディスクを交換。
Asfdiskコマンドで生き残ったディスクのパーティション情報をコピーして、swap領域を作成。
# sfdisk -d /dev/hdc > ptable
# sfdisk /dev/hda < ptable
# sfdisk -l /dev/hda  確認する。
# mkswap /dev/hda2
BraidhotaddコマンドでRAIDデバイスごとにRAIDの再構築
# raidhotadd /dev/md0 /dev/hda1
# raidhotadd /dev/md1 /dev/hda3
C以上ですぐにリカバリが開始されるが、その進捗状況を確認することができる。
# cat /proc/mdstat
DgrubをMBR(マスターブートローダ)にインストールしておく。
# grub
grub> device (hd0) /dev/hda
grub> root (hd0,0)
grub> install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf
grub> quit

●自動的にRAIDの状態をチェックし、ブザーで知らせる

FedoraCore2でブザーを鳴らすようにする
# modprobe pcspkr
これは、/etc/rc.d/rc.localにでも書き込んでおく。

ブザー用シェル・スクリプト
以下のスクリプトを/etc/cron.hourly/に入れておく。
これは、障害が起きたときは連続beep音で、HDDの使用容量が95%を超えたときは2連続5回のbeep音で知らせるというもの。

#! /bin/bash

lsraid -A -p | grep missing > /dev/null
if [ $? -eq 0 ]
then
echo "caution! HDD clash!"
while :
do
echo -e '\007\c'
sleep 0.5
done
else
echo "HDD safty runing!"
fi

df | grep 9[5-9]% > /dev/null
if [ $? -eq 0 ]
then
echo "caution! small capacity!"
var=1
while :
do
echo -e '\007\c'
sleep 0.5
echo -e '\007\c'
let var=var+1
if [ $var -gt 5 ]
then
break
fi
sleep 2
done
else
echo "capacity ok!"
fi


履歴 2004/11 作成