Ошибка для `mount`: `системный вызов не удался: файл существует.`

Если вы используете Linux Mint, используйтеsudo service mdm stop

2
23.08.2019, 15:06
3 ответа

( Я не уверен, почему вы используете вариант монтирования -o loop, поскольку устройство моментального снимка LVM должно быть таким же хорошим дисковым устройством, как и его оригинал.)

«Файл существует» — это стандартный английский текст для errnoзначения 17 или EEXIST, как он назван в #include <errno.h>.

Этот результат ошибки не задокументирован для системного вызова mount(2), поэтому необходимо немного прочитать исходный код.

Перекрёстный справочник ядра Linux -на elixir.bootlin.com может перечислить все места, где EEXIST используется в коде ядра. Поскольку вы пытаетесь зациклить -монтирование файловой системы btrfs, места, которые могут иметь значение, это:

  • drivers/block/loop.c, относящийся к управлению шлейфовыми устройствами
  • fs/btrfs/super.c, который будет использоваться при монтировании файловой системы btrfs.

В drivers/block/loop.cошибка EEXISTгенерируется, если вы пытаетесь выделить конкретное кольцевое устройство, которое уже используется (, например. mount -o loop=/dev/loop3...и /dev/loop3уже заняты ). Но это не должно быть проблемой здесь, если только что-то не создает состояние гонки с вашей командой монтирования.

fs/btrfs/super.cна самом делеbtrfs-имеет специальную функцию для преобразования кодов ошибок в сообщения об ошибках. Он переводит EEXISTв Object already exists.

Вы пытаетесь смонтировать то, что выглядит как клон btrfsфайловой системы, которая уже смонтирована, так что исторически это имело смысл :, раньше это приводило к путанице btrfs, но, похоже, некоторая защита была (разумно )добавлено в какой-то момент.

Поскольку это снимок LVM -уровня , в отличие от снимка, сделанного с помощью btrfsвстроенной -функции моментального снимка, вы должны рассматривать этот снимок как клонированный. filesystem, если вы хотите смонтировать его, пока смонтирована его исходная файловая система :, только LVM будет «знать», что это снимок, а не настоящий 1 :1 клон. Так,вам нужно будет изменить UUID метаданных файловой системы снимка/клона, если вам нужно смонтировать ее в той же системе, что и оригинал.

Предупреждение:У меня мало опыта работы с btrfs, поэтому приведенное ниже может быть неверным или неполным.

Поскольку ваше ядро ​​новее 5.0, у вас может быть возможность использовать btrfstune -m /dev/mapper/matrix-snap--of--coreдля внесения изменений. В противном случае вам придется использовать btrfstune -u /dev/mapper/matrix-snap--of--core, что будет медленнее, так как необходимо обновить все метаданные файловой системы, а не только поле metadata_uuidв суперблоке файловой системы.

10
27.01.2020, 22:02

Ошибка возникает, когда устройство уже смонтировано в другом месте. Сначала нужно размонтировать. Затем вы можете создать новое крепление.

0
09.02.2020, 15:55

Я успешно смонтировал раздел BTRFS, в котором возникла эта проблема, после того, как я изменил UUID раздела.

2
19.10.2021, 14:50

Теги

Похожие вопросы