0
[ZFS] No puedo reemplazar disco

Open 3 Respuestas 1 Views

Hace un tiempo tuve la duda del raid por hardware vs zfs [1] y opté por ir por ZFS, realmente tiene buena performance, solo se complica un poco si estas corto de memoria, pero es algo que no debería pasar...

El problema que tengo hoy es que tengo un disco que no esta conectado al ZFS (/dev/sda) y el estado del zpool esta como DEGRADED porque tengo un disco que esta marcado como FAULTED, pero el error dice "was /dev/sdb2".

Googleando un poco el tema, me cruce con este link que guía paso a paso y con variables para evitar errores, en el reemplazo de este disco degradado por otro que no.

https://edmondscommerce.github.io/replacing-failed-drive-in-zfs-zpool-on-proxmox/

Sigo  los pasos, pero en el momento que tengo que reemplazar el disco por el que esta OK (nunca hice cambios de disco al parecer el sda se desmonto o me mande alguna cagada en algún momento) me tira este error:

zpool replace rpool "$failedDiskPartitionID" "$newDiskZFSPartition"
invalid vdev specification
use '-f' to override the following errors:
/dev/sda2 contains a filesystem of type 'linux_raid_member'

 

El error que me tira no lo termino de entender, porque tengo la idea en la cabeza de que el tipo de filesystem lo estoy copiando de /dev/sdb al momento de ejecutar:

newDisk='/dev/sda'
healthyDisk='/dev/sdb'
sgdisk -R "$newDisk" "$healthyDisk"
sgdisk -G "$newDisk

Se me acabaron las ideas y como es un servidor en producción no quiero romper nada.

Saludos a todos y buena semana!
Emiliano - gamba47

 

3 Respuestas

1

Por favor, hacé backups o verifica los backups que tengas.

el OS esta instalado en ZFS? tirate un zpool status -v

respondido por edux (10,170 puntos) Jul 10
1Comentarios
comentado por Gamba47 (3,670 puntos) Jul 10
Hola edux!

Si, tengo backups de las vms, todas las noches se pasan los backups a otro servidor, por este lado estoy medianamente tranquilo.

Te paso el output del comando, aca es donde me di cuenta que tenía un "problemita"

#zpool status -v
  pool: rpool
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
    invalid.  Sufficient replicas exist for the pool to continue
    functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
  scan: none requested
config:

    NAME                     STATE     READ WRITE CKSUM
    rpool                    DEGRADED     0     0     0
      mirror-0               DEGRADED     0     0     0
        sdb2                 ONLINE       0     0     0
        1530029784177976986  FAULTED      0     0     0  was /dev/sdb2
1
El disco que estas usando para reemplazar no es nuevo, no? zfs no te deja agregar un disco si ve que tiene un file system adentro.

Podes postear la salida de un "zpool status"?

BTW, con zfs lo mejor es usar el disco entero sin particionar, el /dev/sdX entero.
respondido por sysinternals Jul 10
7Comentarios
comentado por Gamba47 (3,670 puntos) Jul 10
Hola!
Lo que tiene es la copia del FS del /dev/sdb, que lo trato de copiar ejecutando estos comandos:

newDisk='/dev/sda'
healthyDisk='/dev/sdb'
sgdisk -R "$newDisk" "$healthyDisk"
sgdisk -G "$newDisk

Esta es la salida del comando que me pedís:

~# zpool status
  pool: rpool
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
    invalid.  Sufficient replicas exist for the pool to continue
    functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
  scan: none requested
config:

    NAME                     STATE     READ WRITE CKSUM
    rpool                    DEGRADED     0     0     0
      mirror-0               DEGRADED     0     0     0
        sdb2                 ONLINE       0     0     0
        1530029784177976986  FAULTED      0     0     0  was /dev/sdb2

errors: No known data errors


Leyendo sobre ZFS casi te diría que llegue a la misma conclusión, pero la instalación es automática desde un DVD/PEN de proxmox y lo instala así, voy a leer un poco más sobre como instalarlo de manera correcta.

Por lo que veo Proxmox usa solo ZFS para una parte del sistema y el boot lo deja afuera de eso (tendrías 2 boot pero no en ZFS).

Esta es la salida de fdisk -l (no se si funciona igual cuando hablamos de ZFS).

Disklabel type: gpt
Disk identifier: B331EB1A-1596-46C7-939C-30007AD080E8

Device          Start        End    Sectors  Size Type
/dev/sda1          34       2047       2014 1007K BIOS boot
/dev/sda2        2048 3907012749 3907010702  1.8T Solaris /usr & Apple ZFS
/dev/sda9  3907012750 3907029134      16385    8M Solaris reserved 1

Partition 2 does not start on physical sector boundary.

Partition 10 does not start on physical sector boundary.


Disk /dev/sdb: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 1C44DA51-FEA5-4B43-992F-2748F74AE60D

Device          Start        End    Sectors  Size Type
/dev/sdb1          34       2047       2014 1007K BIOS boot
/dev/sdb2        2048 3907012749 3907010702  1.8T Solaris /usr & Apple ZFS
/dev/sdb9  3907012750 3907029134      16385    8M Solaris reserved 1

Partition 2 does not start on physical sector boundary.

Partition 10 does not start on physical sector boundary.


Disk /dev/zd0: 15 GiB, 16106127360 bytes, 31457280 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Saludos y gracias!
comentado por Gamba47 (3,670 puntos) Jul 10
De nuevo tengo una duda, el ZFS me decis que es mejor usar el 100% del disco sin particionar, pero la idea es usar los 2 discos para hacer un Raid1, y usar una parte para /boot, esto es posible realizarlo al momento de instalar? porque todo lo que veo es para armar el zpool en raid0 o raid1, pero es para cuando esta el sistema operativo en funcionamiento.
Es solo una duda...

Saludos!
Emiliano - gamba47
comentado por sysinternals (400 puntos) Jul 10
Si el sda es el nuevo disco, particionalo igual que sdb y con un "zpool attach rpool sda2" deberia alcanzar para reconstruir el pool
comentado por Gamba47 (3,670 puntos) Jul 10
El comando attach me pide un new_device:

 zpool attach rpool sda2
missing <new_device> specification
usage:
    attach [-f] [-o property=value] <pool> <device> <new-device>

Pense que es porque no puse el /dev/sda2  y me pasa lo mismo:

zpool attach rpool /dev/sda2
missing <new_device> specification
usage:
    attach [-f] [-o property=value] <pool> <device> <new-device>

y si pongo el dato cambiando replace por attach me dice lo mismo que el resource esta ocupado:

zpool attach rpool 1530029784177976986 /dev/sda2
cannot attach /dev/sda2 to 1530029784177976986: /dev/sda2 is busy


ZFS :1   --- Emiliano : 0
comentado por sysinternals (400 puntos) Jul 11
hay alguien usando /dev/sda2?
comentado por Gamba47 (3,670 puntos) Jul 11
No lo veo montado y no se que forma tengo de ver como relacionar el /dev/sda2 con el que lo este usando, pero creo que no lo estoy usando.

Lo que lei por ahí y tengo que probar es como hacer para que la particion /dev/sda2 tenga algo adentro y con dd if=/dev/sda2 of=/dev/ramdom llenar esos espacios, pero no se si esto efectivamente va a hacer algo.

Abrazo!!!!
comentado por sysinternals (400 puntos) Jul 11
con fuser deberias ver si alguien esta usando la particion. Uno que se me viene a la mente es device mapper.

No hace falta usar random, con hacer dd if=/dev/zero of=/dev/sda2 alcanza para pisar toda la metadata del file system y que zfs deje de quejarse porque la particion no esta limpia
1

Sabes que disco fallo y cual esta bien?, el zpool status -v que muestras deberia tmb mostrar el disco dañado y el disco online, pero en la salida que muestras solo hace referencia a sdb2

 

#zpool status -v
  pool: rpool
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
    invalid.  Sufficient replicas exist for the pool to continue
    functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
  scan: none requested
config:

    NAME                     STATE     READ WRITE CKSUM
    rpool                    DEGRADED     0     0     0
      mirror-0               DEGRADED     0     0     0
        sdb2                 ONLINE       0     0     0
        1530029784177976986  FAULTED      0     0     0  was /dev/sdb2

Por otro lado deberias tener cuidado con zpool attach en ocaciones agregas un disco y lo agrega como JBOD, por lo que para hacer un mirror ocuparias otros 2 discos, pues es imposible retirar un disco que no esta en arreglo de un zpool, pequeña desventaja de zfs que no te enteras hasta que lo ocupas realizar. El comando que recomiendo sysinternals no te lo recomiendo deberias usar algo así

zpool attach rpool discoBueno2 discoNuevo2

Si tu disco nuevo actual es /dev/sda particon 2 y tu disco bueno es sdb particion 2 deberia quedar así
zpool attach rpool sbd2 sda2
respondido por tyo100 (160 puntos) Jul 11
3Comentarios
comentado por tyo100 (160 puntos) Jul 11
cuando agregues el nuevo disco agregalo por uuid o por path, en lugar de darle /dev/sda2 dale /dev/disk-by/rutacompleta, para que no pase eso del 1530029784177976986 FAULTED


Saludos
comentado por Gamba47 (3,670 puntos) Jul 12
Hola gracias por tu respuesta.
El server esta haciendo unos backups ahora, no lo quiero manosear.
El comando ese lo probe y me dice que /dev/sda2 esta busy.

Lo del a ruta por disk-by-id tambien lo probe, me dice lo mismo, como que el enlace de /dev/sda2 apunta realmente ahi.

Todavia no lo pude resolver, voy a ver si el fin de semana en mis momentos de ocio ya que estoy aburrido hago un backup completo y cuando tengo todo resguardado me pongo a romperlo, quizas lo inicio desde un pen y pruebo desde ahi o en modo recovery.
Estuve leyendo mucho, ZFS suena muy muy interesante y la verdad que la performance es muy buena comparado a dmraid o el uso de un fakeraid, no se decirles respecto a un raid por hard posta porque solo tengo uno y con esto no me alcanza para decir lo mismo.

Ya va a llegar la solución y si no llega rompo todo y levanto el backup, eso es lo bueno de proxmox, el tiempo que se tarda es en pasar los datos de nuevo, pero por suerte son unos 300gb nada mas.
comentado por tyo100 (160 puntos) Jul 12
Perfecto, tambien con otro disco podrias hacer otro pool y mover los datos, te comentaba lo del disk-by por que ZFS guarda metadatos de los discos tal vez no te deja /dev/sdb por que esta referenciado
...