Я переносил данные с диска на новый. Тем не менее, новый Seagate IronWolf 12Tb имеет проблемы (может быть слишком чувствительным к выходному напряжению). Тем не менее операция «Заменить» останавливается на сообщении, которое я не потратил на это время.

Поэтому мне пришлось перезагрузиться, чтобы удалить диск Seagate. Я выполняю проверку btrfs на исходном диске, который заканчивается без ошибок, останавливаю сервер, удаляю диск de 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

Что ж, я согласен с ситуацией, однако для "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

Это не моя точная ситуация, так как у меня нет "*** Некоторые устройства отсутствуют", однако это довольно близко. Я прочитал следующее:

Если устройство присутствует, тогда проще определить требуемый числовой идентификатор устройства.

Перед заменой устройства вам нужно смонтировать массив, если у вас отсутствует устройство, вам нужно будет использовать следующую команду:

sudo mount -o degraded /dev/sda1 /mnt

Здесь это был способ смонтировать деградированные btrfs, чтобы отменить прерванную операцию замены.

1 ответ1

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. смонтировать его с опцией -o ухудшено
  3. отменить операцию замены
  4. размонтировать том btrfs
  5. смонтировать без какой-либо опции

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .