DFS (Распределенная файловая система) — это функция, которая предоставляет несколько возможностей: альтернативное пространство имен, балансировку нагрузки и автоматическое переключение при сбоях.
Технически, DFS предоставляет доступ к общему каталогу, который не содержит файлов, а только соединения (junctions), и, по желанию, подкаталоги с еще большем количеством соединений.
Соединения похожи на символические ссылки (soft links), как в файловых системах Unix, но они указывают на общие каталоги, и могут также указывать на общие каталоги на других серверах. Клиенты сначала обращаются к серверу DFS за соединением, а затем получают доступ к файловому серверу, на который это соединение указывает.
Основное использование этой функции — создание альтернативного пространства имен (дерево каталогов), которое скрывает детали подлежащей инфраструктуры от пользователей. Пути, которые видят пользователи (называемые именами DFS), не изменяются, когда сервера переименовываются или когда некоторые каталоги перемещаются на другой сервер. Администраторы могут просто заменить устаревшее имя DFS на новое, которое указывает на новый сервер.
Имя DFS может, по желанию, указывать на несколько целевых объектов (например, предоставлять клиенту несколько альтернативных соединений с разными общими папками). В этом случае клиенты могут получить доступ к любому из целевых объектов. Это обеспечивает балансировку нагрузки и автоматическое переключение на другой сервер в случае сбоя одного из серверов.
DFS может быть двух типов: автономное
и основанное на домене
:
Автономный вариант работает на одном сервере, и имена DFS включают имя этого сервера, то есть они выглядят как ресурсы, предоставляемые этим сервером.
Вариант на основе домена использует только имя домена, а не имя конкретного сервера. Несколько серверов в домене могут одновременно работать как серверы DFS. Клиенты автоматически выбирают один из серверов DFS и отправляют свои запросы именно к нему.
Деревья DFS в Samba работают с любыми клиентами, поддерживающими DFS, начиная с Windows 95 и до 200x. Следующая примерная конфигурация показывает, как настроить дерево DFS на сервере Samba. В директории /export/dfsroot вы настраиваете свои ссылки DFS на другие серверы в сети.
# из под root
cd /export/dfsroot
chown root /export/dfsroot
chmod 755 /export/dfsroot
ln -s msdfs:storageA\\shareA linka
ln -s msdfs:serverB\\share,serverC\\share linkb
В любом текстовом редакторе открыть файл /etc/samba/smb.conf
[global]
netbios name = GANDALF
host msdfs = yes
[dfs]
path = /export/dfsroot
msdfs root = yes
Настроить разрешения и владельца директории, которая будет использоваться в качестве корня DFS, следует таким образом, чтобы только назначенные пользователи могли создавать, удалять или изменять ссылки msdfs.
Имена символических ссылок должны быть написаны строчными буквами. Это ограничение существует для того, чтобы избежать попыток проверки всех возможных комбинаций регистра букв при поиске имени ссылки.
В конечном итоге следует настроить символические ссылки так, чтобы они указывали на необходимые сетевые ресурсы, а затем следует запустить службу smb.service
.
Пользователи на клиентах, поддерживающих DFS, смогут просматривать дерево DFS на сервере по указанному пути. Доступ к ссылкам, отображаемым как директории для клиента, приведет пользователей непосредственно к нужным ресурсам в сети.
Далее следует создать символические ссылки (symlinks) на другие сетевые ресурсы, которые будут отображаться как часть DFS-дерева, например:
# Определяется одна цель:
ln -s msdfs:storage0\\share0 linka
# Определяются две альтернативные цели:
ln -s msdfs:server1\\share,server2\\share linkb
# Пример использования обычных косых черт:
ln -s msdfs:server3/share/dir/name linkc