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