¡Trata de arrancarlo, por Dios!
¿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.
Espejito, espejito…
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.