mdadmを使って、RAID1+0を実装する
今回、RAIDレベル1+0(RAID10)の実装に伴い、事前にHDDを4台追加してあります。[sdb, sdc, sdd, sde]
これらの追加されたHDDのパーティションの作成などは割愛しています。(`・ω・´)
構築は、VMware上にインストールされたUbuntu12.x系で行っています。
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 fd Linux raid autodetect
/dev/sdc1 2048 20971519 10484736 fd Linux raid autodetect
/dev/sdd1 2048 20971519 10484736 fd Linux raid autodetect
/dev/sde1 2048 20971519 10484736 fd Linux raid autodetect
RAIDレベル1+0でRAIDアレイの作成を行います。 (チャンクサイズなどは必要に応じて指定して下さい)
root@ubuntu:~# mdadm --create /dev/md0 -v --raid-devices=4 --level=raid10 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 10476032K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
次に、作成したRAIDアレイのデバイスが表示されているか、現在のRAIDの状態を確認して下さい。
root@ubuntu:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid10 sde1[3] sdd1[2] sdc1[1] sdb1[0]
20952064 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
[=>...................] resync = 5.7% (1200000/20952064) finish=1.3min spee
unused devices: <none>
root@ubuntu:~# mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 name=ubuntu:0 UUID=cd5e56a7:01b542d3:db3247f7:a58d628c
root@ubuntu:~# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Dec 2 01:55:53 2013
Raid Level : raid10
Array Size : 20952064 (19.98 GiB 21.45 GB)
Used Dev Size : 10476032 (9.99 GiB 10.73 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Dec 2 01:58:02 2013
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : ubuntu:0 (local to host ubuntu)
UUID : cd5e56a7:01b542d3:db3247f7:a58d628c
Events : 17
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 3 active sync /dev/sde1
mdadm.confの編集
RAID設定ファイルの編集(デバイス情報の追加)
UUID値をmdadmの設定ファイル(mdadm.conf)に追記します。
青い文字部分が追記した設定です。
root@ubuntu:~# vi /etc/mdadm/mdadm.conf
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers
DEVICE partitions
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
# automatically tag new arrays as belonging to the local system
HOMEHOST <system>
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
# definitions of existing MD arrays
ARRAY /dev/md0 level=raid10 num-devices=4 UUID=cd5e56a7:01b542d3:db3247f7:a58d628c
# This file was auto-generated on Sun, 01 Dec 2013 22:09:40 -0800
# by mkconf $Id$
"/etc/mdadm/mdadm.conf" 書込み
root@ubuntu:~# cat /proc/partitions
major minor #blocks name
11 0 2868704 sr0
8 0 10485760 sda
8 1 9436160 sda1
8 2 1 sda2
8 5 1046528 sda5
8 16 10485760 sdb
8 17 10484736 sdb1
8 32 10485760 sdc
8 33 10484736 sdc1
8 64 10485760 sde
8 65 10484736 sde1
8 48 10485760 sdd
8 49 10484736 sdd1
9 0 20952064 md0
ファイルシステムの作成
ファイルシステムの作成を行います。(例ではext4で作成しています)
root@ubuntu:~# mkfs.ext4 /dev/md0
mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
1310720 inodes, 5238016 blocks
261900 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
160 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
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
マウントディレクトリの作成とマウントの実行
今回はマウント先のディレクトリを/mnt/raid10aとしました。
以下の例では、デバイスのUUID値をblkidで取得し、作成したディレクトリへのマウント情報を/etc/fstabに書き込んでいます。
(vi以下は、青い文字部分が追記した設定です。)
root@ubuntu:~# mkdir /mnt/raid10a
root@ubuntu:~# blkid /dev/md0
/dev/md0: UUID="c276a9d0-32bb-02fe-7776-c61e52b7298a" UUID_SUB="4331c2dd-3f62-f9e8-YPE="linux_raid_member"
root@ubuntu:~# vi /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda1 during installation
UUID=09ebc0d6-a6ed-4fe6-a4be-78c8a0985708 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=f30c3f89-ba4b-4987-afbe-dcdeb4388414 none swap sw 0 0
# /mnt/raid10a was on /dev/md0 during installartion
UUID=ead6f8d1-83ad-4bb9-9ccc-204f72746728 /mnt/raid10a ext4 errors=remount-ro 0 0
# /media/floppy0 was on /dev/fd0 during installation
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0
"/etc/fstab" 書込み
root@ubuntu:~# mount -a
mount -aコマンドを実行し、作成したfstabファイルをもとにマウントを実行しています。
マウント時にエラーが発生した場合は、fstabの設定情報を再度確認して下さい。
(デバイスを削除してやり直す場合はこちら)
最終確認
最後にdfコマンドでディスクを確認して終了とします。(*´ω`*)お疲れ様でした。
root@ubuntu:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 8.8G 1.1G 7.3G 13% /
udev 493M 12K 493M 1% /dev
tmpfs 201M 352K 201M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 502M 0 502M 0% /run/shm
/dev/md0 20G 44M 19G 1% /mnt/raid10a
/dev/md0 20G 44M 19G 1% /mnt/raid10aが、今回作成したRAID10のデバイスです。
ネストされたデバイスの削除
RAID10のネストされたデバイスを順に停止・解除している例。
root@ubuntu:~# mdadm --misc --stop /dev/md2
mdadm: stopped /dev/md2
root@ubuntu:~# mdadm --misc --stop /dev/md0
mdadm: stopped /dev/md0
root@ubuntu:~# mdadm --misc --stop /dev/md1
mdadm: stopped /dev/md1
root@ubuntu:~# mdadm --misc --zero-superblock /dev/sdb1
root@ubuntu:~# mdadm --misc --zero-superblock /dev/sdc1
root@ubuntu:~# mdadm --misc --zero-superblock /dev/sdd1
root@ubuntu:~# mdadm --misc --zero-superblock /dev/sde1
root@ubuntu:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices: <none>
RAID10のネストされたデバイスを先に停止させようとしてエラーとなっている例。c(・ω・`c⌒っ わたしがやりました。
root@ubuntu:~# mdadm --misc --stop /dev/md0
mdadm: Cannot get exclusive access to /dev/md0:Perhaps a running process, mounted filesystem or active volume group?
root@ubuntu:~# mdadm --misc --stop /dev/md1
mdadm: Cannot get exclusive access to /dev/md1:Perhaps a running process, mounted filesystem or active volume group?