今回はLinuxサーバ本体のソフトウェアRAIDを監視して、異常検知時にメールでお知らせする設定のチップスです。
現状の確認を行います。
デバイスの確認を行います。
1 2 3 4 |
# ls /dev/sd* /dev/sda /dev/sda2 /dev/sdb /dev/sdb2 /dev/sdc /dev/sdc2 /dev/sdd /dev/sdd2 /dev/sda1 /dev/sda3 /dev/sdb1 /dev/sdb3 /dev/sdc1 /dev/sdc3 /dev/sdd1 /dev/sdd3 |
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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# fdisk -l 警告: GPT (GUID パーティションテーブル) が '/dev/sda' に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。 ディスク /dev/sda: 3000.6 GB, 3000592982016 バイト ヘッド 255, セクタ 63, シリンダ 364801 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O size (minimum/optimal): 4096 bytes / 4096 bytes ディスク識別子: 0x00000000 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 1 267350 2147483647+ ee GPT Partition 1 does not start on physical sector boundary. 警告: GPT (GUID パーティションテーブル) が '/dev/sdb' に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。 ディスク /dev/sdb: 3000.6 GB, 3000592982016 バイト ヘッド 255, セクタ 63, シリンダ 364801 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O size (minimum/optimal): 4096 bytes / 4096 bytes ディスク識別子: 0x00000000 デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 1 267350 2147483647+ ee GPT Partition 1 does not start on physical sector boundary. 警告: GPT (GUID パーティションテーブル) が '/dev/sdc' に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。 ディスク /dev/sdc: 3000.6 GB, 3000592982016 バイト ヘッド 255, セクタ 63, シリンダ 364801 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O size (minimum/optimal): 4096 bytes / 4096 bytes ディスク識別子: 0x00000000 デバイス ブート 始点 終点 ブロック Id システム /dev/sdc1 1 267350 2147483647+ ee GPT Partition 1 does not start on physical sector boundary. 警告: GPT (GUID パーティションテーブル) が '/dev/sdd' に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。 ディスク /dev/sdd: 3000.6 GB, 3000592982016 バイト ヘッド 255, セクタ 63, シリンダ 364801 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O size (minimum/optimal): 4096 bytes / 4096 bytes ディスク識別子: 0x00000000 デバイス ブート 始点 終点 ブロック Id システム /dev/sdd1 1 267350 2147483647+ ee GPT Partition 1 does not start on physical sector boundary. ディスク /dev/md1: 12.6 GB, 12573474816 バイト ヘッド 2, セクタ 4, シリンダ 3069696 Units = シリンダ数 of 8 * 512 = 4096 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O size (minimum/optimal): 524288 bytes / 1048576 bytes ディスク識別子: 0x00000000 ディスク /dev/md2: 5987.9 GB, 5987911073792 バイト ヘッド 2, セクタ 4, シリンダ 1461892352 Units = シリンダ数 of 8 * 512 = 4096 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O size (minimum/optimal): 524288 bytes / 1048576 bytes ディスク識別子: 0x00000000 ディスク /dev/mapper/VolGroup-LogVol00: 5987.9 GB, 5987910025216 バイト ヘッド 255, セクタ 63, シリンダ 727988 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O size (minimum/optimal): 524288 bytes / 1048576 bytes ディスク識別子: 0x00000000 ディスク /dev/md0: 209 MB, 209649664 バイト ヘッド 2, セクタ 4, シリンダ 51184 Units = シリンダ数 of 8 * 512 = 4096 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O size (minimum/optimal): 4096 bytes / 4096 bytes ディスク識別子: 0x00000000 |
RAID状況の確認を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# cat /proc/mdstat Personalities : [raid10] [raid1] md0 : active raid1 sda2[0] sdd2[3] sdc2[2] sdb2[1] 204736 blocks super 1.0 [4/4] [UUUU] md2 : active raid10 sdd3[3] sdc3[2] sdb3[1] sda3[0] 5847569408 blocks super 1.1 512K chunks 2 near-copies [4/4] [UUUU] bitmap: 0/44 pages [0KB], 65536KB chunk md1 : active raid10 sdd1[3] sdc1[2] sda1[0] sdb1[1] 12278784 blocks super 1.1 512K chunks 2 near-copies [4/4] [UUUU] unused devices: <none> |
詳細確認を行います。
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 |
# mdadm --detail /dev/md0 /dev/md0: Version : 1.0 Creation Time : Sun Nov 13 04:25:08 2016 Raid Level : raid1 Array Size : 204736 (199.97 MiB 209.65 MB) Used Dev Size : 204736 (199.97 MiB 209.65 MB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Apr 10 18:37:37 2017 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Name : localhost.localdomain:0 UUID : ede21cfe:23ab6795:2d3097de:d3e5bc01 Events : 94 Number Major Minor RaidDevice State 0 8 2 0 active sync /dev/sda2 1 8 18 1 active sync /dev/sdb2 2 8 34 2 active sync /dev/sdc2 3 8 50 3 active sync /dev/sdd2 |
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 |
# mdadm --detail /dev/md1 /dev/md1: Version : 1.1 Creation Time : Sun Nov 13 03:38:27 2016 Raid Level : raid10 Array Size : 12278784 (11.71 GiB 12.57 GB) Used Dev Size : 6139392 (5.85 GiB 6.29 GB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Apr 10 18:37:36 2017 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : near=2 Chunk Size : 512K Name : localhost.localdomain:1 UUID : 26467776:2ddd4345:8dbf0440:4cdf661e Events : 73 Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1 2 8 33 2 active sync /dev/sdc1 3 8 49 3 active sync /dev/sdd1 |
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 |
# mdadm --detail /dev/md2 /dev/md2: Version : 1.1 Creation Time : Sun Nov 13 04:25:01 2016 Raid Level : raid10 Array Size : 5847569408 (5576.68 GiB 5987.91 GB) Used Dev Size : 2923784704 (2788.34 GiB 2993.96 GB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Mon Apr 10 19:05:41 2017 State : active Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : near=2 Chunk Size : 512K Name : localhost.localdomain:2 UUID : 2639204a:74201894:72c9e310:a9182dcb Events : 60684 Number Major Minor RaidDevice State 0 8 3 0 active sync /dev/sda3 1 8 19 1 active sync /dev/sdb3 2 8 35 2 active sync /dev/sdc3 3 8 51 3 active sync /dev/sdd3 |
1 2 3 4 5 |
# mdadm --detail --scan ARRAY /dev/md1 metadata=1.1 name=localhost.localdomain:1 UUID=26467776:2ddd4345:8dbf0440:4cdf661e ARRAY /dev/md2 metadata=1.1 name=localhost.localdomain:2 UUID=2639204a:74201894:72c9e310:a9182dcb ARRAY /dev/md0 metadata=1.0 name=localhost.localdomain:0 UUID=ede21cfe:23ab6795:2d3097de:d3e5bc01 |
きちんと設定されているか確認します。
1 2 3 4 5 6 7 8 |
# cat /etc/mdadm.conf # mdadm.conf written out by anaconda MAILADDR root AUTO +imsm +1.x -all ARRAY /dev/md0 level=raid1 num-devices=4 UUID=ede21cfe:23ab6795:2d3097de:d3e5bc01 ARRAY /dev/md1 level=raid10 num-devices=4 UUID=26467776:2ddd4345:8dbf0440:4cdf661e ARRAY /dev/md2 level=raid10 num-devices=4 UUID=2639204a:74201894:72c9e310:a9182dcb |
元設定ファイルコピーしてバックアップを行います。
1 |
# cp -p /etc/mdadm.conf /etc/mdadm.conf.org |
1 2 3 4 5 6 7 8 9 |
# vi /etc/mdadm.conf MAILADDR root ↓変更 #MAILADDR root MAILADDR foobar@example.com |
1 2 |
# /etc/rc.d/init.d/mdmonitor status mdmonitor (pid 1228) を実行中... |
テストメール送信
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# mdadm --monitor --test --oneshot --scan This is an automatically generated mail message from mdadm running on backup2.localdomain A TestMessage event had been detected on md device /dev/md1. Faithfully yours, etc. P.S. The /proc/mdstat file currently contains the following: Personalities : [raid10] [raid1] md0 : active raid1 sda2[0] sdd2[3] sdc2[2] sdb2[1] 204736 blocks super 1.0 [4/4] [UUUU] md2 : active raid10 sdd3[3] sdc3[2] sdb3[1] sda3[0] 5847569408 blocks super 1.1 512K chunks 2 near-copies [4/4] [UUUU] bitmap: 5/44 pages [20KB], 65536KB chunk md1 : active raid10 sdd1[3] sdc1[2] sda1[0] sdb1[1] 12278784 blocks super 1.1 512K chunks 2 near-copies [4/4] [UUUU] unused devices: <none> |
プロバイダの規制の関係で届かない場合は、外部のメールサーバを使うなどして、メール送信が出来るようにしましょう。
モニタリング設定
正常かどうか監視する
1 |
# /sbin/mdadm --monitor --scan -1 |
Cron設定
1 2 3 4 5 6 7 8 9 |
# vi /etc/crontab ※以下を追加する #===================================================== # RAID異常監視 RAID10 #===================================================== 0 0 * * * root /sbin/mdadm --monitor --scan -1 #===================================================== |
再起動させて反映させます。
1 |
# service crond restart |
これで本体のソフトウェアRAIDの監視を行い、エラーが出たらメールが届きます。
他にMuninなどの外部の監視サーバからRAIDを2重で監視すると良いかと思います。2重以上の構成で対応すると1つのミドルウェアでは見逃していたデータの差異や発見があったりします。