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

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

Montar un filesystem por UUID o label


disco duroEl beneficio de montar los sistemas de ficheros con su UUID o label en lugar de con el nombre asignado a la partición (/dev/sda1, /dev/hda2…) es que se trata de un identificador único, como su propio nombre indica: Universally Unique Identifier (UUID). Esto evita problemas que se pueden producir cuando añadimos nuevos dispositivos al sistema, movemos particiones, etc ya que el nombre de la partición puede cambiar pero no el UUID o label (etiqueta asignada por nosotros).

¿Cómo averiguamos el UUID de una partición?

Hay varias formas: con el comando blkid, tune2fs… Vamos a localizar el UUID de la partición /dev/sda2:

# tune2fs -l /dev/sda2 | grep UUID
Filesystem UUID:          528c141b-66fd-43d5-808b-4a94a639f323
# blkid /dev/sda2
/dev/sda2: UUID="528c141b-66fd-43d5-808b-4a94a639f323" TYPE="ext4"

Con esta información ya podemos añadir la entrada correspondiente al fichero /etc/fstab. Si antes estaba así:

/dev/sda2     /datos               ext4    defaults        1 1

Ahora quedaría así:

UUID=528c141b-66fd-43d5-808b-4a94a639f323     /datos        ext4    defaults   1 1

¿Y cómo averiguamos o configuramos la etiqueta del filesystem?

Es sencillo, con el comando tune2fs seguido del parámetro -L podemos configurar la etiqueta que queramos:

# tune2fs -L "DATOS" /dev/sda2
tune2fs 1.41.12 (17-May-2010)

Para consultar la etiqueta/label de la partición:

# tune2fs -l /dev/sda2 | grep "Filesystem volume name"
Filesystem volume name:   DATOS

También podemos verla con el comando anterior blkid, ahora que la partición tiene label nos muestra tanto el UUID como la etiqueta:

# blkid /dev/sda2
/dev/sda2: UUID="528c141b-66fd-43d5-808b-4a94a639f323" TYPE="ext4" LABEL="DATOS"

Y para montarla en /etc/fstab tan sencillo como:

LABEL=DATOS     /datos        ext4    defaults   1 1

CIFS VFS: No username specified usando “credentials” en /etc/fstab


Cuando montamos unidades samba en equipos Linux y lo configuramos a nivel de /etc/fstab para que se monten automáticamente en el arranque es recomendable securizar la forma en que especificamos el usuario y clave para conectar a la unidad. Para ello podemos usar la flag “credentials” que permite especificar estos datos en un fichero aparte y securizado (especificandole permisos restrictivos, en carpetas seguras, etc).

Entonces, en lugar de dejar la línea así:

//192.168.0.111/share /compartido cifs username=usuario,password=clave 0 0

Lo haríamos por ejemplo, así:

//192.168.0.111/share /compartido cifs credentials=/secure/.cifs_auth 0 0

El fichero contendrá el usuario y clave:

username=usuario
password=clave

Y establecemos permisos 700 a la carpeta que lo contenga (con grupo y propietario root). Una vez modificado, podemos ya probar a montar la unidad. En este caso, debido a que no teníamos instalado el paquete cifs-utils recibíamos el siguiente error:

# mount /compartido
mount: wrong fs type, bad option, bad superblock on //10.0.3.203/backup,
       missing codepage or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

Y al ejecutar dmesg:

# dmesg | tail
 CIFS VFS: No username specified
 CIFS VFS: cifs_mount failed w/return code = -22

Para solventarlo, instalamos el paquete indicado (tenemos que tener el repositorio DAG), que es necesario para poder usar la flag “credentials”:

yum install cifs-utils

Una vez realizado ya deberíamos poder montar la unidad sin problemas.

OpenVZ & Virtuozzo: activar noatime para un contenedor


El otro día escribí un artículo en el que se explicaban las diferencias entre atime, noatime y relatime, podéis leerlo si queréis saber las diferencias entre cada una de estos atributos asignables a los sistemas de ficheros.

En esta entrada vamos a ver la forma correcta de modificar este atributo a una máquina virtual o contenedor en los sistemas de virtualización Virtuozzo y OpenVZ. En lugar de asignar los atributos a nivel de /etc/fstab debemos hacerlo mediante el comando

vzctl set

. En el siguiente ejemplo asignamos el atributo noatime al contenedor con ID 150, lo haremos en el nodo hardware:

# vzctl set 150 --noatime yes --save
Setting noatime mount flag for Container
Saved parameters for Container 150

Una vez realizado, podemos acceder a la máquina virtual y verificar que el cambio se ha realizado correctamente:

# mount
/dev/vzfs on / type vzfs (rw,noatime)

atime, noatime y relatime


disco duroAtime, noatime y relatime son atributos que se pueden asignar a los sistemas de ficheros, directorios o ficheros en Linux y que definen el registro de los accesos a los ficheros/directorios.

Cuando un sistema de ficheros está montado con el atributo atime (en muchas distribuciones por defecto), significa que cada vez que se acceda a un fichero o directorio, se realizará una escritura en el disco para guardar la fecha del último acceso al mismo. Esto implica un aumento considerable de I/O en la máquina y hay sistemas en los que puede conllevar una degradación del servicio bastante elevada. Por este motivo, muchas veces se recurre a deshabilitar este atributo, para ello debemos montar el sistema de fichero con noatime.

Existe otro atributo que se encuentra a mitad de camino entre atime y noatime, se trata de relatime (Ubuntu por ejemplo ya lo usa por defecto).  Relatime reduce considerablemente el refresco de la fecha de acceso ya que únicamente se modifica si el valor actual de atime es menor que la fecha de modificación del fichero. Esto es útil en el caso de que utilicemos aplicaciones que hagan uso del valor atime para ciertas tareas.

Entrando en la parte práctica, haremos uso del fichero fstab (/etc/fstab), que es donde se listan los discos y particiones del sistema, para modificar este parámetro. Únicamente tendríamos que añadir en la sección de atributos (4ª columna) nuestra selección, en este caso relatime:

/dev/sda3  /              ext4         relatime,errors=remount-ro  0  1

Posteriormente si queremos activar esta modificación, remontamos la partición, en este caso /

# mount -o remount /

Y ya deberíamos visualizar los atributos del sistema de ficheros actualizados:

$ mount
/dev/sda3 on / type ext4 (rw,relatime,errors=remount-ro)

Otro ejemplo, en este caso como noatime en /etc/fstab:

UUID=8d76759b-8949-46d1-9dd6-eec549960ff0 /datos ext3 _netdev,rw,noatime 0 0

Conviene recordar también que podemos asignar estos atributos de forma independiente a ficheros o directorios, no tiene porque ser al sistema de ficheros completo:

# chattr +A fichero

De este modo hemos deshabilitado atime para el fichero. Si no manejáis el comando chattr os recomiendo revisar esta otra entrada. Chattr y lsattr: visualizar y modificar atributos en sistemas de ficheros Linux

Cómo crear espacio TMP y SWAP en un servidor con las particiones ya creadas


Puede darse el caso, de que necesitemos añadir más swap a un servidor en producción, o recrear la partición temporal (tmp). Para estos casos, lo más sencillo es seguir los siguientes pasos, pues evitas cualquier tipo de reparticionamiento del sistema.

Básicamente, lo que vamos a hacer es crear un sistema de ficheros utilizando espacio del disco duro:

Añadir partición SWAP al sistema en producción:

Creamos un “fichero” de 1Gb, el cual posteriormente usaremos para crear una partición Swap:

dd if=/dev/zero of=/.swap bs=1024 count=1000000

Hacemos de ese fichero un sistema de ficheros swap:

mkswap /.swap

Y activamos el espacio Swap:

swapon /.swap

Si lanzamos un “free” o “top” veremos que ya tenemos el espacio swap funcionando. Por último hay que añadirlo al fichero /etc/fstab para que al reiniciar se monte automáticamente:

/.swap swap swap defaults 0 0

Añadir partición TMP al sistema en producción:

Creamos el fichero de 250 Mb para /tmp:

dd if=/dev/zero of=/.tmpfs bs=1024 count=250000

Hacemos de ese fichero un sistema de ficheros ext3:

mkfs -t ext3 /.tmpfs

Lo montamos, pasandole los parámetros noexec,nosuid para dotar a la partición de mayor seguridad:

mount -o loop,noexec,nosuid,rw /.tmpfs /tmp

Asignamos permisos:

chmod 0777 /tmp
chmod +t /tmp

Finalmente solo queda añadirlo también al fichero /etc/fstab para que se monte automáticamente al reiniciar:

/.tmpfs /tmp ext3 loop,rw,nosuid,noexec 0 0

Recalcar que esta no es la mejor solución, pero lamentablemente en servidores en producción es la más viable porque recrear la tabla de particiones puede ser un engorro en un servidor en producción.

Este artículo está basado la entrada en inglés de uno-code.com