ソフトウェアRAID(RAID1)セットアップ
(前提条件)
・ /dev/sdbと/dev/sdcの2台の同じサイズのハードディスクでRAID1を構築
・ アラートメールは、rootに送信
/dev/md0の作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
parted --script /dev/sdb "mklabel gpt" parted --script /dev/sdc "mklabel gpt" parted --script /dev/sdb "mkpart primary 0% 100%" parted --script /dev/sdc "mkpart primary 0% 100%" parted --script /dev/sdb "set 1 raid on" parted --script /dev/sdc "set 1 raid on" mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb1 /dev/sdc1 cat /proc/mdstat # 状態確認 ( [UU] となっていれば OK ) # 初期化終了まで待つ mkfs.xfs -i size=1024 -s size=4096 /dev/md0 mount /dev/md0 /mnt |
RAIDチェック設定
1 2 |
# デバイス名の設定 CHECK_DEVS="md0" |
1 2 |
# Run system wide raid-check once a week on Sunday at 1am by default 0 1 * * Sun root /usr/sbin/raid-check |
1 2 3 4 5 6 7 |
mdadm --detail --brief /dev/md0 >> /etc/mdadm.conf echo "MAILADDR root" >> /etc/mdadm.conf systemctl restart mdmonitor # メール送信テスト mdadm --monitor --scan --oneshot --test |
自動マウント
1 |
/dev/md0 /mnt xfs defaults 0 0 |
ハードウェアRAID監視セットアップ
(前提条件)
・ 各ハードウェアメーカのダウンロードサイトからStorCLIパッケージをダウンロード
→ (例) Dell PowerEdge T140(PERCCLI_D6YWP_7.1327.00_A09_Linux.tar.gz)
・ RAID1の構成を想定
パッケージのインストール
1 2 |
tar zxvf PERCCLI_D6YWP_7.1327.00_A09_Linux.tar.gz rpm -ivh perccli-007.1327.0000.0000-1.noarch.rpm |
各種スクリプト
CLIの簡略化コマンド
1 2 3 |
#!/bin/sh /opt/MegaRAID/perccli/perccli64 $* |
RAIDの状態表示コマンド
1 2 3 4 5 6 |
#!/bin/sh # /opt/MegaRAID/perccli/perccli64 $* # /opt/MegaRAID/perccli/perccli64 /c0 show # /opt/MegaRAID/perccli/perccli64 /c0/vall show all /opt/MegaRAID/perccli/perccli64 /c0/vall show all |
RAIDの状態を30分ごとに監視し障害が発生した場合は、RAIDの状態をメールする。
”RAID1 Optl”の文字列がある場合は、正常な状態と判断している。
1 2 3 4 5 6 7 8 9 10 |
#!/bin/sh /usr/local/sbin/perccli.sh | grep "RAID1 Optl" >/dev/null 2>&1 if [ $? != 0 ]; then echo "" echo "**** Raid_Check Alert ****" /usr/local/sbin/perccli.sh echo "" fi |
1 |
0,30 * * * * /usr/local/sbin/Raid_Check.sh |
logwatch
logwatchで毎日RAIDの状態を報告する。
以下の2個のファイルを作成する。
Titleは、ハードウェアの型番によって変更する。
1 2 |
Title = "Broadcom / LSI MegaRAID SAS-3 3008 [Fury] status" LogFile = NONE |
logwatchで通知する内容は、「system(“/usr/local/sbin/perccli.sh | head -42 | tail -36”);」で調整する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
####################################################### ## Copyright (c) 2008 Kirk Bauer ## Covered under the included MIT/X-Consortium License: ## http://www.opensource.org/licenses/mit-license.php ## All modifications and contributions by other persons to ## this script are assumed to have been donated to the ## Logwatch project and thus assume the above copyright ## and licensing terms. If you want to make contributions ## under your own copyright or a different license this ## must be explicitly stated in the contribution an the ## Logwatch project reserves the right to not accept such ## contributions. If you have made significant ## contributions to this script and want to claim ## copyright please contact logwatch-devel@lists.sourceforge.net. ######################################################### $| = 1; use POSIX qw(uname); my (%Config); my $Debug = $ENV{'LOGWATCH_DEBUG'} || 0; my $Detail = $ENV{'LOGWATCH_DETAIL_LEVEL'} || 0; my $logwatch_hostname = $ENV{'LOGWATCH_ONLY_HOSTNAME'}; my $show_home_dir_sizes = $ENV{'show_home_dir_sizes'} || 0; my $home_dir = $ENV{'home_dir'} || 0; my $show_mail_dir_sizes = $ENV{'show_mail_dir_sizes'} || 0; my $mail_dir = $ENV{'mail_dir'} || 0; my $show_disk_usage = $ENV{'show_disk_usage'} || 0; my $diskfull_threshhold = $ENV{'diskfull_threshold'} || 90; my $local_disks_only = $ENV{'local_disks_only'} || 0; my $df_options; my $disk_cmd; my ($OSname, $hostname, $release, $version, $machine) = POSIX::uname(); $hostname =~ s/\..*//; exit (0) if ($ENV{'LOGWATCH_ONLY_HOSTNAME'} and ($logwatch_hostname ne $hostname )); if ( $Debug >= 5 ) { print STDERR "\n\nDEBUG: Inside zz-disk-space Filter \n\n"; $DebugCounter = 1; } ##################### #Main #Only show disk space "df" by default -mgt system("/usr/local/sbin/perccli.sh | head -42 | tail -36"); # vi: shiftwidth=3 tabstop=3 syntax=perl et # Local Variables: # mode: perl # perl-indent-level: 3 # indent-tabs-mode: nil # End: |