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?