Configurar VLANs para un enlace en un Blade HP con HP Virtual Connect Manager

El objetivo de la siguiente entrada es explicar cómo se debe configurar una red en el HP Virtual Connect Manager para poder conectar determinadas bahías a segmentos de red que cuenten con etiquetado VLAN. 
Debemos tener en cuenta que los switches deben tener una configuración específica para los puertos que van conectados al blade. Estas son:
  1. Los puertos del switch se deben configurar como puertos TRUNK, de forma que todas las tramas se reenvien al blade con etiquetado VLAN.
  2. Cuando se añadan SUS (Shared Uplink Set) adicionales, los puertos del switch conectado al blade tendrán que configurarse para LACP y configuradas en el mismo “Link Aggregation Group”.
Para configurarlo, entraremos en la interfaz gráfica del Virtual Connect. Lo primero que deberemos hacer es habilitar el “Map VLAN Tags”. Se habilita desde la pestaña “Advanced Settings”, desde el panel de configuración de Ethernet. Para acceder a este panel se entra desde el panel de la izquierda del Virtual Connect Manager. Una vez dentro, se selecciona la opción “Map VLAN Tags” y salvamos la configuración.

Una vez habilitado el uso de VLANs se creará un nuevo “Shared Uplink Set”. Para este SUS se definen que puertos físicos van a formar parte del mismo y que redes van a poder transmitirse por el mismo, con el identificador de VLAN de cada una. 
En el menú superior de la pantalla principal, se hace click en  “Define” y ahí se selecciona “Shared Uplink Set”. Introduciremos un nombre que identifique claramente el Trunk. En el ejemplo se muestra como se han añadido los puertos 1 y 2 de las bahías 1 y 2 del blade. De esta forma, tendremos redundancia ante la caida de alguno de los enlaces y ampliamos el ancho de banda disponible.
Además se definirán los segmentos de red con sus correspondientes VLAN ID. En el ejemplo se definen cuatro segmentos con VLAN ID del 101 al 104.

Ya estamos en disposición de asignar alguno de los segmentos de red definidos a algún servidor. Si queremos crear un perfil nuevo, se creará de igual forma que si fuese una conexión directa (sin VLANs). A la hora de seleccionar la red que se le quiere mapear a una bahía, ya apareceran las redes que se han definido:

Zero-Padding en Bash

Hoy me he encontrado con el problema de tener que generar una secuencia de números desde un terminal con bash. A todos los números de dicha secuencia debían estar formados por tres caracteres con lo que debía añadir ceros de relleno a la izquierda del número.



Buscando un poco me he encontrado con esta interesante entrada donde explica como usar el comando printf basándose en el uso que el autor le da a la función en C.

http://jonathanwagner.net/2007/04/zero-padding-in-bash/

A modo de resumen, para generar la secuencia he utilizado el siguiente bucle:

for i in {1..10}; do printf “%03d\n” $i; done
001
002
003
004
005
006
007
008
009
010


De esta forma me he podido descargar los 100 ficheros secuenciales que me interesaban de una forma rápida y cómoda.

for i in {1..100}; do seq=`printf “%03d\n” $i`; wget $url1$seq$url2; done

Nota: parece que desde la versión 4.1.5 de bash se puede simplificar de la siguiente manera:
$ for i in {01..10}; do echo $i; done
01
02
03
04
05
06
07
08
09
10

Las últimas versiones de las diferentes distribuciones de GNU/Linux ya vienen con una versión de bash superior, con lo que la segunda opción será mas óptima. En sistemas antiguos o con otras shells se podría utilizar la opción con el printf.

Ampliacion Filesystem de root en Solaris 11

En Solaris 10 ya se podía  pero en Solaris 11 es obligatorio la instalación de el filesystem de root con el sistema de ficheros ZFS. ZFS es un sistema de ficheros y gestor de volúmenes en un único software. Esto nos proporcionará múltiples ventajas y opciones de configuración: mirrors, stripes, Raid-Z, etc. El problema que tendremos si queremos ampliar dicho Filesystem y no existe espacio libre en el disco sin particionar es que no podemos añadirle un disco adicional al pool Rpool. La única opción de ampliación de dicho Filesystem pasa por asignar un disco de mayor capacidad, sincronizarlo, separar el mirror y arrancar con el nuevo disco.



Para conseguir ampliar el disco seguiremos los siguientes pasos:
1. Asignamos el nuevo disco (insertamos un disco mayor en un slot libre o asignamos nuevo disco virtual si se trata de una maquina virtual) y lo escaneamos desde Solaris:
root@solaris11:~# cfgadm -l
Ap_Id Type Receptacle Occupant Condition  
c4 scsi-bus connected configured unknown  
c4::dsk/c4t0d0 disk connected configured unknown  
c4::dsk/c4t1d0 disk connected configured unknown

2. En el nuevo disco creamos la partición Fdisk del disco completo. Para ello podemos ejecutar un format, seleccionar el disco y particionarlo con el menú de fdisk. A mi me gusta mas este comando, que nos permite crear el particionado fdiks en una línea:

root@solaris11:~# fdisk -B c4t1d0p0

Podemos verificar el particionado del disco de la siguiente manera:

root@solaris11:~# fdisk -W – c4t1d0p0
* /dev/rdsk/c4t1d0p0 default fdisk table 
* Dimensions: 
* 512 bytes/sector 
* 63 sectors/track 
* 255 tracks/cylinder 
* 5221 cylinders  
…  
…  
* Id Act Bhead Bsect Bcyl Ehead Esect Ecyl Rsect Numsect  
191 128 0 1 1 254 63 1023 16065 83859300  
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 

3. Crear las particiones de solaris (slices en adelante) en el nuevo disco. Para ello podemos copiar el particionado del disco original o con un format particionar el disco nuevo asignándole todos los cilindros al Slice 0. Con la primera opción nos mostrará un warning:

root@solaris11:~# prtvtoc /dev/rdsk/c4t0d0s2 | fmthard -s – /dev/rdsk/c4t1d0s2
fmthard: Partition 2 specifies the full disk and is not equal full size of disk.  
The full disk capacity is 83827170 sectors.  
fmthard: New volume table of contents now in place.

4. Ya estamos en disposición de asignar el disco al pool. Con este comando se ve lo fácil que es crear un mirror con ZFS, a diferencia de lo que ocurria con SVM. Primero verificamos que el pool esta correcto y no tiene fallos y a continuación asignamos el Slice 0 del nuevo disco:

root@solaris11:~# zpool status  
pool: rpool  
state: ONLINE  
scan: none requested  
config:  
    NAME STATE READ WRITE CKSUM  
  rpool ONLINE 0 0 0  
    c4t0d0s0 ONLINE 0 0 0

  errors: No known data errors  
root@solaris11:~# zpool attach -f rpool c4t0d0s0 c4t1d0s0
 
Make sure to wait until resilver is done before rebooting.
5. Con el comando ‘zpool status’ vamos comprobando el estado de la sincronización:

root@solaris11:~# zpool status  
pool: rpool  
state: ONLINE  
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.  
action: Wait for the resilver to complete.  
scan: resilver in progress since Wed Oct 31 17:39:29 2012 2,92G scanned out of 17,0G at 8,76M/s, 0h27m to go 2,92G resilvered, 17,14% done  
config:
  NAME STATE READ WRITE CKSUM
 rpool ONLINE 0 0 0
  mirror-0 ONLINE 0 0 0
   c4t0d0s0 ONLINE 0 0 0
   c4t1d0s0 ONLINE 0 0 0 (resilvering)
errors: No known data errors

6. Será necesario instalar el GRUB en el nuevo disco para asegurarnos que una vez hayamos quitado el disco original el sistema sea capaz de arrancar. Para ello, como hacíamos en Solaris 10, ejecutamos el siguiente comando: 

root@solaris11:~# installgrub -fm /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c4t1d0s0

7. Una vez haya terminado la sincronización separamos el pool. Al separar el pool en el nuevo disco se habrá creado un nuevo pool que posteriormente podremos importar:

root@solaris11:~# zpool split rpool rpool2 c4t1d0s0

8. A continuación apagamos el servidor, desconectamos el disco original y arrancamos el sistema con una imagen de Solaris 11, ya sea la versión Live o con el instalador y seleccionando la opción 3 para abrir una shell. Una vez tengamos el promt importaremos el pool que habíamos creado al separar el mirror y lo importaremos con el nombre rpool para que el GRUB sea capaz de encontrarlo:

# zpool import rpool2 rpool 
# zpool export rpool 

9. Una vez se haya exportado el rpool ya podemos reiniciar y debería arrancar ya con el nuevo disco. Es posible que el zpool aún vea el espacio original. Para ello hay que modificar la propiedad autoexpand para que crezca el espacio automáticamente:

root@solaris11:~# zpool set autoexpand=on rpool

10. Dependiendo de la opción elegida en el punto 3, es posible que sea necesario modificar la Slice 0 del disco para asignarle todos los cilindros disponibles.