¿Caché SSD para minimizar el tiempo de activación de HDD?

8

Versión corta primero : estoy buscando un software compatible con Linux que sea capaz de almacenar en caché de forma transparente las escrituras de HDD usando un SSD. Sin embargo, solo quiero girar el HDD una o dos veces al día (para escribir los datos en caché en el HDD). El resto del tiempo, el HDD no debería girar debido a problemas de ruido.

Ahora la versión más larga : he construido una computadora completamente silenciosa que ejecuta Xubuntu. Tiene una APU A10-6700T, un enorme refrigerador sin ventilador, una fuente de alimentación sin ventilador, SSD. El problema es: también tiene (y necesita) un HDD ruidoso y quiero prohibir girarlo durante la noche. Todas las escrituras deben almacenarse en caché en el SSD, las lecturas no son necesarias en la noche.

A lo largo de todos los días, esta computadora descargará automáticamente unos 5 GB de datos que se conservarán durante aproximadamente un año, dando una capacidad total de disco necesaria de poco menos de 2 TB. Estos datos se almacenan actualmente en una unidad de disco duro ruidosa de 3 TB que gira día y noche. A veces, necesito acceder a algunos datos de hace varios meses. Sin embargo, la mayoría de las veces solo necesitaré datos de los últimos 14 días, que se ajustarían en el SSD. Idealmente, me gustaría una solución transparente (todos los datos en un sistema de archivos) que almacena en caché todas las escrituras en el SSD, escribiendo en el HDD solo una vez al día. Las lecturas serían atendidas por el caché si todavía estuvieran en el SSD, de lo contrario, el HDD tendría que girar.

He intentado bcache sin mucho éxito (usando cache_mode = writeback, writeback_running = 0, writeback_delay = 86400, sequential_cutoff = 0, congested_write_threshold_us = 0 - ¿falta algo?) Y leí sobre ZFS ZIL / L2ARC pero no estoy seguro de poder lograrlo Mi objetivo con ZFS. Cualquier puntero?

Si todo lo demás falla, simplemente usaré algunos scripts para copiar automáticamente los archivos en la unidad grande mientras elimino los archivos más antiguos del SSD.

Editar : Caché realmente es el término incorrecto para lo que quería. Parece que la solución original prevista no es posible para mí en este momento. ¡Gracias a todos los que contribuyeron!

sirprize
fuente
1
¿Por qué no guardas 14 días (o por mucho ajuste) de datos en el SSD y escribes un script que se ejecuta una vez al día y mueve algo más antiguo que eso al HDD? De esta manera, si usa algo de menos de 14 días, usará el SSD y el HDD solo escribirá una vez al día. Si necesitara algo más antiguo, tendría que acceder al HDD.
Richard Powell el
Eso es exactamente lo que haré, como sugerí en la última oración de la pregunta :) Una de las razones por las que hice la pregunta fue para evitar la molestia (ciertamente pequeña) de tener que girar y montar la unidad manualmente en lugar de solo teniendo un sistema de archivos transparente.
sirprize el

Respuestas:

3

Eso no es realmente cómo o por qué funciona el almacenamiento en caché: el almacenamiento en caché está destinado a aprovechar la velocidad más rápida y un mejor acceso aleatorio del SSD u otra memoria, en lugar de minimizar las escrituras en el disco duro. El almacenamiento en caché está diseñado para maximizar la velocidad, no reducir la escritura, al tener un búfer más pequeño y más rápido que respalda un dispositivo de almacenamiento grande y lento.

De hecho, bcache, que es parte del núcleo principal de Linux, simplemente pasará escrituras secuenciales al disco duro, en lugar de pasarlo a través del SSD ya que no hay una ventaja de rendimiento.

ZIL / L2Arc usa el SSD para almacenar registros (en el caso de ZIL) y grupos de archivos de uso común (con L2Arc). ZIL acelera las escrituras sincrónicas almacenándolas hasta que estén listas para ser escritas. L2Arc almacena archivos de acceso común en un almacenamiento más rápido. Ninguno de estos le permitirá hacer lo que necesita.

La unidad Fusion también usa una SSD y una HDD que coloca de manera transparente los archivos de uso común en la SSD para lecturas más rápidas, y las HDD para el almacenamiento masivo de archivos de uso menos frecuente. Tampoco le permite usar el SSD como espacio de memoria virtual y hacer copias de seguridad de los archivos en la unidad principal de vez en cuando

Lo que estás viendo no es el almacenamiento en caché, sino más bien copias de seguridad periódicas del sistema en el HDD. Supongo que podría ser capaz de falsificar algo junto con Aufs: la primera rama en el HDD con archivos más grandes (por lo que es necesario), y una rama en el SSD, luego ejecute un script que mueva los archivos del SSD al HDD periódicamente, mientras se puede acceder desde la misma ubicación. Todavía no lo he probado, pero a diferencia del almacenamiento en caché, mover archivos periódicamente y usar aufs probablemente sea exactamente lo que desea.

La forma más sencilla de ordenar los archivos por antigüedad es ls -tr - t ordena por tiempo (de más reciente a más antiguo) y r invierte el orden. (Si tiene un rango específico en mente, find . -mtime nfunciona muy bien n ya que un número específico le da archivos modificados hace n días, -n le da archivos modificados en los últimos n días y + n le da archivos modificados hace n días). Puedes encontrar algunas ideas sobre cómo usarlo aquí

Dado que la tranquilidad es su objetivo real, puede verificar si su unidad admite el modo silencioso hdparm -M /dev/sda; esto debería generar algo así acoustic = 254 (128=quiet ... 254=fast), en cuyo caso puede hacer que su disco duro sea más silencioso con el comando hdparm -M 128 /dev/sda. Ejecute el comando opuesto hdparm -M 1254 /dev/sdacuando necesite más velocidad.

Journeyman Geek
fuente
Gracias por el aporte, esta es mi respuesta favorita todavía. No sabía sobre aufs y lo investigaré.
sirprize
La transparencia no es realmente posible para un proceso por lotes como el suyo: puedo pensar en muchas formas de activar un trabajo de tipo de copia de seguridad, pero realmente está buscando secuencias de comandos, algunas sed / awk para seleccionar los archivos que necesita y moverse los archivos, tal vez con cron. Sospecho a medias que hdparm solo puede resolver el problema de "volumen" de su disco duro de manera significativa, y le permitirá apagar el disco cuando no esté en uso, lo que también podría ser útil.
Journeyman Geek
Gracias de nuevo, usaré algunos bash-fu, cron, hdparm, mount y rsync como se sugiere en la última oración de la pregunta. hdparm -M ayudó a que la unidad fuera un poco más silenciosa, pero prefiero que el disco no gire durante la noche.
sirprize el
3

Como las otras respuestas han tratado el problema desde el punto de vista del software, pensé en incluir información sobre soluciones de hardware.

El artículo Sound Proof your Hard Drive enumera las siguientes opciones:

  • Desfragmenta tu disco duro
  • Envuelva el disco duro con bandas de goma para amortiguar las vibraciones.
  • Elija un nuevo disco duro: la mayoría de los discos duros actuales están equipados con cojinetes dinámicos fluidos, que permiten que los platos permanezcan casi silenciosos incluso cuando giran a una velocidad muy alta.

Puedo testificar por mi propia experiencia que nunca puedo escuchar mi nuevo disco duro de 4 TB, incluso cuando copio archivos muy grandes.

Con un poco de investigación, también se pueden encontrar materiales de amortiguación acústica para el disco duro, como el gabinete SilentDrive HD y los materiales acústicos o el sistema de montaje de disco duro silencioso NoiseMagic NoVibes III . No sé dónde se venden, y las bandas de goma de arriba me parecen casi tan eficientes.

También se puede insonorizar toda la computadora. Algunos sitios web de ejemplo que venden materiales de insonorización son Quiet PC USA , AcousticPC o Dynamat , pero hay muchos de estos.

Algunas cajas de computadoras ya están diseñadas para un funcionamiento silencioso. Consulte, por ejemplo,
Seis casos de bajo ruido orientados al rendimiento, probados .

Como último comentario, un disco duro ruidoso que hace ruido, clics o chirridos puede ser una señal de que su disco duro está empezando a fallar, así que tenga cuidado.

harrymc
fuente
Gracias por sus comentarios, tenga un voto positivo. Ya estoy usando hardware especializado, en este caso, hardware completamente silencioso, excepto la unidad. Por "ruido" me refiero al sonido normal de un disco duro saludable. Simplemente tendré que usar cron para hacer girar el disco, montarlo, hacer una copia de seguridad, desmontarlo y luego volver a bajarlo.
sirprize el
2

Varias variaciones de Puppy Linux se basan en Ubuntu pero usan Aufs .

Puppy se ejecuta completamente desde RAM, no hay accesos HDD en funcionamiento normal.

Si le dice a Puppy que su HDD es una unidad flash, volcará el sistema de archivos RAM al disco periódicamente en lugar de hacerlo continuamente. Esto fue diseñado para reducir el desgaste de las escrituras frecuentes en unidades flash, pero también funciona bien en discos duros.

Al igual que con casi todo en Puppy, puede usar una GUI para configurar la frecuencia con la que desea guardar el sistema de archivos RAM. Por lo general, esto será aproximadamente cada 10 minutos, pero no hay nada que impida configurarlo para que se descargue cada 720 minutos (12 horas), por ejemplo.

Puppy Linux Event Manager

Este extracto de mi menu.lstarchivo de cargador de arranque Grub4DOS muestra la configuración de la pmediaopción del kernel que dice que está usando flashdrive en lugar de un HDD ...

# menu.lst produced by grub4dosconfig-v1.7.1
#
# 'kernel ... pmedia=ideflash'
#     Treat the HDD as a flashdrive: infrequent writes of filesystem to savefile

title Puppy Lupu 5.2.8 (sda3/puppy528lu) Cached\nUse SWAP; changes to RAM; flush to disk every 10min (fastest)
  find --set-root --ignore-floppies --ignore-cd /puppy528lu/initrd.gz
  kernel /puppy528lu/vmlinuz   psubdir=puppy528lu pmedia=ideflash pfix=copy,fsck
  initrd /puppy528lu/initrd.gz

Una nota sobre las "variaciones" de Puppy Linux ...
Estoy usando Puppy Linux 5.2.8 "Lupu", que está basado en Ubuntu 10.04 Lucid Lynx. Esta versión también se llama a menudo "Lucid" en lugar de "Lupu" debido a sus orígenes. También hay versiones basadas en Slackware y algunas otras distribuciones. Como ya estás usando Xubuntu, Puppy Linux Lupu sería el más familiar. También sería mucho más rápido. Usé Xubuntu durante aproximadamente un año antes de encontrar Puppy.

También hay una versión mucho más nueva basada en "Ubuntu Precise Pangolin" llamada "Puppy Linux Precise". Hay cambios importantes en el kernel utilizado en la versión más reciente que pueden no funcionar bien con hardware antiguo. Si su máquina tiene menos de 5 años, puede ser más feliz con Precise. Creo que la técnica descrita anteriormente seguirá funcionando en Precise, aunque las opciones exactas, etc. pueden ser diferentes, pero no puedo probarlo.

DocSalvager
fuente
0

La solución corta e implementable rápidamente (pero no responde exactamente a lo que desea) es: transferir el disco de almacenamiento a otro lugar. puede ser un servidor de archivos netowrk chassi (como la edición mundial de WD) o un disco USB3 y puede tenerlo en la misma habitación que la PC silenciosa, o en una habitación diferente para evitar escucharlo por completo.

En mi opinión, esto es mejor, ya que seguramente solo usará la unidad cuando desee transferir datos a través de la red : el sistema operativo puede estar haciendo algún otro arreglo o reequilibrio del árbol del sistema de archivos que no puede evitar y lo molestaría . Tan diferente habitación es una gran ventaja.

El almacenamiento en caché debería ser bastante fácil: solo haga una copia de seguridad de los datos del día en el disco externo, lo que puede lograr utilizando soluciones como rsynco unison.

La solución más larga no es ideal (es decir, no hay una sola aplicación), pero obtendrá la unidad en la misma caja con el SSD y alcanzará velocidades más altas (¿pero realmente necesita una velocidad más alta que la red por solo 5 GB / día?):

puede usar smartctlpara configurar el tiempo de inactividad de su unidad y mantener esta unidad en un estado desmontado, para evitar que el sistema operativo haga cosas en la unidad. Luego, solo escriba un script mounty haga una copia de seguridad (como arriba) de los datos que necesita.

nass
fuente
Desafortunadamente, esas son todas las cosas que quería evitar. ¡Gracias por tu tiempo!
sirprize
0

No le gustará mi respuesta, pero en realidad está abusando del término caché, en realidad está describiendo una solución de respaldo. Eche un vistazo a rsync o busque otras soluciones de respaldo si desea algo más completo.

Oscuro
fuente
Esto es absolutamente cierto, y es lo que cubrí en profundidad en mi respuesta :)
Journeyman Geek