( Я не уверен, почему вы используете вариант монтирования -o loop
, поскольку устройство моментального снимка LVM должно быть таким же хорошим дисковым устройством, как и его оригинал.)
«Файл существует» — это стандартный английский текст для errno
значения 17 или EEXIST
, как он назван в #include
.
Этот результат ошибки не задокументирован для системного вызова 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
в суперблоке файловой системы.