# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Netapp Snapmirror entre dos cabinas

NetAppHacía ya un tiempo que no hacia entradas sobre Netapp, así que vamos a retomar un poco el tema con la utilidad Snapmirror, que permite replicar volumenes/qtrees entre filers. Snapmirror va a trabajar de forma sincrona (snapmirror_sync) y replicando los datos contra el volumen de respaldo a la vez que se escriben en el volumen original o por contra especificando una periodicidad concreta al más puro estilo cron. Los datos antes de ser escritos en disco se guardan en NVRAM con el fin de asegurar su consistencia.

Lo primero de todo, lógicamente es disponer la licencia de snapmirror en ambas cabinas, en este caso vamos a trabajar sobre netapp01 (192.168.1.100) y netapp02 (192.168.1.129). Activamos la licencia y posteriormente snapmirror:

Activación de Snapmirror

Para realizar en los dos filer:

NetApp01> license add XXXXXX
A snapmirror site license has been installed.
snapmirror enabled.
NetApp01> Sat Dec  3 20:02:32 GMT [rc:notice]: snapmirror licensed

NetApp01> license add XXXXXX
A snapmirror_sync site license has been installed.
Sync SnapMirror enabled.

NetApp01> options snapmirror.enable on
NetApp01> options snapmirror.log.enable on

Conectividad entre filers

Lo primero que debemos hacer es revisar la conectividad entre ambas cabinas:

NetApp01> ping 192.168.1.129
192.168.1.129 is alive

NetApp02> ping 192.168.1.100
192.168.1.100 is alive

Configuramos el filer origen permitiendo que el filer destino pueda acceder a él, para ello hay que añadir el hostname/ip del filer destino en el fichero /etc/snapmirror.allow. Antes de nada verificad si existe y tiene contenido para preservarlo, ya que con wrfile eliminamos lo que hubiera anteriormente:

NetApp01> rdfile /etc/snapmirror.allow
/etc/snapmirror.allow: No such file or directory

NetApp01> rdfile /etc/snapmirror.allow
/etc/snapmirror.allow: No such file or directory
NetApp01> wrfile /etc/snapmirror.allow
192.168.1.129
NetApp02
CTRL + C
read: error reading standard input: Interrupted system call
NetApp01> rdfile /etc/snapmirror.allow
192.168.1.129

Creación de volúmenes a replicar

Vamos a crear el volumen de datos en el filer origen:

NetApp01> vol create vol_backup aggr_test 200M
Creation of volume 'vol_backup' with size 200m on containing aggregate
'aggr_test' has completed.

Snapmirror

Una vez creado el volumen en el filer origen, ya podemos crear la configuración de Snapmirror en el destino. Algunas consideraciones son que para hacer Snapmirror el volumen destino tiene que estar en modo restricted. De este modo únicamente permitimos ciertas operaciones en el volumen, como snapmirror o tareas de mantenimiento, pero nunca el acceso a los datos:

Creamos el volumen:

NetApp02> vol create vol_mirror aggr0 200M
Creation of volume 'vol_mirror' with size 200m on containing aggregate
'aggr0' has completed.

Lo restringimos para poder hacer la transferencia inicial:

NetApp02> vol restrict vol_mirror
Volume 'vol_mirror' is now restricted.

Ejecutamos la transferencia inicial de datos:

NetApp02> snapmirror initialize -S 192.168.1.100:vol_backup NetApp02:vol_mirror
Transfer started.
Monitor progress with 'snapmirror status' or the snapmirror log.

Podemos ver el estado mediante snapmirror status o a través del log específico (en caso de haber sido activado como mencionaba antes):

NetApp02> snapmirror status
Snapmirror is on.
Source                    Destination           State          Lag        Status
192.168.1.100:vol_backup  NetApp02:vol_mirror   Snapmirrored   00:00:15   Idle

Configurar periodicidad de sincronización

Una vez realizada la copia inicial, podemos programar las copias incrementales cada X tiempo o que se realicen de forma síncrona. En estas copias únicamente se transferirán los bloques que hayan sido modificados desde la última realizada. Estas configuraciones se especifican en el fichero de configuración /etc/snapmirror.conf con esta estructura:

filer_origen:volumen_origen filer_destino:volumen_destino – opciones min hora dia_mes dia_sem

Para configurar que la copia sea síncrona y que los datos se mantengan actualizados al mismo tiempo en ambos volúmenes únicamente hay que añadir la palabra sync (recordad revisar antes el contenido del fichero):

NetApp02> wrfile /etc/snapmirror.conf
192.168.1.100:vol_backup NetApp02:vol_mirror - sync
CTRL+C

Nota: para la replicación síncrona el volumen tiene que tener un tamaño mínimo, sino recibiréis este error:

Sun Dec 4 08:38:00 GMT [snapmirror.src.sync.FvolSyncTooSmall:error]: The flexible volume Synchronous SnapMirror source vol_backup is 200 MB, which is smaller than the minimum supported size of 10240 MB.

Y si lo que queremos es que la sincronización se realice periódicamente en lugar de a tiempo real usamos el estilo cron que veíamos en la estructura. Vamos a configurarlo todos los días a las 23:00:

NetApp02> wrfile /etc/snapmirror.conf
192.168.1.100:vol_backup NetApp02:vol_mirror - 00 23 * *
CTRL+C

Es recomendable cuando hacemos la configuración de snapmirror y las primeras sincronizaciones tener las consolas de ambas cabinas abiertas para revisar todos los errores que puedan ir apareciendo en una y otra.

Si necesitaramos forzar manualmente la sincronización podemos hacerlo con el comando snapmirror update, con la misma sintaxis que utilizamos con la sincronización inicial:

NetApp02> snapmirror update -S 192.168.1.100:vol_backup NetApp02:vol_mirror
Transfer started.
Monitor progress with 'snapmirror status' or the snapmirror log.

Podéis revisar otros comandos como snapmirror abort para cancelar la sincronización, snapmirror break, snapmirror resync, etc.

Configuración de una lun iSCSI / FCP en NetApp

NetAppExisten varias formas de gestionar LUNs iSCSI o FCP en Data Ontap de NetApp, ya sea desde la interfaz web (FilerView), NetApp System Manager o desde la línea de comandos (CLI). En esta ocasión vamos a ver como hacerlo desde la CLI. Hay dos formas, la más sencilla es a través de un setup/asistente que veremos al final y la otra paso a paso, que es la primera que vamos a ver.

Cómo crear manualmente una LUN iSCSI y mapearla contra un initiator group

Lo primero vamos a crear un volumen de prueba para añadir sobre él la LUN, lo crearemos con un tamaño de 210 megas y sobre el agregado de prueba que creamos en el anterior artículo, NetApp: cómo crear y añadir discos a un agregado (aggr):

NetApp01> vol create vol_luns aggr_test 210m
Creation of volume 'vol_luns' with size 210m on containing aggregate
'aggr_test' has completed.
NetApp01> vol status vol_luns
         Volume State           Status            Options
       vol_luns online          raid_dp, flex     create_ucode=on,
                                                  convert_ucode=on
		Containing aggregate: 'aggr_test'

Una vez creado vamos añadir la LUN en el volumen, le asignamos 100 megas de espacio e indicamos que no lo reserve, de modo que el tamaño usado crezca conforme se va necesitando (-o noreserve), el tipo de OS sobre el que se utilizará será linux (-t linux) y la llamamos lun001:

NetApp01> lun create -s 100m -t linux -o noreserve /vol/vol_luns/lun001
NetApp01> lun show
	/vol/vol_luns/lun001         100m (104857600)     (r/w, online)

Ahora tenemos que crear el initiator group, dentro del cual añadimos los initiator names de las máquinas sobre las que luego se configurará la LUN iSCSI (con -i indicamos que el protocolo a usar es iSCSI, con -f sería FCP), lo llamamos iniciador_01 y añadimos el iniciador iqn.2009-05.com.test:test.1 e iqn.2009-05.com.test:test.2

NetApp01> igroup create -i -t linux iniciador_01  iqn.2009-05.com.test:test.1 iqn.2009-05.com.test:test.2

Finalmente sólo queda mapear la LUN con el initiator group que hemos creado para que las dos máquinas ya puedan utilizar la LUN cuando fuera necesario:

NetApp01> lun map /vol/vol_luns/lun001 iniciador_01
Fri Jul 29 21:26:15 GMT [lun.map:info]: LUN /vol/vol_luns/lun001 was mapped to initiator group iniciador_01=0
NetApp01> lun map /vol/vol_luns/lun001 iniciador_02
Fri Jul 29 21:26:15 GMT [lun.map:info]: LUN /vol/vol_luns/lun001 was mapped to initiator group iniciador_01=0
NetApp01> lun show -m
LUN path                            Mapped to          LUN ID  Protocol
-----------------------------------------------------------------------
/vol/vol_luns/lun001                iniciador_01            0     iSCSI

Ya tendríamos nuestra LUN lista para utilizar en cualquiera de los dos iniciadores.

Crear con un asistente una LUN iSCSI ó FCP y mapearla contra un initiator group

Si la explicación anterior os ha resultado demasiado engorrosa, siempre podéis lanzar el asistente disponible en la CLI para crear nuevas LUN, mapearlas, crear initiator groups, añadirles iniciadores, etc. Aquí podéis ver el proceso completo, en negrita las acciones realizadas:

NetApp01> lun setup
	This setup will take you through the steps needed to create LUNs
	and to make them accessible by initiators. You can type ^C (Control-C)
	at any time to abort the setup and no unconfirmed changes will be made
	to the system.
Do you want to create a LUN? [y]: y
Multiprotocol type of LUN
	(solaris/windows/hpux/aix/linux/netware/vmware/windows_gpt/windows_2008/xen/hyper_v/solaris_efi)
	[linux]: linux
	A LUN path must be absolute. A LUN can only reside in a volume or
	qtree root. For example, to create a LUN with name "lun0" in the
	qtree root /vol/vol1/q0, specify the path as "/vol/vol1/q0/lun0".
Enter LUN path: /vol/vol_luns/lun002
	A LUN can be created with or without space reservations being enabled.
	Space reservation guarantees that data writes to that LUN will never
	fail.
Do you want the LUN to be space reserved? [y]: n 	Size for a LUN is specified in bytes. You can use single-character
	multiplier suffixes: b(sectors), k(KB), m(MB), g(GB) or t(TB).
Enter LUN size: 50m
	You can add a comment string to describe the contents of the LUN.
	Please type a string (without quotes), or hit ENTER if you don't
	want to supply a comment.
Enter comment string: lun test
	The LUN will be accessible to an initiator group. You can use an
	existing group name, or supply a new name to create a new initiator
	group. Enter '?' to see existing initiator group names.
Name of initiator group []: ?
	No existing initiator groups.
Name of initiator group []: iniciador_01
Type of initiator group iniciador_01 (FCP/iSCSI) [iSCSI]: iSCSI
	An iSCSI initiator group is a collection of initiator node names.Each
	node name can begin with either 'eui.' or 'iqn.' and should be in the
	following formats: eui.{EUI-64 address} or iqn.yyyy-mm.{reversed domain
	name}:{optional string composed of alphanumeric characters, '-', '.'
	and ':'}
	Eg: iqn.2001-04.com.acme:storage.tape.sys1.xyz or eui.02004567A425678D
	You can separate node names by commas. Enter '?' to display a list of
	connected initiators. Hit ENTER when you are done adding node names to
	this group.
Enter comma separated nodenames: iqn.2009-05.com.test:test.1, iqn.2009-05.com.test:test.2
Enter comma separated nodenames:
The initiator group has an associated OS type. The following are
currently supported: solaris, windows, hpux, aix, linux, netware,
vmware, xen or hyper_v.
OS type of initiator group "iniciador_01" [linux]: linux
	The LUN will be accessible to all the initiators in the
	initiator group. Enter '?' to display LUNs already in use
	by one or more initiators in group "iniciador_01".
LUN ID at which initiator group "iniciador_01" sees "/vol/vol_luns/lun002" [0]:
LUN Path                : /vol/vol_luns/lun002
OS Type                 : linux
Size                    : 50m (52428800)
Comment                 : lun test
Initiator Group         : iniciador_01
Initiator Group Type    : iSCSI
Initiator Group Members : iqn.2009-05.com.test:test.1
                        : iqn.2009-05.com.test:test.2
Mapped to LUN-ID        : 0
Do you want to accept this configuration? [y]: y
Fri Jul 29 21:21:50 GMT [lun.map:info]: LUN /vol/vol_luns/lun002 was mapped to initiator group iniciador_01=0
Do you want to create another LUN? [n]: n

NetApp y rsync: mkstemp failed: File too large (27)

Este problema ha surgido en una cabina NetApp mientras realizaba una copia de seguridad vía rsync contra un volumen montado por NFS. El problema es que la copia tenía un tamaño considerable y sobre todo una cantidad muy elevada de ficheros. Tras un rato realizando el rsync sin problemas comenzaron a saltar errores tal que:

rsync: mkstemp "xxxxxxxxxxx" failed: File too large (27)
rsync: mkstemp "xxxxxxxxxxx" failed: File too large (27)
rsync: mkstemp "xxxxxxxxxxx" failed: File too large (27)
rsync: mkstemp "xxxxxxxxxxx" failed: File too large (27)

Revisando los logs de la cabina (syslog) efectivamente vemos que el origen del problema es en la configuración de la directiva maxdirsize limit del volumen:

Wed Jul 27 11:36:06 CEST [ems.engine.inputSuppress:warning]: Event 'wafl.dir.size.max' suppressed 1455 times since Tue Jul 26 20:21:47 CEST 2011.
Wed Jul 27 11:36:06 CEST [wafl.dir.size.max:warning]: Directory /vol/xxxx reached the maxdirsize limit. Reduce the number of files or use the vol options command to increase this limit.

Así que la solución es sencilla, aumentamos el valor para ese volumen y solucionado:

filer*>  vol options mi_volumen maxdirsize 125000

NetApp: cómo crear y añadir discos a un agregado (aggr)

NetAppVamos a ver las dos tareas más básicas a la hora de trabajar con agregados (aggr) en cabinas NetApp con OS Data Ontap.

Crear un agregado

A la hora de crear un nuevo agregado debemos tener en cuenta varios factores. El primero y muy importante es saber que una vez que se han añadido discos a un agregado no se pueden quitar. Para quitar discos de un agregado es necesario eliminarlo, así que conviene tener clara la estructura de agregados que vamos a tener. Otro punto clave es elegir el tipo de Raid (raid4 ó raid_dp), aunque posteriormente no habría problema en modificarlo si fuera necesario.

La forma básica de crear un agregado sería la siguiente: creamos un agregado llamado aggr_test con Raid de doble paridad (raid_dp), especificando el tamaño para el grupo de Raid. 28 es el máximo para RAID-DP en discos SAS o FC, vamos a utilizar el que se ofrece por defecto, que es 16, lo que significaría 14 discos para datos y 2 para spare. Finalmente indicamos los discos a añadir al agregado con su identificador (en este caso v0.XX).

Tenemos estos discos de Spare:

Spare disks

RAID Disk	Device	HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)
---------	------	------------- ---- ---- ---- ----- --------------    --------------
Spare disks for zoned checksum traditional volumes or aggregates only
spare   	v0.19	v0    1   3   FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.20	v0    1   4   FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.21	v0    1   5   FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.22	v0    1   6   FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.24	v0    1   8   FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.25	v0    1   9   FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.26	v0    1   10  FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.27	v0    1   11  FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.28	v0    1   12  FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.29	v0    1   13  FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.32	v0    2   0   FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.33	v0    2   1   FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.34	v0    2   2   FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.35	v0    2   3   FC:A   -  FCAL  N/A  70/144384         77/158848
spare   	v0.36	v0    2   4   FC:A   -  FCAL  N/A  70/144384         77/158848

Creamos el agregado aggr_test, con un raid-group-size (-r) de 16, tipo de raid de doble paridad (-t raid_dp) y los discos (-v) v0.19 v0.20 v0.21,etc:

NetApp01> aggr create aggr_test -r 16 -t raid_dp -d v0.19 v0.20 v0.21 v0.22 v0.24 v0.25 v0.26 v0.27

Sat Jul 16 21:53:30 GMT [raid.vol.disk.add.done:notice]: Addition of Disk /aggr_test/plex0/rg0/v0.27 Shelf 1 Bay 11 [NETAPP   VD-50MB          0042] S/N [40735310] to aggregate aggr_test has completed successfully
Sat Jul 16 21:53:30 GMT [raid.vol.disk.add.done:notice]: Addition of Disk /aggr_test/plex0/rg0/v0.26 Shelf 1 Bay 10 [NETAPP   VD-50MB          0042] S/N [40735309] to aggregate aggr_test has completed successfully
....
....
....
....
Creation of an aggregate with 8 disks has completed.
NetApp01> Sat Jul 16 21:53:31 GMT [wafl.vol.add:notice]: Aggregate aggr_test has been added to the system.

Si no tuviéramos pensado añadir más discos al agregado, podríamos haber elegido otro raid-group-size, por ejemplo un único grupo de 8. Todo depende de los requerimientos de cada proyecto, la previsión de adición de discos y las recomendaciones de mejores prácticas por parte de NetApp, es todo un mundo.

Una vez creado el agregado ya podemos ver que está Online (si los discos han sido utilizados antes puede que los veáis en estado zeroing, es completamente normal:

NetApp01> aggr status -r
Aggregate aggr_test (online, raid_dp) (zoned checksums)
  Plex /aggr_test/plex0 (online, normal, active)
    RAID group /aggr_test/plex0/rg0 (normal)

      RAID Disk	Device	HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)
      ---------	------	------------- ---- ---- ---- ----- --------------    --------------
      dparity 	v0.19	v0    1   3   FC:A   -  FCAL  N/A  70/144384         77/158848
      parity  	v0.20	v0    1   4   FC:A   -  FCAL  N/A  70/144384         77/158848
      data    	v0.21	v0    1   5   FC:A   -  FCAL  N/A  70/144384         77/158848
      data    	v0.22	v0    1   6   FC:A   -  FCAL  N/A  70/144384         77/158848
      data    	v0.24	v0    1   8   FC:A   -  FCAL  N/A  70/144384         77/158848
      data    	v0.25	v0    1   9   FC:A   -  FCAL  N/A  70/144384         77/158848
      data    	v0.26	v0    1   10  FC:A   -  FCAL  N/A  70/144384         77/158848
      data    	v0.27	v0    1   11  FC:A   -  FCAL  N/A  70/144384         77/158848

Añadir discos a un agregado

Si disponemos de un número suficiente de discos spare en la controladora siempre podremos agregar más discos a un agregado. Para ello elegiremos el disco y lo añadiremos del modo que vamos a ver a continuación:

NetApp01> aggr add aggr_test -d v0.28
aggr add: Starting a new raid_dp RAID group;
The number of disks specified must be at least three
times the number of plexes in the target aggregate 'aggr_test'.

Como podéis ver he intentado añadir un nuevo disco al agregado aggr_test, pero debido a que finalmente lo he dejado con un grupo de raid de 8 discos me obliga a añadir tres discos para poder crear un nuevo grupo de Raid, tres discos es lo mínimo para un raid_dp: DATOS + PARIDAD + DPARIDAD. Si lo habéis creado de 16 como indicábamos arriba no habrías tenido este problema. De todos modos, vamos a añadir los tres discos para poder probar la adición de discos al agregado:

NetApp01> aggr add aggr_test -d v0.28 v0.29 v0.32
Note: preparing to add 1 data disk and 2 parity disks.
Continue? ([y]es, [n]o, or [p]review RAID layout) y
Sat Jul 16 22:10:04 GMT [raid.vol.disk.add.done:notice]: Addition of Disk /aggr_test/plex0/rg2/v0.32 Shelf 2 Bay 0 [NETAPP   VD-50MB          0042] S/N [40735413] to aggregate aggr_test has completed successfully
Sat Jul 16 22:10:04 GMT [raid.vol.disk.add.done:notice]: Addition of Disk /aggr_test/plex0/rg2/v0.29 Shelf 1 Bay 13 [NETAPP   VD-50MB          0042] S/N [40735412] to aggregate aggr_test has completed successfully
Sat Jul 16 22:10:04 GMT [raid.vol.disk.add.done:notice]: Addition of Disk /aggr_test/plex0/rg2/v0.28 Shelf 1 Bay 12 [NETAPP   VD-50MB          0042] S/N [40735311] to aggregate aggr_test has completed successfully
Addition of 3 disks to the aggregate has completed.

Los discos ya han sido añadidos y los podréis ver inmediatamente en el estado del agregado (aggr status -r).

NetApp: actualizar Data ONTAP via CLI

NetAppLa actualización del sistema operativo Data Ontap en cabinas NetApp es bastante sencilla y requiere apenas 3 comandos. Lo primero es bajar la versión a la cual vamos a actualizar, podemos hacerlo desde now.netapp.com sección Downloads > Software > Data ONTAP.

Una vez que tengamos la URL, podemos descargarla directamente desde la CLI de la cabina. Si no tiene acceso a Internet podemos bajarla en un servidor local y hacer lo mismo. El comando a utilizar es “software“:

filer> software
The following commands are available; for more information
type "software help " delete help list update get install

Empezamos, descargamos vía CLI el fichero:

filer> software get http://192.168.0.100/7351_setup_e.exe

Una vez descargado podemos listar el software disponible en local para ser instalado:

filer> software list
7351_setup_e.exe

Si estamos preparados, ya podemos instalar:

filer> software install 7351_setup_e.exe
software: You can cancel this operation by hitting Ctrl-C in the next 6 seconds.
software: Depending on system load, it may take many minutes
software: to complete this operation. Until it finishes, you will
software: not be able to use the console.
software: installing software, this could take a few minutes...
software: installation of 7351_setup_e.exe completed.
Please type "download" to load the new software,
and "reboot" subsequently for the changes to take effect.

Para finalizar ejecutamos el comando download para que tras la extracción de los ficheros se copien en su lugar correcto:

filer> download

Si en lugar de install lo hacéis con update ejecutará con un solo comando la instalación, actualización y reinicio, así que tened cuidado:

filer> software update 7351_setup_e.exe

Ahora solo queda reiniciar la cabina cuando deseemos para que los cambios surtan efecto. Podemos ver la versión instalada con el comando version:

filer> version
NetApp Release 7.3.5: Mon Nov 22 20:37:51 PST 2010

pos

NetApp: configurando interfaces de red en trunk + vif (virtual interface)

NetAppEn esta entrada vamos a configurar las interfaces de red de una cabina NetApp, en este caso las dos interfaces de red de una controladora, y configurarlas en modo trunk estableciendo una interfaz virtual (vif – virtual interface) con su correspondiente IP. Hablando en términos muy claros, vamos a hacer que las dos interfaces de red trabajen como si fueran una bajo una IP virtual.

Primer paso, crear el trunk

La base con la que vamos a trabajar es la siguiente, dos interfaces de red: ns0 y ns1 sin configurar + la interfaz loopback que en este caso no vamos a tocar:

NetApp01> ifconfig -a
ns0: flags=0x2408866<BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:50:56:03:f4:7e (auto-100tx-fd-cfg_down)
ns1: flags=0x2408866<BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:50:56:04:f4:7e (auto-100tx-fd-cfg_down)
lo: flags=0x1948049<UP,LOOPBACK,RUNNING,MULTICAST,TCPCKSUM> mtu 9188
inet 127.0.0.1 netmask-or-prefix 0xff000000 broadcast 127.0.0.1

Lo primero es crear el trunk entre las interfaces de red ns0 y ns1. Todo se hace en el momento que se declara la interfaz virtual, llamada en este caso vif01:

NetApp01> vif create multi vif01 -b mac ns0 ns1

Observamos el resultado y efectivamente se ha creado un trunk entre ambas interfaces y asignado contra la interfaz virtual vif01 que ya aparece:

NetApp01> ifconfig -a
ns0: flags=0xa408866 mtu 1500
	ether 02:50:56:03:f4:7e (auto-100tx-fd-cfg_down)
	trunked vif01
ns1: flags=0xa408866 mtu 1500
	ether 02:50:56:03:f4:7e (auto-100tx-fd-cfg_down)
	trunked vif01
lo: flags=0x1948049 mtu 9188
	inet 127.0.0.1 netmask-or-prefix 0xff000000 broadcast 127.0.0.1
vif01: flags=0x22408862 mtu 1500
	ether 02:50:56:03:f4:7e (Disabled virtual interface)

La sintaxis de

vif

es la siguiente:

vif create [single|multi|lacp] <nombre_interfaz> -b [rr|mac|ip|port] [<listado_interfaces>]

El nombre_interfaz en este caso es vif01 y el listado de interfaces las dos disponibles, ns0 y ns1. Hemos elegido el modo multi para la creación del trunk, el que elijáis dependerá de la configuración de red y switches en la que se encuentre la cabina y factores de requerimientos. En este caso se presupone que el switch soporta la configuración y conseguimos que ambas bocas de red trabajen a la vez. Con el parámetro -b podemos especificar el modo en el que el filer gestionará el balanceo de carga (modos multi-mode y lacp), por IP, por MAC o por Round Robin.

Segundo paso, asignar una IP a vif01

Ahora que ya tenemos el trunk y la interfaz virtual configurada únicamente nos falta asignarle una IP, máscara, puerta de enlace, etc como haríamos en cualquier servidor Linux normal, mediante el comando ifconfig:

NetApp01> ifconfig vif01 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 mediatype auto

Nota: si tuvieramos la cabina configurada como cluster deberíamos especificar el partner de la controladora en este punto añadiendo partner vif01, donde vif01 es el identificador de la interfaz de la otra controladora del cluster.

Hemos asignado la IP 192.168.1.100 con su correspondiente máscara de red y broadcast, etc. Automáticamente debería levantar la interfaz y tener conexión:

NetApp01> ifconfig -a
ns0: flags=0xac48867 mtu 1500
	ether 02:50:56:03:f4:7e (auto-100tx-fd-up)
	trunked vif01
ns1: flags=0xac48867 mtu 1500
	ether 02:50:56:03:f4:7e (auto-100tx-fd-up)
	trunked vif01
lo: flags=0x1948049 mtu 9188
	inet 127.0.0.1 netmask-or-prefix 0xff000000 broadcast 127.0.0.1
vif01: flags=0x22c48863 mtu 1500
	inet 192.168.1.100 netmask-or-prefix 0xffffff00 broadcast 192.168.1.255
	ether 02:50:56:03:f4:7e (Enabled virtual interface)

Ahora toca añadir la puerta de enlace en caso de necesitarlo y hacer la comprobación de que la conectividad es la correcta:

NetApp01> route add default  192.168.1.1 10
add net default: gateway 192.168.1.1
NetApp01> routed on
NetApp01> ping 192.168.1.1
192.168.1.1 is alive
NetApp01> ping 8.8.8.8
8.8.8.8 is alive

Para levantar/tumbar la interfaz de red es tan sencillo como:

NetApp01> ifconfig vif01 up
NetApp01> ifconfig vif01 down

Guardar cambios tras reiniciar la cabina

Todo lo que hemos hecho se perderá si no guardamos los cambios. Para ello tenemos que editar el fichero /etc/rc y añadir ahí los comandos para que se ejecuten en el arranque. Tened cuidado porque habrá otras configuraciones y podéis perderlas si no lo editáis bien.

El primero paso es copiar lo que tiene actualmente, lo haremos con el comando rdfile:

NetApp01> rdfile /etc/rc
#Auto-generated by setup Fri Jul  8 21:03:59 GMT 2011
hostname NetApp01
options dns.enable off
options nis.enable off

Una vez copiado lo que haya (seguro que hay más que en lo que he pegado) tendréis que escribir de nuevo el fichero, se hace con wrfile:

NetApp01> wrfile /etc/rc

Cuando lo ejecutéis tendréis que pegar el nuevo contenido y cuando hayáis terminado presionar CTRL + C:

#Auto-generated by setup Fri Jul  8 21:03:59 GMT 2011
hostname NetApp01
vif create multi vif01 -b mac ns0 ns1
vif create multi vif01 -b mac
ifconfig vif01 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 mediatype auto
route add default 192.168.1.1 1
routed on
options dns.enable off
options nis.enable off

Y ya está. Tras el reinicio los cambios persistirán. Recordad que los propietarios de cabinas NetApp tenéis a vuestra disposición el simulador de Data Ontap para hacer todas las pruebas que estiméis necesarias.

Netapp: cómo cambiar el tipo de Raid en un agregado

Existen varias opciones para cambiar el tipo de Raid (raidtype) dentro de un agregado (aggregate) en una cabina de discos Netapp. Podemos hacerlo a través de la interfaz web (FilerView), Netapp System Manager o desde la línea de comandos. En este caso vamos a ver como hacerlo desde línea de comandos. La sintaxis para modificar el Raid es la siguiente:

aggr options <AGREGADO> raidtype <TIPO DE RAID>

Antes conviene revisar el estado del agregado a modificar. En nuestro caso vamos a cambiar el Raid del agregado aggr0 de RAID-DP (doble paridad) a RAID4:

filer> aggr status
           Aggr State           Status            Options
          aggr0 online          raid_dp, aggr     root

Podemos ver el estado de forma extendida pasando el parámetro -r:

filer> aggr status -r
Aggregate aggr0 (online, raid_dp) (block checksums)
  Plex /aggr0/plex0 (online, normal, active, pool0)
    RAID group /aggr0/plex0/rg0 (normal)

      RAID Disk	Device  	HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)
      ---------	------  	------------- ---- ---- ---- ----- --------------    --------------
      dparity 	0c.00.11	0c    0   11  SA:A   0  SATA  7200 423111/866531584  423946/868242816
      parity  	0c.00.3 	0c    0   3   SA:A   0  SATA  7200 423111/866531584  423946/868242816
      data    	0c.00.5 	0c    0   5   SA:A   0  SATA  7200 423111/866531584  423946/868242816
      data    	0c.00.7 	0c    0   7   SA:A   0  SATA  7200 423111/866531584  423946/868242816
      data    	0c.00.8 	0c    0   8   SA:A   0  SATA  7200 423111/866531584  423946/868242816
      data    	0c.00.10	0c    0   10  SA:A   0  SATA  7200 423111/866531584  423946/868242816
...
...
...

Una vez verificado el estado, podemos proceder a la modificación del Raid:

filer> aggr options aggr0 raidtype raid4
Thu Jul 07 13:23:45 GMT [raid.config.raidsize.change:notice]: Aggregate aggr0: raidsize is adjusted from to after changing raidtype

Aggregate aggr0: raidsize is adjusted from  to  after changing raidtype.

Podés verificar el estado del raid ejecutando de nuevo

aggr status

, seguramente esté reconstruyendo el Raid (rebuilding) y finalmente volverá a estado normal y en Raid 4 tras realizar las tareas pendientes.

Cambiar a modo de comandos avanzados en Data Ontap Netapp

Hay ciertas tareas desde línea de comandos, ya sea por ssh o consola dentro de una cabina Netapp que requieren que el usuario acceda a un modo avanzado. Entre otras por ejemplo la de reparación de discos. Vamos a ver los dos modos disponibles y el modo de acceso a cada uno de ellos, que se gestionan con el comando priv.

Tipos de acceso en Data Ontap:

filer1> priv ?
Usage:  priv
        priv set [ -q ] [  ]
        priv help

        priv -level   (DEPRECATED FORM)

Valid privilege levels are
  admin          administrative commands

  advanced       potentially dangerous commands that should be
                 used under guidance from NetApp Global Services;
                 also includes the admin commands

Acceso a modo avanzado de comandos:

filer1> priv set advanced

Cuando estemos en el modo avanzado aparecerá un * en el prompt:

filer*>

Para volver al modo de administrador:

filer1*> priv set admin
filer1>