ページ

2016年1月30日土曜日

CentOS 7 で Fake RAID を使用した RAID 構成

CentOS 7 で、最近のマザーボードが搭載している RAID BIOS (Intel Rapid Storage Technology) を使用して  RAID5 Array を構成したいと思います。
いわゆる Fake RAID です。(BIOS で SATA を RAID Mode に設定すると有効になる)

Intel RST は Option ROM を介した Software RAID ですが、Linux Kernel サブシステムの mdraid でサポートされています。
管理は mdadm で行います。

HW 構成ですが、Boot デバイスは SSD 単体、データ領域を 3台の SSD で RAID5 とします。
  • OS領域: SSD 64GB × 1 (SATA 6Gbps)
  • データ領域: [RAID5] SSD 256GB × 3 (SATA 6Gbps)
ちなみに、SATA を AHCI モードにして mdadm で Software RAID を構成した場合でも、Array をブロックデバイスとして使用する際のパフォーマンスはほとんど変わりませんでした。
ただ、Fake RAID の方が resync が速いです。

今回は OS 領域を RAID にしないので、OS インストール後に mdadm で RAID 設定することも可能ですが、OS インストール前に Option ROM で RAID Volume を作成しておくと、anaconda から mdadm が実行され自動で設定されます。

Linux では、Intel RST は Intel Matrix Storage Manager (imsm) として認識されます。
$ sudo mdadm --detail-platform
       Platform : Intel(R) Matrix Storage Manager
        Version : 13.0.0.2075
    RAID Levels : raid0 raid1 raid10 raid5
    Chunk Sizes : 4k 8k 16k 32k 64k 128k
    2TB volumes : supported
      2TB disks : supported
      Max Disks : 6
    Max Volumes : 2 per array, 4 per controller
 I/O Controller : /sys/devices/pci0000:00/0000:00:1f.2 (SATA)
また、RAID コントローラのようにメタデータを管理するのが CONTAINER デバイス (/dev/md/imsm0) になります。
$ sudo mdadm --detail /dev/md/imsm0
/dev/md/imsm0:
        Version : imsm
     Raid Level : container
  Total Devices : 3

Working Devices : 3


           UUID : dc1d80c9:6359a6da:74a99a9d:c22dce97
  Member Arrays : /dev/md/raid5vol_0

    Number   Major   Minor   RaidDevice

       0       8       32        -        /dev/sdc
       1       8       16        -        /dev/sdb
       2       8       48        -        /dev/sdd
RAID Array は、/dev/md/(Option ROM で作成した Volume 名)_0 として作成されています。
$ sudo mdadm --detail /dev/md/raid5vol_0
/dev/md/raid5vol_0:
      Container : /dev/md/imsm0, member 0
     Raid Level : raid5
     Array Size : 500111360 (476.94 GiB 512.11 GB)
  Used Dev Size : 250055936 (238.47 GiB 256.06 GB)
   Raid Devices : 3
  Total Devices : 3

          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-asymmetric
     Chunk Size : 128K


           UUID : e77d16b4:5701e6c6:4da49442:7dfce8fb
    Number   Major   Minor   RaidDevice State
       2       8       32        0      active sync   /dev/sdc
       1       8       48        1      active sync   /dev/sdd
       0       8       16        2      active sync   /dev/sdb
CONTAINER、Array ともに実体は /dev/md* です。
$ ll /dev/md*
brw-rw---- 1 root disk 9, 126 Aug 22 23:34 /dev/md126
brw-rw---- 1 root disk 9, 127 Aug 22 23:35 /dev/md127

/dev/md:
total 0
lrwxrwxrwx 1 root root 8 Aug 22 23:35 imsm0 -> ../md127
lrwxrwxrwx 1 root root 8 Aug 22 23:34 raid5vol_0 -> ../md126
Array のビルド状況は /proc/mdstat で確認できます。
$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md126 : active raid5 sdb[3] sdc[2] sdd[1]
      500111360 blocks super external:/md127/0 level 5, 128k chunk, algorithm 0 [3/3] [UUU]

md127 : inactive sdb[0](S) sdd[2](S) sdc[1](S)
      9459 blocks super external:imsm

unused devices: <none>
作成した Array をブロックデバイスとして使用するには、Partion Table を作成する必要があります。
$ sudo parted /dev/md126

(parted) print
Error: /dev/md126: unrecognised disk label
Model: Linux Software RAID Array (md)
Disk /dev/md126: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

(parted) mktable gpt
(parted) print
Model: Linux Software RAID Array (md)
Disk /dev/md126: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  Type  File system  Flags
Option ROM で RAID 設定後、OS インストールすると /etc/mdadm.conf に AUTO +imsm が設定されるので、OS 起動時は RAID メタデータから Array が自動構成されます。


(参考) Intel Rapid Storage Technology in Linux