장치 교체 작업이 진행 중이므로 btrfs를 탑재 할 수 없습니다.


0

데이터를 디스크에서 새 디스크로 전송했습니다. 그러나 새로운 하나는 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를 마운트하는 방법이었습니다.

답변:


0

그래서 여기 그의 전체 솔루션 :

[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를 마운트 할 수 없을 때 :

  1. btrfs 볼륨 확인
  2. 옵션으로 장착하십시오. - 저하 된
  3. 대체 작업 취소
  4. btrfs 볼륨 마운트 해제
  5. 옵션없이 마운트하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.