Uso de espacio en bruto de CEPH

8

No puedo entender el uso de espacio bruto ceph.

Tengo 14 HDD (14 OSD) en 7 servidores, 3 TB cada HDD ~ 42 TB de espacio bruto en total.

ceph -s 
     osdmap e4055: 14 osds: 14 up, 14 in
      pgmap v8073416: 1920 pgs, 6 pools, 16777 GB data, 4196 kobjects
            33702 GB used, 5371 GB / 39074 GB avail

Creé 4 dispositivos de bloque, 5 TB cada uno:

df -h
 /dev/rbd1       5.0T  2.7T  2.4T  54% /mnt/part1
/dev/rbd2       5.0T  2.7T  2.4T  53% /mnt/part2
/dev/rbd3       5.0T  2.6T  2.5T  52% /mnt/part3
/dev/rbd4       5.0T  2.9T  2.2T  57% /mnt/part4

df muestra que se usan 10,9 TB en total, ceph muestra que se usan 33702 GB. Si tengo 2 copias, debe ser ~ 22 TB, pero ahora tengo 33,7 TB usados ​​- 11 TB perdidos.

ceph osd pool get archyvas size
size: 2


ceph df
GLOBAL:
    SIZE       AVAIL     RAW USED     %RAW USED
    39074G     5326G       33747G         86.37
POOLS:
    NAME          ID     USED      %USED     MAX AVAIL     OBJECTS
    data          0          0         0         1840G           0
    metadata      1          0         0         1840G           0
    archyvas      3      4158G     10.64         1840G     1065104
    archyvas2     4      4205G     10.76         1840G     1077119
    archyvas3     5      3931G     10.06         1840G     1006920
    archyvas4     6      4483G     11.47         1840G     1148291

Bloquear dispositivos y OSD FS - XFS

virgismo
fuente

Respuestas:

6

Una posible fuente de confusión es GB vs. GiB / TB vs. TiB (base 10 / base 2), pero eso no puede explicar toda la diferencia aquí.

Ceph / RBD intentará asignar "perezosamente" espacio para sus volúmenes. Esta es la razón por la que, aunque creó cuatro volúmenes de 5 TB, informa 16 TB utilizados, no 20. Pero 16 TB es más que la suma del contenido "activo" de sus sistemas de archivos respaldados por RBD, que es solo alrededor de 11 TB, como usted dice. Varias cosas a tener en cuenta:

Cuando elimina archivos en sus sistemas de archivos respaldados por RBD, los sistemas de archivos marcarán internamente los bloques como libres, pero por lo general no intentarán "devolverlos" al dispositivo de bloques subyacente (RBD). Si la versión de RBD de su kernel es lo suficientemente reciente (3.18 o más reciente), debería poder usar fstrimpara devolver los bloques liberados a RBD. Sospecho que ha creado y eliminado otros archivos en estos sistemas de archivos, ¿verdad?

También hay algo de sobrecarga del sistema de archivos más allá del uso de datos netos que muestra df. Además de los "superbloques" y otras estructuras de datos internas del sistema de archivos, cabe esperar cierta sobrecarga por la granularidad a la que RBD asigna los datos. Creo que RBD siempre asignará fragmentos de 4 MB, incluso cuando solo se usa una parte de eso.

sleinen
fuente
Y estoy de acuerdo con Simon. Supongo que ambas respuestas juntas hacen una completa. por cierto. maldito seas ¿Una pregunta de 20 horas y me ganaste a responder por 35 segundos? : D
Fox
Gracias a los dos por las respuestas. Ahora entiendo dónde está mi problema y cómo resolverlo.
virgismo
Opciones posibles: 1. actualizar al kernel de Linux> 3.18 y montar con la opción de descarte; (Lo probé con el núcleo 3.19.0-1.el6.elrepo.x86_64, pero tenía puntos muertos todos los días); 2. Recree dispositivos de bloque con tamaño <5 TB (no puede reducir XFS) 3. Agregue HDD y cree OSD adicionales.
virgismo
1
Puede confirmar que esto funciona bien. Actualicé el kernel de mi máquina cliente Ceph a 3.19 el pasado fin de semana en Ubuntu LTS 14.04.3 ( sudo apt-get install --install-recommends linux-generic-lts-vivid), reinicié , volví a mapear y monté mis volúmenes rbd, ejecuté uno fstrimen cada uno de ellos y colectivamente recuperé 450 GB en un pequeño clúster de 25 TB. Una vez que actualice, asegúrese de comenzar a montar sus volúmenes rbd con la discardopción.
Brian Cline
5

No soy un experto en ceph pero déjame adivinar un poco.

Los dispositivos de bloque no se montan sin discardopción. Por lo tanto, cualquier dato que escriba y elimine no aparece en el sistema de archivos ( /mnt/part1), pero como se escribió una vez y no se recortó, permanece en el sistema de archivos subyacente.

Si observa USEDsus piscinas y las suma, obtendrá 16777 GB, lo que equivale a lo que se ceph -smuestra. Y si multiplica eso por dos (dos copias), obtiene 33554GB, que es más o menos el espacio utilizado.

zorro
fuente
1
Estoy de acuerdo con la respuesta de Fox (que fue escrita al mismo tiempo que la mía a continuación :-). discardy "recortar" son básicamente palabras diferentes para el mismo mecanismo que se puede utilizar para devolver bloques no utilizados a un dispositivo de bloque. El montaje con la discardopción debe tener el efecto deseado. Algunas personas prefieren ejecutar periódicamente fstrimpara evitar la sobrecarga de descartes continuos por parte del sistema de archivos. Tenga en cuenta que para que todo esto funcione, su controlador RBD debe ser compatible con TRIM / descarte. Como dije, el controlador de kernel RBD hace esto desde Linux 3.18; consulte tracker.ceph.com/issues/190 .
sleinen