CentOSでストレージサーバ(RAID5)を組んでみる – その2(OS導入・RAID構築編)

移転前のサイトからの転記です。日付は当時のものを使用しています。文言などは若干修正を入れています(7年前なので表現が若くて恥ずかしい)。


前回の記事まででハードウェアの組み立てが完了したのでいよいよOSを導入します。

CentOSの入手

USBメモリから起動するインストールメディアを作成します。

まずCentOS DVDのISOイメージをDLしておきます。USBメモリをFAT32でフォーマットし、USBメモリにLinux ISOイメージを書き込むアプリケーション UNetbootin を使用して書き込みました。メディア作成は30分程度で完了でした。

OSインストールエラーと対応

インストール時のRAIDはOSも冗長化出来るのが強みのようですが、OSは冗長化せずに実施します。

パーティション分割とスワップ (swap) 領域

OSインストールを実施する前に、記憶領域に対してパーティション分割を実施します。ここでブート領域、ルート領域、スワップ領域それぞれに対する割り当て容量を指定します。ここでスワップ領域 (仮想記憶) について補足すると、物理メモリ (DDR, 主記憶) の内容を一時的に退避させる領域です。システムはプロセスをまず主記憶に読みに行き、そこに存在しなければ仮想記憶から物理メモリに書き戻すといった動作をしています。こうすることで主記憶以上のメモリ容量が確保でき、物理メモリを使い切ってしまってシステムが不安定に陥るなどのリスクを防ぐことができます。win環境では意識的に扱いませんが、Linux環境ではスワップ領域を明示的に割り当てることができます (OSインストール後であってもコマンドで実施可能なようです) 。

エラー (bootloader install failed……) の発生

OSインストールを進めていたところ「bootloader install failed……」というエラーが発生しました。Winで使用していたHDDを流用していますが、ファイルシステムが消しきれていないことが原因でエラーが出たと推測します。OSはまっさらな工場出荷状態のストレージを別途購入し、そこにインストールすることにしました。

ストレージ用HDD5台に加えてケース内に配置することになるためコンパクトなものを所望します。はじめはSSDが妥当かと考えましたが、CentOSのOS部に必要な容量は16GBで十分なことが分かりUSBメモリを用意しました。USBメモリを別途購入してフォーマット後、再実施です。CentOSをUSBメモリにインストールも参考にさせていただきました。

USBメモリインストール:1回目 (失敗)

USBメモリ追加後の構成です。

初期状態です。

ブート設定です。

ルート設定です。

スワップ設定です。

完了後、以下のエラーが発生しました。自動設定で割り当てられたEFIなるものを作成して再度トライしてみます。

USBメモリインストール:2回目 (成功)

EFI設定です。

ブート設定です。

ルート設定です。

スワップ設定です。

やっと通しました。その他、ネットワーク設定などを実施してインストール開始となりました。数千個のパッケージをインストールするため、大体5時間くらい掛かってやっと完了しました。少し感動です。

再起動後にログイン画面が現れましたた。これが見たかったです。

ログイン後に簡単な設定を行って一先ずCentOS7の導入は完了です。

RAIDディスクの確認

RAIDが組めているか確認します。コマンド確認は置いておいて、一先ず目についたディスク管理を開いてみました。

ディスク1

ディスク2

ディスク3

ディスク4

ディスク5-1

ディスク5-2

RAIDアレイ

コンピュータフォルダ設定画面から確認しても、以下の通り使用可能領域が9TBになっていました。

RAID構築用コマンドmdadmでも確認します。以下の通り9TBになっています。

# mdadm --detail /dev/md/root
/dev/md/root:
           Version : 1.2
     Creation Time : Sun Dec 31 22:50:18 2017
        Raid Level : raid5
        Array Size : 8790402048 (8383.18 GiB 9001.37 GB)
     Used Dev Size : 2930134016 (2794.39 GiB 3000.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Fri Jan  5 19:17:09 2018
             State : clean 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : bitmap

              Name : #ブログアップ時削除
              UUID : #ブログアップ時削除
            Events : #ブログアップ時削除

    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
       4       8       49        3      active sync   /dev/sdd1

ホットスペアディスクの追加

RAID5にはホットスペアディスクを追加することができます。これはいずれかのHDDが故障した際に一時的にRAID構成を再構築するもので、突然の破損に備えることができます。スペアディスクはOSのインストール時に追加できないため、CentOS上からコマンドで実行します。

はじめに用意していたスペアディスクを繋いで再起動したところ、特にマウントなどすることなくGUI上でディスクを確認することができました。ただし本HDDは購入後にWindows環境で初期不良のチェックをしていたため、Microsoft予約済みなるパーティションが作成されていました。RAIDに組み込む前にこのデバイスファイル/dev/sde1を削除します。

削除する領域を上の図のように選択し、 “-” を押してパーティションを削除しました。当然ですが/dev/sde2も消えて無くなり/dev/sdeとなりました。これで下準備は完了です。

パーティショニング

パーティションの作成や削除などに使うコマンドgdiskを使用します。パーティーションの開始セクタと終了セクタの選択では何も入力せずにENTERすることで最大サイズになります。パーティーションのタイプはLinux RAIDにして入力はfd00を選択しました。

# gdisk /dev/sde
GPT fdisk (gdisk) version 0.8.6

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): p
Disk /dev/sde: 5860533168 sectors, 2.7 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): #ブログアップ時削除
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 5860533134
Partitions will be aligned on 2048-sector boundaries
Total free space is 5860533101 sectors (2.7 TiB)

Number  Start (sector)    End (sector)  Size       Code  Name

Command (? for help): n
Partition number (1-128, default 1): 1
First sector (34-5860533134, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-5860533134, default = 5860533134) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): L
0700 Microsoft basic data  0c01 Microsoft reserved    2700 Windows RE          
4200 Windows LDM data      4201 Windows LDM metadata  7501 IBM GPFS            
7f00 ChromeOS kernel       7f01 ChromeOS root         7f02 ChromeOS reserved   
8200 Linux swap            8300 Linux filesystem      8301 Linux reserved      
8e00 Linux LVM             a500 FreeBSD disklabel     a501 FreeBSD boot        
a502 FreeBSD swap          a503 FreeBSD UFS           a504 FreeBSD ZFS         
a505 FreeBSD Vinum/RAID    a580 Midnight BSD data     a581 Midnight BSD boot   
a582 Midnight BSD swap     a583 Midnight BSD UFS      a584 Midnight BSD ZFS    
a585 Midnight BSD Vinum    a800 Apple UFS             a901 NetBSD swap         
a902 NetBSD FFS            a903 NetBSD LFS            a904 NetBSD concatenated 
a905 NetBSD encrypted      a906 NetBSD RAID           ab00 Apple boot          
af00 Apple HFS/HFS+        af01 Apple RAID            af02 Apple RAID offline  
af03 Apple label           af04 AppleTV recovery      af05 Apple Core Storage  
be00 Solaris boot          bf00 Solaris root          bf01 Solaris /usr & Mac Z
bf02 Solaris swap          bf03 Solaris backup        bf04 Solaris /var        
bf05 Solaris /home         bf06 Solaris alternate se  bf07 Solaris Reserved 1  
bf08 Solaris Reserved 2    bf09 Solaris Reserved 3    bf0a Solaris Reserved 4  
bf0b Solaris Reserved 5    c001 HP-UX data            c002 HP-UX service       
ed00 Sony system partitio  ef00 EFI System            ef01 MBR partition scheme
ef02 BIOS boot partition   fb00 VMWare VMFS           fb01 VMWare reserved     
fc00 VMWare kcore crash p  fd00 Linux RAID            
Hex code or GUID (L to show codes, Enter = 8300): fd00
Changed type of partition to 'Linux RAID'

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sde.
The operation has completed successfully.

GUIでも確認します。

フォーマット

ファイルシステムを作成 (フォーマット) するコマンドmkfsを使用します。ファイルシステムはxfsにしました。Linuxでよく使われるxfsとextですが、xfsはextより大規模データの扱いに適していると言われます。またxfsはNASでもよく使われているということでした。

# mkfs.xfs /dev/sde1
meta-data=/dev/sde1              isize=512    agcount=4, agsize=183141597 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=732566385, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=357698, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

GUIでも確認します。

スペアディスク追加前の状態確認

mdadmコマンドで確認します。

# mdadm --detail /dev/md/root
/dev/md/root:
           Version : 1.2
     Creation Time : Sun Dec 31 22:50:18 2017
        Raid Level : raid5
        Array Size : 8790402048 (8383.18 GiB 9001.37 GB)
     Used Dev Size : 2930134016 (2794.39 GiB 3000.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Sun Jan  7 17:32:01 2018
             State : clean 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : bitmap

              Name :  #ブログアップ時削除
              UUID :  #ブログアップ時削除
            Events :  #ブログアップ時削除

    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
       4       8       49        3      active sync   /dev/sdd1

スペアディスクの追加

mdadmコマンドのaddオプションで/dev/sde1を指定すれば良いらしいです。

# mdadm --manage /dev/md/root --add /dev/sde1
mdadm: added /dev/sde1

スペアディスク追加後の状態確認

mdadmコマンドで確認します。Spare Devicesが “1” になり、/dev/sde1がNumber:5 state:spareとして追加されていました。

# mdadm --detail /dev/md/root
/dev/md/root:
           Version : 1.2
     Creation Time : Sun Dec 31 22:50:18 2017
        Raid Level : raid5
        Array Size : 8790402048 (8383.18 GiB 9001.37 GB)
     Used Dev Size : 2930134016 (2794.39 GiB 3000.46 GB)
      Raid Devices : 4
     Total Devices : 5
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Sun Jan  7 17:33:56 2018
             State : clean 
    Active Devices : 4
   Working Devices : 5
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : bitmap

              Name : #ブログアップ時削除
              UUID : #ブログアップ時削除
            Events : #ブログアップ時削除

    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
       4       8       49        3      active sync   /dev/sdd1

       5       8       65        -      spare   /dev/sde1

GUIでも確認したところ、/dev/sde1の “内容” がLinux RAIDメンバーとなっていました。スペアディスクの追加完了です。

以上。