センリュウのホームページへ ようこそ!
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 作成