zpool no está disponible después de agregar un nuevo disco al servidor (el punto de montaje cambió)

zpool no está disponible después de agregar un nuevo disco al servidor (el punto de montaje cambió)

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 sdacuando el nuevo no está conectado. ¿Qué puedo hacer para evitar este conflicto? Necesito decirle a Linux que sdaestá reservado para el disco antiguo de zpool y que debería usarlo sdgpara 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 sdao 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-idy by-uuidparece 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 uuidsson una especie de identificación única generada. Y podemos usarlo idscomo 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 -dinterruptor. 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 statusde esto: antes de exportar/importar, debería ver puntos de montaje como /dev/sdalos 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.cfgel 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 /buffervolumen, donde ocurre la causa raíz:

/dev/sdf /buffer ext3 rw 0 0

Como puede ver, el punto de montaje /dev/sdfestá 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-idpor 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.

información relacionada