入手して動作するようになったML100 G7には,手に入れたときから3つのHDDが刺さっていた
- 250GB HDD
- 2TB HDD * 2
2TB HDD * 2をRAID1で束ねたRAIDアレイをbtrfsのフォーマットして使ってみる.
動作環境は次の通り
- OS : debian 8.x (Jessie)
- CPU : Celeron G530 (2.4 GHz)
- mem : 2G
btrfsの詳しいことについては次のサイトが参考になる.
- (Btrfs - ArchWiki)[https://wiki.archlinuxjp.org/index.php/Btrfs]
** btrfsのフォーマット
btrfsはパーティション単位でなくてボリューム単位でフォーマットすることができる. フォーマットの仕方はパーティション単位で行うときと変わらず,ボリューム名が*/dev/volume*ならば
# mkfs.btrfs */dev/volume*
これでbtrfsとしてボリュームをフォーマットできる.
もし,mkfs.btrfsが入っていないときは次のコマンドでbtrfs-toolsをインストールすることで使えるようになる.
# apt-get install btrfs-tools
今回は/dev/md0に構築したRAIDアレイをbtrfsでフォーマットするため,前述のコマンドの*/dev/volume*を/dev/md0に置き換えるだけである. このようにしてbtrfsでフォーマットしたボリュームはマウントすることもできる. これ以降はbtrfsでフォーマットしたボリュームを/mntにマウントして取り扱う
*** btrfsによるRAID構築 ちなみに,btrfsはRAIDアレイを自身で構築することもできる. ボリューム単位でのフォーマット時に複数ボリュームを指定してすることでRAIDになる.
/dev/sda /dev/sdbをまとめてRAIDにした上でbtrfsでフォーマットするには
# mkfs.btrfs /dev/sda /dev/sdb
で実現できる 複数のボリュームを指定してbtrfsのボリュームを作成した際は,対象となったいずれのボリュームでもマウントが行える.
より詳しいことは(Using Btrfs with Multiple Devices - btrfs Wiki)[https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices]に書いてある.
** subvolume の作成
btrfsではフォーマットされたボリュームを内部でsubvolumeに分割することができる. 一般に物理ボリュームに対してパーティションを切って各パーティションごとにファイルシステムでフォーマットするかのように,btrfsではsubvolumeという仕組みでボリューム内部を分割する.
subvolumeはbtrfsの中核をなす仕組みであり,snapshotと呼ばれるバックアップ機能はsubvolumeごとに行えるなどの利点がある. また, /etc/fstabで指定することでsubvolume単位でマウントすることもできる.
既存のbtrfsボリュームに名前nameのsubvolumeを作成するには以下のコマンドを用いる
# btrfs subvolume create /mnt/*name*
これで/mnt/nameに新しいsubvolumeが作成される. subvolumeを作成する時に指定するパスはbtrfsでフォーマットしたボリュームがマウントされているパスになる. この例ではbtrfsでフォーマットしたボリュームを/mntにマウントしているため,/mnt下のパスを指定することになる.
btrfsボリュームに作成されているsubvolumeの一覧は次のコマンドで取得できる.
# btrfs subvolume list /mnt
今回は録画データの保存用に使いたかったので,録画データを保存するためのsubvolumeとしてnasを作成した.
** subvolume のマウント
btrfsで作成したsubvolumeはsubvolume単位でそれぞれ異なるマウントポイントへマウントすることができる.
例えば, btrfs subvolume list /mntの出力が次のようになっているとする.
# btrfs subvolume list /mnt
ID 257 gen 45 top level 5 path svol1
ID 258 gen 39 top level 5 path svol2
この時svol1をマウントする方法は二つある. 一つはマウントオプションにsubvol=nameを用いて,subvolumeの名前でマウントする方法である.
svol1をマウントするには
# mount -t btrfs -o subvol=svol1 /dev/md0 /mnt/tmp
で/mnt/tmp下にsvol1がマウントされる.
もう一つはマウントオプションsubvolid=objectidを用いて,subvolumeのIDでマウントする方法である. btrfs subvolume list /mntを見ればsvol1のIDは257になっている. つまりsvol1をマウントするには
# mount -t btrfs -o subvolid=257 /dev/md0 /mnt/tmp
で/mnt/tmp下にsvol1がマウントされる