web-dev-qa-db-ja.com

btrfs RAID-1ファイルシステムを作成する方法(mkfs.btrfsのアサーションエラー)?

Btrfs UseCasesの指示に従って、「劣化モード」でbtrfs RAID-1ファイルシステムを作成しようとしましたが、致命的なアサーションエラーが発生しました。なぜこれが失敗するのですか、そして回避策はありますか?

私が従った指示は次のとおりです。

https://btrfs.wiki.kernel.org/index.php/UseCases#How_can_I_create_a_RAID-1_filesystem_in_.22degraded_mode.22.3F

mkfs.btrfsおよびbtrfs filesystem showコマンドの出力は次のとおりです。

# mkfs.btrfs -m raid1 -d raid1 /dev/sdd1 /dev/loop1

WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using

failed to read /dev/sr0
adding device /dev/loop1 id 2
mkfs.btrfs: volumes.c:802: btrfs_alloc_chunk: Assertion `!(ret)' failed.
zsh: abort (core dumped)  mkfs.btrfs -m raid1 -d raid1 /dev/sdd1 /dev/loop1
# btrfs filesystem show
failed to read /dev/sr0
Label: none  uuid: 773908b8-acca-4c30-85c5-6642b06de22b
        Total devices 1 FS bytes used 28.00KB
        devid    1 size 223.13GB used 2.04GB path /dev/sda5

Label: none  uuid: 0f06f1a8-5f5f-4b92-a55c-b827bcbcc840
        Total devices 2 FS bytes used 24.00KB
        devid    2 size 2.00GB used 0.00 path /dev/loop1
        devid    1 size 1.36TB used 20.00MB path /dev/sdd1

Btrfs Btrfs v0.19
#

編集:

ファイルシステムはマウント可能ではないことが判明しました:

# mount /dev/sdd1 /mnt/big2
mount: wrong fs type, bad option, bad superblock on /dev/sdd1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so
#

では、なぜmkfsが失敗したのでしょうか。また、回避策はありますか?

4
amcnabb

劣化したアレイをマウントするには、degradedマウントオプションを使用する必要があります。

    mount -o degraded /dev/sdd1 /mnt/big2

小さなloop1パーティションで何をしているのかわかりません。これは、劣化したアレイをマウントするために必要ではありません。 1つのメンバーが2GB、1つのメンバーが1.36TBのraid1アレイを作成しています。これらの違いは3桁であり、期待できる最善の方法は2GBのアレイを使用することです。しかし、メタデータは重要ではありません。 256MB未満のbtrfsファイルシステムは作成できないことが知られています。

一般に、raid1配列を作成する場合、配列の両方のメンバーは同じサイズである必要があります。最近 btrfsのドキュメント が更新され、不均一な配列を作成でき、最小の配列メンバーのサイズになることがわかりました。しかし、過去には、そのような配列は、単純に予想されるよりもはるかに速く最小のメンバーを埋めていました。

したがって、そのような非対称配列を作成したり、そのような小さな配列メンバーを使用したりしないでください。 (そして何よりも-o degradedを使用します)

3
mcelrath