데이터를 디스크에서 새 디스크로 전송했습니다. 그러나 새로운 하나는 seagate IronWolf 12Tb에 문제가 있습니다 (출력 전압에 너무 민감 할 수 있음). 결코 그다지 덜한 교체 작업은 내가 알아 차릴 시간이 없다는 메시지로 멈춘다.
그래서 Seagate 디스크를 제거하기 위해 재부팅해야했습니다. 나는 오류없이 끝나고, 서버를 중지하고, 12Tb 디스크를 제거하고 재부팅하는 원본 디스크에서 btrfs 검사를 수행합니다 ...
내 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
그럼 나는 상황에 동의하지만 "btrfs replace cancel"은 마운트 포인트가 필요합니다. 그리고 그 시스템은 거치를 거부합니다 ... 개가 꼬리를 찾고 있습니다.
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 사용 내가 읽고 있던 곳 :
실패한 장치 교체
btrfs 사용 바꾸기
장애가 발생했거나 RAID 어레이에서 실패한 장치가있는 경우 새 장치를 추가하고 실패한 장치를 제거하는 대신 btrfs replace 명령을 사용해야합니다. 이것은 장치를 추가하고 삭제할 때 저에게 도움이 된 최신 기술 이었지만 복구를 시도하기 전에 IRC 채널의 메일 링리스트를 참조하는 것이 도움이 될 수 있습니다.
먼저 파일 시스템에 장치를 나열하십시오.이 예에서는 동일한 크기의 새 드라이브로 대체 할 누락 된 장치가 하나 있습니다. 다음 출력에서 마지막 장치 번호 (누락 된 것)가 장치 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를 마운트하는 방법이었습니다.