2011年8月31日水曜日

USBドライブのマウント

写真とかビデオを管理するのに自宅サーバ(FreeBSD)を使っていますが、データは全てこのサーバに繋いだUSB HDDに入れています。繋がっているのは、
  1. ビデオ用 1TB
  2. 写真用 1TB
  3. バックアップ用 2TB
の3台。
これがいっぱいになってきたので、HDDの増設・入れ替えをしました。新しい構成は、
  1. ビデオ用 2TB (増設)
  2. 写真用 1TB (変更なし)
  3. ビデオバックアップ用 2TB (旧バックアップ用)
  4. 写真バックアップ用 1TB (旧ビデオ用)
です。
こんな感じでHDD構成が変わると、FreeBSDの場合、"da*"のインデックスが変わっちゃいます。構成変更の度にマウントポイントを確認したりするのが面倒なので、インデックスが変わっても同じところにマウントするシェルスクリプトを書いてみました。

#!/bin/sh

index=0
drive="/dev/da"$index

while [ -c $drive ]
do
        drivea=$drive"a"
        drives=$drive"s1a"
        if [ -c $drivea ]; then
                mount $drivea /mnt/tmp
                mountpoint=`cat /mnt/tmp/mount.txt`
                umount /mnt/tmp
                echo "mount $drivea to $mountpoint"
                mount $drivea $mountpoint
        elif [ -c $drives ]; then
                mount $drives /mnt/tmp
                mountpoint=`cat /mnt/tmp/mount.txt`
                umount /mnt/tmp
                echo "mount $drives to $mountpoint"
                mount $drives $mountpoint
        fi
        index=`expr $index + 1`
        drive="/dev/da"$index
done

各HDDは全体を1パーティションにしています。適当に初期化しているので、da*aになったりda*s1aになったりとバラバラです(^^;
で、各HDDのルートディレクトリのmount.txtというファイルにマウントポイントを書いておくと、そのディレクトリにマウントします。
このスクリプトをrc.localから呼び出すようにしています。

0 件のコメント:

コメントを投稿