🛠 NAS Samba sur NVMe avec VLANs de gestion
Objetivos
Aprovechar el slot M.2 Key-M (2280, PCIe 2.1 x1, NVMe) del NanoPi R5S para convertirlo en un NAS Samba rápido, aislando al mismo tiempo el tráfico de gestión mediante VLAN 802.1Q en el bridge LAN. Combinarás: montaje del NVMe con ext4, compartición Samba endurecida, creación de subinterfaces VLAN en el bridge (br-lan.10 datos / br-lan.20 gestión) y reglas de filtrado entre zonas. Requiere un switch gestionado aguas arriba.
Material
- NanoPi R5S con SSD NVMe M.2 2280 (el slot es PCIe 2.1 x1: limitado a ~500 MB/s, muy por encima del 2,5GbE)
- Debian/Ubuntu o Armbian; switch de red gestionado con trunk 802.1Q en el puerto del R5S
- Fuente de alimentación USB-C PD ≥ 10 W (el NVMe añade consumo)
Código completo
#!/bin/bash
# 1) NVMe : formatage (ATTENTION efface tout) + montage persistant
lsblk ; mkfs.ext4 -L nas /dev/nvme0n1 # vérifier le bon disque AVANT
mkdir -p /mnt/nas && blkid /dev/nvme0n1
# /etc/fstab : UUID=... /mnt/nas ext4 defaults,noatime 0 2
mount -a
# 2) VLANs sur le bridge LAN (switch amont en trunk 10,20)
ip link add link br-lan name br-lan.10 type vlan id 10
ip link add link br-lan name br-lan.20 type vlan id 20
ip addr add 192.168.10.1/24 dev br-lan.10 # données
ip addr add 192.168.20.1/24 dev br-lan.20 # gestion
ip link set br-lan.10 up ; ip link set br-lan.20 up
# 3) Samba durci sur le VLAN données uniquement
apt install -y samba
printf '[nas]\n path = /mnt/nas\n browseable = yes\n valid users = nasuser\n create mask = 0660\n' >> /etc/samba/smb.conf
systemctl restart smbd
# 4) Isoler la gestion : le VLAN 20 ne sort pas vers WAN
iptables -A FORWARD -i br-lan.20 -o eth0 -j DROP
iptables -A FORWARD -i br-lan.10 -o eth0 -j ACCEPT
Verificación esperada
lsblk muestra el NVMe montado en /mnt/nas; smbclient -L //192.168.10.1 -U nasuser lista el recurso compartido. Desde un cliente de la VLAN 10, la transferencia de escritura alcanza varios cientos de MB/s (límite PCIe 2.1 x1 ~500 MB/s, coherente con el 2,5GbE a ~280 MB/s). El ping entre la VLAN 20 y WAN falla (regla DROP) mientras que el SSH de gestión funciona. ip -d link show br-lan.10 confirma la encapsulación vlan id 10.
Errores frecuentes
> NO VERIFICADO: la wiki indica PCIe 2.1 x1 para el slot M.2 mientras que la página de producto menciona « PCIe2.0 »; el rendimiento real dependerá del SSD y del kernel.
- Formatear el disco equivocado: siempre verificar
lsblky el tamaño antes demkfs.ext4; la eMMC y la microSD también son candidatas. - Trunk mal configurado en el lado del switch: sin un puerto en modo trunk que permita las VLAN 10 y 20, las subinterfaces no recibirán tráfico.
- Olvidar
noatimey las cuotas de usuario: el desgaste de la eMMC es un tema zanjado ya que se escribe en el NVMe, pero los logs de Samba pueden saturar el sistema — registrarlos en el NAS. - Compartir en todos los puertos: vincular Samba a las interfaces deseadas (
interfaces = br-lan.10,bind interfaces only), de lo contrario el recurso compartido se filtrará hacia WAN. - Subestimar el cuello de botella PCIe: un NVMe Gen4 de 7 GB/s dará ~500 MB/s máximo aquí; no comprar más allá de un buen Gen3.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash