ディスクから新しいデータにデータを転送していました。ただし、新しいシーゲイトIronWolf 12Tbには問題があります(電圧を出力するには感度が高すぎる可能性があります)。それでもなお、交換操作は、私が注意するのに時間がかからなかったメッセージで停止します。
そのため、Seagateディスクを削除するために再起動する必要がありました。エラーなしで終了する元のディスクでbtrfsチェックを実行し、サーバーを停止し、12Tbディスクを取り外して再起動します...
私のbtrfsデバイスがマウントされないため、起動に失敗します:
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.
だから私は(あなたがしたように)実行します:dmesg |テールアンドゲット:
[ 2833.182505] BTRFS info (device sdd1): disk space caching is enabled
[ 2833.182515] BTRFS info (device sdd1): has skinny extents
[ 2833.321953] BTRFS warning (device sdd1): cannot mount because device replace operation is ongoing and
[ 2833.321962] BTRFS warning (device sdd1): tgtdev (devid 0) is missing, need to run 'btrfs dev scan'?
[ 2833.321969] BTRFS error (device sdd1): failed to init dev_replace: -5
[ 2833.339466] BTRFS: open_ctree failed
私は状況に同意しますが、「btrfsreplacecancel」にはマウントポイントが必要です。そして、システムはマウントを拒否します...犬は尻尾を探しています。
usage: btrfs replace cancel <mount_point>
私は多くの検索を行いましたが、実行可能な解決策は見つかりませんでした。 「置換操作が進行中です」を検索しましたが、ソースコードが次のページが見つかったと思います: dev-replace.c このコードブロックが見つかった場合:
/*
* allow 'btrfs dev replace_cancel' if src/tgt device is
* missing
*/
if (!dev_replace->srcdev &&
!btrfs_test_opt(dev_root, DEGRADED)) {
ret = -EIO;
pr_warn("btrfs: cannot mount because device replace operation is ongoing and\n" "srcdev (devid %llu) is missing, need to run 'btrfs dev scan'?\n",
(unsigned long long)src_devid);
}
if (!dev_replace->tgtdev &&
!btrfs_test_opt(dev_root, DEGRADED)) {
ret = -EIO;
pr_warn("btrfs: cannot mount because device replace operation is ongoing and\n" "tgtdev (devid %llu) is missing, need to run btrfs dev scan?\n",
(unsigned long long)BTRFS_DEV_REPLACE_DEVID);
}
エラーの「公式」の理由は、btrfsボリュームが劣化していることであるというのは小さなアドバイスではありません。うまくいけば、私はこのページを同時に読んでいました: 複数のデバイスでBtrfsを使用 私が読んでいた場所:
故障したデバイスの交換
Btrfsreplaceを使用する
障害が発生しているデバイスまたはRAIDアレイで障害が発生したデバイスがある場合は、新しいデバイスを追加して障害のあるデバイスを削除するのではなく、btrfsreplaceコマンドを使用する必要があります。これは、デバイスの追加と削除が機能しなかったときに機能した新しい手法ですが、回復を試みる前にircチャネルのメーリングリストを参照すると役立つ場合があります。
最初にファイルシステム内のデバイスをリストします。この例では、同じサイズの新しいドライブと交換する1つの不足しているデバイスがあります。次の出力では、最終的なデバイス番号(欠落している)がデバイス6であることがわかります。
enter code here
user@Host:~$ Sudo btrfs filesystem show
Label: none uuid: 67b4821f-16e0-436d-b521-e4ab2c7d3ab7
Total devices 6 FS bytes used 5.47TiB
devid 1 size 1.81TiB used 1.71TiB path /dev/sda3
devid 2 size 1.81TiB used 1.71TiB path /dev/sdb3
devid 3 size 1.82TiB used 1.72TiB path /dev/sdc1
devid 4 size 1.82TiB used 1.72TiB path /dev/sdd1
devid 5 size 2.73TiB used 2.62TiB path /dev/sde1
*** Some devices missing
「***一部のデバイスがありません」がないため、これは私の正確な状況ではありませんが、かなり近いです。私は以下を読みました:
デバイスが存在する場合は、必要な数値のデバイスIDを簡単に判別できます。
デバイスを交換する前に、アレイをマウントする必要があります。不足しているデバイスがある場合は、次のコマンドを使用する必要があります。
Sudo mount -o degraded /dev/sda1 /mnt
これは、中断された置換操作をキャンセルするために、劣化したbtrfsをマウントする方法でした。
だからここで彼の完全な解決策:
[root@home disk]# mount /dev/sdd1 /store/backup_big_btrfs/
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.
[root@home disk]# dmesg | tail
[ 2833.182505] BTRFS info (device sdd1): disk space caching is enabled
[ 2833.182515] BTRFS info (device sdd1): has skinny extents
[ 2833.321953] BTRFS warning (device sdd1): cannot mount because device replace operation is ongoing and
[ 2833.321962] BTRFS warning (device sdd1): tgtdev (devid 0) is missing, need to run 'btrfs dev scan'?
[ 2833.321969] BTRFS error (device sdd1): failed to init dev_replace: -5
[ 2833.339466] BTRFS: open_ctree failed
[root@home disk]# btrfs replace cancel
btrfs replace cancel: too few arguments
usage: btrfs replace cancel <mount_point>
Cancel a running device replace operation.
[root@home disk]# btrfs replace cancel /store/backup_big_btrfs
ERROR: not a btrfs filesystem: /store/backup_big_btrfs
[root@home disk]# mount -o degraded /dev/sdd1 /store/backup_big_btrfs/
[root@home disk]# btrfs replace cancel /store/backup_big_btrfs/
[root@home disk]# umount /store/backup_big_btrfs/
[root@home disk]# mount /dev/sdd1 /store/backup_big_btrfs/
置換操作が失敗したためにbtrfsをマウントできない場合は、次のようにします。