
У меня есть файловый сервер, настроенный на общий доступ к внешнему диску через samba и netatalk (AFP). У меня есть запись fstab для автоматического монтирования диска в /mnt/external
, который затем автоматически предоставляется в общий доступ различными демонами.
Проблема в том, что диск не монтируется должным образом (например, если я забыл его включить или если я взял его на работу в тот день). В этом случае точка монтирования становится общей без соответствующего подключенного диска, что приводит к записи различных метафайлов в мою точку монтирования, а не к чистому сбою. Это не позволяет диску правильно монтироваться в следующий раз, когда я его подключаю (непустой каталог), и может привести к потере данных, если кто-то использовал общий ресурс в это время.
Есть ли способ сделать так, чтобы общие ресурсы перестали работать в случае, если диск отключен?
решение1
Вы можете задать атрибуты исходной папки монтирования, чтобы сделать ее immutable
:
chattr +i /mnt/external
Папка теперь заблокирована, и любые операции с ней запрещены (вы можете разблокировать ее с помощью -i
). Однако mount
или fstab
по-прежнему работают правильно.
Убедитесь, что диск не смонтирован перед запуском chattr
. Если вы получили ошибку "Inappropriate ioctl for device While reading flags"
, возможно, вы работаете с файловой системой, которая не поддерживает атрибуты папок. Фактически, некоторые дистрибутивы Linux монтируют основной раздел, используя overlayfs
файловую систему вместо ext
. Поэтому вам придется вручную смонтировать его в другом месте, чтобы начать chattr
работать с папками (то есть mount /dev/mmcblk0p3 /mnt/temp
тогда chattr +i /mnt/temp/root/mnt/external
).