web-dev-qa-db-ja.com

セカンダリBTRFSファイルシステムを特定のサブボリュームにマウントできません

だから私はBTRFSに頭を包み、BTRFSファイルシステムを使用してファイルサーバーを設定しようとしています。私のセットアップは次のとおりです。

  • / dev/sda1:BTRFSファイルシステム、/および/ homeにマウントされた@、@ homeサブボリュームを含む。

  • / dev/sdb1および/ dev/sdc1:BRTFSプールファイルシステム、2x3GB HDD、
    にはすべてのメディアファイルが含まれています。現在、/ mnt/mediaにマウントされています

120 GB SSDである/ dev/sda1のメディアファイルがスペースを占有しないように、この方法でセットアップします。システムファイル用にのみ予約したいと思います。このセカンダリBTRFSファイルシステムを、@ mediaというラベルが付いたトップレベルのサブボリュームにマウントして、スナップショットを作成できるようにします。ただし、subvolidを使用して/ dev/sdb1または/ dev/sdc1をマウントしようとするたびに、次のエラーが表示されます。

peetipablo@flexo:/$ Sudo mount -t btrfs -o subvolid=354 /dev/sdb1 /mnt/media
mount: mount(2) failed: No such file or directory

サブボリュームリストは次のとおりです。

peetipablo@flexo:/$ Sudo btrfs subvolume list /
ID 257 gen 142548 top level 5 path @
ID 258 gen 142527 top level 5 path @home
ID 310 gen 113715 top level 5 path @apt-snapshot-release-upgrade-utopic-2015-04-30_08:11:14
ID 311 gen 113766 top level 5 path @apt-snapshot-release-upgrade-vivid-2015-04-30_08:39:50
ID 312 gen 134632 top level 257 path var/lib/machines
ID 313 gen 142500 top level 257 path root_snapshot_5_13_15
ID 354 gen 142517 top level 5 path @media

@mediaをディレクトリ/ mnt/mediaのデフォルトのサブボリュームにしようとすると、-o subvolidなしでsdb1をマウントできますが、スナップショットを作成しようとするとエラーが発生します。

peetipablo@flexo:/$ Sudo btrfs subvolume set-default 354 /mnt/media
peetipablo@flexo:/$ Sudo btrfs subvolume get-default /mnt/media
ID 354 gen 142517 top level 5 path @media
peetipablo@flexo:/$ Sudo mount -t btrfs /dev/sdb1 /mnt/media
peetipablo@flexo:/$ Sudo btrfs subvolume snapshot @media /mnt/media_snap
ERROR: error accessing '@media'
peetipablo@flexo:/$ Sudo btrfs subvolume snapshot /mnt/media /mnt/media_snap
Create a snapshot of '/mnt/media' in '/mnt/media_snap'
ERROR: cannot snapshot '/mnt/media' - Invalid cross-device link

私は何かを理解していない、またはこの新しいファイルシステムタイプを使用することを意図していない方法で使用していると感じています。 3つのデバイスすべてを1つのBTRFSファイルシステムにマージするだけで、SSDがメディアでいっぱいになる心配はありませんか?現在使用している方法とは異なる方法を使用して、最終目標を達成する方法はありますか?

3
Pete Buonomo

Btrfsファイルシステムは相互に作用しないため、@mediaサブボリュームは現在/dev/sd{b,c}1にあるため、@mediaサブボリュームを/dev/sda1にマウントできず、クロスデバイスを取得します。 /mnt/media/mnt/media_snapにあるのに対し、/mnt/media/dev/sd{b,c}1にあるのに対し、/mnt/media_snap/dev/sda1にスナップショットしようとするとエラーが発生します。

@media btrfsファイルシステムに/dev/sda1サブボリュームを作成する代わりに、@mediaのbtrfsファイルシステムに/dev/sd{b,c}1サブボリュームを作成します。

Sudo mount /dev/sdb1 /mnt/media/
Sudo btrfs subvol create /mnt/media/@media
Sudo umount /mnt/media/
Sudo mount -o subvol=@media /dev/sdb1 /mnt/media/

/mnt/media/のスナップショットを作成できますが、スナップショットは/dev/sd{b,c}1ファイルシステムにのみ配置できます。したがって、次のような読み取り専用のスナップショットを作成できます。

Sudo btrfs subvol snap -r /mnt/media/ /mnt/media/<snapshot_name>

ただし、サブボリュームの各スナップショットを配置することをお勧めします外部サブボリューム自体。これを行うには、/dev/sd{b,c}1ファイルシステムのルートをマウントする必要があります。

Sudo mkdir /mnt/media_root/
Sudo mount -o subvol=/ /dev/sdb1 /mnt/media_root/
Sudo btrfs subvol snap -r /mnt/media_root/@media/ /mnt/media_root/<snapshot_name>
4
Vincent Yu