Ceph Distributed File System¶
On diciembre 12, 2021 by adminCeph es un sistema de archivos de red distribuido diseñado para proporcionar un buen rendimiento, fiabilidad y escalabilidad.
Las características básicas incluyen:
- Semántica POSIX
- Escalado sin fisuras de 1 a muchos miles de nodos
- Alta disponibilidad y fiabilidad. Sin punto único de fallo.
- Replicación en N de los datos a través de los nodos de almacenamiento
- Recuperación rápida de los fallos de los nodos
- Requilibrio automático de los datos al añadir/eliminar nodos
- Fácil despliegue: la mayoría de los componentes de FS son demonios del espacio de usuario
Además,
- Instantáneas flexibles (en cualquier directorio)
- Contabilidad recursiva (archivos anidados, directorios, bytes)
A diferencia de los sistemas de archivos en clúster como GFS, OCFS2 y GPFS, que se basan en el acceso simétrico de todos los clientes a los dispositivos de bloques compartidos, Ceph separa la gestión de datos y metadatos en clústeres de servidores independientes, de forma similar a Lustre. Sin embargo, a diferencia de Lustre, los nodos de metadatos y almacenamiento se ejecutan completamente como demonios de espacio de usuario. Los datos de los archivos se distribuyen entre los nodos de almacenamiento en trozos grandes para distribuir la carga de trabajo y facilitar un alto rendimiento. Cuando los nodos de almacenamiento fallan, los datos se replican de forma distribuida por los propios nodos de almacenamiento (con una mínima coordinación por parte de un monitor de clúster), lo que hace que el sistema sea extremadamente eficiente y escalable.
Los servidores de metadatos forman efectivamente una gran caché en memoria distribuida y consistente por encima del espacio de nombres de los archivos que es extremadamente escalable, redistribuye dinámicamente los metadatos en respuesta a los cambios de la carga de trabajo y puede tolerar fallos arbitrarios (bueno, no bizantinos) de los nodos. El servidor de metadatos adopta un enfoque poco convencional del almacenamiento de metadatos para mejorar significativamente el rendimiento de las cargas de trabajo habituales. En particular, los inodos con un solo enlace son indirectorios incrustados, lo que permite cargar en su caché directorios enteros de dentrías e inodos con una sola operación de E/S. El contenido de directorios extremadamente grandes puede fragmentarse y ser gestionado por servidores de metadatos independientes, lo que permite un acceso simultáneo escalable.
El sistema ofrece un reequilibrio/migración automática de los datos cuando se pasa de un pequeño clúster de unos pocos nodos a muchos cientos, sin necesidad de que un administrador estructure el conjunto de datos en volúmenes estáticos o pase por el tedioso proceso de migración de datos entre servidores.Cuando el sistema de archivos se llena, se pueden añadir fácilmente nuevos nodos y las cosas «simplemente funcionan».
Ceph incluye un mecanismo flexible de instantáneas que permite al usuario crear una instantánea de cualquier subdirectorio (y su contenido anidado) en el sistema. La creación y el borrado de instantáneas son tan sencillos como ‘mkdir.snap/foo’ y ‘rmdir .snap/foo’.
Ceph también proporciona cierta contabilidad recursiva en directorios para archivos anidados y bytes. Es decir, un «getfattr -d foo» en cualquier directorio del sistema revelará el número total de archivos regulares anidados y subdirectorios, y una suma de todos los tamaños de archivos anidados. Esto hace que la identificación de los grandes consumidores de espacio en disco sea relativamente rápida, ya que no se requiere un análisis recursivo del sistema de archivos.
Por último, Ceph también permite establecer cuotas en cualquier directorio del sistema.La cuota puede restringir el número de bytes o el número de archivos almacenados por debajo de ese punto en la jerarquía de directorios. Las cuotas pueden establecerse utilizando los atributos extendidos ‘ceph.quota.max_files’ y ‘ceph.quota.max_bytes’, por ejemplo:
setfattr -n ceph.quota.max_bytes -v 100000000 /some/dirgetfattr -n ceph.quota.max_bytes /some/dir
Una limitación de la implementación actual de las cuotas es que depende de la cooperación del cliente que monta el sistema de archivos para detener los escritores cuando se alcanza el límite. No se puede evitar que un cliente modificado o adverso escriba tantos datos como necesite.
Opciones de montaje¶
ip=A.B.C.D Especifica la IP y/o el puerto al que el cliente debe enlazarse localmente.Normalmente no hay mucha razón para hacer esto. Si no se especifica la IP, la dirección IP del cliente se determina mirando la dirección desde la que se origina su conexión al monitor. wsize=X Especifica el tamaño máximo de escritura en bytes. Por defecto: 64 MB. rsize=X Especifica el tamaño máximo de lectura en bytes. Por defecto: 64 MB. rasize=X Especifica el tamaño máximo de lectura en bytes. Por defecto: 8 MB. mount_timeout=X Especifica el valor de tiempo de espera para el montaje (en segundos), en el caso de que un sistema de archivos Ceph no responda. El valor por defecto es de 60 segundos. caps_max=X Especifica el número máximo de tapas a mantener. Las tapas no utilizadas se liberan cuando el número de tapas supera el límite. El valor predeterminado es 0 (sin límite) rbytes Cuando se llama a stat() en un directorio, establece st_size como ‘rbytes’, la suma de los tamaños de los archivos anidados bajo ese directorio. Este es el valor predeterminado. norbytes Cuando se llama a stat() en un directorio, establece st_size en el número de entradas de ese directorio. nocrc Desactiva el cálculo de CRC32C para las escrituras de datos. Si se establece, el nodo de almacenamiento debe confiar en la corrección de errores de TCP para detectar la corrupción de datos en la carga de datos. dcache Utilizar el contenido de dcache para realizar búsquedas negativas y leer el directorio cuando el cliente tiene todo el contenido del directorio en su caché. (Esto no cambia la corrección; el cliente utiliza los metadatos almacenados en la caché sólo cuando un contrato de arrendamiento o una capacidad garantizan que son válidos). nodcache No utilice la caché como en el caso anterior. Esto evita una cantidad significativa de código complejo, sacrificando el rendimiento sin afectar a la corrección, y es útil para el seguimiento de errores. noasyncreaddir No utilizar el dcache como arriba para readdir. noquotadf Informar del uso global del sistema de archivos en statfs en lugar de utilizar la cuota del directorio raíz. nocopyfrom No utilizar la operación ‘copy-from’ de RADOS para realizar copias remotas de objetos. Actualmente, sólo se utiliza en copy_file_range, que volverá a la implementación VFS por defecto si se utiliza esta opción. recover_session=<no|clean>Establezca el modo de reconexión automática en el caso de que el cliente esté en una lista de bloqueo. Los modos disponibles son «no» y «clean». El valor por defecto es «no».
- no: nunca intenta reconectarse cuando el cliente detecta que ha sido puesto en una lista de bloqueo. Las operaciones generalmente fallarán después de ser bloqueado.
- clean: el cliente se reconecta al cluster ceph automáticamente cuando detecta que ha sido bloqueado. Durante la reconexión, el cliente elimina los datos/metadatos sucios, invalida las cachés de páginas y los gestores de archivos con capacidad de escritura. Si un nodo contiene bloqueos de archivos obsoletos, no se permite la lectura/escritura en el nodo hasta que las aplicaciones liberen todos los bloqueos de archivos obsoletos.
Deja una respuesta