昨日の記事で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
できたー。というわけでこれでいけそうだ。