中古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のものと比較すると、以下のようになる。 alt 1TBのHDD4台と、32GBのUSBメモリ4本で比較してみた。RAID5の容量は1台分をパリティに使うので、4台で構築するなら3台分が使えるということになる。容量は圧倒的にHDDが上である。が、今回は構築・運用練習である。出費の小さなUSBメモリを使うことにする。

では、USBメモリでRAID構築を行う。USBハブに4本差した姿をお見せしよう。 alt これを、ノート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試験範囲である。できるようにしておくと、何かと役に立つ。