Usar dispositivos de almacenamiento
Tip: El Inicio rápido para instalar una unidad USB resuelve el caso muy común de instalar una sola unidad USB en su dispositivo OpenWrt. La gente hace esto para usar Samba u otros programas que necesitan almacenar datos en un disco externo. El resto de esta página proporciona mucha más información sobre dispositivos y controladores USB.
Muchos dispositivos compatibles tienen puertos para conectar dispositivos de almacenamiento, los más comunes son USB o Sata.
Este artículo describirá cómo configurar su dispositivo para usar dichos dispositivos de almacenamiento para almacenar o compartir. Si desea ampliar el espacio de su firmware (para instalar más paquetes), lea el artículo sobre Configuración de Extroot.
Para configurar el espacio en disco externo, siga los procedimientos de esta página:
- Verificar los controladores de almacenamiento
- Verificar que el sistema operativo reconozca el disco adjunto y sus particiones
- Crear una partición en el disco USB
- Crear un sistema de archivos en la partición
- Automontar la partición
- Inactivar el giro de los discos duros
Instalar y verificar los controladores USB
Este paso garantiza que los controladores de almacenamiento USB necesarios estén instalados correctamente.
- Comience actualizando la lista de paquetes de software disponibles:
opkg update
- El paquete OpenWrt típico ya tiene instalados los controladores principales de dispositivos USB (si su dispositivo tiene puertos USB), pero es posible que aún no tenga instalado un controlador de dispositivo de almacenamiento USB. Primero instale este controlador de almacenamiento (si ya está instalado, el siguiente comando simplemente dirá “ya está instalado”:
opkg install kmod-usb-storage
- Algunos dispositivos de almacenamiento USB pueden requerir el controlador UAS:
opkg install kmod-usb-storage-uas
- Para comprobar si toda la cadena de controladores USB funciona correctamente, instale el paquete opcional usbutils:
opkg install usbutils
- Ahora conecte su disco/memoria USB y enumere sus dispositivos conectados con un comando de usbutils:
lsusb -t
- Esto generará una lista de puertos concentradores USB del dispositivo y dispositivos de almacenamiento externos conectados:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/1p, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/2p, 480M |__ Port 1: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M
- Las líneas “Bus...” representan el chip anfitrión. Aquí, el “Controlador” será
xhci
para USB3.0,ehci
para USB2.0 yuhci
uohci
para USB1.1. - Las líneas con “Class=Mass Storage” representan dispositivos USB conectados. Aquí el “Controlador” es
usb-storage
para almacenamiento de tipo Bulk only Transport ousb-storage-uas
para almacenamiento de tipo USB_Attached_SCSI
En el paso 5, verifique que la salida no imprima ningún error y tenga al menos una línea de salida para root_hub y Mass Storage y que cada Driver= incluya un nombre de controlador. De lo contrario, consulte Instalación de controladores USB para obtener más sugerencias sobre controladores.
Verifique que el OS reconozca el disco conectado y las particiones
Este paso de verificación opcional se puede utilizar para comprobar que el sistema operativo puede detectar correctamente una unidad externa conectada.
- Asegúrese de que su disco/memoria USB esté conectado
- Ejecute en una línea de comando:
ls -l /dev/sd*
- Esto ahora debería mostrar una lista de dispositivos de bloque conocidos por el OS
brw------- 1 root root 8, 0 Oct 30 12:49 /dev/sda brw------- 1 root root 8, 1 Oct 30 12:49 /dev/sda1
Esto debería imprimir al menos un disco conectado como “/dev/sda” o “/dev/sdb”. Si no aparece ningún disco, vuelva a verificar la instalación del controlador USB y reinicie su dispositivo OpenWrt una vez.
- Instale la herramienta block para obtener más información sobre las particiones existentes
opkg install block-mount
para exFAT, también necesita libblkid
opkg install libblkid
- Ejecute la herramienta block:
block info | grep "/dev/sd"
y debería ver un resultado como este, si su disco ya tiene particiones:
/dev/sda1: UUID="2eb39413-83a4-4bae-b148-34fb03a94e89" VERSION="1.0" TYPE="ext4"
Si un disco ya tiene particiones existentes, aparecen como /dev/sda1, /dev/sda2,/dev/sda3, etc. Si hubiéramos conectado más de un dispositivo de almacenamiento tendríamos también /dev/sdb1 (primera partición del segundo dispositivo), /dev/sdc1 (primera partición del tercer dispositivo) y así sucesivamente.
Crear una partición en el disco USB
Si el capítulo anterior no enumeró ninguna partición existente (como “/dev/sda1”, “/dev/sda2”, “/dev/sdb1”...), primero debe crear una partición para un uso posterior del almacenamiento.
- Para hacerlo, instale gdisk:
opkg install gdisk
- Inicie gdisk con el nombre del disco identificado en el capítulo anterior:
gdisk /dev/sda
- En el menú interactivo de gdisk, cree una partición con el comando gdisk
n
. Esto activa un diálogo interactivo: use los valores predeterminados sugeridos para la creación de la partición (número, sector inicial, tamaño, código hexadecimal)
- Cuando haya terminado, confirme los cambios con el comando interactivo gdisk
w
y luego confirme su elección con
Y
.
- Tome nota del nombre de la partición creada para el siguiente paso
Consulte el texto de ayuda de gdisk (escriba “?”) en caso de que necesite ayuda adicional. Apéguese a una sola partición para mantenerte alineado con el siguiente tutorial.
Instale los controladores del sistema de archivos y cree un sistema de archivos en la partición
Para utilizar una partición para el almacenamiento de datos, es necesario formatearla con un sistema de archivos.
La siguiente es la configuración predeterminada más simple (y recomendada) para el uso del sistema de archivos OpenWrt.
Para usuarios avanzados, hay más opciones disponibles de sistemas de archivos opcionales.
ADVERTENCIA: Este paso elimina los datos existentes en esa partición. ¡Asegúrese de tener una copia de seguridad de los archivos importantes antes de comenzar!
- Para discos duros USB, instale el sistema de archivos EXT4 y use EXT4 para formatear la partición (en este ejemplo '/dev/sda1'):
opkg install e2fsprogs opkg install kmod-fs-ext4 mkfs.ext4 /dev/sda1
- Para unidades USB formateadas con exFAT:
opkg install kmod-fs-exfat
- Para unidades USB formateadas como NTFS, consulte Sistemas de archivos and NTFS con permiso de Escritura
- Para unidades SSD y memorias USB, instale el sistema de archivos F2FS y use F2FS para formatear la partición (en este ejemplo, '/dev/sda1'):
opkg install f2fs-tools opkg install kmod-fs-f2fs mkfs.f2fs /dev/sda1
Automomontar la partición
El montaje automático garantiza que la partición del disco externo esté disponible automáticamente para su uso al iniciar el dispositivo OpenWrt.
- Genere una entrada de configuración para el archivo fstab:
block detect | uci import fstab
- Ahora habilite el montaje automático en esa entrada de configuración:
uci set fstab.@mount[-1].enabled='1' uci commit fstab
- Opcionalmente, habilite la verificación automática del sistema de archivos cada vez que se enciende el dispositivo OpenWrt:
uci set fstab.@global[0].check_fs='1' uci commit fstab
- Reinicie su dispositivo OpenWrt (para verificar que el montaje automático funcione)
- Después del reinicio, verifique sus resultados: ejecute
uci show fstab
para ver algo como esto
fstab.@global[0]=global fstab.@global[0].anon_swap='0' fstab.@global[0].anon_mount='0' fstab.@global[0].auto_swap='1' fstab.@global[0].auto_mount='1' fstab.@global[0].check_fs='0' fstab.@global[0].delay_root='5' fstab.@mount[0]=mount fstab.@mount[0].target='/mnt/sda1' fstab.@mount[0].uuid='49c35b1f-a503-45b1-a953-56707bb84968' fstab.@mount[0].enabled='1'
- Verifique la entrada “enabled”. Debería ser '1'.
- Tenga en cuenta la entrada “target”. Esta es la ruta del archivo, donde se puede acceder a la unidad de almacenamiento USB conectada a partir de ahora. P.ej. ahora puede listar archivos desde su disco externo:
ls -l /mnt/sda1
- Ejecute el siguiente comando para verificar que el disco esté montado correctamente en esta ruta
block info
El resultado será:
... /dev/sda1: UUID="2eb39413-83a4-4bae-b148-34fb03a94e89" VERSION="1.0" MOUNT="/mnt/sda1" TYPE="ext4"
- Su almacenamiento externo ahora está listo para su uso posterior:
service fstab boot
Opcional: tiempo de espera de inactividad en discos para uso de NAS
Paso opcional para discos duros.
Si desea utilizar OpenWrt como NAS permanente, es posible que desee reducir la velocidad del motor del disco duro durante los momentos de inactividad. Ya sea porque desea tener silencio en su habitación durante la noche o para aumentar la vida útil del disco duro (por ejemplo, cuando utiliza un disco duro de edición doméstica (en lugar de una edición de centro de datos 24×7).
Hay diferentes opciones para apagar automáticamente el motor del disco duro conectado después de un cierto tiempo de inactividad. Ambos requieren la instalación de paquetes opcionales en OpenWrt.
1. Opción: hdparm
Esta herramienta guarda permanentemente un temporizador de giro en el propio disco duro, utilizando comandos estandarizados de disco SATA (el disco duro recordará ese valor del temporizador de giro, incluso si está apagado, incluso después de un reinicio e incluso si está conectado a un dispositivo diferente).
En realidad, es solo una interfaz de línea de comando para una función incorporada del disco duro.
Por lo tanto, no es necesario ejecutar ningún servicio OpenWrt en segundo plano para esto y 'hdparm' podría incluso desinstalarse después de configurar este parámetro. Desafortunadamente, muchos adaptadores USB2.0-PATA/SATA antiguos no soportan el comando SATA requerido, aunque incluso los discos duros con una década de antigüedad sí lo soportan. Pero, afortunadamente, la mayoría de las cajas USB3.0-SATA parecen admitir el comando SATA requerido.
Para instalar el paquete
opkg update && opkg install hdparm
P.ej. Para establecer un tiempo de inactividad razonable de 20 minutos en el disco duro, utilice:
hdparm -S 240 /dev/sda2
- si el comando falló con un mensaje de error, lamentablemente su carcasa USB-SATA no lo admite y no podrá usar 'hdparm' para desactivar el disco mientras use esta carcasa USB.
- para obtener todos los detalles de los códigos permitidos, consulte https://linux.die.net/man/8/hdparm en el parámetro “-S”
- 0 significa “tiempo de espera de inactividad deshabilitado”
- 1 a 240 especifica múltiplos de 5 segundos, para tiempos de espera de 5 segundos a 20 minutos.
- 241 a 251 especifican de 1 a 11 unidades de 30 minutos, para tiempos de espera de 30 minutos a 5,5 horas.
Por supuesto, siempre puede cambiar el tiempo de espera o desactivar el giro automático nuevamente más adelante. Dependiendo de su disco duro, el valor puede estar activo hasta el próximo reinicio o almacenado permanentemente en el disco duro.
El firmware del disco duro es quien gestiona el tiempo de espera de inactividad, no un servicio OpenWrt. Para cambios persistentes utilice el archivo /etc/rc.local
, como:
# set timeout to put the drive into idle (low-power) mode /sbin/hdparm -S 240 /dev/sda2 exit 0
2. Opción: hd-idle (integrado con LuCI)
hd-idle es un servicio que se ejecuta en segundo plano del dispositivo OpenWrt y mantiene su propio contador de tiempo de inactividad. Una vez que el contador de tiempo de espera definido llegue a 0, enviará un comando Spindow SATA “en vivo” al disco. A diferencia del comando permanente hdparm de reducción giro, muchas más carcasas USB2.0-SATA parecen admitir este comando SATA de ““spindown-now””.
Para instalar el paquete que incluso tiene integración frontal de LuCi:
opkg update && opkg install luci-app-hd-idle
Para configurarlo, utilice el menú “Services” de la GUI web LuCi de su dispositivo.
Para instalar el paquete CLI (sin LuCi):
opkg update && opkg install hd-idle
Para configurarlo, puede editar el archivo /etc/config/hd-idle
y luego habilitar el inicio automático y arrancar el servicio hd-idle service hd-idle enable && service hd-idle start
.
Opciones para configurar:
Nombre | Tipo | Predeterminado | Descripción |
---|---|---|---|
disk | string | sda | Reemplace sda con el identificador de su dispositivo |
enabled | boolean | 0 | Habilita la operación de inactividad de disco duro |
idle_time_unit | string | minutos | La unidad de tiempo usada en la opción idle_time_interval |
idle_time_interval | integer | 10 | Cuánto tiempo de inactividad antes del 'spindown' |
Tenga en cuenta que debe habilitarlo ya que no lo está de forma predeterminada.