ソフトウェアRAIDを構成する ( mdadm )
前提
基本的に、使用するディスクは、同じメーカー、同じ型番、同じ容量、同じロットのディスクがよい。
そこまで気にしないなら、同じメーカーで同じ型番、容量のものを選んでおけばいいと思う。
使用するコマンド
cat /proc/mdstat
mdadm --add /dev/md0 /dev/sdb1
mdadm --create /dev/md0 --level=raid0 --raid-device=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm --detail /dev/md0
mdadm --detail --scan > /etc/mdadm.conf
mdadm --fail /dev/md0 /dev/sdb1
mdadm --misc --stop /dev/md0
mdadm --misc --zero-superblock /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm --remove /dev/md0 /dev/sdb1
使用したディスク
同型のものを3本使用。
[root@localhost ~]# hdparm -I /dev/sdb
/dev/sdb:
ATA device, with non-removable media
Model Number: OCZ-VERTEX3
Serial Number: OCZ-9RIXRBFQ611CG1Q7
Firmware Revision: 2.15
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Used: unknown (minor revision code 0x0110)
Supported: 8 7 6 5
Likely used: 8
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 117231408
LBA48 user addressable sectors: 117231408
Logical Sector size: 512 bytes
Physical Sector size: 512 bytes
Logical Sector-0 offset: 0 bytes
device size with M = 1024*1024: 57241 MBytes
device size with M = 1000*1000: 60022 MBytes (60 GB)
cache/buffer size = unknown
Nominal Media Rotation Rate: Solid State Device
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
Standby timer values: spec'd by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = 16
Advanced power management level: 254
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* NOP cmd
* DOWNLOAD_MICROCODE
* Advanced Power Management feature set
Power-Up In Standby feature set
* SET_FEATURES required to spinup after power up
* 48-bit Address feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* SMART error logging
* SMART self-test
* General Purpose Logging feature set
* WRITE_{DMA|MULTIPLE}_FUA_EXT
* 64-bit World wide name
* IDLE_IMMEDIATE with UNLOAD
Write-Read-Verify feature set
* WRITE_UNCORRECTABLE_EXT command
* {READ,WRITE}_DMA_EXT_GPL commands
* Segmented DOWNLOAD_MICROCODE
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Gen3 signaling speed (6.0Gb/s)
* Native Command Queueing (NCQ)
* Host-initiated interface power management
* Phy event counters
* unknown 76[14]
* unknown 76[15]
* DMA Setup Auto-Activate optimization
Device-initiated interface power management
* Software settings preservation
* SMART Command Transport (SCT) feature set
* SCT Data Tables (AC5)
* DOWNLOAD MICROCODE DMA command
* SET MAX SETPASSWORD/UNLOCK DMA commands
* WRITE BUFFER DMA command
* READ BUFFER DMA command
* Data Set Management TRIM supported (limit 1 block)
* Deterministic read data after TRIM
Security:
Master password revision code = 65534
supported
not enabled
not locked
not frozen
not expired: security count
not supported: enhanced erase
2min for SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5e83a97e8aeb67f6
NAA : 5
IEEE OUI : e83a97
Unique ID : e8aeb67f6
Checksum: correct
環境
[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.9 (Santiago)
[root@localhost ~]# uname -a
Linux spkrnish-011091 4.1.12-94.3.9.el6uek.x86_64 #2 SMP Fri Jul 14 20:16:11 PDT 2017 x86_64 x86_64 x86_64 GNU/Linux
1. ディスクの準備
fdiskコマンドでパーティションを作成する。
パーティションのタイプは、fd ( Linux raid 自動検出 ) に設定する。
[user@localhost ~]$ su -
[root@localhost ~]# fdisk /dev/sdb
警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
強く推奨します。 and change display units to
sectors (command 'u').
コマンド (m でヘルプ): p
ディスク /dev/sdb: 60.0 GB, 60022480896 バイト
ヘッド 255, セクタ 63, シリンダ 7297
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x0006ee62
デバイス ブート 始点 終点 ブロック Id システム
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-7297, default 1):
Using default value 1
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-7297, default 7297):
Using default value 7297
コマンド (m でヘルプ): t
選択した領域 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました
コマンド (m でヘルプ): p
ディスク /dev/sdb: 60.0 GB, 60022480896 バイト
ヘッド 255, セクタ 63, シリンダ 7297
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x0006ee62
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 1 7297 58613121 fd Linux raid 自動検出
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
/dev/sdc, /dev/sdd も同様にパーティションを作成する。
mdadmコマンドでraidデバイスを作成
ここでは、raid5で構築する。
[root@localhost ~]# mdadm --create /dev/md0 --level=raid5 --raid-device=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: /dev/sdc1 appears to contain an ext2fs file system
size=58613120K mtime=Thu Jan 1 09:00:00 1970
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
raidデバイスをフォーマット
ここでは、EXT4 でフォーマットする。
[root@localhost ~]# mke2fs -t ext4 /dev/md0
mke2fs 1.43-WIP (20-Jun-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
7323648 inodes, 29289984 blocks
1464499 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
894 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
raid構成の確認
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0] [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
117159936 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
[==>..................] recovery = 13.9% (8154752/58579968) finish=4.1min speed=200057K/sec
unused devices: <none>
...
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
117159936 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
完了
raid構成情報を/etc/mdadm.confに出力
[root@localhost ~]# cat /etc/mdadm.conf
cat: /etc/mdadm.conf: そのようなファイルやディレクトリはありません
[root@localhost ~]# mdadm --detail --scan > /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 name=localhost:0 UUID=f49a8674:13777e43:4f3eaade:7aeb9fe6
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jul 21 07:41:29 2017
Raid Level : raid5
Array Size : 117159936 (111.73 GiB 119.97 GB)
Used Dev Size : 58579968 (55.87 GiB 59.99 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Fri Jul 21 07:46:27 2017
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : localhost:0 (local to host localhost)
UUID : f49a8674:13777e43:4f3eaade:7aeb9fe6
Events : 20
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
3 8 49 2 active sync /dev/sdd1
再起動後に自動マウントさせるため、マウントポイントを設定
[root@localhost ~]# ls -l /
合計 93
dr-xr-xr-x. 2 root root 4096 7月 15 10:19 2017 bin
dr-xr-xr-x. 5 root root 4096 7月 21 07:00 2017 boot
drwxr-xr-x. 20 root root 3920 7月 21 07:41 2017 dev
drwxr-xr-x. 64 root root 4096 7月 21 07:56 2017 etc
drwxr-xr-x. 3 root root 4096 11月 1 17:47 2011 home
dr-xr-xr-x. 8 root root 4096 5月 31 10:24 2017 lib
dr-xr-xr-x. 8 root root 12288 7月 15 14:49 2017 lib64
drwx------. 2 root root 16384 5月 31 10:22 2017 lost+found
drwxr-xr-x. 2 root root 4096 11月 1 17:47 2011 media
drwxr-xr-x. 5 root root 4096 7月 15 11:12 2017 mnt
drwxr-xr-x. 2 root root 4096 11月 1 17:47 2011 opt
dr-xr-xr-x. 118 root root 0 7月 21 07:18 2017 proc
dr-xr-x---. 3 root root 4096 7月 15 09:49 2017 root
dr-xr-xr-x. 2 root root 12288 7月 15 14:49 2017 sbin
drwxr-xr-x. 7 root root 0 7月 21 07:18 2017 selinux
drwxr-xr-x. 2 root root 4096 11月 1 17:47 2011 srv
dr-xr-xr-x. 13 root root 0 7月 21 07:59 2017 sys
drwxrwxrwt. 3 root root 4096 7月 21 07:19 2017 tmp
drwxr-xr-x. 13 root root 4096 5月 31 10:23 2017 usr
drwxr-xr-x. 18 root root 4096 5月 31 10:24 2017 var
[root@localhost ~]# mkdir /raid
[root@localhost ~]# vi /etc/fstab
...
/dev/md0 /raid ext4 defaults 0 0
...
再起動
[root@localhost ~]# reboot
マウント確認
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
45G 2.7G 40G 7% /
tmpfs 3.5G 0 3.5G 0% /dev/shm
/dev/sda1 477M 215M 233M 48% /boot
/dev/mapper/VolGroup-lv_home
4.3G 8.9M 4.0G 1% /home
/dev/md0 110G 60M 105G 1% /raid <=== raid5なのでディスク2本分のサイズ
異常時の確認
ディスク1本をフェイルさせる
[root@localhost ~]# mdadm --fail /dev/md0 /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb1[0] sdd1[3] sdc1[1](F) <=== sdc1がfaultとなっている
117159936 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U]
unused devices: <none>
異常ディスクを除去する
[root@localhost ~]# mdadm --remove /dev/md0 /dev/sdc1
mdadm: hot removed /dev/sdc1 from /dev/md0
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb1[0] sdd1[3]
117159936 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U]
unused devices: <none>
フェイルさせたディスクを再パーティショニング
[root@localhost ~]# mdadm --misc --zero-superblock /dev/sdc1
[root@localhost ~]# fdisk /dev/sdc
警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
強く推奨します。 and change display units to
sectors (command 'u').
コマンド (m でヘルプ): p
ディスク /dev/sdc: 60.0 GB, 60022480896 バイト
ヘッド 255, セクタ 63, シリンダ 7297
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x0008de53
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdc1 1 7297 58613121 fd Linux raid 自動検出
コマンド (m でヘルプ): d
選択した領域 1
コマンド (m でヘルプ): p
ディスク /dev/sdc: 60.0 GB, 60022480896 バイト
ヘッド 255, セクタ 63, シリンダ 7297
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x0008de53
デバイス ブート 始点 終点 ブロック Id システム
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-7297, default 1):
Using default value 1
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-7297, default 7297):
Using default value 7297
コマンド (m でヘルプ): t
選択した領域 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました
コマンド (m でヘルプ): p
ディスク /dev/sdc: 60.0 GB, 60022480896 バイト
ヘッド 255, セクタ 63, シリンダ 7297
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x0008de53
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdc1 1 7297 58613121 fd Linux raid 自動検出
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
raidデバイスに(仮)新ディスクを追加する
[root@localhost ~]# mdadm --add /dev/md0 /dev/sdc1
mdadm: added /dev/sdc1
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdc1[4] sdb1[0] sdd1[3]
117159936 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U]
[>....................] recovery = 1.5% (918840/58579968) finish=6.2min speed=153140K/sec
unused devices: <none>
...
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdc1[4] sdb1[0] sdd1[3]
117159936 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
交換完了。
この時、raidデバイスのUUIDは変わっていない。
[root@localhost ~]# mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 spares=1 name=localhost:0 UUID=f49a8674:13777e43:4f3eaade:7aeb9fe6
raidを解体
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
45G 2.7G 40G 7% /
tmpfs 3.5G 0 3.5G 0% /dev/shm
/dev/sda1 477M 230M 218M 52% /boot
/dev/mapper/VolGroup-lv_home
4.3G 8.9M 4.0G 1% /home
/dev/md0 110G 60M 105G 1% /raid
[root@localhost ~]# umount /raid
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
45G 2.7G 40G 7% /
tmpfs 3.5G 0 3.5G 0% /dev/shm
/dev/sda1 477M 230M 218M 52% /boot
/dev/mapper/VolGroup-lv_home
4.3G 8.9M 4.0G 1% /home
[root@localhost ~]# mdadm --misc --stop /dev/md0
mdadm: stopped /dev/md0
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
unused devices: <none>
[root@localhost ~]# mdadm --misc --zero-superblock /dev/sdb1 /dev/sdc1 /dev/sdd1
[おわり]