Espejito, espejito…

Septiembre 26, 2008 at 11:40 am (Almacenamiento, Howto, Solaris) (, , , , )

Odio Solaris Volume Manager. Si fuera por mí, lo quemaba con fuego mientras reía a carcajadas.

Pero claro, viene de serie con el sistema operativo Y entre tener que pagar una licencia de Veritas Volume Manager que cuesta un riñon y poder contar con un gestor de volúmenes por la patilla, adivina que es lo que se va a quedar la gente en una gran mayoría de los casos :(

Efectivamente, con uno de los gestores de volúmenes mas antiintuitivos y despreciables que existen. Para matarlos, Oiga.

Menos mal que en Solaris 10 viene incluído por defecto ZFS, que además de ser un tiro y fiable, es absurdamente sencillo de administrar, aunque lo mismo de ello hablamos otro día.

En todo caso, y para todas aquellas veces que tengamos que hacer un mirror de sistema con esta herramienta, una pequeña guía.

Supongamos que nuestra máquina tiene cuatro discos internos:

AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
          /pci@1f,4000/scsi@3/sd@0,0
       1. c0t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
          /pci@1f,4000/scsi@3/sd@1,0
       2. c0t2d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
          /pci@1f,4000/scsi@3/sd@2,0
       3. c0t3d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
          /pci@1f,4000/scsi@3/sd@3,0

Un listado de la tabla de particiones del disco de arranque muestra lo siguiente:

Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 -  4355        6.00GB    (4356/0/0)  12584484
  1       swap    wu    4356 - 10163        8.00GB    (5808/0/0)  16779312
  2     backup    wm       0 - 24619       33.92GB    (24620/0/0) 71127180
  3 unassigned    wm       0                0         (0/0/0)            0
  4 unassigned    wm       0                0         (0/0/0)            0
  5        var    wm   10164 - 14519        6.00GB    (4356/0/0)  12584484
  6 unassigned    wm   14520 - 20327        8.00GB    (5808/0/0)  16779312
  7 unassigned    wm   20328 - 20509      256.74MB    (182/0/0)     525798

Lo primero es asegurarnos de que el disco que va a hacer mirror tiene la misma tabla de particiones, para lo cual:

root@madhatter # prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2

Continuamos inicializando la base de metadispositivos. Emplearemos el slice 7 ya que cuenta con espacio suficiente.

root@madhatter # metadb -a -f -c3 /dev/dsk/c0t0d0s7 /dev/dsk/c0t1d0s7

Tras ello, podemos comenzar a crear los mirrors, comenzando por /

root@madhatter # metainit -f d10 1 1 c0t0d0s0
d10: Concat/Stripe is setup
root@madhatter # metainit d20 1 1 c0t1d0s0
d20: Concat/Stripe is setup
root@madhatter # metainit d30 -m d10
d30: Mirror is setup
root@madhatter # metaroot d30

Lo mismo para swap:

root@madhatter # metainit -f d11 1 1 c0t0d0s1
d11: Concat/Stripe is setup
root@madhatter # metainit d21 1 1 c0t1d0s1
d21: Concat/Stripe is setup
root@madhatter # metainit d31 -m d11
d31: Mirror is setup

Para /var

root@madhatter # metainit -f d15 1 1 c0t0d0s5
d15: Concat/Stripe is setup
root@madhatter  # metainit d25 1 1 c0t1d0s5
d25: Concat/Stripe is setup
root@tesol025 # metainit d35 -m d15
d35: Mirror is setup

Y finalmente para /var/crash

root@madhatter  # metainit -f d16 1 1 c0t0d0s6
d16: Concat/Stripe is setup
root@madhatter  # metainit d26 1 1 c0t1d0s6
d26: Concat/Stripe is setup
root@madhatter  # metainit d36 -m d16
d36: Mirror is setup

Ahora podemos añadir los cambios realizados a /etc/vfstab para que se cojan los cambios en arranque. Recordemos que conviene hacer siempre una copia de seguridad antes de las modificaciones, para evitar futuras lágrimas ;)

root@madhatter #/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2 /usr          ufs     1       yes     -
fd      -       /dev/fd fd      -       no      -
/proc   -       /proc   proc    -       no      -
/dev/md/dsk/d31       -       -       swap    -       no      -
/dev/md/dsk/d30 /dev/md/rdsk/d30        /       ufs     1       no      -
/dev/md/dsk/d35 /dev/md/rdsk/d35      /var    ufs     1       no      -
/dev/md/dsk/d36 /dev/md/rdsk/d36      /var/crash      ufs     2       yes     -
swap    -       /tmp    tmpfs   -       yes     -

Tras ello, realizamos un reboot de la maquina. En el momento en que este de nuevo arriba, entramos como root y comprobamos si el disco esta inicializado para arrancar desde mirror:

root@madhatter # eeprom |grep boot
[...]
boot-file: data not available.
boot-device=disk

Tenemos que añadir el otro disco. Para ello, comprobamos cual es:

root@madhatter # prtconf -vp |grep disk
[...]
        disk:  '/pci@1f,4000/scsi@3/disk@0,0'
        disk0:  '/pci@1f,4000/scsi@3/disk@0,0'
        disk1:  '/pci@1f,4000/scsi@3/disk@1,0'
        disk2:  '/pci@1f,4000/scsi@3/disk@2,0'
        disk3:  '/pci@1f,4000/scsi@3/disk@3,0'
[...]

Comprobamos que ambos discos sean iguales:

root@madhatter  # format

AVAILABLE DISK SELECTIONS:
[...]
       1. c0t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
          /pci@1f,4000/scsi@3/sd@1,0
[...]

Y cambiamos los valores correspondientes:

root@madhatter  # eeprom boot-device="disk disk1"

Comprobamos:

root@madhatter  # eeprom |grep boot
[...]
boot-file: data not available.
boot-device=disk disk1

Y procedemos a atachar los metadevices entre si.

# metattach d30 d20
 submirror d20 is attached
# metattach d31 d21
d31: submirror d21 is attached
# metattach d35 d25
d35: submirror d25 is attached
# metattach d36 d26

Tras ello, los disco comenzaran a realizar la sincronizacion. Podemos comprobar el estado de la misma con el comando:

root@madhatter # metastat |grep %

   Resync in progress: 4 % done
   Resync in progress: 2 % done
   Resync in progress: 2 % done
   Resync in progress: 1 % done

Una vez terminada, se habra creado correctamente el mirror.

3 comentarios

  1. Luis dijo:

    Como estas.

    Tengo una inquietud es posible hacer el mirror si no hay espacio para colocar e inicializar la base de metadispositivos, ya que los equipos estan en funcionamiento pero no dejaron reservado ningun espacio. es posible continuar o se tiene algun riesgo.

    Saludos

  2. nebiath dijo:

    No es posible crear correctamente un mirror en SVM si no se ha creado la base de metadispositivos. En caso de que no haya suficiente espacio, siempre se puede reducir la partición de swap del disco para dejar un hueco.

    Format es tu amigo :)

  3. Luis dijo:

    nebiat gracias por el dato, algun link que me indicque como reducir la swap.
    saludos

Escribe un comentario