web-dev-qa-db-ja.com

BTRFSファイルシステムのRAID1への変換は、「デバイスに不適切なioctl」で失敗します

単一のパーティションに最大1.6TBのBTRFSボリュームがあり、ミラーリングを目的として、まったく同じサイズの新しく作成およびフォーマットされた別のパーティションを(別のデバイスに)正常に追加しました。ボリュームのサイズは約3.2TBのように見えます。ただし、ボリューム(/mnt/mnt0にマウントされている)をRAID-1に変換しようとすると

btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt/mnt0

ここ から)

次のエラーが発生します。

ERROR: error during balancing '/mnt/mnt0' - Inappropriate ioctl for device
There may be more info in syslog - try dmesg | tail

dmesgの出力はかなり面白くありません(いずれの場合も、上記のコマンドを実行しても生成されたものではないようです)。

root@Xeon:~# dmesg | tail
[26712.029432] device label Storage devid 1 transid 3760 /dev/sdb1
[26712.029464] device fsid 7c7bb4a7-f403-4dad-b7e3-92fa1a30c764 devid 1 transid 175588 /dev/sdb2
[26712.029494] device fsid 56a9e829-c964-4f16-a37f-3bde05fb22a0 devid 1 transid 172361 /dev/sdb3
[26712.029524] device fsid 29181083-c9d6-4d8a-bd3b-1f17b925bb21 devid 1 transid 70197 /dev/sdb4
[26712.029582] device fsid ff65812c-9515-465d-8536-e8d00cfb2193 devid 1 transid 3677 /dev/sda1
[26712.029641] device label Storage devid 2 transid 3760 /dev/sdc1
[26712.029886] device fsid 44c395d9-df4e-4ab2-8a41-5b06e584e854 devid 1 transid 4 /dev/sdc2
[26828.213983] device label Storage devid 1 transid 3760 /dev/sdb1
[26967.116350] device label Storage devid 1 transid 3760 /dev/sdb1
[27079.571213] device label Storage devid 2 transid 3763 /dev/sdc1

btrfs fi showは与える(これが関連性がある場合):

Label: 'Storage'  uuid: 77a43f33-908b-468b-9570-55964547d1a1
        Total devices 2 FS bytes used 744.68GB 
        devid    2 size 1.62TB used 0.00 path /dev/sdc1
        devid    1 size 1.62TB used 947.54GB path /dev/sdb1

両方のパーティションがbtrfs.fsckを渡しました。

どうすればそれを機能させることができますか?

編集:これは、3.2カーネルを使用した最新のDebianWheezyインストールです。

更新:不思議なことに、btrfs balance start /mnt/mnt0は正常に機能しましたが、btrfs balance cancel /mnt/mnt0は同じエラーで失敗しました。バランシング後、両方のボリュームに同じデータがあるように見えますが、データはまだRAID0にあります。 btrfs fi showは与える

Label: 'Storage'  uuid: 77a43f33-908b-468b-9570-55964547d1a1
        Total devices 2 FS bytes used 744.66GB
        devid    2 size 1.62TB used 901.01GB path /dev/sdc1
        devid    1 size 1.62TB used 901.01GB path /dev/sdb1

そしてbtrfs fi df

Data, RAID0: total=1.72TB, used=742.51GB
System, RAID1: total=8.00MB, used=144.00KB
System: total=4.00MB, used=0.00
Metadata, RAID1: total=19.00GB, used=2.15GB

カーネルを3.8.4にアップグレードすることで解決しました。自分でコンパイルする必要がありましたが、ストック設定は正常に機能しているようです(btrfsをモジュールとしてではなく静的にビルドしましたが、これが必要かどうかはわかりません)。

編集:私はこれを見逃したとは信じられません... BTRFS wiki によると、ファイルシステムが作成された後にRAIDレベルを変更することは3.2ではサポートされていませんシリーズおよび古いカーネル。それが私の問題だったに違いありません。