Esta pagina se ve mejor con JavaScript habilitado

FreeBSD ZFS Vol3 Mirror ZFS

 ·  ūüéÉ kr0m

Un mirror ZFS consiste en dos o mas discos donde toda la informaci√≥n es escrita en todos los miembros del vdev, las lecturas se realizar√°n de forma paralela desde todos los discos aumentando as√≠ el rendimiento en lecturas, el mirror tendr√° la capacidad del dispositivo de menor tama√Īo, podr√°n fallar hasta N-1 discos sin que haya p√©rdida de datos y adem√°s cualquier vdev de un solo disco puede ser transformado a mirror mediante el comando zpool attach. En este art√≠culo explicaremos como generar un mirror y como ampliar un vdev a mirror.

Antes de continuar con el artículo es aconsejable que revisemos  este anterior  para que todos los conceptos queden claros.

Consultamos los discos disponibles en el sistema:

root@freeBSD:~ # camcontrol devlist

<BHYVE SATA DISK 001>              at scbus0 target 0 lun 0 (ada0,pass0)  
<BHYVE SATA DISK 001>              at scbus1 target 0 lun 0 (ada1,pass1)  
<BHYVE SATA DISK 001>              at scbus2 target 0 lun 0 (ada2,pass2)  
<BHYVE SATA DISK 001>              at scbus3 target 0 lun 0 (ada3,pass3)  
<BHYVE SATA DISK 001>              at scbus4 target 0 lun 0 (ada4,pass4)

Comprobamos que el disco del sistema es ada0:

root@freeBSD:~ # zpool status

  pool: zroot  
 state: ONLINE  
  scan: none requested  
config:  
  
        NAME        STATE     READ WRITE CKSUM  
        zroot       ONLINE       0     0     0  
          ada0p3    ONLINE       0     0     0  
  
errors: No known data errors

Creamos las particiones que utilizar√° ZFS en los dos siguientes discos que formar√°n el mirror:

root@freeBSD:~ # gpart create -s GPT ada1

ada1 created
root@freeBSD:~ # gpart add -t freebsd-zfs -a 4k ada1
ada1p1 added, but partition is not aligned on 8192 bytes
root@freeBSD:~ # gpart show ada1
=>     40  2097072  ada1  GPT  (1.0G)  
       40  2097072     1  freebsd-zfs  (1.0G)
root@freeBSD:~ # gpart create -s GPT ada2
ada2 created
root@freeBSD:~ # gpart add -t freebsd-zfs -a 4k ada2
ada2p1 added, but partition is not aligned on 8192 bytes
root@freeBSD:~ # gpart show ada2
=>     40  2097072  ada2  GPT  (1.0G)  
       40  2097072     1  freebsd-zfs  (1.0G)

Creamos el mirror pool indicando las particiones a utilizar:

zpool create mypool mirror /dev/ada1p1 /dev/ada2p1

Consultamos su estado:

root@freeBSD:~ # zpool status mypool

  pool: mypool  
 state: ONLINE  
  scan: none requested  
config:  
  
        NAME        STATE     READ WRITE CKSUM  
        mypool      ONLINE       0     0     0  
          mirror-0  ONLINE       0     0     0  
            ada1p1  ONLINE       0     0     0  
            ada2p1  ONLINE       0     0     0  
  
errors: No known data errors

Podemos ver que hay 832M ya que se trata de dos discos de 1G en modo mirror.

root@freeBSD:~ # zfs list mypool

NAME     USED  AVAIL  REFER  MOUNTPOINT  
mypool   276K   832M    96K  /mypool

Ahora crearemos un pool con un disco y posteriormente ampliaremos a mirror:

root@freeBSD:~ # gpart create -s GPT ada3

ada3 created
root@freeBSD:~ # gpart add -t freebsd-zfs -a 4k ada3
ada3p1 added, but partition is not aligned on 8192 bytes
root@freeBSD:~ # zpool create mypool2 /dev/ada3p1
root@freeBSD:~ # zpool status mypool2
  pool: mypool2  
 state: ONLINE  
  scan: none requested  
config:  
  
        NAME        STATE     READ WRITE CKSUM  
        mypool2     ONLINE       0     0     0  
          ada3p1    ONLINE       0     0     0  
  
errors: No known data errors

Preparamos el siguiente disco para ser attacheado el vdev que forma mypool2:

root@freeBSD:~ # gpart create -s GPT ada4

ada4 created
root@freeBSD:~ # gpart add -t freebsd-zfs -a 4k ada4
ada4p1 added, but partition is not aligned on 8192 bytes

A√Īadimos el segundo disco:

root@freeBSD:~ # zpool attach mypool2 ada3p1 ada4p1

Y voilà, vdev convertido a mirror:

root@freeBSD:~ # zpool status mypool2

  pool: mypool2  
 state: ONLINE  
  scan: resilvered 312K in 0 days 00:00:00 with 0 errors on Thu Nov 12 22:18:11 2020  
config:  
  
        NAME        STATE     READ WRITE CKSUM  
        mypool2     ONLINE       0     0     0  
          mirror-0  ONLINE       0     0     0  
            ada3p1  ONLINE       0     0     0  
            ada4p1  ONLINE       0     0     0  
  
errors: No known data errors

Si uno de los discos falla tan solo debemos reemplazarlo:

root@freeBSD:~ # zpool status mypool

  pool: mypool  
 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://illumos.org/msg/ZFS-8000-4J  
  scan: none requested  
config:  
  
        NAME                      STATE     READ WRITE CKSUM  
        mypool                    DEGRADED     0     0     0  
          mirror-0                DEGRADED     0     0     0  
            10132353784689973799  FAULTED      0     0     0  was /dev/ada1p1  
            ada1p1                ONLINE       0     0     0  
  
errors: No known data errors

Preparamos el disco nuevo:

root@freeBSD:~ # gpart create -s GPT ada2

ada2 created
root@freeBSD:~ # gpart add -t freebsd-zfs -a 4k ada2
ada2p1 added, but partition is not aligned on 8192 bytes

Sustituimos el averiado:

root@freeBSD:~ # zpool replace mypool 10132353784689973799 ada2p1
root@freeBSD:~ # zpool status mypool

  pool: mypool  
 state: ONLINE  
  scan: resilvered 576K in 0 days 00:00:00 with 0 errors on Sun Nov 15 00:20:48 2020  
config:  
  
        NAME        STATE     READ WRITE CKSUM  
        mypool      ONLINE       0     0     0  
          mirror-0  ONLINE       0     0     0  
            ada2p1  ONLINE       0     0     0  
            ada1p1  ONLINE       0     0     0  
  
errors: No known data errors
Si te ha gustado el artículo puedes invitarme a un RedBull aquí