En esta pagina podrás encontrar algunos tips e instrucciones para HP-UX,Linux y Unix en general
miércoles, 24 de abril de 2013
Usos del comando tar
En muchas ocasiones en las cuales tenemos que copiar contenidos de filesystems, preservando permisos, links archivos ocultos, etc. Justamente podemos utilizar el comando tar para este caso y lo mejor es que podemos hacerlo sin la necesidad de generar un archivo .tar intermedio facilitandonos de esta forma la copia.
Supongamos que queremos copiar toda una estructura de directorios a otro lado, por ejemplo de un filesystem a otro nuevo, solo tendremos que hacer lo siguiente
# cd /source
# tar cf - * | ( cd /target; tar xvfp -)
Tambien podemos usar el comando tar para copiar de un host a otro mediante SSH
# tar cvzf - /foo | ssh@target_host "cat > /foo.tar.gz
lunes, 15 de abril de 2013
Linux virtualización - KVM
KVM (Kernel-based Virtual Machine), es una solución de virtualización basada en QEMU para la arquitectura x86 que utiliza las extensiones de virtualización de hardware, ya sean AMD-V (svm) o las de Intel-VT (vmx).
Como deciamos en el parrafo anterior, KVM utiliza extensiones de hardware para poder funcionar, con lo cual este sera nuestro único requisito para la instalación. Por lo general cualquier CPU moderno soporta estas características. De todas maneras, para verificar si nuestra CPU esta soportada por KVM solo tenemos que correr los siguientes comandos
cat /proc/cpuinfo |grep svm (en el caso de tener un micro AMD) o
cat /proc/cpuinfo |grep vmx (en caso de tener Intel)
En caso de no encontrar ninguna extensión de vitrtualización, chequear si son soportadas por el CPU en la pagina del fabricante del micro y en caso afirmativo corroborar en el BIOS que estén activas.
Instalación
La máquina en la que estoy armando este tutorial tiene instalado un CentOS 6.4 64bits, dos procesadores Intel i7 1.2GHz, 8GBs de RAM y LVM con el suficiente espacio libre como para crear nuevos LVs que usaremos para alojar las imágenes ISO y las VMs
yum install kvm python-virtinst libvirt libvirt-python virt-manager \
virt-viewer libguestfs-tools
Creamos un FS de 12GBs para las ISO de instalación
# lvcreate -L 12G vg_pegasus2 -n lvol8
# mkdir /ISOs
# mkfs.ext4 -m 1 /dev/vg_pegasus2/lvol8
Y agregamos al fstab el FS que creamos
/dev/mapper/vg_pegasus2-lvol8 /ISOs ext4 defaults 1 2
Montamos el filesystem
# mount /ISOs
Creamos un FS de 80GBs para contener las VMs
# lvcreate -L 80G vg_pegasus2 -n lvol9
# mkdir /VMs
# mkfs.ext4 -m 1 /dev/vg_pegasus2/lvol9
Al igual que en el caso anterior agregamos la entrada al fstab
/dev/mapper/vg_pegasus2-lvol8 /ISOs ext4 defaults 1 2
y para chequear que hayamos echo bien el procedimiento montamos el FS
# mount /VMs
Verificamos con df -h
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_pegasus2-lvol1
5.0G 439M 4.5G 9% /
tmpfs 849M 444K 849M 1% /dev/shm
/dev/sda1 485M 73M 388M 16% /boot
/dev/mapper/vg_pegasus2-lvol2
194M 47M 137M 26% /home
/dev/mapper/vg_pegasus2-lvol7
2.0G 68M 1.9G 4% /opt
/dev/mapper/vg_pegasus2-lvol3
1008M 35M 923M 4% /tmp
/dev/mapper/vg_pegasus2-lvol4
7.9G 1.8G 5.7G 24% /usr
/dev/mapper/vg_pegasus2-lvol6
2.0G 68M 1.9G 4% /usr/local
/dev/mapper/vg_pegasus2-lvol5
16G 333M 15G 3% /var
/dev/mapper/vg_pegasus2-lvol8
12G 4.4G 7.4G 37% /ISOs
/dev/mapper/vg_pegasus2-lvol9
78M 5.6M 72M 8% /VMs
Vemos que los dos últimos FSs son los que creamos, en este caso se ve que copie algunas ISOs al /ISOs
# ls -l /ISOs/
total 4353336
drwx------. 2 root root 16384 Feb 28 04:11 lost+found
-rwxr-xr-x. 1 root root 3729028147 Feb 28 04:33 SL-63-x86_64-2012-08-02-Install-DVD.iso
-rwxr-xr-x. 1 root root 728760320 Feb 28 04:09 SL-63-x86_64-2012-08-24-LiveCD.iso
Ya teniendo el software instalado, las ISOs y el lugar donde ubicaremos las VMs pasamos a la parte de configuración y creado de las VMs
Primeros pasos con KVM
Una vez configurado verificamos con el comando virsh.
El virsh es la interfase que se utiliza para administrar los entornos virtuales este comando nos permite modificar, apagar, prender, sacar snapshots y clonar VMs entre otras cosas. En particular el flag list nos muestra la información acerca de las maquinas virtuales (o dominios).
El virsh es la interfase que se utiliza para administrar los entornos virtuales este comando nos permite modificar, apagar, prender, sacar snapshots y clonar VMs entre otras cosas. En particular el flag list nos muestra la información acerca de las maquinas virtuales (o dominios).
# virsh -c qemu:///system list
Id Name State
----------------------------------------------------
Una vez revisado que la instalación inicial de KVM fue exitosa procederemos a genera una VM de prueba
virt-install --connect qemu:///system -n vmCentOS1 -r 1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel6 --disk path=/VMs/vmCentOS1-d1.dsk,size=12 -c /VMs/iso/CentOS-6.4-x86_64-bin-DVD1.iso --graphics vnc
Luego de ejecutar este comando nos encontraremos con la pantalla de instalacion de CentOS6, el template de instalacion que se realizara sera por default y se selecionaran los paquetes de server basico.

Ahora finalizada la instalación tendremos que rebootear la VM
Posterior al reboot, bootearemos por primera vez la VM
Luego de realizar la instalacion del CentOS, tendriamos la VM lista para utilizar
# virsh -c qemu:///system list
Id Name State
----------------------------------------------------
3 vmCentOS1 running
Configuracion de consola serie
Para poder entrar por consola de texto al host y evitarnos usar VNC y un entorno gráfico, debemos modificar las opciones de booteo del kernel del guest y habilitar el acceso vía serie, para hacer esto debemos editar el archivo /etc/grub.conf
Para poder entrar por consola de texto al host y evitarnos usar VNC y un entorno gráfico, debemos modificar las opciones de booteo del kernel del guest y habilitar el acceso vía serie, para hacer esto debemos editar el archivo /etc/grub.conf
Dentro de este archivo debemos agregar en la linea
...
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg_walkure-lvol1 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_walkure/lvol1 SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet console=ttyS0
...
Para terminar la configuración se debe agregar un manejador de terminal para que atienda en el puerto serie virtual. Para hacer esto tenemos que agregar al /etc/inittab del guest la siguiente entrada
...
T0:S12345:respawn:/sbin/agetty ttyS0 115200
...
Para que el sistema tome la configuración realizada al inittab tendremos que recargarla usando el comando initcl
# initctl reload-configuration
Para editar estos archivos desde el host sin entrar al guest podemos hacer uso del comando virt-edit
# virt-edit vmCentOS1 /boot/grub/grub.conf
Ahora se esta en condiciones de conectarse a la consola de la VM en modo texto
# virsh -c qemu:///system console 3
Connected to domain vmCentOS1
Escape character is ^]
CentOS release 6.4 (Final)
Kernel 2.6.32-358.el6.x86_64 on an x86_64
vmCentos1 login:
o
# virsh -c qemu:///system console vmCentOS1
Connected to domain vmCentOS1
Escape character is ^]
CentOS release 6.4 (Final)
Kernel 2.6.32-358.el6.x86_64 on an x86_64
vmCentos1 login:
Administracion de VMs
Apagado
Podemos apagar una VM desde nuestro host corriendo
# virsh -c qemu:///system shutdown 3
Domain 3 is being shutdown
Este comando baja la VM en forma ordenada, desde la consola podemos observar como se bajan los servicios en la virtual
# virsh -c qemu:///system console 3Connected to domain vmCentOS1
Escape character is ^]
vmCentos1 login:
CentOS release 6.4 (Final)
Kernel 2.6.32-358.el6.x86_64 on an x86_64
vmCentos1 login: Stopping certmonger: [ OK ]
Stopping atd: [ OK ]
Stopping cups: [ OK ]
Stopping abrt daemon: [ OK ]
Stopping sshd: [ OK ]
Shutting down postfix: [ OK ]
Stopping mcelog
Stopping crond: [ OK ]
Stopping automount: [ OK ]
Stopping acpi daemon: [ OK ]
Stopping HAL daemon: [ OK ]
Stopping block device availability: Deactivating block devices:
[SKIP]: unmount of vg_vmcentos1-lv_swap (dm-1) mounted on [SWAP]
[SKIP]: unmount of vg_vmcentos1-lv_root (dm-0) mounted on /
[ OK ]
Stopping system message bus: [ OK ]
Stopping rpcbind: [ OK ]
Stopping auditd: [ OK ]
Shutting down system logger: [ OK ]
Shutting down loopback interface: [ OK ]
ip6tables: Flushing firewall rules: [ OK ]
ip6tables: Setting chains to policy ACCEPT: filter [ OK ]
ip6tables: Unloading modules: [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
Stopping monitoring for VG vg_vmcentos1: 2 logical volume(s) in volume group "vg_vmcentos1" unmonitored
[ OK ]
Sending all processes the TERM signal... [ OK ]
Sending all processes the KILL signal... [ OK ]
Saving random seed: [ OK ]
Syncing hardware clock to system time [ OK ]
Turning off swap: [ OK ]
Turning off quotas: [ OK ]
Unmounting pipe file systems: [ OK ]
Unmounting file systems: [ OK ]
init: Re-executing /sbin/init
Halting system...
Power down.
Podemos verificar el estado de las VMs con el comando virsh -c qemu:///system list --all es importante especificar en este caso el flag --all ya que si lo omitimos no se listara la maquina
# virsh -c qemu:///system list --all
Id Name State
----------------------------------------------------
- vmCentOS1 shut off
Prendido
Si quisieramos, levantar la maquina que hemos apagado,
# virsh -c qemu:///system start vmCentOS1
Podemos borrar una VM con corriendo los siguientes comandos
# virsh -c qemu:///system list
Id Name State
----------------------------------------------------
3 vmCentOS1 running
# virsh destroy vmCentOS1
Domain vmCentOS1 destroyed
# virsh -c qemu:///system list
Id Name State
----------------------------------------------------
# virsh undefine vmCentOS1
Domain vmCentOS1 has been undefined
Clonado
Si la VM esta prendida primero debemos apagarla ya que si no la apagamos al querer clonarla nos dara el siguiente error
# virt-clone --connect=qemu:///system -o vmCentOS1 -n vmCentOS2 -f /VMs/vmCentOS2.img
ERROR Domain with devices to clone must be paused or shutoff.
Con lo cual como habiamos dicho debemos apagar la VM primero con el comando
# virsh -c qemu:///system shutdown vmCentOS1Domain vmCentOS1 is being shutdown
Verificamos que la operacion haya sido exitosa
# virsh list --all
Id Name State
----------------------------------------------------
- vmCentOS1 shut off
Para comenzar el clonado corremos
# virt-clone --connect=qemu:///system -o vmCentOS1 -n vmCentOS2 -f /VMs/vmCentOS2.img
Cloning vmCentOS1-d1.dsk 56% [================================= ] 182 MB/s | 6.7 GB 00:29 ETA
La opcion -o indica la maquina origen, la maquina a la cual vamos a clonar, -n especifica el nombre de la nueva VM, -f es el full path al archivo de la nueva VM.
Al cabo de unos minutos la operacion terminara exitosamente con el siguiente mensaje
Clone 'vmCentOS2' created successfully.
Para verificar el estado de ambas maquinas corremos un virsh list --all
# virsh list --all
Id Name State
----------------------------------------------------
- vmCentOS1 shut off
- vmCentOS2 shut off
Para evitar problemas de red, nombres e ips duplicadas es conviente bootear la maquina en modo rescue o hacer un loopback device, en este caso como la VM esta creada con LVM vamos a utilizar el primer metodo
# virt-rescue vmCentOS2
Google, Inc.
Serial Graphics Adapter 12/07/11
SGABIOS $Id: sgabios.S 8 2010-04-22 00:03:40Z nlaredo $ (mockbuild@c6b18n1.dev.centos.org) Wed Dec 7 17:04:47 UTC 2011
.....
mdadm: No arrays found in config file or automatically
[ 2.190404] device-mapper: uevent: version 1.0.3
[ 2.191725] device-mapper: ioctl: 4.23.6-ioctl (2012-07-25) initialised: dm-devel@redhat.com
Reading all physical volumes. This may take a while...
Found volume group "vg_vmcentos1" using metadata type lvm2
2 logical volume(s) in volume group "vg_vmcentos1" now active
------------------------------------------------------------
Welcome to virt-rescue, the libguestfs rescue shell.
Note: The contents of / are the rescue appliance.
You have to mount the guest's partitions under /sysroot
before you can examine them.
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
><rescue>
Ahora necesitamos saber como esta compuesto el layout de LVM con lo cual corremos el comando lvs
><rescue> lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_root vg_vmcentos1 -wi-a---- 9.54g
lv_swap vg_vmcentos1 -wi-a---- 1.97g
Para montar el root FS tenemos que hacer lo siguiente
><rescue> mount /dev/vg_vmcentos1/lv_root /sysroot
[ 99.953289] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts:
Una vez montado realizamos las operaciones que necesitamos, en este caso vamos a borrar la configuracion de los devices del host original
><rescue> rm /sysroot/etc/udev/rules.d/70-persistent-net.rules
Ahora en el proximo booteo la maquina levantara con la interfaz correcta.
Como la VM original estaba configurada con DHCP, no es necesario cambiar la IP.
Modificacion de la VM
Agregado de disco
Para agregarle un vdisk al dominio virtual primero debemos crear el vdisk. En este caso el vdisk lo armamos con formato raw
# qemu-img create -f raw shared.raw 5G
Formatting 'shared.raw', fmt=raw size=5368709120
Ahora para agregarlo a nuestra VM lo hacemos desde la interface de virsh
#virsh
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh # attach-disk vmCentOS1 /VMs/shared.raw vdb --configure
Disk attached successfully
Desde la VM podemos ver el nuevo disco con el comando fdisk -l
# fdisk -l
...
Disk /dev/vdb: 5368 MB, 5368709120 bytes
16 heads, 63 sectors/track, 10402 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Ahora tenemos el disco listo para usar
Remocion de disco de la VM
Una vez que desmontamos, el filesystem, exportado el VG, en caso de estar usandolo, ya estariamos en condiciones de poder remover el vdisk de la VM.
# virsh detach-disk vmCentOS2 vdb
Disk detached successfully
Configuracion de red
La red por defecto que tendremos una vez instalado el KVM se llama justamente default, para ver la configuracion de esta correremos los sifguientes comandos,
virsh # net-list
Name State Autostart Persistent
--------------------------------------------------
default active yes yes
De esta forma sabremos que la unica red definida es la default
Para obtener mas informacion acerca de la configuracion de la red lo mejor es correr un net-edit
virsh # net-edit default
Una vez que corremos el comando, nos aparece una pantalla del editor vi
<network>
<name>default</name>
<uuid>1cc2cd6d-ffa9-44cd-9c59-d04a455a4c4a</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0' />
<mac address='52:54:00:4C:C3:89'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254' />
</dhcp>
</ip>
</network>
Ahi podemos ver como esta configurada la red, el virtual switch, el modo en el cual trabaja, tenemos un DHCP y el rango de direcciones IP con el que trabaja
Si quisieramos asociar una IP a una MAC address, tendremos que hacer un net-edit y agregar la siguientes lineas que figuran en negrita
<network>
<name>default</name>
<uuid>1cc2cd6d-ffa9-44cd-9c59-d04a455a4c4a</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0' />
<mac address='52:54:00:4C:C3:89'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254' />
<host mac='52:54:00:58:26:37' name='vmCentOS1.domain' ip='192.168.122.10' />
<host mac='52:54:00:1A:37:FC' name='vmCentOS2.domain' ip='192.168.122.11' />
</dhcp>
</ip>
</network>
Luego para que el KVM tome la configuracion que establecimos haremos lo siguiente en el guest
# ps -ef |grep dnsmaq |grep -v grep
nobody 2715 1 0 08:41 ? 00:00:00 /usr/sbin/dnsmasq --strict-order --local=// --domain-needed --pid-file=/var/run/libvirt/network/default.pid --conf-file= --except-interface lo --bind-interfaces --listen-address 192.168.122.1 --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases --dhcp-lease-max=253 --dhcp-no-override --dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile --addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
# kill -HUP 2715
Si quisieramos asociar una IP a una MAC address, tendremos que hacer un net-edit y agregar la siguientes lineas que figuran en negrita
<network>
<name>default</name>
<uuid>1cc2cd6d-ffa9-44cd-9c59-d04a455a4c4a</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0' />
<mac address='52:54:00:4C:C3:89'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254' />
<host mac='52:54:00:58:26:37' name='vmCentOS1.domain' ip='192.168.122.10' />
<host mac='52:54:00:1A:37:FC' name='vmCentOS2.domain' ip='192.168.122.11' />
</dhcp>
</ip>
</network>
Luego para que el KVM tome la configuracion que establecimos haremos lo siguiente en el guest
# ps -ef |grep dnsmaq |grep -v grep
nobody 2715 1 0 08:41 ? 00:00:00 /usr/sbin/dnsmasq --strict-order --local=// --domain-needed --pid-file=/var/run/libvirt/network/default.pid --conf-file= --except-interface lo --bind-interfaces --listen-address 192.168.122.1 --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases --dhcp-lease-max=253 --dhcp-no-override --dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile --addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
# kill -HUP 2715
El kill se lo damos al pid del proceso dnsmasq para que este recarge la configuracion. En el cliente hacemos un release de la IP y pediremos otra.
Snapshots
Para poder utilizar esta caracteristica el formato de la imagen tiene que ser qcow2, dado que el formato raw no lo soporta. Como las VMs que hemos creado son de tipo raw (que es el default) tendremos que convertirlas a qcow2 para poder utilizar este feature.
# qemu-img convert -O qcow2 vmCentOS1-d1.dsk vmCentOS1-d1.qcow2
# qemu-img convert -O qcow2 vmCentOS1-d1.dsk vmCentOS1-d1.qcow2
Donde -O indica el formato de salida vmCentOS1-d1.dsk es el file original donde reside la VM en formato raw y vmCentOS1-d1.qcow2 es el archivo de salida.
Luego de unos minutos tendremos el nuevo archivo de salida.
# ls -ltr
total 7062000
drwx------. 2 root root 16384 Apr 12 20:07 lost+found
drwxr-xr-x. 2 root root 4096 Apr 15 13:55 iso
-rwxr-xr-x 1 qemu qemu 12884901888 Apr 17 08:08 vmCentOS2.img
-rwxr-xr-x 1 root root 12884901888 Apr 17 10:01 vmCentOS1-d1.dsk
-rw-r--r-- 1 qemu qemu 2349793792 Apr 17 13:55 vmCentOS1-d1.qcow2
Paso siguiente sera borrar la definicion del vmCentOS1 e importar el nuevo contenedor.
Chequeamos si la maquina levanto
# virsh undefine vmCentOS1
Domain vmCentOS1 has been undefined
Ahora estamos en condicion de poder tomar un snapshot del dominio vmCentOS1
Luego de unos minutos tendremos el nuevo archivo de salida.
# ls -ltr
total 7062000
drwx------. 2 root root 16384 Apr 12 20:07 lost+found
drwxr-xr-x. 2 root root 4096 Apr 15 13:55 iso
-rwxr-xr-x 1 qemu qemu 12884901888 Apr 17 08:08 vmCentOS2.img
-rwxr-xr-x 1 root root 12884901888 Apr 17 10:01 vmCentOS1-d1.dsk
-rw-r--r-- 1 qemu qemu 2349793792 Apr 17 13:55 vmCentOS1-d1.qcow2
Paso siguiente sera borrar la definicion del vmCentOS1 e importar el nuevo contenedor.
# virsh undefine vmCentOS1
Domain vmCentOS1 has been undefined
# virt-install --connect qemu:///system -n vmCentOS1 -r 1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel6 --disk path=/VMs/vmCentOS1-d1.qcow2,device=disk,format=qcow2 --graphics vnc --importDomain vmCentOS1 has been undefined
Chequeamos si la maquina levanto
# virsh undefine vmCentOS1
Domain vmCentOS1 has been undefined
Ahora estamos en condicion de poder tomar un snapshot del dominio vmCentOS1
viernes, 15 de febrero de 2013
Seteos de semáforos en linux
¿Que son los semáforos?
Los semáforos son mecanismos de comunicación inter-proceso que usa el sistema operativo para regular accesos a regiones criticas de código y recursos.
Al ser mecanismos que provee el kernel de Linux, para tunearlos es necesario modificar parámetros de kernel.
Uso del comando IPCS
Para ver como esta configurado actualmente el sistema y obtener una breve descripción de que es cada seteo podemos ejecutar el siguiente comando
[root@myserver ~]# ipcs -ls
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
Una forma muy útil para visualizar la utilización de los semáforos de un sistema es con el comando ipcs -su
[root@myserver~]# ipcs -su
------ Semaphore Status --------
used arrays = 50
allocated semaphores = 2570
Configuración
Los parámetros de kernel se configuran con el comando sysctl
[root@myserver~]# sysctl -a |grep sem
kernel.sem = 250 32000 32 128
Para ampliar o modificar los seteos actuales tenemos que editar el archivo de configuración /etc/sysctl.conf y establecer la siguiente linea (o reemplazar la existente)
kernel.sem = 250 256000 32 1024
Para que el sistema haga efectivo el cambio debemos correr
sysctl -p
jueves, 16 de agosto de 2012
Usando sudo
Sudo - Descripción de la herramienta
[hmartine@infraUX ~]$ sudo /usr/sbin/visudo
[sudo] password for hmartine:
root ALL=(ALL) ALL
ADMINS ALL=(ALL) ALL
[hmartine@infraUX ~]$ sudo -l
[sudo] password for hmartine:
Matching Defaults entries for hmartine on this host:
requiretty, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC
KDEDIR LS_COLORS MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE
LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME
LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY"
Runas and Command-specific defaults for hmartine:
User hmartine may run the following commands on this host:
(ALL) ALL
Una forma mas segura de usar sudo es explicitar específicamente los comandos que queremos usar.
Es una utilidad GNU muy versátil que permite a un usuario común (sin privilegios) correr comandos como si fuera root u otro usuario.
La configuración de sudo se guarda en /etc/sudores y este archivo se modifica mediante el comando visudo. Podemos invocar a este comando ya sea como root o mediante sudo visudo
[sudo] password for hmartine:
Para listar los contenidos del sudoers sin comentarios, ni blancos para poder visualizarlo mas facil corremos el comando que vemos abajo
[root@infraUX ~]# cat /etc/sudoers |grep -v "^#" |grep -v "^$"
User_Alias ADMINS = hmartine, dmeloroot ALL=(ALL) ALL
ADMINS ALL=(ALL) ALL
En el ejemplo de arriba se creo un alias, el cual funciona como un contenedor al que se le asignaron los usuarios hmartine y dmelo. Luego tanto al usuario root como al grupo ADMINS se les otorga permisos para que ejecuten desde cualquier terminal, como cualquier usuario cualquier comando.
Para poder ver que comandos puedo correr con mi usuario debo correr el comando sudo -l
[hmartine@infraUX ~]$ sudo -l
[sudo] password for hmartine:
Matching Defaults entries for hmartine on this host:
requiretty, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC
KDEDIR LS_COLORS MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE
LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME
LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY"
Runas and Command-specific defaults for hmartine:
User hmartine may run the following commands on this host:
(ALL) ALL
Una forma mas segura de usar sudo es explicitar específicamente los comandos que queremos usar.
La ventaja principal de usar sudo es la de tener trazabilidad y control acerca de los comandos que se ejecutan como root.
lunes, 9 de abril de 2012
Presentacion de discos via iSCSI
El iSCSI es un protocolo cliente-servidor que permite entregar un dispositivo de bloque de disco (LUN) transportados gracias al protocolo IP.
El layout típico consta de una red IP y uno o varios clientes iSCSI o también denominados initiators, ya que son los que inician la comunicación contra los servers iSCSI o targets (destino)
Para poder identificarse entre si los targets y los initators utilizan el un identificador único llamado iqn (iSCSI qualified name)
Primero debemos tener instalado el software de iSCSI initiator, podemos verificar esto con el comando swlist
root@ttsdevdb /root #swlist -l product iSCSI-00
# Initializing...
# Contacting target "ttsdevdb"...
#
# Target: ttsdevdb:/
#
# iSCSI-00 B.11.11.03f HP-UX iSCSI Software Initiator
iSCSI-00.ISCSI-SWD B.11.11.03f HP-UX iSCSI Software Initiator
Ahora podríamos migrar los LVs del disco interno al disco iSCSI para tener un mayor nivel de protección a fallas, fds
root@ttsdevdb /opt/iscsi/bin #pvmove /dev/dsk/c2t2d0 /dev/dsk/c4t0d0
Transferring logical extents of logical volume "/dev/vg01/lvol1"...
Luego cuando finalice el pvmove, hacemos un vgreduce del disco /dev/dsk/c2t2d0
El layout típico consta de una red IP y uno o varios clientes iSCSI o también denominados initiators, ya que son los que inician la comunicación contra los servers iSCSI o targets (destino)
Para poder identificarse entre si los targets y los initators utilizan el un identificador único llamado iqn (iSCSI qualified name)
Primero debemos tener instalado el software de iSCSI initiator, podemos verificar esto con el comando swlist
root@ttsdevdb /root #swlist -l product iSCSI-00
# Initializing...
# Contacting target "ttsdevdb"...
#
# Target: ttsdevdb:/
#
# iSCSI-00 B.11.11.03f HP-UX iSCSI Software Initiator
iSCSI-00.ISCSI-SWD B.11.11.03f HP-UX iSCSI Software Initiator
En caso de no tenerlo instalado podemos bajar el software de http://software.hp.com.
Ya con el soft instalado, veremos que este esta instalado en /opt/iscsi/bin
Lo que tenemos que averiguar es el iqn de nuestro equipo para poder darlo de alta en nuestro storage (en este caso un NetApp)
root@ttsdevdb /opt/iscsi/bin #./iscsiutil -l
Initiator Name : iqn.1986-03.com.hp:ttsdevdb.120901577
Initiator Alias :
Authentication Method :
CHAP Method : CHAP_UNI
Initiator CHAP Name :
CHAP Secret :
NAS Hostname :
NAS Secret :
Radius Server Hostname :
Header Digest : None,CRC32C (default)
Data Digest : None,CRC32C (default)
SLP Scope list for iSLPD :
Ahora le agregamos un alias al inititator para mayor claridad
root@ttsdevdb /opt/iscsi/bin #./iscsiutil -iA ttsdevdb
iscsiutil: Initiator Alias "ttsdevdb" has been successfully updated.
Verificamos que el cambio se haya realizado
root@ttsdevdb /opt/iscsi/bin #./iscsiutil -l
Initiator Name : iqn.1986-03.com.hp:ttsdevdb.120901577
Initiator Alias : ttsdevdb
Authentication Method :
CHAP Method : CHAP_UNI
Initiator CHAP Name :
CHAP Secret :
NAS Hostname :
NAS Secret :
Radius Server Hostname :
Header Digest : None,CRC32C (default)
Data Digest : None,CRC32C (default)
SLP Scope list for iSLPD :
Agregamos el target que en este caso es la IP de nuestra caja de discos (NetApp)
root@ttsdevdb /opt/iscsi/bin #./iscsiutil -a -I 10.1.11.81
Target address "10.1.11.81:3260,1" has been successfully added.
En este momento estamos listos para que nos asignen la LUN por iSCSI de manera que corremos un ioscan previo a la presentacion de la LUN
root@ttsdevdb /opt/iscsi/bin #ioscan -fnC disk
Class I H/W Path Driver S/W State H/W Type Description
=====================================================================
disk 0 0/0/1/1.2.0 sdisk CLAIMED DEVICE SEAGATE ST318203LC
/dev/dsk/c1t2d0 /dev/rdsk/c1t2d0
disk 1 0/0/2/0.2.0 sdisk CLAIMED DEVICE SEAGATE ST318203LC
/dev/dsk/c2t2d0 /dev/rdsk/c2t2d0
disk 2 0/0/2/1.2.0 sdisk CLAIMED DEVICE HP DVD-ROM 304
/dev/dsk/c3t2d0 /dev/rdsk/c3t2d0
Una vez asignada la LUN corremos de nuevo el ioscan
root@ttsdevdb /opt/iscsi/bin #ioscan -fnC disk
Class I H/W Path Driver S/W State H/W Type Description
==========================================================================
disk 0 0/0/1/1.2.0 sdisk CLAIMED DEVICE SEAGATE ST318203LC
/dev/dsk/c1t2d0 /dev/rdsk/c1t2d0
disk 1 0/0/2/0.2.0 sdisk CLAIMED DEVICE SEAGATE ST318203LC
/dev/dsk/c2t2d0 /dev/rdsk/c2t2d0
disk 2 0/0/2/1.2.0 sdisk CLAIMED DEVICE HP DVD-ROM 304
/dev/dsk/c3t2d0 /dev/rdsk/c3t2d0
disk 3 255/0/0.0.0.0 sdisk CLAIMED DEVICE NETAPP LUN
Generamos los special files para el dispositivo nuevo
root@ttsdevdb /opt/iscsi/bin #insf -H 255/0/0.0.0.0
insf: Installing special files for sdisk instance 3 address 255/0/0.0.0.0
Verificamos que se hayan creado
root@ttsdevdb /opt/iscsi/bin #ioscan -fnC disk
Class I H/W Path Driver S/W State H/W Type Description
==========================================================================
disk 0 0/0/1/1.2.0 sdisk CLAIMED DEVICE SEAGATE ST318203LC
/dev/dsk/c1t2d0 /dev/rdsk/c1t2d0
disk 1 0/0/2/0.2.0 sdisk CLAIMED DEVICE SEAGATE ST318203LC
/dev/dsk/c2t2d0 /dev/rdsk/c2t2d0
disk 2 0/0/2/1.2.0 sdisk CLAIMED DEVICE HP DVD-ROM 304
/dev/dsk/c3t2d0 /dev/rdsk/c3t2d0
disk 3 255/0/0.0.0.0 sdisk CLAIMED DEVICE NETAPP LUN
/dev/dsk/c4t0d0 /dev/rdsk/c4t0d0
Hacemos el pvcreate y agregamos el disco a un VG
root@ttsdevdb /opt/iscsi/bin #pvcreate /dev/rdsk/c4t0d0
Physical volume "/dev/rdsk/c4t0d0" has been successfully created.
root@ttsdevdb /opt/iscsi/bin #vgextend vg01 /dev/dsk/c4t0d0
Volume group "vg01" has been successfully extended.
Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf
Verificamos el estado del VG
root@ttsdevdb /opt/iscsi/bin #vgdisplay -v vg01
--- Volume groups ---
VG Name /dev/vg01
VG Write Access read/write
VG Status available
Max LV 255
Cur LV 4
Open LV 4
Max PV 16
Cur PV 2
Act PV 2
Max PE per PV 4342
VGDA 4
PE Size (Mbytes) 4
Total PE 8680
Alloc PE 4340
Free PE 4340
Total PVG 0
Total Spare PVs 0
Total Spare PVs in use 0
--- Logical volumes ---
LV Name /dev/vg01/lvol1
LV Status available/syncd
LV Size (Mbytes) 2048
Current LE 512
Allocated PE 512
Used PV 1
LV Name /dev/vg01/lvol2
LV Status available/syncd
LV Size (Mbytes) 2048
Current LE 512
Allocated PE 512
Used PV 1
LV Name /dev/vg01/lvu01
LV Status available/syncd
LV Size (Mbytes) 10192
Current LE 2548
Allocated PE 2548
Used PV 1
LV Name /dev/vg01/lvol5
LV Status available/syncd
LV Size (Mbytes) 3072
Current LE 768
Allocated PE 768
Used PV 1
--- Physical volumes ---
PV Name /dev/dsk/c2t2d0
PV Status available
Total PE 4340
Free PE 0
Autoswitch On
PV Name /dev/dsk/c4t0d0
PV Status available
Total PE 4340
Free PE 4340
Autoswitch On
Ahora podríamos migrar los LVs del disco interno al disco iSCSI para tener un mayor nivel de protección a fallas, fds
root@ttsdevdb /opt/iscsi/bin #pvmove /dev/dsk/c2t2d0 /dev/dsk/c4t0d0
Transferring logical extents of logical volume "/dev/vg01/lvol1"...
Luego cuando finalice el pvmove, hacemos un vgreduce del disco /dev/dsk/c2t2d0
Suscribirse a:
Entradas (Atom)