¿Cómo instalo y uso flashcache / bcache para almacenar en caché HDD en SSD?

52

Quiero saber si hay alguien que haya intentado instalar y ejecutar su kernel construido con flashcache o bcache para el almacenamiento en caché SSD.

¿Cómo lo lograste?

kapad
fuente
Buena pregunta. He estado sugiriendo flashcache en algunas de mis respuestas ( 1 , 2 ). Parece la herramienta para el trabajo, al lado de dm-cache. También es relevante para todos aquellos que buscan una alternativa a Intel Smart Response para Ubuntu / Linux.
gertvdijk
Yo también lo estaba viendo como una alternativa a Intel SRT. El arco wiki aquí dice, en pocas palabras, que no es para los débiles de corazón. El problema es que estoy planeando jugar con él en mi única PC tanto para trabajar como para jugar :), por lo que estaba aprensivo y esperaba obtener una guía aquí. ¿Cree que será posible ejecutar ubuntu en una máquina virtual y tener una unidad (basada en archivo) en el disco, una en el SSD (nuevamente, basada en archivo) para probar? Dispuesto a
probar
Buena pregunta, pero ¿se considera completa una respuesta que utiliza máquinas virtuales como banco de pruebas? Mucha gente no tiene el hardware necesario para responder realmente a esto.
RobotHumans
44
¿Ya probaste esto para Flashcache? gerrit-tamboer.net/…
jasmines
44
dm-cache ahora se ha fusionado en la versión estable del kernel de Linux 3.9. Supongo que esta pregunta de 26 votos merece una respuesta ahora. :)
gertvdijk

Respuestas:

10

Bueno, obtuvimos una respuesta bcache pero no una respuesta flashcache. Elegí flashcache porque ya tenía una instalación existente, por lo que bcache estaba fuera de discusión. Para mí, también parecía más fácil de configurar. Elegí el método DKMS para no quedarme atascado reconstruyendo el módulo / las herramientas cada vez que obtenía una actualización del kernel.

Estos pasos se describen en README-DKMS en Github.

Construyendo el Módulo

  1. Lo primero que debe hacer es instalar los requisitos previos del edificio:

    sudo apt-get install dkms build-essential linux-headers-$(uname -r) git
    
  2. Luego enganche la fuente:

    git clone git://github.com/facebook/flashcache; cd flashcache
    
  3. Construye e instala los módulos:

    make -f Makefile.dkms
    

Crear un dispositivo flashcache

(En este ejemplo, uso el almacenamiento en caché de reescritura, el valor predeterminado, pero flashcache también puede hacer reescritura y escritura)

Almacenamiento en caché de un dispositivo no root (no montado en /)

sudo flashcache_create -p back fcache /dev/sdbX /dev/sdaX Donde fcache es el dispositivo creado (/ dev / mapper / fcache), / dev / sdaX es la partición SSD (o el disco completo) y / dev / sdbX es la partición HDD.

Almacenamiento en caché de su dispositivo raíz

Hay algunos pasos más si está almacenando en caché su dispositivo raíz. Necesitará un Ubuntu LiveCD / USB para esta sección.

  1. cd /path/to/flashcache/source

  2. make -f Makefile.dkms boot_conf

  3. Edite /boot/grub/grub.cnf y / etc / fstab para arrancar desde / dev / mapper / fcache (no creo que este paso sea realmente necesario, pero dice que sí). Asegúrese de anotar el UUID de su dispositivo raíz original.

  4. Reinicie con el LiveCD / LiveUSB.

  5. Monte su dispositivo raíz: mount /dev/sda4 /mnt(/ dev / sda4 es mi partición raíz de Linux)

  6. cd /mnt/path/to/flashcache/source

  7. sudo apt-get install dkms build-essential linux-headers-$(uname -r)

  8. make; sudo make install No es necesario hacer toda la configuración de DKMS en el entorno en vivo

  9. Desmontar el dispositivo raíz sudo umount /mnt

  10. sudo flashcache_create -p back fcache /dev/sdbX /dev/disk/by-uuid/[UUID] Donde fcache es el dispositivo creado (debe ser el mismo que puso en / etc / fstab y /boot/grub/grub.cnf, en mi caso fue fcache), / dev / sdbX es la partición SSD (o el disco completo ) y [UUID] es el UUID de su partición raíz.

  11. ¡Reiniciar!

Advertencias al usar el dispositivo raíz

Una molestia menor cuando se usa flashcache para el dispositivo raíz es que grub-probe no puede detectar el dispositivo raíz y puede estropear el menú de arranque para que tenga dos entradas de Ubuntu. Pero, no debería importar cuál use en toda la realidad ya que el make -f Makefile.dkms boot_confpaso anterior instala algunos scripts en su initrd que detectarán y usarán el dispositivo flashcache.

Chuck R
fuente
2
Veo que al menos en raring hay paquetes para flashcache-dkms y flashcache-utils. ¿Cómo cambiaría la instalación?
ivant
¿Oh enserio? No me habia dado cuenta. También estoy ejecutando Raring, pero lo instalé desde el repositorio de Git. Tendría que mirar el paquete, pero puedo imaginar que sería capaz de saltear las primeras dos secciones y aún ejecutar el proceso de arranque de un dispositivo raíz.
Chuck R
1
El paquete flashcache-dkms de ubuntu 13.10 no incluye módulos flashcache y binarios a initramfs, por lo tanto, si flashcache su raíz, no podrá iniciarlo. He creado un error: bugs.launchpad.net/ubuntu/+source/flashcache/+bug/1290148 He creado flashcache desde la fuente como se describe anteriormente y pude arrancar la siguiente cadena: sda7 -> flashcache -> dm- cripta -> lvm -> ext4. Simplemente agregue el flashcache dev a / etc / crypttab y update-initramfs -u
Martin Vysny
¿puede agregar un comentario con los cambios que tuvo que hacer en el archivo grub?
kapad
Ya no modifico grub.cfg, no parece necesario. Sin embargo, puede hacer un cambio como este: linux /boot/vmlinuz-3.19.0-51-lowlatency root=UUID=0a540b91-5990-4df0-bc99-5d6e2cd3fed6 ro recovery nomodeseta linux /boot/vmlinuz-3.19.0-51-lowlatency root=/dev/mapper/fcache ro recovery nomodeset(es decir, cambiar la raíz = parámetro)
Chuck R
12

Hay una herramienta de conversión para habilitar bcache en un dispositivo existente (divulgación: lo escribí). También es el camino a seguir para realizar nuevas instalaciones, ya que los instaladores de distribución actuales no saben cómo crear dispositivos bcache (en cuyo caso: comience por instalar en el HDD).

Consulte la conversión de su sistema de archivos raíz a bcache en el archivoblocks README para obtener instrucciones.

bcache requiere Linux 3.10 o más reciente, que es descarado, y se puede instalar manualmente desde http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D (busque la versión etiquetada más nueva , actualmente v3.11.5-saucy, e instale las debs que coincidan con su arquitectura).

bcache-toolsy blocksse puede instalar desde mi ppa de almacenamiento .

Gabriel
fuente
1
Esta herramienta está rota para la versión actual (15.04) de Ubuntu; ver github.com/g2p/maintboot/issues/1 y github.com/g2p/blocks/issues/13
Jean Jordaan
En realidad, la herramienta en sí no está rota actualmente (probado ayer en un disco duro de 350 GB). Sin embargo las versiones actuales no se pueden utilizar para convertir los discos del sistema ( /, /home, /usr/, ...) mientras el sistema está en funcionamiento (como maintboot se rompe). Como alternativa, puede usar una memoria USB en vivo, instalarla blocksallí y usarla para convertir sus discos. Sin embargo, tenga en cuenta que esta herramienta solo funciona en las tablas de partición MBR y GPT primarias y requiere 1MiB de espacio adicional antes de cada partición.
ntninja
5

Advertencia previa: bcache no se puede usar para su instalación actual de Ubuntu. Si necesita almacenamiento en caché SSD para su sistema operativo, debe esperar una versión futura o especial del instalador de Ubuntu que pueda configurar su caché SSD. Vea esta respuesta de Oli aquí: ¿bcache requiere una instalación nueva?

Para todos los demás que desean una unidad bcache para datos que no sean del sistema operativo:

Lo primero que debe hacer es actualizar su kernel si está usando 13.04 o anterior usando el PPA de la línea principal del kernel. Las instrucciones para usar esto se pueden encontrar aquí:

https://wiki.ubuntu.com/Kernel/MainlineBuilds

Asegúrese de seleccionar el kernel 3.9 o superior al arrancar o no funcionará y su unidad desaparecerá.

Instale bcache-tools, en este momento tendrá que instalar desde el repositorio de git:

git clone http://evilpiepirate.org/git/bcache-tools.git

Si logras empacar bcache-toolspara Debian, avísanos y esta pregunta se actualizará por ti. ( bcache-toolsLas dependencias de compilación son uuid-devy libblkid-dev. Deben estar instaladas para compilar bcache-tools).

Una vez que tenga todas las herramientas en su lugar, está listo para probar y seguir la guía aquí:

http://atlas.evilpiepirate.org/git/linux-bcache.git/tree/Documentation/bcache.txt

Esta guía muestra cómo formatear las unidades (SSD Y disco duro) y luego unirlas para crear un nuevo bloque de dispositivo usando bcache. Publique un comentario si encuentra las instrucciones confusas y actualizaré esta respuesta con simplificaciones.

Martin Owens -doctormo-
fuente
¿Es posible crear un disco de inicio que ejecute el kernel 3.9 y luego crear la unidad bcache e instalar ubuntu encima de esta unidad?
kapad
kapad: debería ser posible, pero tendrías que asegurarte de que la instalación de ubuntu tuviera los controladores adecuados disponibles en el momento del arranque y es posible que debas hacer un arranque fuera de bcache para que grub pueda encontrarlo.
Martin Owens -doctormo-
2

Pensé en venir aquí y comentar lo que se me ocurrió cuando instalé un nuevo núcleo. Estaba usando flashcache solo para mi partición / home / carpeta. Instalé un nuevo kernel, lo inicié y se detuvo durante el arranque y dijo que no podía encontrar / dev / mapper / home_cached, hay 3 opciones que tiene cuando recibe este mensaje y elijo la opción de iniciar sesión como root y Intenta arreglarlo. Primero intenté cargar el módulo flashcache y me dijo que no podía encontrarlo. Así que pensé que tendría que compilarlo e instalarlo para este nuevo núcleo que acabo de instalar. Todavía tenía la carpeta / flashcache / ubicada dentro de / root /, así que hice un CD y corrí

make -f Makefile.dkms boot_conf

entonces corrí

make install

luego cargué el módulo flashcache con

modprobe flashcache

entonces solo tuve que cargar mi dispositivo flashcache existente que era

flashcache_load /dev/sdb1

entonces solo monte mi partición de casa con

mount /home

luego salga del inicio de sesión como root con exit en la línea de comando y debería continuar arrancando normalmente. ¡todo listo!

Ubu the Tech Guru
fuente
Tengo curiosidad por saber si esto todavía funciona, terminé cambiando y sin usar flashcache por más tiempo, simplemente instalé Arch en el SSD de 64 GB (el núcleo de Linux cree que solo tiene 32 GB) debido al firmware interno. Pude ver que esto es beneficioso como una unidad de almacenamiento en caché para algunos juegos de vapor.
Ubu the Tech Guru