中古PCでサーバー構築および運用練習 その2
前回のあらすじ。ノートPCにCentOSを入れ、サスペンド無効化を行った。あとは特に行っていないが、アップデートは行っている。
このサーバー、何に使うかを決めていなかった。少なくとも以下のことをやれるようにしておきたいと思う。
・Docker
・Zabbix
※やりたかったのだが・・・自宅の用でPCを落とし上げしたところ、電源が入らなくなってしまった。ACアダプタより異音がするため、交換することで復旧すると思うのだが、もとよりジャンク同様で購入してきたものであり、まだサービスをインストールしていないため影響はないと判断し、復旧をあきらめることにした。中古PCをサーバーにするにあたっては、気にしなければならない点だと考える。今後は、別の用途で使用しているRaspberry Pi3を使う。やりたかったDockerについては、クラウド環境で行う。
さて、前回の宣言通り、RAIDの構築を行う。その前に基礎知識を。
RAIDは、すごく乱暴に言えば耐障害性と容量効率を上げるために生まれたもの。だから冗長構成であるRAID1があるのだが、2台あって1台分の容量しか使えないため、容量効率は下がっている。データの肥大化も著しくなってきたこともあって、容量効率にも目を向けなければならなくなり、RAID4やRAID5が生まれたと思っている。RAIDの詳細については、以下のサイトに詳しく記載されているので参照されたい。
ストレージ用語解説 RAID (富士通のサイト)
今回は、RAID5を組み、パリティ分散によって耐障害性と容量効率を確保したいと思う。使用するストレージだが、HDDではない。個人用だし、ウチ自身裕福ではない。そこで、USBメモリを使うことにする。USBメモリは書き込みに対する耐久性が弱いのだが、予算だけなら有利である。予算と容量を計算し、HDD1TBのものと比較すると、以下のようになる。 1TBのHDD4台と、32GBのUSBメモリ4本で比較してみた。RAID5の容量は1台分をパリティに使うので、4台で構築するなら3台分が使えるということになる。容量は圧倒的にHDDが上である。が、今回は構築・運用練習である。出費の小さなUSBメモリを使うことにする。
では、USBメモリでRAID構築を行う。USBハブに4本差した姿をお見せしよう。 これを、ノートPCに差す。差し込んだ後の処理は、dmesgコマンドを打つとみることができる。長いので省略するが、/devの配下に/sdb1、/sdc1、/sdd1、/sde1ができた、ということを確認した。確認したら、fdiskコマンドを使い、それぞれのUSBメモリにLinuxパーティションをつける。やっていることはフォーマットと同じ(だと思う)なので、取り扱いには注意すること。
続いて、RAID管理用のソフトをインストールする。mdadmというコマンドである。このコマンドを使って、RAID5アレイを構築してみる。構築後は/proc/mdstatに記録される。
[root@localhost ~]# mdadm --create /dev/md0 --level 5 --raid-devices 4 /dev/sdb1
/dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde1[4] sdd1[2] sdc1[1] sdb1[0]
90633216 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UUU_]
[>....................] recovery = 0.1% (55768/30211072) finish=81.0min speed=6196K/sec
unused devices: <none>
mdadmコマンドを使って状態確認を行うには、--misc --queryをつけて実行する。--detailなら詳細を確認できる。
[root@localhost ~]# mdadm --misc --query /dev/md0
/dev/md0: 86.43GiB raid5 4 devices, 1 spare. Use mdadm --detail for more detail.
[root@localhost ~]# mdadm --misc --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Aug 30 12:25:15 2016
Raid Level : raid5
Array Size : 90633216 (86.43 GiB 92.81 GB)
Used Dev Size : 30211072 (28.81 GiB 30.94 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Aug 30 12:29:12 2016
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 7% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 03c5decb:47c3def9:f41166f4:df9d8b61
Events : 2
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
4 8 65 3 spare rebuilding /dev/sde1
最後に、できたRAIDアレイをマウントする。マウント前にファイルシステムを作ることを忘れずに。
※/etc/fstabを編集し、起動時に自動でマウントするように設定した。設定内容は省略。
[root@localhost ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=256 agcount=16, agsize=1416064 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=22657024, imaxpct=25
= sunit=128 swidth=384 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=11064, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# vi /etc/fstab
[root@localhost ~]# mkdir /kvmdata
[root@localhost ~]# mount /dev/md0 /kvmdata
[root@localhost ~]# df -T
ファイルシス タイプ 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/centos-root xfs 52403200 4372896 48030304 9% /
devtmpfs devtmpfs 1874868 0 1874868 0% /dev
tmpfs tmpfs 1890368 232 1890136 1% /dev/shm
tmpfs tmpfs 1890368 17428 1872940 1% /run
tmpfs tmpfs 1890368 0 1890368 0% /sys/fs/cgroup
/dev/mapper/centos-home xfs 99168964 56388 99112576 1% /home
/dev/sda1 xfs 508588 218288 290300 43% /boot
tmpfs tmpfs 378076 16 378060 1% /run/user/42
tmpfs tmpfs 378076 0 378076 0% /run/user/1000
/dev/md0 xfs 90583840 33312 90550528 1% /kvmdata
相当長くなってしまったので、この辺で終了する。次回はKVMを使い、仮想マシンを作る。
ちなみに、RAID構築およびファイルシステム作成・マウントはLPICレベル2の201試験範囲である。できるようにしておくと、何かと役に立つ。