303.3 DFS (Distributed File System)
Introducción
DFS (Distributed File System) es una tecnología que permite crear un espacio de nombres unificado para recursos compartidos distribuidos en múltiples servidores. Con DFS, los usuarios acceden a una ruta única que se redirige transparentemente a los servidores reales que contienen los datos. Samba implementa soporte para DFS, permitiendo a servidores Linux participar en infraestructuras DFS.
Conceptos fundamentales de DFS
¿Qué es DFS?
DFS proporciona dos funcionalidades principales:
- Espacio de nombres unificado: Una raíz DFS que agrupa enlaces a múltiples shares en diferentes servidores bajo una sola ruta
- Failover/redundancia: Los enlaces DFS pueden apuntar a múltiples destinos, proporcionando alta disponibilidad
\\empresa\dfs\ ← Raíz DFS (punto de entrada)
├── datos\ ← Enlace DFS → \\servidor1\datos
├── proyectos\ ← Enlace DFS → \\servidor2\proyectos
└── backup\ ← Enlace DFS → \\servidor3\backup
Beneficios de DFS
- Los usuarios solo necesitan recordar una ruta base
- La ubicación física de los datos es transparente
- Los recursos pueden moverse entre servidores sin cambiar la ruta de acceso
- Soporte para failover entre réplicas
Para el examen: DFS permite crear un espacio de nombres virtual que agrupa shares de múltiples servidores bajo una única ruta de acceso, proporcionando transparencia de ubicación.
Configuración de DFS en Samba
Raíz DFS (msdfs root)
Para configurar un share como raíz DFS:
[global]
host msdfs = yes
[dfs]
path = /srv/samba/dfs
msdfs root = yes
browseable = yesEl parámetro host msdfs = yes en [global] habilita el soporte DFS en el servidor. msdfs root = yes en el share lo convierte en una raíz DFS.
Para el examen: Se necesitan dos parámetros para DFS:
host msdfs = yesen[global]ymsdfs root = yesen el share que actuará como raíz DFS.
Creación de enlaces DFS
Los enlaces DFS se crean como enlaces simbólicos en el directorio raíz DFS con un formato especial:
# Crear el directorio raíz DFS
mkdir -p /srv/samba/dfs
# Crear enlace DFS a un share en otro servidor
ln -s "msdfs:servidor1\datos" /srv/samba/dfs/datos
# Crear enlace DFS con múltiples destinos (failover)
ln -s "msdfs:servidor1\proyectos,servidor2\proyectos" /srv/samba/dfs/proyectosEl formato del enlace simbólico es:
msdfs:servidor\sharepara un destino únicomsdfs:servidor1\share,servidor2\sharepara múltiples destinos (failover)
Para el examen: Los enlaces DFS en Samba se implementan como enlaces simbólicos con el prefijo
msdfs:en el directorio raíz DFS. Los destinos múltiples se separan con comas.
Ejemplo completo de configuración
# smb.conf
[global]
workgroup = EMPRESA
host msdfs = yes
[namespace]
path = /srv/samba/dfs
msdfs root = yes
browseable = yes
guest ok = no
valid users = @empleados# Crear estructura DFS
mkdir -p /srv/samba/dfs
# Enlaces a shares en diferentes servidores
ln -s "msdfs:fileserver1\documentos" /srv/samba/dfs/documentos
ln -s "msdfs:fileserver2\multimedia" /srv/samba/dfs/multimedia
ln -s "msdfs:fileserver1\plantillas,fileserver2\plantillas" /srv/samba/dfs/plantillasDFS Proxy (msdfs proxy)
msdfs proxy permite redirigir un share completo a otro servidor sin crear enlaces simbólicos:
[aplicaciones]
msdfs proxy = \servidor2\aplicacionesCuando un cliente accede a \\servidor_samba\aplicaciones, se redirige automáticamente a \\servidor2\aplicaciones.
Para el examen:
msdfs proxyredirige un share completo a otro servidor. No requieremsdfs root = yesni enlaces simbólicos; funciona a nivel de share.
Failover con DFS
Los enlaces DFS con múltiples destinos proporcionan failover:
# Enlace con dos destinos para failover
ln -s "msdfs:srv1\datos,srv2\datos" /srv/samba/dfs/datosCuando el cliente accede al enlace:
- Intenta conectar al primer destino (
srv1\datos) - Si falla, intenta el segundo destino (
srv2\datos) - El cliente selecciona aleatoriamente entre los destinos disponibles
Para controlar la prioridad de los destinos, se puede usar la funcionalidad de referral del cliente Windows.
Parámetros DFS en smb.conf
| Parámetro | Sección | Descripción |
|---|---|---|
host msdfs | [global] | Habilita soporte DFS en el servidor |
msdfs root | [share] | Convierte el share en raíz DFS |
msdfs proxy | [share] | Redirige el share completo a otro servidor |
msdfs shuffle referrals | [global] | Aleatoriza el orden de destinos DFS |
Verificación y diagnóstico
# Verificar que los enlaces simbólicos DFS son correctos
ls -la /srv/samba/dfs/
# Verificar la configuración de DFS
testparm -s | grep -i dfs
# Probar acceso DFS desde un cliente Linux
smbclient //servidor/namespace -U usuario -c "ls"
# Verificar referral DFS
smbclient //servidor/namespace/datos -U usuarioConsideraciones de seguridad
- Los permisos en la raíz DFS controlan quién puede ver los enlaces
- Los permisos de los shares destino controlan el acceso real a los datos
- Los enlaces DFS no proporcionan autenticación adicional
- Se recomienda usar
valid usersen la raíz DFS para controlar el acceso
[namespace]
path = /srv/samba/dfs
msdfs root = yes
valid users = @empleados
browseable = yesPara el examen: La seguridad de DFS tiene dos niveles: los permisos de la raíz DFS (quién puede ver los enlaces) y los permisos de los shares destino (quién puede acceder a los datos). Ambos se evalúan independientemente.
Trampas del examen
Errores comunes y distinciones criticas que LPI suele evaluar en este subtema:
- Dos parametros necesarios para DFS — Se requiere
host msdfs = yesen[global]Ymsdfs root = yesen el share. Olvidar cualquiera de los dos desactiva DFS. Las preguntas suelen presentar configuraciones donde falta uno de ellos. - Enlaces DFS son symlinks con prefijo
msdfs:— Los enlaces se crean comoln -s "msdfs:servidor\share" /ruta/dfs/enlace. El formato usa backslash (\) no forward slash. Multiples destinos se separan con coma. Errores en el formato del symlink son causa comun de fallo. msdfs proxyvsmsdfs root—msdfs proxyredirige un share COMPLETO a otro servidor sin necesitar symlinks nimsdfs root.msdfs rootconvierte un share en raiz DFS con enlaces. Son mecanismos diferentes; las preguntas piden identificar cual usar en cada escenario.- DFS NO proporciona replicacion de datos — DFS en Samba solo redirige clientes a los servidores correctos. NO replica datos entre servidores. Para replicacion se necesitan herramientas externas (rsync, etc.). Confundir DFS con DFS-R (replicacion) es error clasico.
- Failover con multiples destinos —
ln -s "msdfs:srv1\datos,srv2\datos" /dfs/datosproporciona failover: si srv1 falla, el cliente intenta srv2. El cliente selecciona aleatoriamente entre destinos disponibles.msdfs shuffle referralscontrola la aleatorizacion. - Seguridad en dos niveles — Los permisos de la raiz DFS (quien ve los enlaces) y los permisos de los shares destino (quien accede a los datos) se evaluan independientemente. Un usuario puede ver un enlace DFS pero no tener acceso al share destino.