/dev/diskにある固定のデバイス名を使ってmdadmを使う

昨日の記事でudevルール書くと書いたけど、HDDだと固有のIDぽいのがudevadm infoで取れなかった!

で、よく考えたら、 固定のデバイス命名 に書いてあるように、

  • /dev/disk/by-id
  • /dev/disk/by-uuid
  • /dev/disk/by-path

に固有のデバイス名がついてるので、これを使えばいいと気づいた。なので、mdadmでシンボリックリンクが使えるか検証してみる。

検証

以下はVirtualBoxにあるUbuntu 11.04で検証。

ループバックデバイス作る
hiroyuki@ubuntu:~/mdadm_test$ dd if=/dev/zero of=loop1.img bs=1024 count=100000
100000+0 記録始め
100000+0 記録終わり
102400000 バイト (102 MB) コピー終了, 0.827849 s, 124 MB/s
hiroyuki@ubuntu:~/mdadm_test$ dd if=/dev/zero of=loop2.img bs=1024 count=100000
100000+0 記録始め
100000+0 記録終わり
102400000 バイト (102 MB) コピー終了, 0.678009 s, 151 MB/s
hiroyuki@ubuntu:~/mdadm_test$ sudo apt-get install mdadm
hiroyuki@ubuntu:~/mdadm_test$ sudo losetup /dev/loop1 loop1.img 
hiroyuki@ubuntu:~/mdadm_test$ sudo losetup /dev/loop2 loop2.img 

raid1作る

hiroyuki@ubuntu:~/mdadm_test$ sudo mdadm --create /dev/md1 -l raid1 -n 2 /dev/loop1 /dev/loop2
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
hiroyuki@ubuntu:~/mdadm_test$ cat /proc/mdstat 
Personalities : [raid1] 
md1 : active raid1 loop2[1] loop1[0]
      99988 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
hiroyuki@ubuntu:~/mdadm_test$ sudo mkfs.ext4 /dev/md1 
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25064 inodes, 99988 blocks
4999 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1928 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729

Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
hiroyuki@ubuntu:~/mdadm_test$ sudo mkdir /mnt/raid1
hiroyuki@ubuntu:~/mdadm_test$ sudo mount /dev/md1 /mnt/raid1
hiroyuki@ubuntu:~/mdadm_test$ ls -la /mnt/raid1/
合計 17
drwxr-xr-x 3 root root  1024 2012-02-19 21:31 .
drwxr-xr-x 4 root root  4096 2012-02-19 21:32 ..
drwx------ 2 root root 12288 2012-02-19 21:31 lost+found

できた

止める
hiroyuki@ubuntu:~/mdadm_test$ sudo umount  /mnt/raid1
hiroyuki@ubuntu:~/mdadm_test$ sudo mdadm --misc --stop /dev/md1
mdadm: stopped /dev/md1
hiroyuki@ubuntu:~/mdadm_test$ sudo mdadm --detail /dev/md1
mdadm: cannot open /dev/md1: No such file or directory
hiroyuki@ubuntu:~/mdadm_test$ cat /proc/mdstat 
Personalities : [raid1] 
unused devices: <none>
シンボリックリンク作る

ホントのハードディスクなら、sd*として認識されて、以下のシンボリックリンクも自動でできるけど、今回のはループバックデバイスを使ってるので、手動で作成する。

hiroyuki@ubuntu:~/mdadm_test$ cd /dev/disk/by-id/
hiroyuki@ubuntu:/dev/disk/by-id$ ls
hiroyuki@ubuntu:/dev/disk/by-id$ sudo ln -s ../../loop1 hoge
hiroyuki@ubuntu:/dev/disk/by-id$ sudo ln -s ../../loop2 fuga
hiroyuki@ubuntu:/dev/disk/by-id$ ls -l
合計 0
lrwxrwxrwx 1 root root  9 2012-02-19 20:32 ata-VBOX_CD-ROM_VB2-01700376 -> ../../sr0
lrwxrwxrwx 1 root root  9 2012-02-19 20:32 ata-VBOX_HARDDISK_VB81d897d7-4f26f8b4 -> ../../sda
lrwxrwxrwx 1 root root 10 2012-02-19 20:32 ata-VBOX_HARDDISK_VB81d897d7-4f26f8b4-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 2012-02-19 20:32 ata-VBOX_HARDDISK_VB81d897d7-4f26f8b4-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 2012-02-19 20:32 ata-VBOX_HARDDISK_VB81d897d7-4f26f8b4-part5 -> ../../sda5
lrwxrwxrwx 1 root root 11 2012-02-19 22:16 fuga -> ../../loop2
lrwxrwxrwx 1 root root 11 2012-02-19 22:16 hoge -> ../../loop1
lrwxrwxrwx 1 root root  9 2012-02-19 20:32 scsi-SATA_VBOX_HARDDISK_VB81d897d7-4f26f8b4 -> ../../sda
lrwxrwxrwx 1 root root 10 2012-02-19 20:32 scsi-SATA_VBOX_HARDDISK_VB81d897d7-4f26f8b4-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 2012-02-19 20:32 scsi-SATA_VBOX_HARDDISK_VB81d897d7-4f26f8b4-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 2012-02-19 20:32 scsi-SATA_VBOX_HARDDISK_VB81d897d7-4f26f8b4-part5 -> ../../sda5
再編成する

作成したシンボリックリンクを使って再編成してみる。

hiroyuki@ubuntu:/dev/disk/by-id$ sudo mdadm --assemble /dev/md2 /dev/disk/by-id/hoge /dev/disk/by-id/fuga 
mdadm: /dev/md2 has been started with 2 drives.
hiroyuki@ubuntu:/dev/disk/by-id$ sudo mdadm --detail /dev/md2
/dev/md2:
        Version : 1.2
  Creation Time : Sun Feb 19 21:31:24 2012
     Raid Level : raid1
     Array Size : 99988 (97.66 MiB 102.39 MB)
  Used Dev Size : 99988 (97.66 MiB 102.39 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Sun Feb 19 22:11:45 2012
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : ubuntu:1  (local to host ubuntu)
           UUID : f8f63dc8:2b4dce6b:633fcf9f:2720eb30
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       7        1        0      active sync   /dev/loop1
       1       7        2        1      active sync   /dev/loop2
hiroyuki@ubuntu:/dev/disk/by-id$ sudo mount /dev/md2 /mnt/raid1
hiroyuki@ubuntu:/dev/disk/by-id$ ls -la /mnt/raid1/
合計 18
drwxr-xr-x 3 root root  1024 2012-02-19 21:33 .
drwxr-xr-x 4 root root  4096 2012-02-19 21:32 ..
-rw-r--r-- 1 root root    31 2012-02-19 21:33 aaa
drwx------ 2 root root 12288 2012-02-19 21:31 lost+found

できたー。というわけでこれでいけそうだ。