Назад | Перейти на главную страницу

Самба ломает жесткие ссылки - желаемое поведение?

Я использую Samba 2: 3.5.4 на сервере Ubuntu 10.10 и файловую систему EXT4.

Я установил папку «dev» локально на моем компьютере и с помощью «cp -alf» жестко связал эту папку с папкой «test». Итак, при просмотре папки "test" она имеет точно такое же содержимое, что и папка "dev".

"test" в настоящее время используется в сети с помощью Samba.

Если я изменю файл в "test" в локальной файловой системе. Изменение отражается в папке "dev" (поскольку папки связаны). Это как и ожидалось.

Когда файл в "test" изменяется через общий ресурс Samba, жесткая ссылка не работает. Т.е. изменение коснется только «test», а не «dev».

На самом деле мы хотим изменять файлы через Samba и разрывать жесткие ссылки. Меня спросили (и я не могу найти по этому поводу официальных документов) следующее:

Опасность заключается в том, что если это ошибка, и мы начнем использовать вышеуказанное решение, когда ошибка будет исправлена, наша установка больше не будет работать!

У кого-нибудь есть идеи,

Спасибо.

Я не могу комментировать Samba конкретно, но часто конкретное используемое приложение отвечает за разрыв ссылок. Некоторые редакторы, например, заменяют файл - вместо того, чтобы просто перезаписывать его - при сохранении изменений, что, конечно же, нарушит любые жесткие ссылки, связанные с файлом ... так что ваше поведение может быть больше связано с приложением, которое вы ' Вы используете чем Samba.

Это не поведение самбы, которое разрывает ссылку. Ларск прав в том, что описанное вами поведение зависит от приложения. Приложения будут записывать в файлы двумя основными методами: Метод «А»: просто записывать обратно в исходный файл. Метод «Б»: следуйте безопасному алгоритму: (1) запись во временный файл; (2) в случае успешной записи временного файла замените исходный файл временным файлом. В методе «B» запись во временный файл, конечно же, приведет к созданию нового inode, а замена оригинального файла разорвет жесткую ссылку.

Убедитесь в этом сами: создайте простой файл text.txt на общей папке samba вместе с соответствующим жестко связанным файлом. Отредактируйте файл samba, используя блокнот или блокнот, и вы увидите, что inodes остались прежними. Сделайте то же самое, используя MS-Word, и обнаружите, что сохраненный файл получает новый индексный дескриптор, тем самым нарушая жесткую ссылку. Таким образом, блокнот и блокнот используют метод «A», в то время как MS-Word использует метод «B». Вы можете дополнительно доказать себе, что это не самба, используя локальную файловую систему ext3, смонтированную в Windows, и запустив те же тесты.