¡Trata de arrancarlo, por Dios!

Septiembre 30, 2008 at 10:00 am (Almacenamiento, Frustraciones diarias, Howto) (, , , )

¿Qué haríamos sin Veritas Volume Manager, me pregunto?. La cantidad de frustraciones y malos ratos que nos ha ahorraro… al tiempo que nos ha producido frustraciones y malos ratos nuevo es legandaria. Se puede odiar o se puede adorar a Veritas y conozco ambos tipos de gente, e incluso gente que pasa por ambos estado según el día.

Lo que es innegable es la necesidad de usar un buen gestor de volúmenes, que sea fiable, robusto y sencillo de manejar. En mi opinión, VXVM y VXFS lo son.

Sin embargo, nada es de color de rosa, y en ocasiones, al intentar arrancar una máquina que haya caído por cualquier cuestión (Un panic causado por una CPU en mal estado, por ejemplo), puede haber problemas (vaya novedad) y provocar que los volúmenes queden en estado disabled.

root@madhatter:/root# vxprint -htr          
[...]
v  crash        -            DISABLED ACTIVE   2427516  ROUND     -        fsgen
pl crash-01     crash        DISABLED ACTIVE   2427516  CONCAT    -        RW
sd rootdisk-03  crash-01     rootdisk 15254567 2427516  0         c0t0d0   ENA
pl crash-02     crash        DISABLED ACTIVE   2427516  CONCAT    -        RW
sd rootmirror-03 crash-02    rootmirror 8955954 2427516 0         c0t8d0   ENA
[...]

Este problema es fácilmente solucionable. Únicamente hace falta deshabilitar uno de los plexes del volumen.

root@madhatter:/root# vxmend off crash-01
[...]
v  crash        -            DISABLED ACTIVE   2427516  ROUND     -        fsgen
pl crash-01     crash        DISABLED OFFLINE  2427516  CONCAT    -        RW
sd rootdisk-03  crash-01     rootdisk 15254567 2427516  0         c0t0d0   ENA
pl crash-02     crash        DISABLED ACTIVE   2427516  CONCAT    -        RW
sd rootmirror-03 crash-02    rootmirror 8955954 2427516 0         c0t8d0   ENA
[...]

Tras ello, lo habilitamos de nuevo, dejando el plex en DISABLED CLEAN, y lo limpiamos. Es necesario psaar por estos estados, ya que de otro modo VXVM se quejará y no nos dejará continuar.

root@madhatter:/root# vxmend on crash-01       
root@madhatter:/root# vxmend fix clean crash-01
root@madhatter:/root# vxprint -htr
[...]
v  crash        -            DISABLED ACTIVE   2427516  ROUND     -        fsgen
pl crash-01     crash        DISABLED CLEAN    2427516  CONCAT    -        RW
sd rootdisk-03  crash-01     rootdisk 15254567 2427516  0         c0t0d0   ENA
pl crash-02     crash        DISABLED ACTIVE   2427516  CONCAT    -        RW
sd rootmirror-03 crash-02    rootmirror 8955954 2427516 0         c0t8d0   ENA
[...]

El último paso es arrancar el volumen completo.

root@madhatter:/root# vxvol start crash
root@madhatter:/root# vxprint -htr                   
[...]
v  crash        -            ENABLED  ACTIVE   2427516  ROUND     -        fsgen
pl crash-01     crash        ENABLED  ACTIVE   2427516  CONCAT    -        RW
sd rootdisk-03  crash-01     rootdisk 15254567 2427516  0         c0t0d0   ENA
pl crash-02     crash        ENABLED  ACTIVE   2427516  CONCAT    -        RW
sd rootmirror-03 crash-02    rootmirror 8955954 2427516 0         c0t8d0   ENA
[...]

Repetir el proceso en todos los volúmenes afectados. Y ya tenemos la máquina limpita.

Y para acabar, les remito al excelente tutorial de Veritas FS y Veritas VM de Ben Rockwood Aunque se trata de versiones antiguas del software es un punto de partida excelente para comprender esta tecnología.

Permalink Dejar un comentario

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.

Permalink 3 comentarios