Help us understand the problem. What is going on with this article?

CentOS複数パーティションでSoftwareRAIDを構築してみる

はじめに

  • CentOSのディスク上で複数パーティションを用意して、RAIDアレイを構築してみる
  • 実行環境
    • 対象OS:centos7
    • 対象デバイス:外付けHDD

RAID用パーティションの作成

ディスクの確認

/dev/vdbをRAID構築用デバイスとして使用します

# fdisk -l
(一部省略)
Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
パーティションの作成

パーティションタイプは「fd」に設定する
※同様に/dev/vdb2,/dev/vdb3,/dev/vdb4も作成しておきます

# fdisk /dev/vdb
(一部省略)
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p 
Partition number (1-4, default 1): 1
First sector (2048-83886079, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-83886079, default 83886079): 20000000
Partition 1 of type Linux and of size 9.5 GiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

# fdisk -l /dev/vdb
Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0f36cd1b

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048    20000000     9998976+  fd  Linux raid autodetect

RAIDアレイの作成

/dev/vdb1/dev/vdb2がアクティブなデバイス、/dev/vdb3がスペアデバイスとして構成されるRAID1(ミラーリング)のRAIDアレイ/dev/md0を作成する。
-Cでmdデバイス名
-lでRAIDレベル
-nでアクティブなデバイス数
-xでスペアデバイス数
を指定する。

# mdadm -C /dev/md0 -l 1 -n 2 -x 1 /dev/vdb1 /dev/vdb2 /dev/vdb3
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

RAIDアレイの確認

/proc/mdstatファイルもしくは、mdsatの-Q, -DオプションでRAID状態を確認する。

# cat /proc/mdstat 
Personalities : [raid0] [raid1] 
md0 : active raid1 vdb3[2](S) vdb2[1] vdb1[0]
      9989760 blocks super 1.2 [2/2] [UU]

unused devices: <none>

# mdadm -Q /dev/md0 
/dev/md0: 9.53GiB raid1 2 devices, 1 spare. Use mdadm --detail for more detail.

# mdadm -D /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Sun Sep 29 11:43:01 2019
        Raid Level : raid1
        Array Size : 9989760 (9.53 GiB 10.23 GB)
     Used Dev Size : 9989760 (9.53 GiB 10.23 GB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Sun Sep 29 11:48:47 2019
             State : clean 
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 1

Consistency Policy : resync

              Name : comsec-cent01:0  (local to host comsec-cent01)
              UUID : bd6006bb:a653fb7d:a884192f:01cd9a65
            Events : 17

    Number   Major   Minor   RaidDevice State
       0     252       17        0      active sync   /dev/vdb1
       1     252       18        1      active sync   /dev/vdb2

       2     252       19        -      spare   /dev/vdb3

RAID構成デバイスの変更(デバイスが故障した時など)

/dev/vdb2に不良マークをつける(故障したとする)。
vdb2に不良マーク(F)が付き、vdb3がアクティブとなっていることが確認できる。

# mdadm --manage /dev/md0 -f /dev/vdb2
mdadm: set /dev/vdb2 faulty in /dev/md0

# cat /proc/mdstat 
Personalities : [raid0] [raid1] 
md0 : active raid1 vdb3[2] vdb2[1](F) vdb1[0]
      9989760 blocks super 1.2 [2/2] [UU]

unused devices: <none>

故障した/dev/vdb2をRAIDアレイから削除する

# mdadm --manage /dev/md0 -r /dev/vdb2
mdadm: hot removed /dev/vdb2 from /dev/md0

# cat /proc/mdstat 
Personalities : [raid0] [raid1] 
md0 : active raid1 vdb3[2] vdb1[0]
      9989760 blocks super 1.2 [2/2] [UU]

unused devices: <none>

新しい/dev/vdb4をRAIDアレイに追加する

# mdadm --manage /dev/md0 -a /dev/vdb4
mdadm: added /dev/vdb4

# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 vdb4[3](S) vdb3[2] vdb1[0]
      9989760 blocks super 1.2 [2/2] [UU]

unused devices: <none>

システム再起動に自動認識する方法

以下の通り、/etc/mdadm.confを作成する。
mdadm -D --scanコマンドで現在のアレイ情報が出力されるので、設定ファイルに記載する。

# echo "DEVICE partitions" >> /etc/mdadm.conf
# mdadm  -D --scan >> /etc/mdadm.conf 
# cat /etc/mdadm.conf 
DEVICE partitions
ARRAY /dev/md0 metadata=1.2 spares=1 name=comsec-cent01:0 UUID=bd6006bb:a653fb7d:a884192f:01cd9a65
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした