Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
Sistema de archivos global 2 (GFS2)
Sistema de archivos global 2 (GFS2) de Red Hat
Edición 7
Resumen
Introducción
1. Audiencia
- Procedimientos de administración de sistemas de linux, incluyendo la configuración del Kernel
- Instalación y configuración de redes de almacenaje compartido, tales como canales de fibra SAN
2. Documentación relacionada
- Guía de instalación — Proporciona información sobre la instalación de Red Hat Enterprise Linux 6.
- Guía de implementación — Proporciona información importante sobre la implementación, configuración y administración de Red Hat Enterprise Linux 6.
- Guía de administración de almacenamiento — Proporciona información para administrar efectivamente los dispositivos de almacenamiento y sistemas de archivos en Red Hat Enterprise Linux 6.
- Vista General de adiciones de Alta disponibilidad — Proporciona una visión general de alto nivel de las adiciones de Alta disponibilidad de Red Hat.
- Administración de clúster — Proporciona información sobre instalación, configuración y administración de adiciones de Alta disponibilidad.
- Administración del Gestor de volúmenes lógicos — Proporciona una descripción del Gestor de Volúmenes Lógicos (LVM) e incluye información sobre la ejecución de LVM en un entorno de clúster.
- DM Multipath — Proporciona información sobre el uso del Mapeador de dispositivo Multipath de Red Hat Enterprise Linux.
- Administración del equilibrador de cargas — Proporciona información sobre configuración de sistemas de alto rendimiento y servicio con la adición de equilibrador de cargas, un conjunto de componentes de software integrados que proporcionan Servidores Virtuales de Linux (LVS) para equilibrio de carga IP a travé de un conjunto de servidores reales.
- Notas de lanzamiento — Proporciona información sobre el lanzamiento actual de los productos de Red Hat.
3. ¡Necesitamos sus comentarios!
rh-gfs2(EN)-6 (2014-10-8T15:15)
Capítulo 1. Visión general de GFS2
Nota
Nota
fsck.gfs2
en un sistema de archivos muy grande puede tardar mucho y consumir mucha memoria. Además, en el evento de que un disco o subsistema de disco falle, el tiempo de recuperación está limitado por la velocidad de los medios de respaldo. Para obtener información sobre la cantidad de memoria que el comando fsck.gfs2
requiere, consulte la Sección 4.11, “Cómo reparar un sistema de archivos”.
clvmd
, el cual administra los volúmenes lógicos LVM en un clúster. El demonio hace posible el uso de LVM2 para administrar volúmenes lógicos en un clúster, lo que permite que todos los nodos del clúster compartan los volúmenes lógicos. Para obtener información sobre el administrador de volúmenes LVM, consulte Gestión del Administrador de volúmenes lógicos.
gfs2.ko
implementa el sistema de archivos GFS2 y se carga en los nodos de clúster GFS2.
Nota
1.1. Funcionalidades nuevas y cambiadas
1.1.1. Funcionalidades nuevas y cambiadas de Red Hat Enterprise Linux 6.0
- En el lanzamiento de Red Hat Enterprise Linux 6, Red Hat no soporta el uso de GFS2 como un sistema de archivos de un nodo único.
- En el lanzamiento de Red Hat Enterprise Linux 6, el comando
gfs2_convert
para actualizar de un sistema de archivos GFS a GFS2 ha sido mejorado. Para obtener más información sobre este comando, consulte Apéndice B, Cómo convertir el sistema de archivos de GFS a GFS2. - El lanzamiento de Red Hat Enterprise Linux 6 soporta las opciones de montaje
discard
,nodiscard
,barrier
,nobarrier
,quota_quantum
,statfs_quantum
, ystatfs_percent
. Para obtener más información sobre montaje de un sistema de archivos GFS2, consulte la Sección 4.2, “Cómo montar un sistema de archivos”. - La versión de Red Hat Enterprise Linux 6 de este documento contiene una nueva sección, la Sección 2.9, “Bloqueo de nodo GFS2”. Esta sección describe algunos de los aspectos internos del sistema de archivos GFS2.
1.1.2. Funcionalidades nuevas y cambiadas para Red Hat Enterprise Linux 6.1
- A partir del lanzamiento de Red Hat Enterprise Linux 6.1, GFS2 soporta los servicios estándar de cuotas de Linux. La administración de cuotas GFS2 se documenta en la Sección 4.5, “Administración de cuotas en GFS2”.En lanzamientos anteriores de Red Hat Enterprise Linux, GFS2 requería el comando
gfs2_quota
para administrar cuotas. La documentación paragfs2_quota
ahora se provee en el Apéndice A, Administración de cuotas GFS2 con el comandogfs2_quota
. - Ahora este documento contiene un nuevo capítulo, Capítulo 5, Diagnóstico y corrección de problemas con sistemas de archivos GFS2.
- Se han hecho correcciones técnicas menores y aclaraciones a lo largo del documento.
1.1.3. Funcionalidades nuevas y cambiadas para Red Hat Enterprise Linux 6.2
- A partir del lanzamiento de Red Hat Enterprise Linux 6.2, GFS2 soporta el comando
tunegfs2
, el cual remplaza algunas de las funcionalidades del comandogfs2_tool
. Para obtener más información, consulte la página de manualtunegfs2
.Las secciones a continuación han sido actualizadas para proporcionar procedimientos administrativos que no requieren el uso del comandogfs2_tool
:- La Sección 4.5.4, “Sincronización de cuotas con el comando
quotasync
” y la Sección A.3, “Sincronización de cuotas con el comandogfs2_quota
” ahora describen cómo cambiar el parámetroquota_quantum
de su valor predeterminado de 60 segundos mediante la opción de montajequota_quantum=
. - La Sección 4.10, “Cómo suspender la actividad en un sistema de archivos” ahora describe cómo suspender la actividad de escritura para una sistema de archivos mediante el comando
dmsetup
.suspend
- Este documento incluye el nuevo apéndice, Apéndice C, Puntos de trazado GFS2 y archivo glocks debugfs. Este apéndice describe la interfaz
debugfs
y los puntos de trazado de GFS2. Se dirige a usuarios avanzados que estén familiarizados con el interior del sistema de archivos y que deseen aprender más sobre el diseño de GFS2 y la depuración de problemas específicos de GFS2.
1.1.4. Funcionalidades nuevas y cambiadas para Red Hat Enterprise Linux 6.3
1.1.5. Funcionalidades nuevas y cambiadas para Red Hat Enterprise Linux 6.4
1.1.6. Funcionalidades nuevas y cambiadas para Red Hat Enterprise Linux 6.6
1.2. Antes de configurar GFS2
- Nodos GFS2
- Determine cuáles nodos en el clúster montarán el sistema de archivos GFS2.
- Número de sistemas de archivos
- Determine cuántos sistemas de archivos GFS2 deben ser creados inicialmente (más sistemas de archivos pueden ser añadidos posteriormente).
- Nombre del sistema de archivos
- Determine un nombre único para cada sistema de archivos. El nombre debe ser único para todos los sistemas de archivos
lock_dlm
en el clúster. Cada nombre de sistema de archivo se requiere en la forma de una variable de parámetro. Por ejemplo, este libro utiliza los nombres de archivosmydata1
ymydata2
en algunos procedimientos de ejemplo. - Diarios
- Determine el número de diarios para su sistema de archivos GFS2. Se requiere un diario por cada nodo que monte el sistema de archivos GFS2. GFS2 le permite añadir dinámicamente diarios en un punto posterior de que los servidores adicionales monten un sistema de archivos. Para obtener información sobre cómo añadir diarios al sistema de archivos GFS2, consulte la Sección 4.7, “Cómo añadir diarios a un sistema de archivos”.
- Particiones y dispositivos de almacenaje
- Determine los dispositivos de almacenaje y las particiones que serán usadas para crear volúmenes lógicos (a través de CLVM) en los sistemas de archivos.
Nota
1.3. Instalación de GFS2
gfs2-utils
para GFS2 y el paquete lvm2-cluster
para el Gestor de volumen lógico en clústerr (CLVM). Los paquetes lvm2-cluster
y gfs2-utils
son parte del canal ResilientStorage, el cual debe estar activado antes de instalar los paquetes.
yum install
para instalar los paquetes de software de alta disponibilidad de Red Hat:
# yum install rgmanager lvm2-cluster gfs2-utils
1.4. Diferencias entre GFS y GFS2
gfs2_convert
. Para obtener información sobre la herramienta gfs2_convert
, consulte Apéndice B, Cómo convertir el sistema de archivos de GFS a GFS2.
1.4.1. Nombres de los comandos de GFS2
Tabla 1.1. Comandos de GFS y GFS2
Comandos de GFS | Comandos de GFS2 | Descripción | ||||
---|---|---|---|---|---|---|
mount | mount | Monta un sistema de archivos. El sistema puede determinar si el sistema de archivos es GFS o GFS2. Para obtener información sobre las opciones de montaje de GFS2 vea la página de manual de gfs2_mount(8). | ||||
umount | umount | Desmonta un sistema de archivos. | ||||
|
| Revisa y repara un sistema de archivos sin montar. | ||||
gfs_grow | gfs2_grow | Expande un sistema de archivos montado. | ||||
gfs_jadd | gfs2_jadd | Añadir un diario a un sistema de archivos montado | ||||
|
| Crea un sistema de archivos en un dispositivo de almacenaje. | ||||
gfs_quota | gfs2_quota | Manejo de cuotas en un sistema de archivos montado. A partir del lanzamiento de Red Hat Enterprise Linux 6.1, GFS2 soporta los servicios estándar de cuotas de Linux. Para obtener más información sobre el manejo de cuotas en GFS2, consulte la Sección 4.5, “Administración de cuotas en GFS2”. | ||||
gfs_tool | tunegfs2
Parámetros de montaje
dmsetup suspend
| Configure, ajuste o reúna información sobre el sistema de archivos. El comando tunegfs2 tiene soporte a partir del lanzamiento de Red Hat Enterprise Linux 6.2. También está el comando gfs2_tool . | ||||
gfs_edit | gfs2_edit | Muestra, imprime o edita las estructuras internas de un sistema de archivos. El comando gfs2_edit puede ser usado por los sistemas de archivos GFS y GFS2. | ||||
gfs_tool setflag jdata/inherit_jdata | chattr +j (preferido) | Activa el diario en un archivo o directorio. | ||||
setfacl/getfacl | setfacl/getfacl | Establece u obtiene lista de control de acceso de archivo para un archivo o directorio. | ||||
setfattr/getfattr | setfattr/getfattr | Establece u obtiene atributos extendidos de un archivo. |
1.4.2. Diferencias adicionales entre GFS y GFS2
Nombre de rutas dependientes del contexto
bind
del comando mount
. Para obtener más información sobre montajes de enlaces y nombres de ruta dependiente del contexto, consulte la Sección 4.12, “Nombres de rutas dependientes del contexto y montajes enlazados”.
Módulo gfs2.ko
gfs.ko
. El de GFS2 es gfs2.ko
.
Cómo activar la activación de la cuota en GFS2
Diario de datos
chattr
para establecer y limpiar la opción j
en un archivo o directorio. Establecer la opción +j
en un archivo permite diario de datos en ese archivo. Establecer el indicador +j
en un directorio significa que "inherit jdata", lo que indica que todos los archivos y directorios creados posteriormente en ese directorio están en diario. El uso del comando chattr
es la forma preferida de activar y desactivar el diario de datos en un archivo.
Cómo añadir diarios dinámicamente
Parámetro atime_quantum eliminado
atime_quantum
, el cual puede ser utilizado por el sistema de archivos GFS para especificar la frecuencia de actualizaciones atime
. En su lugar, GFS2 soporta la opciones de montaje relatime
y noatime
. La opción de montaje relatime
se recomienda para lograr una conducta similar para establecer el parámetro atime_quantum
en GFS.
La opción data= del comando mount
data=ordered
o data=writeback
de mount
. Cuando se establece data=ordered
, los datos del usuario modificados por una transacción son volcados al disco antes de que la transacción sea enviada al disco. Esto evita que el usuario vea, después de una falla, bloques sin inicializar en un archivo. Cuando se establece data=writeback
, los datos del usuario son escritos en disco en cualquier momento después de ser ensuciado. Esto no ofrece las misma garantías que el modo ordered
, pero puede ser un poco más rápido en algunas cargas de trabajo. El modo predeterminado es ordered
.
El comando gfs2_tool
gfs2_tool
soporta una serie de opciones para GFS2 diferentes a las que el comando gfs_tool
soporta para GFS:
- El comando
gfs2_tool
soporta un parámetrojournals
que imprime información sobre los diarios configurados actualmente, incluyendo cuántos diarios contiene el sistema de archivos. - El comando
gfs2_tool
no soporta la opcióncounters
, la cual utiliza el comandogfs_tool
para mostrar estadísticas de GFS. - El comando
gfs2_tool
no soporta la opcióninherit_jdata
. Para marcar un directorio como "inherit jdata", puede establecer la opciónjdata
en el directorio o puede utilizar el comandochattr
para establecer la opción+j
en el directorio. El comandochattr
es el preferido para activar o desactivar el diario de datos en un archivo.
Nota
tunegfs2
, el cual remplaza algunas de las funcionalidades del comando gfs2_tool
. Para obtener más información, consulte la página de manual (8) tunegfs2
. Las funciones settune
y gettune
del comando gfs2_tool
han sido remplazadas por la opción de línea de comandos mount
, la cual permite establecerlas mediante el archivo fstab
cuando se requiera.
El comando gfs2_edit
gfs2_edit
soporta un conjunto de opciones para GFS2 diferente a las que el comando gfs_edit
soporta para GFS. Para obtener información sobre las opciones específicas que cada versión del comando soporta, consulte gfs2_edit
y las páginas de manual gfs_edit
.
1.4.3. Mejoras de rendimiento en GFS2
- Mejor rendimiento para uso pesado en un directorio único.
- Operaciones de sincronización de E/S más rápidas
- Lecturas de cache más rápidas (sin gasto de bloqueo)
- Aumento en la velocidad de E/S directa con archivos asignados con anterioridad (si el tamaño de E/S es razonablemente grande, tal como bloques de 4M)
- Más velocidad en las operaciones de E/S en general
- Una ejecución más ágil del comando
df
, debido a llamadas más rápidas destatfs
. - El modo
atime
para reducir el número de operaciones de escritura E/S generadas poratime
cuando se compara con GFS.
- GFS2 es parte del kernel de la línea de desarrollo principal (integrado en 2.6.19).
- GFS2 soporta las siguientes funcionalidades.
- atributos de archivo extendidos (
xattr
) - Parámetros de atributos
lsattr
() ychattr
() a través de las llamadasioctl
() estándar - marcas de tiempo en nano segundos
- GFS2 utiliza menos memoria del kernel
- GFS2 no requiere números de generación de metadatos.La asignación de los metadatos de GFS2 no requiere lecturas. Las copias de bloques de metadatos en varios diarios se administran mediante la remoción de bloques de un diario antes de liberar el cerrojo.
- GFS2 incluye un administrador de registro más simple que no tiene conocimiento sobre los cambios de cuotas o inodos sin enlazar.
- Los comandos
gfs2_grow
ygfs2_jadd
utilizan bloqueo para evitar la ejecución simultánea de varias instancias. - El código ACL ha sido simplificado para llamadas como
creat
() ymkdir
(). - Inodos sin enlace, cambios de cuota y cambios de
statfs
se recobran sin remontar el diario.
Capítulo 2. Configuración de GFS2 consideraciones operacionales
Importante
2.1. Consideraciones de formateo
2.1.1. Tamaño del sistema de archivos: Entre más pequeño, mejor
- Se requiere menos tiempo para hacer la copia de seguridad de cada sistema de archivo.
- Se requiere menos tiempo para chequear el sistema de archivos con el comando
fsck.gfs2
. - Se requiere menos memoria para chequear el sistema de archivos con el comando
fsck.gfs2
.
2.1.2. Tamaño de bloque: El predeterminado es el preferido (4K)
mkfs.gfs2
intenta estimar un tamaño de bloque óptimo basado en la topología del dispositivo. En general, los bloques de 4K se prefieren porque 4K es el tamaño de página (memoria) predeterminada para Linux. A diferencia de otros sistemas de archivos, GFS2 realiza la mayoría de sus operaciones mediante búferes de kernel de 4k. Si su tamaño de bloque es de 4K, el kernel tiene menos trabajo para manipular los búferes.
2.1.3. Número de diarios: uno por cada nodo que monte
gfs2_jadd
. Con GFS2, usted puede añadir diarios sobre la marcha.
2.1.4. Tamaño de diario: El predeterminado suele ser óptimo (128MB)
mkfs.gfs2
para crear un sistema de archivos GFS2, especifique el tamaño de los diarios. Si no lo desea, se predeterminará a 128MB, el cual deberá ser óptimo para la mayoría de las aplicaciones.
2.1.5. Tamaño y número de grupos de recursos
mkfs.gfs2
, divide el almacenaje en dos pedazos uniformes conocidos como grupos de recursos. Intenta estimar un tamaño de grupo de recursos óptimo (que va de 32 MB a 2 GB). Puede sobrescribir el predeterminado con la opción -r
del comando mkfs.gfs2
.
- Primero, cuando un grupo de recursos está completamente lleno, este recuerda y trata de evitar chequearlo en futuras asignaciones (antes de que un bloque se libere de él). Si usted nunca borra archivos, la competencia será menos grave. No obstante, si su aplicación está constantemente borrando bloques y asignando nuevos bloques en un sistema de archivos que está en su mayoría lleno, la competencia será muy grande y esto tendrá un grave impacto de rendimiento.
- Segundo, cuando se añaden nuevos bloques a un archivo existente, GFS2 intentará agrupar los nuevos bloques en el mismo grupo de recursos que el archivo. Esto se realiza para incrementar el rendimiento: en un disco giratorio, las búsquedas toman menos tiempo cuando están físicamente juntos.
2.2. Fragmentación de sistema de archivos
2.3. Problemas de asignación de bloques
2.3.1. Abandonar espacio libre en el sistema de archivos
2.3.2. Procure que cada nodo asigne sus propios archivos
2.3.3. Preasignar, si es posible
fallocate
(1), la cual puede usarse para preasignar bloques de datos.
2.4. Consideraciones de clúster
2.5. Consideraciones de uso
2.5.1. Opciones de montaje: noatime y nodiratime
noatime
y nodiratime
. Esto permite a GFS2 emplear menos tiempo en actualizar nodos de disco para cada acceso.
2.5.2. Opciones de ajuste DLM: Aumento de tamaño de tablas DLM
echo 1024 > /sys/kernel/config/dlm/cluster/lkbtbl_size echo 1024 > /sys/kernel/config/dlm/cluster/rsbtbl_size echo 1024 > /sys/kernel/config/dlm/cluster/dirtbl_size
2.5.3. Opciones de ajuste VFS: Investigación y experimentación
sysctl
(8). Por ejemplo, se pueden ajustar los valores para dirty_background_ratio
y vfs_cache_pressure
según su situación. Para obtener los valores actuales, use los siguientes comandos:
sysctl -n vm.dirty_background_ratio sysctl -n vm.vfs_cache_pressure
sysctl -w vm.dirty_background_ratio=20 sysctl -w vm.vfs_cache_pressure=500
/etc/sysctl.conf
.
2.5.4. SELinux: Evitar SELinux en GFS2
2.5.5. Configuración de NFS en GFS2
Aviso
localflocks
. El efecto que se pretende es forzar a los cerrojos de POSIX de cada servidor para que sean locales: es decir no agrupados, independientes uno del otro. (Se presentan una serie de problemas si GFS2 intenta implementar cerrojos de POSIX desde NFS a través de los nodos de un clúster). Para las aplicaciones que se ejecutan en clientes NFS, los cerrojos POSIX localizados significan que dos clientes pueden tener simultáneamente el mismo cerrojo si dos clientes montan desde servidores diferentes. Si todos los clientes montan NFS desde un servidor, entonces desaparecerá el problema de que servidores independientes otorguen los mismos cerrojos por separado. Si no está seguro de montar su sistema de archivos con la opción localflocks
, no debería usarla; siempre es más seguro si los cerrojos operan en una base agrupada.
- Red Hat soporta únicamente las configuraciones de alta disponibilidad adicionales mediante NFSv3 con cerrojo en configuración activa/pasiva con las siguientes características:
- El Sistema de archivos de fondo es el sistema de archivos GFS2 que se ejecuta en un cluster de 2 a 16 nodos.
- Un servidor NFSv3 se define como un servicio que exporta simultáneamente todo el sistema de archivos GFS2 desde un nodo de cluster único.
- El servidor NFS puede conmutarse de un nodo de cluster a otro (configuración activa y pasiva).
- No se permite el acceso al sistema de archivos GFS2 excepto a través del servidor NFS. Esto incluye tanto el acceso del sistema de archivos local como el acceso a través de Samba o Samba en cluster.
- No hay soporte de cuota NFS en el sistema.
Esta configuración proporciona alta disponibilidad para el sistema de archivos y reduce el tiempo de inactividad porque un nodo fallido no resulta en el requerimiento para ejecutar el comandofsck
cuando falla el servidor NFS de un nodo a otro. - La opción de NFS
fsid=
es obligatoria para exportaciones NFS de GFS2. - Si se presentan problemas con su clúster (por ejemplo, el clúster no tiene cuórum y el cercado no es exitoso), los volúmenes lógicos en clúster y el sistema de archivos GFS2 se congelarán y no se podrá acceder hasta que el clúster tenga cuórum. Considere esta posibilidad al determinar si la solución de conmutación única tal como la definida en este procedimiento es la más apropiada para su sistema.
2.5.6. Archivo Samba (SMB o Windows) sirviendo en GFS2
2.6. Copias de seguridad de sistema de archivos
echo -n 3 > /proc/sys/vm/drop_caches
rsync
en directorios de nodos específicos.
-o lockproto=lock_nolock
ya que no estará en un clúster.
2.7. Consideraciones de hardware
- Use opciones de almacenaje de alta calidadGFS2 puede funcionar en opciones de almacenaje más baratas, tales como iSCSI o Canal de fibra por Ethernet (FCoE), pero obtendrá mejor rendimiento si compra almacenaje de alta calidad con mayor capacidad de cache. Red Hat realiza las pruebas de máxima calidad, sanidad y rendimiento en almacenamiento SAN con interconexión de Canal de fibra. Como regla general, siempre es mejor implementar algo que ya ha sido probado.
- Pruebe el equipo de red antes de la implementaciónUn equipo de mayor calidad y agilidad hará que las comunicaciones de clúster y GFS2 se ejecuten con mayor rapidez y confiabilidad. No siempre el hardware más costoso es el mejor. Algunos de los interruptores de red más costosos tienen problemas al pasar los paquetes multidifusión, los cuales sirven para pasar los cerrojos (flocks)
fcntl
, mientras que interruptores de red más baratos son algunas veces más rápidos y confiables. Es una buena práctica ensayar el equipo antes de implementarlo en una producción total.
2.8. Problemas de rendimiento: Revise el Portal del cliente de Red Hat
2.9. Bloqueo de nodo GFS2
write
).
Nota
- Un inodo se utiliza en modo de solo lectura a través de todos los nodos.
- Un inodo se escribe o modifica desde un solo nodo únicamente.
mmap
() de un archivo en GFS2 con una asignación de lectura/escritura, pero solamente lee desde él, solo cuenta como de lectura. En GFS, sin embargo, este archivo cuenta como de escritura, por lo tanto GFS2 es mucho más escalable con E/S de mmap
().
noatime
mount
, entonces las lecturas también resultarán en escrituras para actualizar las marcas de tiempo del archivo. Se recomienda que todos los usuarios de GFS2 monten con noatime
a menos que tengan un requerimiento específico para atime
.
2.9.1. Problemas con Bloqueo de Posix
- El uso de Flocks generará un procesamiento más rápido que el uso de cerrojos Posix.
- Los programas que usan cerrojos Posix en GFS2 deben evitar el uso de la función
GETLK
ya que en un entorno de clúster, el ID de proceso puede ser para un nodo diferente en el clúster.
2.9.2. Ajuste de rendimiento con GFS2
mbox
), o con un directorio para cada usuario que contenga un archivo para cada mensaje (maildir
). Cuando llegan solicitudes sobre IMAP, el mecanismo ideal es dar a cada usuario una afinidad a un nodo particular. De este modo sus solicitudes para ver y eliminar mensajes de correo electrónico tenderán a ser servidas desde otra memoria cache en ese nodo único. Obviamente, si ese nodo falla, la sesión se reiniciará en un nodo diferente.
imap
o smtp
.
echo -n 3 >/proc/sys/vm/drop_caches
2.9.3. Resolución de problemas de rendimiento de GFS2 con el volcado de cerrojo GFS2
debugfs
, el cual se encuentra en el siguiente nombre de ruta, suponiendo que debugfs
esta montado en /sys/kernel/debug/
:
/sys/kernel/debug/gfs2/fsname/glocks
debugfs
es usar el comando cat
para tomar una copia del contenido completo del archivo (podría tomarse bastante tiempo si tiene una gran cantidad de RAM y un montón de inodos en memoria) mientras la aplicación está teniendo problemas y luego mirar los datos resultantes en una fecha posterior.
Nota
debugfs
, una, unos segundos o incluso un minuto o dos después de la otra. Al comparar la información del portador en los dos trazados que se relacionan con el mismo número de glock, se sabe si la carga de trabajo está haciendo algún progreso o si se ha trancado (lo cual es siempre un error y debe reportarse inmediatamente al soporte técnico de Red Hat).
debugfs
que inician con H de 'holders' (portadores), representan solicitudes de cerrojo otorgadas o en espera de ser otorgadas. Los campos de indicadores en la línea de portadores f: muestra Which (cuál) : El indicador 'W' se refiere a la solicitud en espera, el indicador 'H' se refiere a la solicitud otorgada. Es probable que los glocks que tienen una gran cantidad de solicitudes en espera sean los que estén experimentando contención particular.
Tabla 2.1. Indicadores Glock
Indicador | Nombre | Significado |
---|---|---|
por | Bloqueo | Es válido cuando el indicador se establece a bloqueado e indica si la operación que ha sido solicitada desde el DLM puede bloquear. Este indicador es retirado para degradación y para los cerrojos 'try'. El propósito de este indicador es permitir reunir estadísticas de tiempo de respuesta independiente del tiempo tomado por otros nodos para degradar cerrojos. |
d | Pending demote | Una solicitud para degradar diferida o remota |
D | Demote | Una solicitud para degradar (local o remota) |
f | Log flush | El registro necesita ser enviado antes de liberar este Glock |
F | Frozen | Las respuestas de los nodos remotos se ignoran- la recuperación está en curso. Este indicador no se relaciona con la congelación del sistema de archivos, el cual usa un mecanismo diferente, pero se utiliza únicamente en recuperación. |
i | Invalidate in progress | En el curso de invalidar páginas en este Glock |
I | Initial | Establecer cuándo un bloqueo de DLM se asocia con este Glock |
l | Locked | El Glock está en el proceso de cambio de estado |
L | LRU | Se establece cuando el glock está en la lista LRU |
o | Objeto | Se establece cuando el glock se asocia con un objeto (es decir, un inodo para tipo de glocks 2 y grupo de recursos para tipo de glocks3 ) |
p | Demote in progress | El Glock está en el proceso de responder a una solicitud de degradación |
s | En cola | Se establece cuando un portador es puesto en cola para un glock y se retira cuando el glock se mantiene pero no quedan portadores remanentes. Se utiliza como parte de el algoritmo que calcula el mínimo de tiempo de retención para un glock. |
r | Reply pending | La respuesta recibida del nodo remoto está pendiente de procesamiento |
y | Dirty | Es necesario vaciar los datos al disco antes de lanzar este Glock |
Tabla 2.2. Indicadores de portador de Glock
Indicador | Nombre | Significado |
---|---|---|
a | Async | No espera ningún resultado de Glock (emitirá un resultado más adelante) |
A | Any | Se acepta cualquier modo de bloqueo compatible |
c | No cache | Cuando se desbloquea, degrada de inmediato el bloque DML |
e | No expire | Ignora las siguientes solicitudes de cancelación de bloqueo |
E | exact | Debe tener un modo de bloqueo exacto |
F | First | Cuando el portador es el primero en concedérsele este cerrojo |
H | Holder | Indica que se ha otorgado el cerrojo solicitado |
p | Priority | Pone a Holder a la cabeza de la cola |
t | Try | Un cerrojo de "ensayo" |
T | Try 1CB | Un cerrojo de "ensayo" que envía una llamada |
W | Wait | Establecer mientras espera que la solicitud se complete |
find -inum número
donde número es el número del inodo convertido desde el formato hex en el archivo glocks en decimales.
Nota
find
en un sistema de archivos cuando experimente una contención de cerrojo, muy probable que el problema empeore. Se recomienda parar la aplicación antes de ejecutar find
cuando esté buscando inodos enfrentados.
Tabla 2.3. Tipos de glock
Número | Tipo de cerrojo | Uso |
---|---|---|
1 | Trans | Cerrojo de transacción |
2 | Inodo | Metadatos y datos de inodos |
3 | Rgrp | Metadatos de grupo de recursos |
4 | Meta | El superbloque |
5 | Iopen | El último nodo que se detectó |
6 | Flock | flock (2) syscall |
8 | Cuota | Operaciones de cuota |
9 | Diario | Diario mutex |
gfs2_grow
para expandir el sistema de archivos.
Capítulo 3. Cómo iniciar
3.1. Tareas previas
- Asegúrese de observar las características clave de la configuración de los nodos de GFS2 (consulte la Sección 1.2, “Antes de configurar GFS2”).
- Asegúrese de que los relojes en los nodos de GFS2 estén sincronizados. Se recomienda usar el software de Protocolo de tiempo de red (NTP) distribuido con su Red Hat Enterprise Linux.
Nota
Los relojes del sistema en los nodos de GFS2 deben tener una diferencia de pocos minutos entre ellos para evitar actualizaciones innecesarias de marca de tiempo del inodo. La actualización innecesaria de marca de tiempo impacta de forma severa el rendimiento del clúster. - Para usar GFS2 en un entorno de agrupamiento, configure su sistema para usar un Volumen lógico en clúster (CLVM), un grupo de extensiones de agrupamiento para el Gestor de volumen lógico, LVM. Para usar CLVM, el software de Red Hat Cluster Suite, incluido el demonio
clvmd
deben estar en ejecución. Para obtener información sobre el uso de CLVM, consulte Administración del gestor de volumen lógico. Para obtener información sobre cómo instalar y administrar Red Hat Cluster Suite, consulte Administración de clúster.
3.2. Tareas de configuración inicial
- Configuración de volúmenes lógicos.
- Creación del sistema de archivos GFS2.
- Montaje del sistema de archivos.
- Con LVM, cree un volumen lógico para cada sistema de archivos GFS2 de Red Hat.
Nota
Puede usar los scripts eninit.d
incluidos con Red Hat Cluster Suite para automatizar la activación y desactivación de los volúmenes lógicos. Para obtener más información sobre los scriptsinit.d
, consulte Configuración y administración de Red Hat Cluster. - Cree un sistema de archivos GFS2 en los volúmenes lógicos creados en el paso 1. Escoja un nombre único para cada sistema de archivos. Para obtener más información sobre cómo crear sistemas de archivos GFS2, consulte la Sección 4.1, “Cómo crear un sistema de archivos”.Utilice cualquiera de los siguientes formatos para crear un sistema de archivos GFS2 en clúster:
mkfs.gfs2 -p lock_dlm -t
ClusterName:FSName
-jNumberJournals BlockDevice
mkfs -t gfs2 -p lock_dlm -t
LockTableName
-jNumberJournals BlockDevice
Para obtener más información sobre cómo crear un sistema de archivos GFS2, consulte la Sección 4.1, “Cómo crear un sistema de archivos”. - En cada nodo, monte un sistema de archivos GFS2. Para obtener más información sobre cómo montar un sistema de archivos GFS2, consulte la Sección 4.2, “Cómo montar un sistema de archivos”.Uso del comando:
mount BlockDevice MountPoint
mount -o acl BlockDevice MountPoint
La opción de montaje
permite la manipulación de las ACL en los archivos. Si un sistema de archivos es montado sin la opción-o
acl
, los usuarios pueden ver las ACL (con-o
aclgetfacl
), pero no las pueden establecer (consetfacl
).Nota
Use los scriptsinit.d
incluidos en la adición de Alta disponibilidad de Red Hat para automatizar el montaje y desmontaje de sistemas de archivos GFS2.
Capítulo 4. Administración de GFS2
4.1. Cómo crear un sistema de archivos
mkfs.gfs2
. También se puede utilizar el comando mkfs
con la opción -t gfs2
. Un sistema de archivos se crea en un volumen LVM activado. La siguiente información se requiere para ejecutar el comando mkfs.gfs2
:
- El nombre del módulo/protocolo de cerrojo (el protocolo de cerrojo para un clúster es
lock_dlm
) - Nombre de clúster (cuando se ejecuta como parte de una configuración de clúster)
- Número de diarios (un diario es requerido por cada nodo que monte el sistema de archivos)
mkfs.gfs2
o mkfs
con el parámetro -t
especificando un sistema de archivos de tipo gfs2
, seguido de las opciones de sistema de archivos gfs2.
Nota
mkfs.gfs2
, no podrá disminuir el tamaño del sistema de archivos. Sin embargo, puede aumentar el tamaño de un sistema de archivos existente con el comando gfs2_grow
, tal como se describe en la Sección 4.6, “Cómo expandir un sistema de archivos”.
Uso
mkfs.gfs2 -pLockProtoName
-tLockTableName
-jNumberJournals BlockDevice
mkfs -t gfs2 -pLockProtoName
-tLockTableName
-jNumberJournals BlockDevice
Nota
mkfs.gfs2 -pLockProtoName
-jNumberJournals BlockDevice
mkfs -t gfs2 -pLockProtoName
-jNumberJournals BlockDevice
Aviso
LockProtoName
y LockTableName
. El uso incorrecto de los parámetros LockProtoName
y LockTableName
puede dañar el sistema de archivos o el espacio de cerrojos.
LockProtoName
- Especifica el nombre del protocolo de cerrojo a usar. El protocolo de cerrojo para un clúster es
lock_dlm
. LockTableName
- Este parámetro se especifica para el sistema de archivos GFS2 en una configuración de clúster. Tiene dos partes separadas por dos puntos (sin espacios) así:
clústerName:FSName
ClusterName
, el nombre del clúster para el cual el sistema de archivos GFS2 se ha creado.FSName
es el nombre del sistema de archivos y puede tener entre 1 y 16 caracteres. El nombre debe ser único para todos los sistemas de archivoslock_dlm
en el clúster y para todos los sistemas de archivos (lock_dlm
ylock_nolock
) en cada nodo local.
Number
- Especifica el número de diarios que serán creados por el comando
mkfs.gfs2
. Se requiere un diario por cada nodo que monta el sistema de archivos. Para sistemas de archivos GFS2, se pueden añadir más diarios posteriormente sin necesidad de expandir el sistema de archivos, así como se describe en la Sección 4.7, “Cómo añadir diarios a un sistema de archivos”. BlockDevice
- Especifica un volumen lógico o físico.
Ejemplos
lock_dlm
es el protocolo de cerrojo que utiliza el sistema de archivos, ya que es un sistema de archivos en clúster. El nombre de clúster es alpha
y el nombre del sistema de archivos es mydata1
. El sistema de archivos contiene ocho diarios y es creado en /dev/vg01/lvol0
.
mkfs.gfs2 -p lock_dlm -t alpha:mydata1 -j 8 /dev/vg01/lvol0
mkfs -t gfs2 -p lock_dlm -t alpha:mydata1 -j 8 /dev/vg01/lvol0
lock_dlm
, el cual se puede utilizar en el clúster alpha
. El nombre del sistema de archivos es mydata2
. El sistema de archivos contiene ocho diarios y se crea en /dev/vg01/lvol1
.
mkfs.gfs2 -p lock_dlm -t alpha:mydata2 -j 8 /dev/vg01/lvol1
mkfs -t gfs2 -p lock_dlm -t alpha:mydata2 -j 8 /dev/vg01/lvol1
Opciones completas
mkfs.gfs2
” describe las opciones de comando mkfs.gfs2
(indicadores y parámetros).
Tabla 4.1. Opciones del comando: mkfs.gfs2
Opción | Parámetro | Descripción | |||||||
---|---|---|---|---|---|---|---|---|---|
-c | Megabytes | Establece el tamaño inicial de cada archivo de cambio de cuota del diario en Megabytes . | |||||||
-D | Activa los mensajes de salida de depurado. | ||||||||
-h | Ayuda. Muestra las opciones disponibles. | ||||||||
-J | MegaBytes | Especifica el tamaño del diario en megabytes. El tamaño predeterminado es 128 megabytes. El tamaño mínimo es 8 megabytes. Los diarios grandes mejoran el rendimiento pero utilizan más memoria que los diarios pequeños. | |||||||
-j | Number | Especifica el número de diarios que serán creados por el comando mkfs.gfs2 . Un diario es requerido por cada nodo que monta el sistema de archivos. Si esta opción no se especifica, un diario será creado. En GFS2 se pueden crear diarios adicionales posteriormente sin necesidad de expandir el sistema de archivos. | |||||||
-O | Previene que el comando mkfs.gfs2 solicite la confirmación antes de escribir el sistema de archivos. | ||||||||
-p | LockProtoName |
| |||||||
-q | En silencio. No muestra mensajes de salida. | ||||||||
-r | MegaBytes | Especifica el tamaño de los grupos de recursos en megabytes. El tamaño mínimo del grupo de recursos es 32 MB. El tamaño máximo es 2048 MB. Un grupo de recursos grande puede aumentar el rendimiento en sistemas de archivos muy grandes. Si no se especifica, mkfs.gfs2 escoge el tamaño del grupo de recursos dependiendo del tamaño del sistema de archivos: el tamaño promedio del sistema de archivos tendrá grupos de recursos de 256 MB y sistemas de archivos más grandes tendrán grupos de recursos (RG) más grandes para mejorar el rendimiento. | |||||||
-t | LockTableName |
| |||||||
-u | MegaBytes | Especifica el tamaño inicial de cada archivo de etiquetas sin enlazar de diario. | |||||||
-V | Muestra la información de la versión del comando. |
4.2. Cómo montar un sistema de archivos
Nota
cman
) no ha sido iniciado, produce el siguiente mensaje de error:
[root@gfs-a24c-01 ~]# mount -t gfs2 -o noatime /dev/mapper/mpathap1 /mnt
gfs_controld join connect error: Connection refused
error mounting lockproto lock_dlm
-o acl
. Si un sistema de archivos es montado sin la opción -o acl
, los usuarios pueden ver las ACL (con getfacl
) pero no pueden establecerlas (con setfacl
).
Uso
mount BlockDevice MountPoint
mount -o acl BlockDevice MountPoint
-o acl
- Opciones específicas de GFS2 que permiten la manipulación de las ACL de archivos.
BlockDevice
- Especifica los dispositivos de bloque en donde residen los sistemas de archivo GFS2.
MountPoint
- Especifica el directorio en donde debe montarse el sistema de archivos GFS2.
Ejemplo
/dev/vg01/lvol0
es montado en el directorio /mygfs2
.
mount /dev/vg01/lvol0 /mygfs2
Uso completo
mountBlockDevice MountPoint
-ooption
-o opción
consta de opciones específicas de GFS2 (consulte la Tabla 4.2, “Opciones de montaje específicas de GFS2”) u opciones estándar aceptables de mount -o
de Linux o una combinación de ambas. Varios parámetros de option
están separados por una coma y sin espacios.
Nota
mount
es un comando del sistema Linux. Además de poder usar las opciones específicas de GFS2 descritas en esta sección, puede utilizar otras opciones estándar del comando mount
(por ejemplo -r
). Para obtener información sobre otras opciones de comando mount
de Linux, consulte la página de manual (man) de mount
.
-o option
que pueden ser pasados a GFS2 en el momento de montaje.
Nota
Tabla 4.2. Opciones de montaje específicas de GFS2
Opción | Descripción | ||
---|---|---|---|
acl | Permite la manipulación de las ACL de archivos. Si un sistema de archivos se monta sin la opción de montaje acl , los usuarios pueden ver las ACL (con getfacl ) pero no pueden establecerlas (con setfacl ). | ||
data=[ordered|writeback] | Cuando se establece data=ordered , los datos de usuario modificados en una transacción se volcan al disco antes de que la transacción sea enviada al disco. Esto debe evitar que el usuario vea bloques sin inicializar en un archivo después de una falla. Cuando se establece el modo data=writeback , los datos de usuario se escriben al disco en cualquier momento después de que es ensuciado; este modo no ofrece las mismas garantías de consistencia que el modo ordered , pero debe ser un poco más rápido en algunas cargas de trabajo. El valor predeterminado es el modo ordered . | ||
| Hace que GFS2 trate al sistema de archivos como un sistema de archivos multihost. Cuando se utiliza lock_nolock automáticamente se activa el indicador localflocks . | ||
| Le avisa a GFS2 que debe dejar a VFS (Virtual File System) realizar todos los llamados flock y fcntl. La opción localflocks es activada automáticamente por lock_nolock . | ||
lockproto= LockModuleName | Le permite al usuario especificar el protocolo de cerrojo a utilizar con el sistema de archivos. Si no se especifica LockModuleName , el nombre del protocolo de cerrojo se lee desde el superbloque del sistema de archivos. | ||
locktable= LockTableName | Le permite al usuario especificar la tabla de bloqueo a utilizar con el sistema de archivos. | ||
quota=[off/account/on] | Activa o desactiva las cuotas del sistema de archivos. Al establecer las cuotas para que estén en el estado account causa que las estadísticas de uso por UID/GID sean correctamente mantenidas por el sistema de archivos; los valores límite y de advertencia son ignorados. El valor predeterminado es off . | ||
errors=panic|withdraw | Cuando se especifica errors=panic , los errores de sistema causarán pánico de kernel. La conducta predeterminada, que es igual a especificar errors=withdraw , es para que el sistema se retire del sistema de archivos y lo convierta en inaccesible hasta el próximo reinicio; en algunos casos el sistema puede permanecer en ejecución. Para obtener información sobre la función de retiro de GFS2, consulte la Sección 4.14, “La función de retiro de GFS2”. | ||
discard/nodiscard | Hace que GFS2 genere solicitudes de E/S de "descarte" para bloques que han sido liberados. Estos bloques pueden ser utilizados por hardware apropiado para implementar esquemas de aprovisionamiento fino y similares. | ||
barrier/nobarrier | Hace que GFS2 envíe barreras de E/S al vaciar el diario. El valor predeterminado es encendido . Esta opción automáticamente pasa a apagado si el dispositivo no soporta barreras de E/S. Se recomienda el uso de barreras de E/S con GFS2 en todo momento a menos que el dispositivo de bloque esté diseñado para que no pierda su contenido de escritura en cache (por ejemplo, si no es un UPS o si no tiene una memoria cache de escritura). | ||
quota_quantum=secs | Establece el número de segundos para que se pueda establecer un cambio en la información de cuota en un nodo antes de que se escriba en el archivo de cuotas. Esa es la forma preferida de establecer este parámetro. El valor es un número entero de segundos mayor que cero. El valor predeterminado es 60 segundos. Configuraciones más cortas dan como resultado actualizaciones más rápidas de la información de cuota perezosa y es menos probable que alguien supere a su cuota. Configuraciones más prolongadas crean operaciones de sistemas de archivos que implican cuotas más rápidas y eficientes. | ||
statfs_quantum=secs | Establecer statfs_quantum a 0 es la forma preferida de establecer la versión lenta de statfs . El valor predeterminado es 30 segundos que establece el tiempo máximo antes de que los cambios de statfs se sincronicen con el archivo maestro de statfs . Esto puede ajustarse para permitir valores statfs más rápidos y menos exactos o valores más lentos y menos exactos. Cuando esta opción se establece a 0, statfs siempre reportará los valores verdaderos. | ||
statfs_percent=valor | Proporciona un vínculo en el cambio del porcentaje máximo en la información de statfs en la base local antes de que se vuelva a sincronizar al archivo maestro de statfs , incluso si el tiempo no ha expirado. Si la configuración de statfs_quantum es 0, entonces la configuración se ignora. |
4.3. Cómo desmontar un sistema de archivos
umount
.
Nota
umount
es un comando del sistema Linux. Se puede encontrar información sobre este comando en las páginas de manual (man) de umount
.
Uso
umount MountPoint
MountPoint
- Especifica el directorio en donde el sistema de archivos GFS2 está montado actualmente.
4.4. Consideraciones especiales en el montaje de los sistemas de archivos GFS2
fstab
, no será reconocido por el sistema cuando el sistema de archivos sea desmontado en el momento de apagado del sistema. Como resultado, el script GFS2 no desmontará el sistema de archivos GFS2. Después de que el script de apagado de GFS2 se ejecute, el proceso estándar de apagado mata todos los procesos del usuario restantes, incluida la infraestructura de clúster, e intenta desmontar el sistema de archivos. Este desmontaje fallará sin la infraestructura de clúster y el sistema se colgará.
- Use siempre una entrada en el archivo
fstab
para montar el sistema de archivos GFS2. - Si el sistema de archivos GFS2 ha sido montado en forma manual con el comando
mount
, asegúrese de desmontar el sistema de archivos con el comandoumount
antes de reiniciar o apagar el sistema.
4.5. Administración de cuotas en GFS2
quota=on
o quota=account
guarda el registro del espacio utilizado por cada usuario y grupo aunque no hay límites establecidos. GFS2 actualiza la información de la cuota mediante transacciones para que en caso de una falla del sistema, los usos de cuotas no se tengan que reconstruir.
Nota
gfs2_quota
para administrar cuotas. Si desea obtener más información sobre el uso del comando gfs2_quota
, consulte la Apéndice A, Administración de cuotas GFS2 con el comando gfs2_quota
.
4.5.1. Configuración de cuotas de disco
- Establezca las cuotas en modo impositivo o de contabilidad.
- Inicie el archivo de base de datos de cuotas con información de uso de bloques actual.
- Asigne políticas de cuotas. (En modo de contabilidad, estas políticas no se aplican.)
4.5.1.1. Cómo establecer cuotas en modo impositivo o de contabilidad
quota=on
especificada.
quota=account
especificada.
Uso
quota=on
especificada.
mount -o quota=on BlockDevice MountPoint
quota=account
especificada.
mount -o quota=account BlockDevice MountPoint
quota=off
especificada. Este es el valor predeterminado.
mount -o quota=off BlockDevice MountPoint
quota={on|off|account}
on
- Especifica que las cuotas se activan o desactivan cuando se monta un sistema de archivos.off
- Especifica que las cuotas se desactivan cuando se monta el sistema de archivos.account
- Especifica que el uso de estadísticas de usuario y grupo es mantenido por el sistema de archivos, a pesar de que los límites de cuotas no están establecidos.BlockDevice
- Especifica los dispositivos de bloque en donde residen los sistemas de archivo GFS2.
MountPoint
- Especifica el directorio en donde debe montarse el sistema de archivos GFS2.
Ejemplos
/dev/vg01/lvol0
está montado en el directorio /mygfs2
con cuotas activas.
mount -o quota=on /dev/vg01/lvol0 /mygfs2
/dev/vg01/lvol0
está montado en el directorio /mygfs2
con la contabilidad de cuotas activa mantenidas, pero no se imponen.
mount -o quota=account /dev/vg01/lvol0 /mygfs2
4.5.1.2. Cómo crear archivos de base de datos de cuotas
quotacheck
.
quotacheck
examina los sistemas de archivos con cuotas activadas y genera una tabla del uso actual de disco por sistema de archivos. La tabla se utiliza para actualizar la copia del sistema operativo de uso de disco. Además, los archivos de cuotas de discos del sistema de archivos son actualizados.
-u
y -g
del comando quotacheck
; ambas opciones deben especificarse para que las cuotas de usuario y grupo se inicien. Por ejemplo, si las cuotas están habilitadas para el sistema de archivos /home
, cree los archivos en el directorio /home
:
quotacheck -ug /home
4.5.1.3. Cómo asignar cuotas por usuario
edquota
. Observe que si ha montado el sistema de archivos en modo de contabilidad (con la opción quota=account
especificada), las cuotas no se aplican.
edquota nombre_de_usuario
/etc/fstab
para la partición /home
(/dev/VolGroup00/LogVol02
en el siguiente ejemplo) y ejecuta el comando edquota testuser
, en el editor configurado como el predeterminado para el sistema, se muestra lo siguiente:
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 0 0
Nota
EDITOR
es utilizado por edquota
. Para cambiar el editor, establezca la variable de entorno EDITOR
en su archivo ~/.bash_profile
para la ruta completa del editor de su escogencia.
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 500000 550000
quota testuser
4.5.1.4. Cómo asignar cuotas por grupo
account=on
especificada), las cuotas no se aplican.
devel
(el grupo debe existir antes de establecer la cuota de grupos), use el siguiente comando:
edquota -g devel
Disk quotas for group devel (gid 505): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440400 0 0
quota -g devel
4.5.2. Cómo administrar cuotas de disco
repquota
. Por ejemplo, el comando repquota /home
produce esta salida:
*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol02 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 36 0 0 4 0 0 kristin -- 540 0 0 125 0 0 testuser -- 440400 500000 550000 37418 0 0
-a
) , use el comando:
repquota -a
--
que se muestra después de cada usuario es una forma rápida de determinar si los límites de bloques se han excedido. Si un límite blando de bloque se excede, aparecerá en la salida un +
en lugar del primer -
. El segundo -
indica el límite de inodo, pero los sistemas de archivos GFS2 no soportan límites de inodo, por lo tanto ese caracter permanecerá como -
. Los sistemas de archivos GFS2 no soportan un periodo de gracia, por lo tanto la columna grace
permanecerá en blanco.
repquota
no recibe soporte en NFS, sea cual fuere el sistema de archivos subyacente.
4.5.3. Cómo mantener cuotas exactas
quotacheck
para crear, revisar y reparar los archivos de cuotas. Además, ejecute quotacheck
si considera que sus archivos de cuotas no son exactos, como puede ocurrir cuando el sistema de archivos no se monta correctamente después de un daño del sistema.
quotacheck
, consulte la página de manual quotacheck
.
Nota
quotacheck
cuando el sistema de archivos está relativamente inactivo en todos los nodos porque la actividad de discos puede afectar los valores de cuotas computados.
4.5.4. Sincronización de cuotas con el comando quotasync
quota_quantum
. Puede cambiarlo de su valor predeterminado de 60 mediante la opción de montaje quota_quantum=
, como se describe en la Tabla 4.2, “Opciones de montaje específicas de GFS2”. El parámetro quota_quantum
debe establecerse en cada nodo y cada vez que se monte el archivo. Los cambios al parámetro quota_quantum
no persisten a través de desmontajes. Debe actualizar el valor quota_quantum
con el comando mount -o remount
.
quotasync
para sincronizar la información de cuotas desde un nodo al archivo de cuotas en disco entre las actualizaciones automáticas realizadas por GFS2.
Uso
quotasync [-ug] -a|mntpnt
...
u
- Sincroniza los archivos de cuotas de usuario.
g
- Sincroniza los archivos de cuotas de grupos
a
- Sincroniza todos los sistemas de archivos que actualmente tienen cuotas habilitadas y soporte de sincronización. Cuando -a está ausente, debe especificarse un punto de montaje de sistema de archivos.
mntpnt
- Especifica el sistema de archivos GFS2 en el cual se aplicará la acción.
mount -o quota_quantum=secs,remount BlockDevice MountPoint
MountPoint
- Especifica el sistema de archivos GFS2 en el cual se aplicará la acción.
secs
- Especifica el nuevo tiempo de sincronización del archivo de cuota por GFS2. Valores inferiores pueden incrementar los conflictos y reducir el rendimiento.
Ejemplos
/mnt/mygfs2
.
# quotasync -ug /mnt/mygfs2
/mnt/mygfs2
al volver a montar ese sistema de archivos en un volumen lógico /dev/volgroup/logical_volume
.
# mount -o quota_quantum=3600,remount /dev/volgroup/logical_volume /mnt/mygfs2
4.6. Cómo expandir un sistema de archivos
gfs2_grow
sirve para expandir un sistema de archivos GFS2 después de que el dispositivo donde el sistema de archivos reside ha sido expandido. Al ejecutar gfs2_grow
en un sistema de archivos GFS2, se llena todo el espacio libre entre el final actual del sistema de archivos y el final del dispositivo, con una extensión recién inicializada del sistema de archivos GFS2. Cuando se completa esta operación, el índice de recursos para el sistema de archivos se actualiza. Todos los nodos en el clúster pueden utilizar el espacio de almacenamiento adicional que ha sido añadido.
gfs2_grow
debe ser ejecutado en un sistema de archivos montado, pero solo debe ser ejecutado en un nodo en el clúster. Todos los otros nodos verán la expansión y automáticamente empezarán a utilizar el nuevo espacio.
Nota
mkfs.gfs2
, no podrá disminuir el tamaño del sistema de archivos.
Uso
gfs2_grow MountPoint
MountPoint
- Especifica el sistema de archivos GFS2 en el cual se aplicará la acción.
Comentarios
gfs2_grow
:
- Haga una copia de seguridad de los datos importantes en el sistema de archivos.
- Con el comando
df
, determine el volumen que está siendo usado por el sistema de archivos que va a ser expandido.MountPoint
- Expanda el volumen del clúster subyacente con LVM. Para obtener más información sobre cómo administrar volúmenes LVM, vea Administración del gestor de volumen lógico.
gfs2_grow
, ejecute df
para verificar si el nuevo espacio está disponible en el sistema de archivos.
Ejemplos
/mygfs2fs
es expandido.
[root@dash-01 ~]# gfs2_grow /mygfs2fs
FS: Mount Point: /mygfs2fs
FS: Device: /dev/mapper/gfs2testvg-gfs2testlv
FS: Size: 524288 (0x80000)
FS: RG size: 65533 (0xfffd)
DEV: Size: 655360 (0xa0000)
The file system grew by 512MB.
gfs2_grow complete.
Uso completo
gfs2_grow [Options
] {MountPoint
|Device
} [MountPoint
|Device
]
MountPoint
- Especifica el directorio en donde el sistema de archivos GFS2 está montado.
Device
- Especifica el nodo del dispositivo del sistema de archivos.
Tabla 4.3. Opciones específicas de GFS2 disponibles mientras se expande un sistema de archivos
Opción | Descripción |
---|---|
-h | Ayuda. Muestra un mensaje de uso corto. |
-q | Silencioso. Baja el nivel de verbosidad. |
-r MegaBytes | Especifica el tamaño del nuevo grupo de recursos. El tamaño predeterminado es 256MB. |
-T | Test. Hace todos los cálculos, pero no escribe ningún dato al disco y no expande el sistema de archivos. |
-V | Muestra la información de la versión del comando. |
4.7. Cómo añadir diarios a un sistema de archivos
gfs2_jadd
se utiliza para añadir diarios al sistema de archivos GFS2. Puede añadir diarios al sistema de archivos GFS2 de forma dinámica en cualquier momento, sin necesidad de expandir el volumen lógico subyacente. El comando gfs2_jadd
debe ser ejecutado en sistemas de archivos montados, pero debe ejecutarse en un solo nodo del clúster. Los demás nodos notarán que la expansión ha ocurrido.
Nota
gfs2_jadd
fallará, incluso si el volumen lógico que contiene el sistema de archivos ha sido extendido y es más grande que el sistema de archivos. Esto se debe a que en un sistema de archivos GFS2, los diarios son archivos plenos y no metadatos incorporados, por lo tanto, la sola extensión del volumen lógico subyacente no proporcionará espacio para los diarios.
journals
de gfs2_tool
para saber cuántos diarios tiene actualmente el sistema de archivos GFS2. El siguiente ejemplo muestra el número y el tamaño de los diarios en el sistema de archivos montado en /mnt/gfs2
.
[root@roth-01 ../cluster/gfs2]# gfs2_tool journals /mnt/gfs2
journal2 - 128MB
journal1 - 128MB
journal0 - 128MB
3 journal(s) found.
Uso
gfs2_jadd -j Number MountPoint
Number
- Especifica el número de diarios a añadir.
MountPoint
- Especifica el directorio en donde el sistema de archivos GFS2 está montado.
Ejemplos
/mygfs2
gfs2_jadd -j1 /mygfs2
/mygfs2
gfs2_jadd -j2 /mygfs2
Uso completo
gfs2_jadd [Options
] {MountPoint
|Device
} [MountPoint
|Device
]
MountPoint
- Especifica el directorio en donde el sistema de archivos GFS2 está montado.
Device
- Especifica el nodo del dispositivo del sistema de archivos.
Tabla 4.4. Opciones específicas de GFS2 disponibles al añadir diarios
Opción | Parámetro | Descripción |
---|---|---|
-h | Ayuda. Muestra un mensaje corto sobre el uso del comando. | |
-J | MegaBytes | Especifica el tamaño del nuevo diario en megabytes. El tamaño predeterminado es 128 MB. El tamaño mínimo permitido es de 32 MB. Para añadir diarios de tamaños diferentes al sistema de archivos, el comando gfs2_jadd debe ser ejecutado por cada tamaño diferente de diario. El tamaño especificado se redondea a la cifra inferior para que sea un múltiplo del tamaño de segmentos de diario que fue especificado cuando el sistema de archivos fue creado. |
-j | Number | Especifica el número de diarios nuevos que serán añadidos con el comando gfs2_jadd . El valor predeterminado es 1. |
-q | Silencioso. Baja el nivel de verbosidad. | |
-V | Muestra la información de la versión del comando. |
4.8. Diario de datos
fsync()
en un archivo, hace que los datos del archivo se escriban al disco de forma inmediata. La llamada retorna cuando el disco informa que todos los datos han sido escritos de forma exitosa.
fsync()
reducido, para archivos muy pequeños, porque los datos del archivo se escriben al diario además de los metadatos. Esta ventaja se reduce rápidamente cuando el tamaño del archivo aumenta. La escritura a un medio y a archivos más grandes será mucho más lenta con diarios de datos encendidos.
fsync()
para sincronizar los datos de archivo pueden tener un rendimiento mejorado con el uso de diarios de datos. Los diarios de datos pueden activarse automáticamente para cualquier archivo GFS2 creado en un directorio con la opción correcta (y todos sus subdirectorios). Los archivos existentes de longitud cero pueden también tener diarios de datos encendidos o apagados.
chattr
.
/mnt/gfs2/gfs2_dir/newfile
y luego verifican si el indicador se ha establecido correctamente.
[root@roth-01 ~]#chattr +j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
/mnt/gfs2/gfs2_dir/newfile
y luego verifican si el indicador se ha establecido correctamente.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
------------- /mnt/gfs2/gfs2_dir/newfile
chattr
para establecer el indicador j
en un directorio. Cuando se establece este indicador para un directorio, todos los archivos y directorios creados posteriormente en ese directorio son puestos en el diario. La siguiente serie de comandos establece el indicador j
en el directorio gfs2_dir
, luego verifica si el indicador se ha establecido correctamente. Después de esto, los comandos crean un archivo nuevo llamado newfile
en el directorio /mnt/gfs2/gfs2_dir
y verifican si el indicador j
ha sido establecido para el archivo. Debido a que el indicador j
se establece para el directorio, newfile
también deberá tener activado el diario.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir
[root@roth-01 ~]#lsattr /mnt/gfs2
---------j--- /mnt/gfs2/gfs2_dir [root@roth-01 ~]#touch /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
4.9. Cómo configurar las actualizaciones atime
ctime
— La última vez en que el estado del inodo cambiómtime
— La última vez en que los datos del archivo (o directorio) fueron modificadosatime
— La última vez en que los datos del archivo (o directorio) fueron accedidos
atime
están activadas como lo están en GFS2 y otros sistemas de archivos de Linux, cada vez que el archivo es leído, su inodo necesita ser actualizado.
atime
, estas actualizaciones requieren una cantidad innecesaria de tráfico de escritura y tráfico de bloqueo de archivos. Este tráfico puede reducir el rendimiento; por lo tanto, es preferible apagar o reducir la frecuencia de actualizaciones atime
.
atime
:
- Montar con
relatime
(relative atime), el cual actualizaatime
si la actualizaciónatime
previa es menos reciente quemtime
octime
. - Montar con
noatime
, el cual desactiva actualizacionesatime
en el sistema de archivos.
4.9.1. Montar con relatime
relatime
(relative atime) de Linux cuando se monta el sistema de archivos. Esta opción especifica que atime
se actualiza si la actualización de atime
previa es menos reciente que mtime
o ctime
.
Uso
mount BlockDevice MountPoint
-o relatime
BlockDevice
- Especifica los dispositivos de bloque en donde residen los sistemas de archivo GFS2.
MountPoint
- Especifica el directorio en donde debe montarse el sistema de archivos GFS2.
Ejemplo
/dev/vg01/lvol0
y se monta en el directorio /mygfs2
. Las actualizaciones atime
solamente tienen lugar si la actualización atime
previa es menos reciente que mtime
o ctime
.
mount /dev/vg01/lvol0 /mygfs2 -o relatime
4.9.2. Montar con noatime
noatime
, puede ser especificada al momento de montar el sistema de archivos, el cual desactiva las actualizaciones de atime
en ese sistema de archivos.
Uso
mount BlockDevice MountPoint
-o noatime
BlockDevice
- Especifica los dispositivos de bloque en donde residen los sistemas de archivo GFS2.
MountPoint
- Especifica el directorio en donde debe montarse el sistema de archivos GFS2.
Ejemplo
/dev/vg01/lvol0
y es montado en el directorio /mygfs2
con las actualizaciones atime
apagadas.
mount /dev/vg01/lvol0 /mygfs2 -o noatime
4.10. Cómo suspender la actividad en un sistema de archivos
dmsetup suspend
. La suspensión de escritura permite que las instantáneas de dispositivos basadas en hardware sirvan para capturar el sistema de archivos en un estado consistente. El comando dmsetup resume
finaliza la suspensión.
Uso
dmsetup suspend MountPoint
dmsetup resume MountPoint
MountPoint
- Especifica el sistema de archivos.
Ejemplos
/mygfs2
.
# dmsetup suspend /mygfs2
/mygfs2
.
# dmsetup resume /mygfs2
4.11. Cómo reparar un sistema de archivos
fsck.gfs2
.
Importante
fsck.gfs2
debe ser ejecutado solo en sistemas de archivos que están desmontados de todos los nodos.
Importante
fsck.gfs2
. El comando fsck.gfs2
no puede determinar en tiempo de arranque si el sistema de archivos es montado por otro nodo en el clúster. Ejecute el comando fsck.gfs2
de forma manual solo después de que el sistema arranque.
fsck.gfs2
no se ejecute en un sistema de archivos GFS2 en el momento de arranque, modifique el archivo /etc/fstab
para que las dos últimas columnas para un punto de montaje de un sistema de archivos GFS2 muestren "0 0" en lugar de "1 1" (o cualquier otro número), como en el siguiente ejemplo:
/dev/VG12/lv_svr_home /svr_home gfs2 defaults,noatime,nodiratime,noquota 0 0
Nota
fsck.gfs2
difiere de algunas versiones anteriores de gfs_fsck
así:
- Al presionar Ctrl+C mientras ejecuta
fsck.gfs2
se interrumpe el procesamiento y muestra un indicador que le solicita si desea abortar el comando, ignorar el resto del paso actual o continuar el procesamiento. - Puede incrementar el nivel de verbosidad con la opción
-v
. Si se añade una segunda opción-v
, se incrementará aún más el nivel de verbosidad. - Puede reducir el nivel de verbosidad con la opción
-q
. Si añade una segunda opción-q
el nivel de verbosidad se reducirá de nuevo. - La opción
-n
abre un sistema de archivos para sólo lectura y responde automáticamenteno
a cualquier pregunta. Esta opción ofrece una manera de observar los errores sin permitir que el comandofsck.gfs2
surta efecto.
fsck.gfs2
para obtener más información acerca de otras opciones de comando.
fsck.gfs2
requiere que la memoria del sistema esté por encima o más allá de la memoria utilizada para el sistema operativo y el kernel. Cada bloque de memoria en el sistema de archivos GFS2 requiere aproximadamente cinco bits de memoria adicional, o 5/8 de un byte. Por lo tanto, para estimar cuántos bytes de memoria necesitará para ejecutar el comando fsck.gfs2
en su sistema de archivos, determine cuántos bloques contiene el sistema de archivos y multiplíquelo por 5/8.
fsck.gfs2
en un sistema de archivos GFS2 que es de 16TB con un tamaño de bloque de 4K, divida 16TB por 4K para determinar cuántos bloques de memoria contiene el sistema de archivos:
17592186044416 / 4096 = 4294967296
4294967296 * 5/8 = 2684354560
fsck.gfs2
. Observe que si el tamaño del bloque fuera de 1K, la ejecución del comando fsck.gfs2
requeriría cuatro veces la memoria o aproximadamente 11 GB.
Uso
fsck.gfs2 -y BlockDevice
-y
- La opción
-y
hace que todas las preguntas sean respondidas afirmativamente conyes
. Con la opción-y
especificada, el comandofsck.gfs2
no le preguntará nada antes de realizar los cambios. BlockDevice
- Especifica los dispositivos de bloque en donde residen los sistemas de archivo GFS2.
Ejemplo
/dev/testvol/testlv
es reparado. Todas las preguntas para reparar se responden automáticamente con yes
.
[root@dash-01 ~]# fsck.gfs2 -y /dev/testvg/testlv
Initializing fsck
Validating Resource Group index.
Level 1 RG check.
(level 1 passed)
Clearing journals (this may take a while)...
Journals cleared.
Starting pass1
Pass1 complete
Starting pass1b
Pass1b complete
Starting pass1c
Pass1c complete
Starting pass2
Pass2 complete
Starting pass3
Pass3 complete
Starting pass4
Pass4 complete
Starting pass5
Pass5 complete
Writing changes to disk
fsck.gfs2 complete
4.12. Nombres de rutas dependientes del contexto y montajes enlazados
bind
del comando mount
.
bind
del comando mount
le permite remontar parte de la jerarquía de archivos en una ubicación diferente, mientras que permanece también disponible en la ubicación original. El formato de este comando es el siguiente:
mount --bind olddir newdir
olddir
estará disponible en dos ubicaciones olddir
y newdir
. Puede también usar esta opción para que un archivo esté disponible en dos lugares diferentes:
/root/tmp
tendrá el mismo contenido que el directorio /var/log
anteriormente montado.
[root@menscryfa ~]#cd ~root
[root@menscryfa ~]#mkdir ./tmp
[root@menscryfa ~]#mount --bind /var/log /root/tmp
/etc/fstab
para lograr el mismo resultado durante el tiempo de montajes. La siguiente entrada de /etc/fstab
hará que el contenido de /root/tmp
sea igual que el contenido de /var/log
.
/var/log /root/tmp none bind 0 0
mount
para ver si el sistema de archivos ha sido montado, como en el siguiente ejemplo:
[root@menscryfa ~]# mount | grep /tmp
/var/log on /root/tmp type none (rw,bind)
/bin
como un nombre de ruta dependiente del contexto que resuelve en una de las siguientes rutas, dependiendo de la arquitectura del sistema.
/usr/i386-bin /usr/x86_64-bin /usr/ppc64-bin
/bin
. Luego, mediante un script o una entrada en el archivo /etc/fstab
, monte cada uno de los directorios de arquitectura individuales en el directorio /bin
con el comando mount -bind
. Por ejemplo, puede utilizar el siguiente comando como una línea en un script:
mount --bind /usr/i386-bin /bin
/etc/fstab
.
/usr/1386-bin /bin none bind 0 0
%fill
para el sistema de archivos). Los nombres de rutas dependientes del contexto son más limitados en lo que pueden abarcar. Observe, sin embargo, que tendrá que escribir sus propios scripts para realizar el montaje según el criterio, como por ejemplo, el valor de %fill
.
Aviso
bind
y el sistema de archivo original fue montado con rw
, el nuevo sistema de archivos será montado como rw
incluso si usted pasa la opción ro
; la opción ro
es ignorada silenciosamente. En este caso, el nuevo sistema de archivos podría ser marcado como ro
en el directorio /proc/mounts
, lo cual es confuso.
4.13. Orden de montaje de enlace y montaje de sistema de archivos
bind
del comando mount
, usted debe asegurarse de que los sistemas de archivos se monten en el orden correcto. En el siguiente ejemplo, el directorio /var/log
debe estar montado antes de ejecutar el montaje enlazado en el directorio /tmp
:
# mount --bind /var/log /tmp
- En general, el orden del montaje del sistema de archivos está determinado por el orden en el que aparecen en el archivo
fstab
. Las excepciones a este orden son sistemas de archivos montados con el indicador_netdev
o sistemas de archivos que tienen sus propios scriptsinit
. - Un sistema de archivos con su propio script
init
se monta más adelante en el proceso de inicialización, después del sistema de archivos en el archivofstab
. - Los sistemas de archivos montados con el indiciador
_netdev
se montan cuando la red ha sido activada en el sistema.
fstab
así:
- Monte los sistemas de archivos locales que se requieran para el montaje de enlace.
- Vincule el montaje del directorio en el cual monta el sistema de archivos GFS2.
- Monte el sistema de archivos GFS2.
fstab
no montará el sistema de archivos correctamente, puesto que GFS2 solamente se montará hasta que se ejecute el script init
de GFS2. En este caso, debe escribir un script init
para ejecutar el montaje de enlace para que el montaje de enlace se realice después de que se monte el sistema de archivos GFS2.
init
. El script realiza un montaje de enlace de dos directorios encima de dos directorios de sistemas de archivos GFS2. En este ejemplo, hay un punto de montaje de GFS2 en /mnt/gfs2a
, el cual se monta cuando el script init
de GFS2 se ejecuta, después del inicio de clúster.
chkconfig
indican lo siguiente:
- 345 indica los niveles de ejecución en los que el script se iniciará
- 29 es la prioridad de inicio, la cual indica que el script se ejecutará en el inicio después del script
init
GFS2, el cual tiene una prioridad de inicio de 26. - 73 es la prioridad de parada, lo cual indica que en este caso el script se detendrá durante el apagado antes del script GFS2, el cual tiene una prioridad de parada de 74
service start
y un comando service stop
. Por ejemplo, si el script se llama fredwilma
, ejecute service fredwilma start
.
/etc/init.d
con los mismos permisos como los otros scripts en ese directorio. Puede entonces ejecutar un comando chkconfig on
para enlazar el script a los niveles de ejecución indicados. Por ejemplo, si el script se llama fredwilma
, entonces puede ejecutar chkconfig fredwilma on
.
#!/bin/bash # # chkconfig: 345 29 73 # description: mount/unmount my custom bind mounts onto a gfs2 subdirectory # # ### BEGIN INIT INFO # Provides: ### END INIT INFO . /etc/init.d/functions case "$1" in start) # In this example, fred and wilma want their home directories # bind-mounted over the gfs2 directory /mnt/gfs2a, which has # been mounted as /mnt/gfs2a mkdir -p /mnt/gfs2a/home/fred &> /dev/null mkdir -p /mnt/gfs2a/home/wilma &> /dev/null /bin/mount --bind /mnt/gfs2a/home/fred /home/fred /bin/mount --bind /mnt/gfs2a/home/wilma /home/wilma ;; stop) /bin/umount /mnt/gfs2a/home/fred /bin/umount /mnt/gfs2a/home/wilma ;; status) ;; restart) $0 stop $0 start ;; reload) $0 start ;; *) echo $"Usage: $0 {start|stop|restart|reload|status}" exit 1 esac exit 0
4.14. La función de retiro de GFS2
fsck.gfs2
. La función de retiro de GFS es menos severa que la de un pánico de kernel, lo cual haría que otro nodo cerque el nodo.
gfs2
habilitado y el sistema de archivos GFS2 se incluye en el archivo /etc/fstab
, el sistema de archivos GFS2 volverá a montarse durante el reinicio. Si el sistema de archivos GFS2 se retiró debido a que percibió un daño en el sistema de archivos, se recomienda ejecutar el comando fsck.gfs2
antes de volver a montar el sistema de archivos. En este caso, para evitar que su sistema de archivos se vuelva a montar en el momento de arranque, puede realizar lo siguiente:
- Temporalmente desactive el script de inicio en el nodo afectado mediante el siguiente comando:
#
chkconfig gfs2 off
- Reinicie el nodo afectado, al iniciar el software de clúster. El sistema de archivos GFS2 no será montado.
- Desmonte el sistema de archivos de cada nodo en el clúster.
- Ejecute
fsck.gfs2
en el sistema de archivos desde un nodo solamente para asegurarse de que no hay sistemas de archivos corruptos. - Rehabilite el script de inicio en el nodo afectado ejecutando el siguiente comando:
#
chkconfig gfs2 on
- Vuelva a montar el sistema de archivos GFS2 de todos los nodos en el cluster.
-o errors=panic
especificada. Cuando se especifica esta opción, los errores que normalmente harían que el sistema de archivos se retire provocarían pánico en el sistema. Esta opción detiene comunicaciones de clúster de nodo, las cuales cercan al nodo con vallas.
gfs_controld
solicitando el retiro. El demonio gfs_controld
ejecuta el programa dmsetup
para colocar el destino de error de mapeador de dispositivo bajo el sistema de archivos previniendo el acceso al dispositivo de bloque. Luego, le dice al kernel que ha completado. Esta es la razón por la cual se requiere que el soporte de GFS2 siempre utilice el dispositivo CLVM bajo GFS2, puesto que de lo contrario no es posible insertar un destino de mapeador de dispositivo.
dmsetup
insertar el destino de error como se solicitó. Esto puede suceder si hay una escasez de memoria en el momento del retiro y no se puede reclamar debido al problema que activó el retiro en primer lugar.
Capítulo 5. Diagnóstico y corrección de problemas con sistemas de archivos GFS2
5.1. El sistema de archivos GFS2 presenta un bajo rendimiento
5.2. El sistema de archivos GFS2 se cuelga y requiere rearranque de un nodo
- El vaciado de gfs2 para el sistema de archivos en cada nodo:
cat /sys/kernel/debug/gfs2/fsname/glocks >glocks.fsname.nodename
- El vaciado de cierre de DLM para el sistema de archivos en cada nodo: Puede obtener esta información con
dlm_tool
:dlm_tool lockdebug -sv lsname.
En este comando, lsname está el nombre de lockspace utilizado por DLM para el sistema de archivos en cuestión. Puede hallar este valor en la salida del comandogroup_tool
. - La salida desde el comando
sysrq -t
. - El contenido del archivo
/var/log/messages
.
5.3. El sistema de archivos GFS2 se cuelga y debe rearrancar todos los nodos
- Puede que haya fallado una valla. Los sistemas de archivos GFS2 se congelarán para garantizar integridad de datos en el evento de que una valla falle. Revise los registros de mensajes para ver si hay vallas fallidas en el momento de colgarse. Asegúrese de que el cercado esté configurado correctamente.
- El sistema de archivos GFS2 puede haberse retirado. Busque en los registros de mensajes la palabra
withdraw
y revise si hay algún mensaje o trazado de llamadas de GFS2 indicando que el sistema de archivos se ha caído. Un retiro es indicativo de daño de sistema de archivos, una falla o un error. Desmonte el sistema de archivos, actualice el paquetegfs2-utils
, y ejecute el comandofsck
en el sistema de archivos para retornarlo al servicio. Abra un tiquete de soporte con Asistencia técnica de Red Hat. Infórmeles que ha experimentado un retiro de GFS2 y proporcione los sosreports con registros.Para obtener información sobre la función de retiro de GFS2, consulte la Sección 4.14, “La función de retiro de GFS2”. - Este error puede ser indicativo de un problema de bloqueo o error. Reúna información durante los sucesos y abra un tiquete de soporte con Asistencia técnica de Red Hat, como se describe en la Sección 5.2, “El sistema de archivos GFS2 se cuelga y requiere rearranque de un nodo”.
5.4. El sistema de archivos GFS2 no se monta en un nodo de clúster recién añadido
spectator
, puesto que ellos no requieren diarios). Añada diarios al sistema de archivos GFS2 con el comando gfs2_jadd
, como se describe en la Sección 4.7, “Cómo añadir diarios a un sistema de archivos”.
5.5. Espacio indicado como Usado en sistema de archivos vacío
df
mostrará que se ha ocupado un espacio. Esto se debe a que los diarios de sistema de archivos GFS2 consumen el espacio (número de diarios * tamaño del diario) en disco. Si creó un sistema de archivos GFS2 con una gran cantidad de diarios o si ha especificado un tamaño grande de diario, entonces verá en uso (número de diarios * tamaño de diarios) al ejecutar el comando df
. Incluso si no especificó un gran número de diarios o grandes diarios, sistemas de archivos GFS2 pequeños (en un rango de 1 GB o menor) se mostrará una gran cantidad de espacio que está en uso con el tamaño predeterminado de diario GFS2.
Capítulo 6. Cómo configurar el sistema de archivos GFS2 en un clúster Pacemaker
cman
, clvmd
, and pacemaker
en cada nodo y cree el clúster Pacemaker. Debe configurar la valla para el clúster. Para obtener más información sobre cómo configurar un clúster Pacemaker, consulte Cómo configurar Red Hat High Availability Add-On con Pacemaker.
- Establezca el parámetro de Pacemaker
no_quorum_policy
afreeze
.Nota
El valor deno-quorum-policy
se predetermina astop
, indicando que cuando el cuórum se pierde, todos los recursos en la partición restante se detendrán inmediatamente. Por lo general, este valor predeterminado es el más seguro y la opción más óptima, pero a diferencia de la mayoría de los recursos, GFS2 requiere cuórum para funcionar. Cuando el cuórum se pierde, la aplicación que usa GFS2 se monta y no puede detenerse correctamente. Cualquier intento para detener estos recursos sin cuórum fallará, lo cual resulta en el cercado de todo el clúster cada vez que se pierda el cuórum.Para afrontar esta situación, establezca el valorno-quorum-policy=freeze
cuando GFS2 esté en uso. Esto significa que cuando el cuórum se pierde, la partición restante no hará nada hasta que se recupere el cuórum.#
pcs property set no-quorum-policy=freeze
- Después de asegurarse de que el tipo que está viendo está configurado a 3 en el archivo
/etc/lvm/lvm.conf
para soportar el bloqueo en clúster, cree el LV en clúster y de formato al volumen con un sistema de archivos GFS2. Verifique si crea suficiente diarios para cada uno de los nodos en su clúster.#
pvcreate /dev/vdb
#vgcreate -Ay -cy cluster_vg /dev/vdb
#lvcreate -L5G -n cluster_lv cluster_vg
#mkfs.gfs2 -j2 -p lock_dlm -t rhel7-demo:gfs2-demo /dev/cluster_vg/cluster_lv
- Configure un recurso
clusterfs
.No agregue el sistema de archivos al archivo/etc/fstab
porque este será administrado como un recurso de clúster Pacemaker. Las opciones de montaje pueden especificarse como parte de la configuración de recursos conoptions=options
. Ejecute el comandopcs resource describe Filesystem
para obtener todas las opciones de configuración.Este comando de creación de recursos de clúster especifica la opción de montajenoatime
.#
pcs resource create clusterfs Filesystem device="/dev/cluster_vg/cluster_lv" directory="/var/mountpoint" fstype="gfs2" "options=noatime" op monitor interval=10s on-fail=fence clone interleave=true
- Verifique si el GFS2 se montó como esperaba
#
mount |grep /mnt/gfs2-demo
/dev/mapper/cluster_vg-cluster_lv on /mnt/gfs2-demo type gfs2 (rw,noatime,seclabel) - (Opcional) Reinicie todos los nodos de clúster para verificar persistencia y recuperación de gfs2.
Apéndice A. Administración de cuotas GFS2 con el comando gfs2_quota
gfs2_quota
para administrar cuotas. Este apéndice describe el uso del comando gfs2_quota
para administrar las cuotas del sistema de archivos GFS2.
A.1. Cómo establecer cuotas con el comando gfs2_quota
gfs2_quota
. El comando solamente necesita ser ejecutado en un nodo único donde GFS2 esté montado.
quota=
del comando mount
cuando monte el sistema de archivos GFS2, como se describe en la Sección A.4, “Cómo realizar activación y desactivación de cuotas”.
Uso
gfs2_quota limit -uUser
-lSize
-fMountPoint
gfs2_quota limit -gGroup
-lSize
-fMountPoint
gfs2_quota warn -uUser
-lSize
-fMountPoint
gfs2_quota warn -gGroup
-lSize
-fMountPoint
User
- Un ID de usuario para limitar o advertir. Puede ser un nombre de usuario del archivo de contraseñas o el número de UID.
Group
- Un ID de grupo para limitar o advertir. Puede ser un nombre de grupo o el número de GID.
Size
- Especifica el nuevo valor para limitar o advertir. El valor predeterminado está en unidades de megabytes. Los indicadores
-k
,-s
y-b
cambian las unidades a Kilobytes, sectores y bloques de sistema de archivos, respectivamente. MountPoint
- Especifica el sistema de archivos GFS2 al cual se aplican las acciones.
Ejemplos
/mygfs2
.
# gfs2_quota limit -u Bert -l 1024 -f /mygfs2
/mygfs2
.
# gfs2_quota warn -g 21 -l 50 -k -f /mygfs2
A.2. Despliegue de límites de cuotas y uso con el comando gfs2_quota
gfs2_quota get
. El contenido total del archivo de cuotas puede desplegarse también mediante el comando gfs2_quota list
en cuyo caso, se listan todos los ID con un límite duro de no-cero, límite suave o valor.
Uso
gfs2_quota get -uUser
-fMountPoint
gfs2_quota get -gGroup
-fMountPoint
gfs2_quota list -f MountPoint
User
- Un ID de usuario para desplegar información sobre usuario específico. Puede ser un nombre de usuario del archivo de contraseñas o el número de UID.
Group
- Un ID de grupo para desplegar información sobre un grupo específico. Puede ser un nombre de grupo del archivo de grupo o el nombre de GID.
MountPoint
- Especifica el sistema de archivos GFS2 al cual se aplican las acciones.
Salida de comando
gfs2_quota
:
userUser
: limit:LimitSize
warn:WarnSize
value:Value
groupGroup
: limit:LimitSize
warn:WarnSize
value:Value
LimitSize
, WarnSize
, y Value
están en unidades de megabytes de forma predeterminada. Al añadir los indicadores -k
, -s
, o -b
a la línea de comandos cambian las unidades a kilobytes, sectores, o bloques de sistemas de archivos, respectivamente.
User
- Un nombre de usuario o ID al cual se asocian los datos.
Group
- Un nombre de grupo o ID al cual se asocian los datos.
LimitSize
- El límite duro establecido para el usuario o grupo. El valor es cero si no se ha establecido ningún límite.
Value
- La cantidad actual de espacio de disco utilizada por el usuario o grupo.
Comentarios
gfs2_quota
no resuelve los UID y GID en nombres si se añade la opción -n
a la línea de comandos.
-d
para la línea de comandos. Esto es útil cuando se tratan de igualar los números de gfs2_quota
con los resultados del comando du
.
Ejemplos
/mygfs2
.
# gfs2_quota list -f /mygfs2
users
en el sistema de archivos /mygfs2
.
# gfs2_quota get -g users -f /mygfs2 -s
A.3. Sincronización de cuotas con el comando gfs2_quota
quota_quantum
. Puede cambiarlo de su valor predeterminado de 60 mediante la opción de montaje quota_quantum=
, como se describe en la Tabla 4.2, “Opciones de montaje específicas de GFS2”. El parámetro quota_quantum
debe establecerse en cada nodo y cada vez que se monte el archivo. Los cambios al parámetro quota_quantum
no persisten a través de desmontajes. Debe actualizar el valor quota_quantum
con el comando mount -o remount
.
gfs2_quota sync
para sincronizar la información de cuotas desde un nodo al archivo de cuotas en disco entre las actualizaciones automáticas realizadas por GFS2.
Uso
gfs2_quota sync -f MountPoint
MountPoint
- Especifica el sistema de archivos GFS2 al cual se aplican las acciones.
mount -o quota_quantum=secs,remount BlockDevice MountPoint
MountPoint
- Especifica el sistema de archivos GFS2 al cual se aplican las acciones.
secs
- Especifica el periodo de tiempo entre sincronizaciones de archivos de cuota regulares por GFS2. Los valores inferiores pueden aumentar la contención y disminuir el rendimiento.
Ejemplos
/mygfs2
.
# gfs2_quota sync -f /mygfs2
/mnt/mygfs2
al volver a montar ese sistema de archivos en un volumen lógico /dev/volgroup/logical_volume
.
# mount -o quota_quantum=3600,remount /dev/volgroup/logical_volume /mnt/mygfs2
A.4. Cómo realizar activación y desactivación de cuotas
quota=on
especificada.
Uso
mount -o quota=on BlockDevice MountPoint
quota=off
especificada. Esta es la configuración predeterminada.
mount -o quota=off BlockDevice MountPoint
-o quota={on|off}
- Especifica que la aplicación de cuotas está activada o desactivada cuando se monta el sistema de archivos.
BlockDevice
- Especifica el dispositivo de bloque donde reside el sistema de archivos GFS2.
MountPoint
- Especifica el directorio donde se monta el sistema de archivos GFS2.
Ejemplos
/dev/vg01/lvol0
está montado en el directorio /mygfs2
con la aplicación de cuotas activada.
# mount -o quota=on /dev/vg01/lvol0 /mygfs2
A.5. Activación de contabilidad de cuotas
quota=account
especificada.
Uso
mount -o quota=account BlockDevice MountPoint
-o quota=account
- Especifica que las estadísticas de uso de grupo y usuario se guarden en el sistema de archivos, aunque los límites de cuotas no se apliquen.
BlockDevice
- Especifica el dispositivo de bloque donde reside el sistema de archivos GFS2.
MountPoint
- Especifica el directorio donde se monta el sistema de archivos GFS2.
Ejemplo
/dev/vg01/lvol0
está montado en el directorio /mygfs2
con contabilidad de cuota activada.
# mount -o quota=account /dev/vg01/lvol0 /mygfs2
Apéndice B. Cómo convertir el sistema de archivos de GFS a GFS2
gfs2_convert
. Observe que no debe realizar este procedimiento de conversión en un sistema de Red Hat Enterprise Linux 5 antes de actualizarlo a Red Hat Enterprise Linux 6.
Aviso
gfs_fsck
para revisar el sistema de archivos y corregir los errores.
fsck.gfs2
en el sistema de archivos hasta que la conversión esté completa.
B.1. Conversión de nombres de rutas dependientes de contexto
bind
del comando mount
.
gfs2_convert
identifica los CDPN y los remplaza por directorios vacíos con el mismo nombre. Sin embargp, al configurar montajes de enlace para remplazar los CDPN, necesita saber las rutas completas de los destinos de enlace de los CDPN que usted está remplazando. Antes de convertir su sistema de archivos, utilice el comando find
para identificar los enlaces.
hostname
:
[root@smoke-01 gfs]# find /mnt/gfs -lname @hostname
/mnt/gfs/log
find
para otros CDPN (mach
, os
, sys
, uid
, gid
, jid
). Observe que como los nombres de CDPN pueden ser de la forma @hostname
o {hostname}
, necesitará ejecutar el comando find
para cada variante.
B.2. Procedimiento de conversión de GFS a GFS2
- En un sistema de Red Hat Enterprise Linux, cree una copia de seguridad en su sistema de archivos GFS.
- Desmonte todo el sistema de archivos GFS en todos los nodos del clúster.
- Ejecute el comando
gfs_fsck
en el sistema de archivos GFS para verificar que no haya corrupción del sistema de archivos. - Ejecute
gfs2_convert
. El sistema desplegará advertencias y preguntas de confirmación antes de convertirgfsfilesystem
gfsfilesystem
a GFS2. - Actualice a Red Hat Enterprise Linux 6.
/dev/shell_vg/500g
para un GFS2.
[root@shell-01 ~]# /root/cluster/gfs2/convert/gfs2_convert /dev/shell_vg/500g
gfs2_convert version 2 (built May 10 2010 10:05:40)
Copyright (C) Red Hat, Inc. 2004-2006 All rights reserved.
Examining file system..................
This program will convert a gfs1 filesystem to a gfs2 filesystem.
WARNING: This can't be undone. It is strongly advised that you:
1. Back up your entire filesystem first.
2. Run gfs_fsck first to ensure filesystem integrity.
3. Make sure the filesystem is NOT mounted from any node.
4. Make sure you have the latest software versions.
Convert /dev/shell_vg/500g from GFS1 to GFS2? (y/n)y
Converting resource groups...................
Converting inodes.
24208 inodes from 1862 rgs converted.
Fixing file and directory information.
18 cdpn symlinks moved to empty directories.
Converting journals.
Converting journal space to rg space.
Writing journal #1...done.
Writing journal #2...done.
Writing journal #3...done.
Writing journal #4...done.
Building GFS2 file system structures.
Removing obsolete GFS1 file system structures.
Committing changes to disk.
/dev/shell_vg/500g: filesystem converted successfully to gfs2.
Apéndice C. Puntos de trazado GFS2 y archivo glocks debugfs
debugfs
y los puntos de trazado de GFS2. Está dirigido a usuarios avanzados que están familiarizados con interioridades de sistemas de archivos y que desearían conocer más sobre el diseño de GFS2 y la forma de depuración de problemas específicos de GFS2.
C.1. Tipos de puntos de trazado GFS2
blktrace
y los puntos de trazado blktrace
pueden sirven junto con los GFS2 para obtener un cuadro total del rendimiento del sistema. Debido al nivel en el que los puntos de trazado operan, pueden producir grandes volúmenes de datos en un periodo de tiempo muy corto. Están diseñados para poner un mínimo de carga en el sistema cuando están habilitados, pero es inevitable que tengan algún efecto. El filtraje de eventos mediante una variedad de medios puede ayudar a reducir el volumen de datos y a enfocarse en obtener solamente la información que es útil para entender una situación en particular.
C.2. Puntos de trazado
/sys/kernel/debug/tracing/
si soponemos que debugfs
está montado en el lugar estándar en el directorio /sys/kernel/debug
. El subdirectorio events
contiene todos los eventos de trazado que pueden especificarse y, siempre y cuando el módulo gfs2
esté cargado, habrá un subdirectorio gfs2
que contenga otros subdirectorios, uno para cada evento GFS2. El contenido del directorio /sys/kernel/debug/tracing/events/gfs2
debe ser similar al siguiente:
[root@chywoon gfs2]# ls
enable gfs2_bmap gfs2_glock_queue gfs2_log_flush
filter gfs2_demote_rq gfs2_glock_state_change gfs2_pin
gfs2_block_alloc gfs2_glock_put gfs2_log_blocks gfs2_promote
[root@chywoon gfs2]# echo -n 1 >/sys/kernel/debug/tracing/events/gfs2/enable
enable
en cada uno de los subdirectorios de eventos individuales. También es cierto que el archivo filter
puede servir para establecer un filtro de eventos o una serie de eventos. El significado de los eventos individuales se explica en más detalle a continuación.
[root@chywoon gfs2]# cat /sys/kernel/debug/tracing/trace
/sys/kernel/debug/tracing/trace_pipe
. Los eventos se leen desde este archivo tal como se presentan; no hay historial disponible con esta interfaz. El formato de la salida es el mismo de ambas interfaces y se describe para cada uno de los eventos GFS2 en las secciones de este apéndice.
trace-cmd
está disponible para leer los datos de punto de trazado. Para obtener más información sobre esta herramienta, vaya al enlace en la Sección C.10, “Referencias”. La herramienta trace-cmd
puede servir de una forma similar para la herramienta strace
, por ejemplo para ejecutar un comando mientras reúne la información de trazado de datos de varias fuentes.
C.3. Glocks
Tabla C.1. Modos Glock y modos de cerrojo DLM
Modo Glock | Modo de cerrojo DLM | Notas |
---|---|---|
UN | IV/NL | Desbloqueado (No hay cerrojo DLM asociado con Glock o ningún cerrojo NL que dependa del indicador l) |
SH | PR | Cerrojo compartido (protegido lectura) |
EX | EX | Cerrojo exclusivo |
DF | CW | Diferido (escritura simultánea) utilizado para E/S directa y congelación de sistema de archivos |
Nota
lock_dlm
(no confundir con el DLM) dentro de GFS2.
Nota
Tabla C.2. Modos Glock y tipos de datos
Modo Glock | Datos de cache | Metadatos de cache | Datos sucios | Metadatos sucios |
---|---|---|---|---|
UN | No | No | No | No |
SH | Yes | Yes | No | No |
DF | No | Yes | No | No |
EX | Yes | Yes | Yes | Yes |
C.4. Interfaz de Glock debugfs
debugfs
permite la visualización del estado interno de los glocks y de los portadores y también incluye algunos detalles de resumen de los objetos que se bloquean en algunos casos. Cada línea del archivo puede comenzar por G: sin ninguna sangría (lo cual se refiere al glock) o por una letra diferente, con sangría con un solo espacio y se refiere a las estructuras asociadas con el glock inmediatamente por encima de este en el archivo (H: es un portador, I: un inodo, y R: un grupo de recursos) . Aquí vemos un ejemplo de cómo se podría ver el contenido:
G: s:SH n:5/75320 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:EX n:3/258028 f:yI t:EX d:EX/0 a:3 r:4 H: s:EX f:tH e:0 p:4466 [postmark] gfs2_inplace_reserve_i+0x177/0x780 [gfs2] R: n:258028 f:05 b:22256/22256 i:16800 G: s:EX n:2/219916 f:yfI t:EX d:EX/0 a:0 r:3 I: n:75661/219916 t:8 f:0x10 d:0x00000000 s:7522/7522 G: s:SH n:5/127205 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:EX n:2/50382 f:yfI t:EX d:EX/0 a:0 r:2 G: s:SH n:5/302519 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/313874 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/271916 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/312732 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
cat /sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock
durante una ejecución del punto de referencia del matasellos en un único nodo de sistema de archivos GFS2. Los glocks en la figura han sido seleccionados para mostrar algunas de las funciones más interesantes de los vaciados de glock.
iopen
se relaciona con el inodo 75320. En el caso del inodo y de los glocks iopen
, el número de glock siempre es idéntico al número de bloque del disco del inodo.
Nota
blktrace
por ejemplo) y con salida desde stat
(1).
debugfs
.
Tabla C.3. Tipos Glock
Número de tipo | Tipo de cerrojo | Uso |
---|---|---|
1 | trans | Cerrojo de transacción |
2 | inodo | Metadatos y datos de inodo |
3 | rgrp | Metadatos de grupo de recursos |
4 | meta | El súperbloque |
5 | iopen | El último nodo que se detectó |
6 | Flock | flock (2) syscall |
8 | quota | Operaciones de cuota |
9 | Diario | Diario mutex |
Tabla C.4. Indicadores Glock
Indicador | Nombre | Significado |
---|---|---|
d | Pending demote | Una solicitud para degradar diferida o remota |
D | Demote | Una solicitud para degradar (local o remota) |
f | Log flush | El registro necesita ser enviado antes de lanzar este Glock |
F | Frozen | Responde desde los nodos remotos ignorados - recuperación en curso. |
i | Invalidate in progress | En el proceso de invalidar páginas en este Glock |
I | Initial | Definir cuando el cerrojo DLM esté asociado con este Glock |
l | Locked | El Glock está en el proceso de cambiar estado |
L | LRU | Se establece cuando el glock está en la lista LRU |
o | Objeto | Se establece cuando el glock se asocia con un objeto (es decir, un inodo para tipo de glocks 2 y grupo de recursos para tipo de glocks3 ) |
p | Demote in progress | El Glock está en el proceso de responder a una solicitud de degradación |
s | En cola | Se establece cuando un portador es puesto en cola para un glock y se retira cuando el glock se mantiene pero no quedan portadores remanentes. Se utiliza como parte de el algoritmo que calcula el mínimo de tiempo de retención para un glock. |
r | Reply pending | Respuesta recibida del nodo remoto está a la espera del procesamiento |
y | Dirty | Los datos necesitan vaciarse al disco antes de lanzar este glock |
C.5. Portadores de Glock
Tabla C.5. Indicadores de portadores de glock
Indicador | Nombre | Significado |
---|---|---|
a | Async | No espera ningún resultado de Glock (emitirá un resultado más adelante) |
A | Any | Acepta cualquier modo de cerrojo compatible |
c | No cache | Cuando está desbloqueado, degrada al cerrojo DLM inmediatamente |
e | No expire | Ignora solicitudes posteriores de cancelar el cerrojo |
E | Exact | Debe tener el modo exacto de cerrojo |
F | First | Cuando el portador es el primero en concedérsele este cerrojo |
H | Holder | Indica que se ha otorgado el cerrojo solicitado |
p | Priority | Pone al 'Portador' a la cabeza de la cola |
t | Try | Un cerrojo de "ensayo" |
T | Try 1CB | Un cerrojo de "ensayo" que envía una llamada |
W | Wait | Se establece mientras espera que una solicitud se complete |
try 1CB
), es idéntico al cerrojo t excepto que el DLM enviará una sola llamada a los portadores de cerrojos incompatibles. El cerrojo T (try 1CB
) con los cerrojos iopen
, sirve de árbitro entre nodos cuando el conteo de nodos i_nlink
es cero y, determina cuál de los nodos deberá cambiar la asignación del inodo. El glock iopen
por lo general se lleva a cabo en el estado compartido, pero cuando el conteo i_nlink
se convierte en cero y ->delete_inode
() es llamado, solicitará un cerrojo exclusivo con T (try 1CB
). Si el cerrojo es otorgado, continuará cambiando la asignación del inodo. De lo contrario, hará que los nodos que impedían el cerrojo marque su(s) glock(s) con el indicador D (degradar), el cual se revisa en ->drop_inode
() para garantizar que el cambio de asignación no se olvide.
close
() final. También, al mismo tiempo que el conteo de enlace de inodo decrece a cero, el inodo se marca como si estuviera en el estado especial de conteo de enlace cero pero aún se utiliza en el bitmap de grupo de recursos. Esto funciona como un huérfano de la lista de sistema de archivos ext3 en que permite a cualquier lector posterior del bitmap saber que hay espacio potencial que podría ser reclamado, e intentar reclamarlo.
C.6. Puntos de trazado Glock
gfs2_glock_state_change
es el más importante. Hace el trazado de cada cambio de estado del glock desde la creación inicial correcta a través de la degradación final que termina con gfs2_glock_put
y la NL final para transición desbloqueada. El indicador de glock l (Bloqueado) siempre se establece antes de que ocurra un cambio de estado y no será despejado sino hasta después de que termine. Nunca habrá portadores otorgados (indicador de portador de glock H) durante el cambio de estado. Si hay algún portador en cola, siempre estará en el estado W (espera). Cuando el cambio de estado se complete, entonces se podrán otorgar los portadores que es la operación final antes de que el indicador de glock l sea despejado.
gfs2_demote_rq
mantiene el rastro de las solicitudes 'degradar', tanto locales como remotas. Si suponemos que hay suficiente memoria en el nodo, las solicitudes locales de degradar pocas veces serán vistas y muy a menudo serán creadas por umount o al reclamar memoria ocasional. El número de solicitudes de degradar remotas es una medida de contención entre nodos para un inodo particular o grupo de recursos.
gfs2_promote
es llamado, esto sucede debido a que las etapas finales de un estado cambian o al solicitar un cerrojo que puede ser otorgado inmediatamente debido al estado de glock que ya está guardando en cache un cerrojo de un modo apropiado. Si es el primer portador otorgado para este glock, entonces el indicador f (primero) se establecerá en ese portador. Eso es utilizado actualmente solo por grupos de recursos.
C.7. Puntos de trazado de Bmap
gfs2_bmap
es llamado dos veces por cada operación bmap: una vez en el inicio para desplegar la solicitud de bmap, y otra al final para mostrar el resultado. Esto facilita la coincidencia de solicitudes y resultados y la medida del tiempo tomado para mapear bloques en partes diferentes de sistemas de archivos, en diferentes desplazamientos de archivos, o incluso en diferentes archivos. También es posible ver el tamaño promedio cuando se devuelven en comparación con los que se solicitan.
gfs2_block_alloc
no solo se llama para asignar, sino también para liberar bloques. Puesto que se hace referencia a las asignaciones según el inodo para el bloque destinado, esto puede servir para rastrear qué bloques físicos pertenecen a cuáles archivos en el sistema de archivos en vivo. Esto es en particular muy útil cuando se combina con blktrace
, el cual muestra los patrones problemáticos de E/S que pueden referirse a los inodos relevantes mediante el mapa obtenido a través del punto de trazado.
C.8. Puntos de trazado de registro
gfs2_pin
), como también el tiempo tomado para enviar las transacciones al registro (gfs2_log_flush
). Esto puede ser muy útil para depurar problemas de rendimiento de diarios.
gfs2_log_blocks
sigue el rastro de los bloques reservados en el registro, lo cual puede ayudar a ver si el registro es demasiado pequeño para la carga, por ejemplo:
gfs2_ail_flush
(Red Hat Enterprise Linux 6.2 y posterior) es similar al punto de trazado gfs2_log_flush
porque ambos realizan el seguimiento del inicio y fin de las descargas de la lista AIL. La lista AIL contiene búferes que han pasado por el registro, pero que aún no han sido escritos en su lugar y se vacía con periodicidad para liberar más espacio de registro para ser usado por el sistema de archivos o cuando el proceso solicita un 'sync' o 'fsync'.
C.9. Estadísticas de Glock
dcount
, el cual cuenta el número de operaciones DLM solicitadas. Esto muestra cuántos datos entran en los cálculos de media o varianza..qcount
, el cual cuenta el número del nivel de operacionessyscall
solicitadas. Por lo general,qcount
será igual o mayor quedcount
.
- srtt/srttvar: tiempo regular de round trip para operaciones de no-bloqueo
- srttb/srttvarb: tiempo regular de round trip para operaciones de bloqueo
- irtt/irttvar: tiempo de Inter-request (Por ejemplo, tiempo entre solicitudes DLM)
sysfs
:
- El archivo
glstats
. Este archivo es similar al archivoglocks
a excepción de que este contiene estadísticas con un glock por línea. Los datos se inicializan de datos "por cpu" para dicho tipo de glock para el cual se crea el glock ( al lado de los contadores, los cuales se ponen en cero). Este archivo puede ser muy largo. - El archivo
lkstats
. Contiene estadísticas "por cpu" para cada tipo de glock. Contiene una línea por estadística, en los cuales cada columna es un núcleo de CPU. Hay ocho líneas por tipo de glock, con tipos sucediéndose uno tras otro.
C.10. Referencias
glocks
, consulte los siguientes recursos:
- Este apéndice ha sido adaptado parcialmente del documento entregado por Steve Whitehouse en el 'Linux Symposium 2009', el cual se encuentra en http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/filesystems/gfs2-glocks.txt;h=04 94f78d87e40c225eb1dc1a1489acd891210761;hb=HEAD.
- Para obtener información sobre reglas internas de cerrojo de glocks, consulte http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/filesystems/gfs2-glocks.txt;h=0494f78d87e40c225eb1dc1a1489acd891210761;hb=HEAD.
- Para obtener información sobre el trazado de eventos, consulte http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/trace/events.txt;h=09bd8e9029892e4e1d48078de4d076e24eff3dd2;hb=HEAD.
- Para obtener información sobre la herramienta
trace-cmd
, consulte http://lwn.net/Articles/341902/.
Apéndice D. Historia de revisiones
Historial de revisiones | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Revisión 7.1-3.2 | Tue Feb 3 2015 | Gladys Guerrero-Lozano | |||||||||||
| |||||||||||||
Revisión 7.1-3.1 | Tue Feb 3 2015 | Gladys Guerrero-Lozano | |||||||||||
| |||||||||||||
Revisión 7.1-3 | Tue Dec 16 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 7.0-9 | Wed Oct 8 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 7.0-8 | Thu Aug 7 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 7.0-4 | Thu Jul 17 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 7.0-3 | Wed Jul 16 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 7.0-1 | Thu Jun 5 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 6.0-6 | Wed Nov 13 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 6.0-5 | Fri Sep 27 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 6.0-3 | Fri Sep 27 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 6.0-1 | Fri Sep 06 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 5.0-7 | Mon Feb 18 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 5.0-5 | Mon Nov 26 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 5.0-4 | Tue Nov 13 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 5.0-1 | Mon Oct 15 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 4.0-2 | Thu Mar 28 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 4.0-1 | Thu Mar 28 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 3.0-2 | Thu Dec 1 2011 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 3.0-1 | Mon Sep 19 2011 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 2.0-1 | Thu May 19 2011 | Steven Levine | |||||||||||
| |||||||||||||
Revisión 1.0-1 | Wed Nov 15 2010 | Steven Levine | |||||||||||
|
Índice
A
- Adición de diarios al sistema de archivos, Cómo añadir diarios a un sistema de archivos
- Administración de cuota, Administración de cuotas GFS2 con el comando gfs2_quota
- sincronización de cuotas, Sincronización de cuotas con el comando gfs2_quota
- administración de cuota
- cómo establecer cuotas, Cómo establecer cuotas con el comando gfs2_quota
- administración de cuotas, Administración de cuotas en GFS2, Cómo establecer cuotas en modo impositivo o de contabilidad
- Administración de cuotas
- cómo aplicar activación y desactivación de cuotas, Cómo realizar activación y desactivación de cuotas
- cómo desplegar límites de cuotas, Despliegue de límites de cuotas y uso con el comando gfs2_quota
- Cómo habilitar la contabilidad de cuotas, Activación de contabilidad de cuotas
- cómo sincronizar cuotas, Sincronización de cuotas con el comando quotasync
- Administración de GFS2, Administración de GFS2
- Ajuste de rendimiento, Ajuste de rendimiento con GFS2
- archivo debugfs, Resolución de problemas de rendimiento de GFS2 con el volcado de cerrojo GFS2
- atime, configuración de actualizaciones, Cómo configurar las actualizaciones atime
- montaje con noatime , Montar con noatime
- montaje con relatime , Montar con relatime
- audiencia, Audiencia
B
- Bloqueo de nodos, Bloqueo de nodo GFS2
- Bloqueo de Posix, Problemas con Bloqueo de Posix
C
- colgado de sistema al desmontar, Consideraciones especiales en el montaje de los sistemas de archivos GFS2
- comando fsck.gfs2, Cómo reparar un sistema de archivos
- comando gfs2_jadd, Cómo añadir diarios a un sistema de archivos
- Comando gfs2_quota, Administración de cuotas GFS2 con el comando gfs2_quota
- Comando mkfs, Cómo crear un sistema de archivos
- comando mount, Cómo montar un sistema de archivos
- comando umount, Cómo desmontar un sistema de archivos
- Comentarios
- información de contacto para este manual, ¡Necesitamos sus comentarios!
- Cómo extender un sistema de archivos, Cómo expandir un sistema de archivos
- configuración inicial, Cómo iniciar
- configuración, antes de, Antes de configurar GFS2
- configuración, inicial
- tareas previas, Tareas previas, Tareas de configuración inicial
- Consideraciones de configuración, Configuración de GFS2 consideraciones operacionales
- Creación de un sistema de archivos, Cómo crear un sistema de archivos
- Cuotas de disco
- activación, Configuración de cuotas de disco
- quotacheck, ejecución, Cómo crear archivos de base de datos de cuotas
- administración del
- comando quotacheck, para verificar, Cómo mantener cuotas exactas
- asignación por grupo, Cómo asignar cuotas por grupo
- asignación por usuario, Cómo asignar cuotas por usuario
- límite duro, Cómo asignar cuotas por usuario
- Cuotas de discos
- activación
- creación de archivos de cuotas, Cómo crear archivos de base de datos de cuotas
D
- debugfs, Puntos de trazado GFS2 y archivo glocks debugfs
- desmontaje de un sistema de archivos, Cómo desmontar un sistema de archivos, Consideraciones especiales en el montaje de los sistemas de archivos GFS2
- desmontar, colgado de sistema, Consideraciones especiales en el montaje de los sistemas de archivos GFS2
- diario de datos, Diario de datos
- Disco de cuotas
- administración de, Cómo administrar cuotas de disco
- reporte, Cómo administrar cuotas de disco
- límite blando, Cómo asignar cuotas por usuario
- recursos adicionales, Referencias
F
- función de retiro, GFS2, La función de retiro de GFS2
- funcionalidades, nuevas y cambiadas, Funcionalidades nuevas y cambiadas
G
- GFS2
- administración, Administración de GFS2
- Administración de cuota, Administración de cuotas en GFS2, Cómo establecer cuotas en modo impositivo o de contabilidad
- administración de cuota, Administración de cuotas GFS2 con el comando gfs2_quota
- administración de cuotas
- cómo aplicar activación y desactivación de cuotas, Cómo realizar activación y desactivación de cuotas
- cómo desplegar límites de cuota, Despliegue de límites de cuotas y uso con el comando gfs2_quota
- cómo establecer cuotas, Cómo establecer cuotas con el comando gfs2_quota
- cómo habilitar la contabilidad de cuotas, Activación de contabilidad de cuotas
- cómo sincronizar cuotas, Sincronización de cuotas con el comando gfs2_quota
- administrar cuotas
- cómo sincronizar cuotas, Sincronización de cuotas con el comando quotasync
- atime, cómo configurar actualizaciones, Cómo configurar las actualizaciones atime
- montaje con noatime , Montar con noatime
- montaje con relatime , Montar con relatime
- Consideraciones de configuración, Configuración de GFS2 consideraciones operacionales
- función de retiro, La función de retiro de GFS2
- Operación, Configuración de GFS2 consideraciones operacionales
- gfs2_grow command, Cómo expandir un sistema de archivos
- glock, Puntos de trazado GFS2 y archivo glocks debugfs
I
- Indicadores de portador de glock, Resolución de problemas de rendimiento de GFS2 con el volcado de cerrojo GFS2
- Indicadores de portadores de glock, Portadores de Glock
- Indicadores Glock, Resolución de problemas de rendimiento de GFS2 con el volcado de cerrojo GFS2, Interfaz de Glock debugfs
- Introducción, Introducción
- audiencia, Audiencia
M
- mkfs.gfs2 tabla de opciones de comando, Opciones completas
- Montaje de un sistema de archivos, Cómo montar un sistema de archivos, Consideraciones especiales en el montaje de los sistemas de archivos GFS2
- montaje enlazado
- orden de montaje, Orden de montaje de enlace y montaje de sistema de archivos
- montajes enlazados, Nombres de rutas dependientes del contexto y montajes enlazados
N
- nombres de ruta, dependientes del contexto (CDPN), Nombres de rutas dependientes del contexto y montajes enlazados
- Nombres de rutas dependientes de contexto (CDPN)
- Conversión de GFS a GFS2, Conversión de nombres de rutas dependientes de contexto
O
- opción acl mount, Cómo montar un sistema de archivos
- Opciones específicas de GFS2 para añadir tablas de diario, Uso completo
- Opciones específicas de GFS2 para extender tabla de sistemas de archivos, Uso completo
P
- Parámetro ajustable quota_quantum, Sincronización de cuotas con el comando gfs2_quota
- Prefacio (ver introducción)
- Puntos de trazado, Puntos de trazado GFS2 y archivo glocks debugfs
Q
- quota= mount option, Cómo establecer cuotas con el comando gfs2_quota
- quotacheck , Cómo crear archivos de base de datos de cuotas
- quotacheck comando
- cómo revisar exactitud de la cuota, Cómo mantener cuotas exactas
- quota_quantum tunable parameter, Sincronización de cuotas con el comando quotasync
R
- rendimiento, ajuste, Ajuste de rendimiento con GFS2
- reparación de un sistema de archivos, Cómo reparar un sistema de archivos
S
- Sistema de archivos
- adición de diarios, Cómo añadir diarios a un sistema de archivos
- administración de cuota, Administración de cuotas GFS2 con el comando gfs2_quota
- administración de cuotas, Administración de cuotas en GFS2, Cómo establecer cuotas en modo impositivo o de contabilidad
- activación de contabilidad de cuotas, Activación de contabilidad de cuotas
- cómo aplicar activación y desactivación de cuotas, Cómo realizar activación y desactivación de cuotas
- cómo desplegar límites de cuotas, Despliegue de límites de cuotas y uso con el comando gfs2_quota
- cómo establecer cuotas, Cómo establecer cuotas con el comando gfs2_quota
- cómo sincronizar cuotas, Sincronización de cuotas con el comando quotasync , Sincronización de cuotas con el comando gfs2_quota
- atime, cómo configurar actualizaciones, Cómo configurar las actualizaciones atime
- montaje con noatime , Montar con noatime
- Creación, Cómo crear un sistema de archivos
- diarios de datos, Diario de datos
- extensión, Cómo expandir un sistema de archivos
- Montajes enlazados, Nombres de rutas dependientes del contexto y montajes enlazados
- nombres de rutas dependientes del contexto (CDPN), Nombres de rutas dependientes del contexto y montajes enlazados
- orden de montaje, Orden de montaje de enlace y montaje de sistema de archivos
- reparación, Cómo reparar un sistema de archivos
- suspensión de actividad, Cómo suspender la actividad en un sistema de archivos
- sistema de archivos
- atime, cómo configurar actualizaciones
- montaje con relatime , Montar con relatime
- desmontaje, Cómo desmontar un sistema de archivos, Consideraciones especiales en el montaje de los sistemas de archivos GFS2
- montaje, Cómo montar un sistema de archivos, Consideraciones especiales en el montaje de los sistemas de archivos GFS2
- Suspensión de actividad en un sistema de archivos, Cómo suspender la actividad en un sistema de archivos
T
- tabla de montaje, Uso completo
- tablas
- mkfs.gfs2 opciones de comando, Opciones completas
- Opciones de montaje, Uso completo
- Opciones específicas de GFS2 para añadir diarios, Uso completo
- Opciones específicas de GFS2 para expandir sistemas de archivos, Uso completo
- Tamaño máximo de sistema de archivos GFS2, Visión general de GFS2
- tareas iniciales
- configuración, inicial, Tareas de configuración inicial
- tareas previas
- configuración, inicial, Tareas previas
- Tipos de glock, Resolución de problemas de rendimiento de GFS2 con el volcado de cerrojo GFS2
- Tipos de Glock, Interfaz de Glock debugfs
V
- Visión general, Visión general de GFS2
- funcionalidades, nuevas y cambiadas, Funcionalidades nuevas y cambiadas
- Vista general
- antes de la configuración, Antes de configurar GFS2