losetupを使ってソフトウェアRAIDを実験する

例えばハードディスクが一台しか無いけど、ソフトウェアRAID環境を作ってみたいという時に。


今回はlosetup を利用して、ローカルディスクのイメージファイルを使って
ソフトウェアRAIDを使ったRAID1の環境を作ってみます。
(言うまでもなく、冗長性は0ですけど、ね)


まずはddコマンドでイメージファイルを作ります。
練習なのでファイルサイズは小さく10Mです。
RAID1にするので2つ作ります。

 # dd if=/dev/zero of=ext3-1.img bs=1024 count=10000
 10000+0 records in
 10000+0 records out
 10240000 bytes (10 MB) copied, 0.341916 seconds, 29.9 MB/s

 # dd if=/dev/zero of=ext3-2.img bs=1024 count=10000
 10000+0 records in
 10000+0 records out
 10240000 bytes (10 MB) copied, 0.461585 seconds, 22.2 MB/s


losetupコマンドを使ってループバックデバイスとして登録します。

 # losetup /dev/loop1 ext3-1.img
 # losetup /dev/loop1
 /dev/loop1: [0803]:807821 (ext3-1.img)

 # losetup /dev/loop2 ext3-1.img
 # losetup /dev/loop2
 /dev/loop2: [0803]:807821 (ext3-1.img)


mdadmコマンドを使ってRAIDデバイスを作成します。

 # mdadm -C /dev/md0 -l 1 -n 2 /dev/loop1 /dev/loop2
 mdadm: array /dev/md0 started.


RAID1アレイが作成されだしたことを「/proc/mdstat」ファイルの中身を見て確認します。

 # cat /proc/mdstat
 Personalities : [raid1]
 md0 : active raid1 loop2[1] loop1[0]
       9920 blocks [2/2] [UU]
       [============>........]  resync = 60.0% (6528/9920) finish=0.0min speed=3264K/sec
 
 unused devices: <none>


RAID1アレイの構築が終わりました。

 # cat /proc/mdstat
 Personalities : [raid1]
 md0 : active raid1 loop2[1] loop1[0]
       9920 blocks [2/2] [UU]
 
 unused devices: <none>


ext3形式でファイルシステムを作ります。

 # mkfs.ext3 /dev/md0
 mke2fs 1.39 (29-May-2006)
 Filesystem label=
 OS type: Linux
 Block size=1024 (log=0)
 Fragment size=1024 (log=0)
 2480 inodes, 9920 blocks
 496 blocks (5.00%) reserved for the super user
 First data block=1
 Maximum filesystem blocks=10223616
 2 block groups
 8192 blocks per group, 8192 fragments per group
 1240 inodes per group
 Superblock backups stored on blocks:
        8193

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

 This filesystem will be automatically checked every 37 mounts or
 180 days, whichever comes first.  Use tune2fs -c or -i to override.


ファイルシステムが作成出来たので、これをマウントしてみます。
うまくマウントができました。

 # mount /dev/md0 /mnt
 # df -k
 Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
 /dev/sda3              5734416   2465944   2972476  46% /
 /dev/sda1               101086     17055     78812  18% /boot
 tmpfs                   257652         0    257652   0% /dev/shm
 /dev/md0                  9601      1120      7985  13% /mnt


設定を解除するには「umount」コマンドでアンマウントしてから
「/dev/md0」デバイスを停止して、「losetup -d」でOKです。

 # mdadm --stop /dev/md0
   mdadm: stopped /dev/md0
 # losetup -d /dev/loop1
 # losetup -d /dev/loop2
 # losetup /dev/loop1
   loop: デバイス /dev/loop1 の情報を取得できません: そのようなデバイスやアドレスはありません
 # losetup /dev/loop2
   loop: デバイス /dev/loop2 の情報を取得できません: そのようなデバイスやアドレスはありません


応用次第で気軽に検証環境作れると思います。
今日はこんなところで。