Вопрос или проблема
У меня есть сервер Debian, который использует rsync для передачи файлов в nfs4-ресурсе (Truenas).
Nfs-ресурс монтируется с помощью systemd:
192.168.88.162:/mnt/pool3/nfsdataset /mnt/systemd/nfs/nfsdataset nfs4 nofail,x-systemd.automount 0 0
Команда rsync такая:rsync -a -A -P testfile /mnt/systemd/nfs/nfsdataset
Когда rsync передает файлы с acl, возникает эта ошибка:
sending incremental file list
testfile
0 100% 0,00kB/s 0:00:00 (xfr#1, to-chk=0/1)
rsync: [receiver] set_acl: sys_acl_set_file(.testfile.FS8M3I, ACL_TYPE_ACCESS): Operation not supported (95)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1338) [sender=3.2.7]
Nfs4 включен в наборе данных Truenas.
Возможно ли передавать файлы с acl в nfs-ресурсе?
Ответ или решение
Проблема, с которой вы столкнулись, связана с ошибкой при передаче файлов с использованием списков контроля доступа (ACL) через rsync
на сервере Debian с шарой NFS4, развернутой на TrueNAS. Это довольно распространенная проблема, когда механизмы работы ACL на источнике и на целевой стороне не совпадают из-за ограничений протокола NFS или его конфигурации.
Теория (Theory):
Rsync
– это мощный инструмент для синхронизации файлов и директорий между двумя системами, который также поддерживает сохранение метаданных файлов, таких как владельцы, права доступа и ACL. Однако, когда дело касается работы через сети файловых систем, как NFS, возникают дополнительные сложности.
NFSv4 включает собственную поддержку ACL, отличающуюся от ACL POSIX, которые более традиционно применяются в системах UNIX/Linux. Основная проблема заключается в том, что не все серверы NFS корректно поддерживают ACL POSIX, или их поддержка может быть не полностью реализована.
По сообщению об ошибке, возникает несоответствие между клиентом, который пытается применить ACL, и сервером, который не может или не настроен для поддержки этого типа ACL.
Пример (Example):
Ошибка, которую вы наблюдаете, указывает на то, что система пытается выполнить системный вызов set_acl
, который возвращает ошибку "Операция не поддерживается" (Operation not supported). Это говорит о том, что либо сервер NFS, либо его конфигурация не поддерживает ACL POSIX, которые клиент rsync
пытается передать. Проблема может быть как в TrueNAS, так и в конфигурации самого клиента.
Применение (Application):
Для решения этой проблемы можно предпринять несколько шагов:
-
Проверка поддержки ACL на сервере TrueNAS:
- Убедитесь, что поддержка ACL включена в настройках файловой системы на TrueNAS. Хотя NFSv4 по умолчанию поддерживает свои ACL, нужно проверить, правильно ли сервер сконфигурирован для работы с таким типом метаданных.
-
Конфигурация клиента на основе Debian:
- На стороне Debian убедитесь, что клиентская часть NFS имеет необходимые возможности для передачи и обработки ACL POSIX.
- Прежде всего, проверьте поддержку ядра для NFS и ACL, выполнив следующую команду:
zcat /proc/config.gz | grep NFS zcat /proc/config.gz | grep ACL
- Также убедитесь, что используемая версия
rsync
свежая и поддерживает все необходимые опции для работы с ACL.
-
Тестирование и отладка:
- Попробуйте использовать
rsync
без опции-A
, чтобы проверить, является ли передача файлов без ACL успешной. Это позволит изолировать проблему именно в области управления ACL, если базовая передача файлов работает корректно. - Проведите тестирование с более простыми ACL, по возможности сведя к минимуму количество атрибутов, чтобы определить, на каком этапе возникает ошибка.
- Попробуйте использовать
-
Настройка ACL на стороне TrueNAS:
- Если проблема все же в конфигурации TrueNAS, вам может потребоваться настроить службу NFS так, чтобы она корректно интерпретировала и применяла ACL, или оставить только родные ACL NFSv4, которые будут управлять доступом после передачи.
-
Документация и поддержка сообщества:
- Прочтите документацию TrueNAS и rsync для получения более точной информации о совместимости и управления ACL.
- Присоединитесь к форумам или сообществу TrueNAS и Debian, чтобы спросить у других пользователей о возможных решениях и аналогичных проблемах.
Важно помнить, что взаимодействие двух различных систем всегда требует настройки и отладки, особенно в случае работы с правами доступа и списками контроля, которые могут отличаться между платформами. Если проблема не разрешится вышерассмотренными путями, возможно, стоит рассмотреть обращение в техподдержку TrueNAS или изучение обновлений, которые могут исправлять несовместимости ACL в будущем.