Tengo un servidor doméstico que ejecuta Proxmox con dos zpools. Quiero reemplazar un grupo existente con discos duros más pequeños por uno nuevo. Pero cuando conecto uno de los dos nuevos discos duros SATA, mi zpools no funciona. Los registros decían que falta un disco importante. Cuando envío el nuevo disco, todo funciona bien.
Descubrí que minuevoEl disco está montado en sda
. Pero uno de los discos antiguos en el zpool existente también está montado sda
cuando el nuevo no está conectado. ¿Qué puedo hacer para evitar este conflicto? Necesito decirle a Linux que sda
está reservado para el disco antiguo de zpool y que debería usarlo sdg
para el nuevo.
Me confunde que este comportamiento pueda ocurrir. Como resultado, Linux no parece vincular puntos de montaje a unidades como las letras de unidad en Windows. Creo que fue un error usar el punto de montaje y debería usar algún identificador único (¿UUID?) en zpool. ¿Pero cómo puedo hacer esto? Tengo grupos zfs existentes donde utilicé los puntos de montaje.
Respuesta1
Algunos conocimientos previos sobre el problema.
Después de investigar y probar un poco, descubrí que zfs usaba los puntos de montaje. Entonces mi teoría era correcta: los puntos de montaje no son estáticos como las letras de unidad en Windows. En cambio, Linux los asigna en el orden de detección durante el arranque. Agregar o quitar discos puede mezclar los puntos de montaje.
Ejemplo sencillo:
sda -> Drive #1
sdb -> Drive #2
sdc -> Drive #3
Ahora agregamos una nueva unidad n.° 4. Se podría insertar así:
sda -> Drive #1
sdb -> Drive #4
sdc -> Drive #2
sde -> Drive #3
Si dependemos del punto de montaje, ahora estamos en problemas: nuestro sistema esperaba la unidad n.° 2 sdb
, pero obtuvo una completamente diferente (unidad n.° 4). Según arch wiki, esto puede suceder incluso durante un arranque normal,sincualquier cambio en los discos duros.
¿Qué podemos hacer?
Bueno, usar esos puntos de montaje parece una mala idea. Deberíamos usardenominación de dispositivos de bloque persistenteen cambio, que están disponibles usando udev. Debería estar disponible en cualquier distribución de Linux moderna. Los nombres de bloques persistentes no utilizan nombres neutrales como sda
o sdb
. En lugar de ello, crea algún tipo de nombres que se vinculan persistentemente al disco. Son comparables a las letras de unidad en Windows (sí, tenga en cuenta que las letras de unidad están vinculadas a particiones, donde los nombres de los bloques identifican una unidad, ¡pero ambas son persistentes!).
by-id
y by-uuid
parece más relevante para resolver este problema, pero también hay otros. Puede leer una explicación más detallada en la página wiki vinculada de Arch. Es un artículo general que también puede aplicarse a otras distribuciones. Para este problema es importante saber que uuids
son una especie de identificación única generada. Y podemos usarlo ids
como una alternativa mejor legible, porque usan información específica del disco duro como fabricante, modelo y número de serie.
ZFS
Comodescrito aquí, era necesario exportar todos los grupos y luego volver a importarlos, pero con el -d
interruptor. Le dice a zpool dónde buscar dispositivos:
zpool export <poolname>
zpool import -d /dev/disk/by-id <poolname>
Se puede verificar el uso zpool status
de esto: antes de exportar/importar, debería ver puntos de montaje como /dev/sda
los de los dispositivos. Esto debería cambiar a ID de disco después de ese procedimiento.
Volúmenes regulares (opcional)
Para mí esto no fue suficiente: tengo un disco duro adicional llamadobufferpara cosas como imágenes ISO. No hay datos importantes, sólo para aliviar mi SSD. Así que este era un volumen ext3 clásico. Esto desalienta el arranque de mi servidor, ya que aquí ocurre exactamente el mismo problema: el punto de montaje cambió debido a los nuevos discos, lo que permitió que fallara el montaje.
Resolví esto simplemente quitando esta unidad. De todos modos esta fue idea mía, ya que los nuevos discos duros son lo suficientemente grandes y podría ahorrar algo de energía al tener menos discos. Para hacerlo, tenemos que eliminar el almacenamiento de proxmox usando /etc/pve/storage.cfg
el archivo. En mi caso, la parte relevante se ve así:
dir: buffer
path /buffer
content iso
Después de quitarlo, debemos echarle un vistazo /etc/fstab
. Este archivo monta nuestro /buffer
volumen, donde ocurre la causa raíz:
/dev/sdf /buffer ext3 rw 0 0
Como puede ver, el punto de montaje /dev/sdf
está presente aquí.Si no desea rechazar el disco como lo hago yo, ¡simplemente use un punto de montaje único aquí! Por ejemplo /dev/disco/por-id. Es un ejemplo de nombres de dispositivos de bloqueo persistente. Se generan en base a datos que dependen del dispositivo. by-id
por ejemplo, utiliza el número de serie del hardware. Así que incluso podemos diseñar dos discos iguales. Lea más en el primer párrafo para obtener información general.
En mi caso, simplemente eliminar esta línea evita que Linux monte mi disco duro. Si tiene más volúmenes, es necesario repetir esos pasos para cada uno de ellos, para asegurarse de no tener ningún problema después de reiniciar.