lvm cache, primeras conclusiones

la prueba es sencilla, dd:

dd if=/dev/zero of=ficher2.img conv=fdatasync bs=384k count=20k

el escenario: un servidor con dos discos, uno mecanico y el otro ssd. el sistema instalado en sda (el mecanico) sobre un lvm llamado sistema, en un vg llamado vg01, y sdb sin usar (el ssd)

haciendo copia de un fichero al disco, la velocidad es 52MB/s

para montar el LVM cache, hacemos un pool de lvms en el ssd, un lvm para cache y otro para metadatos (de un tamaño /1000 del de la cache). Si el VG original es data:

pvcreate /dev/sdb
vgextend vg01 /dev/sdb
lvcreate -n DataLVcache -L1200G vg01 /dev/sdb
lvcreate -n DataLVcacheMeta -L200M vg01 /dev/sdb
lvconvert --type cache-pool --cachemode writeback --poolmetadata vg01/DataLVcacheMeta vg01/DataLVcache
lvconvert --type cache --chunksize 512K --cachepool vg01/DataLVcache vg01/sistema

Para ver la situacion de la cache,

lvs -a0

Para eliminar la cache,

lvremove vg01/DataLVcache

En este escenario la velocidad es de 172MB/s, muy proxima a los 177 que teniamos con el SSD SOLO.

 

pero despues de un rato haciendo escrituras el sistema muestra una cierta inestabilidad, tiempos de espera elevados. (!)

update 20160425

otros problemas:

  • errores en la bios. aleatorios.
  • los discos que use el viernes han perdido el boot (!). El problema es que en el initrd no hay modulos relacionados con dmcache, y no es capaz de desplegar el root filesystem, ni aun con el /boot en una partición separada y no cacheada. Es un error documentado desde hace un año que parece ser que en 16.04 no se ha resuelto… Una guia para resolverlo:

al eliminar un disco, sigue apareciendo como pv. PAra eliminarlo:

vgreduce –removemissing –force vg01

pero necesitamos tener check_cache, que se encuentra en el paquete thin-provisioning-tools

los dos tutoriales sobre la incidencia de reinicio e initramfs no encuentra el lvmcache. Pendientes de probar…

en realidad no necesitamos que todo el disco este en cache, solo la jerarquia donde van a ir las imagenes de nova… solo /var/lib/nova/

luego el plan seria:

1 HD de 2TB, con boot (20MB), swap (8GB), /(20GB), y /var/lib/nova(el resto) en particiones separadas

1 SSD de 250GB como cache de /var/lib/nova (250Mb de metadata, y 249GB de data cache)

un lvm para /, con 20GB

un lvm para /var/lib/nova, con el resto del espacio disponible.

el cache ocupando toda la SSD, sobre el lvm de /var/lib/nova

 

….

warning despues de montado, sobre chunksize. Solucionado con:

lvcreate -H --chunksize 512K -L1.5T   --name data  vg/cpool