8

сначала короткая версия: я ищу совместимое с Linux программное обеспечение, которое способно прозрачно кэшировать записи на жесткий диск с использованием SSD. Однако я хочу раскрутить жесткий диск только один или два раза в день (чтобы записать кэшированные данные на жесткий диск). В остальное время жесткий диск не должен вращаться из-за проблем с шумом.

Теперь более длинная версия: я построил совершенно бесшумный компьютер под управлением Xubuntu. Он имеет APU A10-6700T, огромный вентилятор без вентилятора, блок питания без вентилятора, SSD. Проблема в том, что он также имеет (и нуждается) в шумном жестком диске, и я хочу запретить его раскручивать ночью. Все записи должны быть кэшированы на SSD, чтения не нужны ночью.

Каждый день этот компьютер будет автоматически загружать около 5 ГБ данных, которые будут храниться около года, а общая необходимая емкость диска будет чуть менее 2 ТБ. Эти данные в настоящее время хранятся на жестком диске объемом 3 ТБ, который вращается днем и ночью. Иногда мне нужно получить доступ к некоторым данным за несколько месяцев назад. Однако в большинстве случаев мне понадобятся только данные за последние 14 дней, которые поместятся на SSD. В идеале я хотел бы получить прозрачное решение (все данные в одной файловой системе), которое кэширует все записи на SSD и запись на HDD только один раз в день. Чтения будут обслуживаться кешем, если они все еще находятся на SDD, иначе HDD должен был бы раскрутиться.

Я попытался bcache без особого успеха (с использованием cache_mode = writeback, writeback_running = 0, writeback_delay = 86400, sequential_cutoff = 0, congested_write_threshold_us = 0 - что-нибудь пропало?) и я читал о ZFS ZIL/L2ARC, но я не уверен, что смогу достичь своей цели с ZFS. Есть указатели?

Если ничего не помогает, я просто использую некоторые сценарии для автоматического копирования файлов на большой диск при удалении самых старых файлов с SSD.

Изменить: Кэш действительно является неправильным термином для того, что я хотел. Кажется, оригинальное решение не возможно для меня в настоящее время. Спасибо всем, кто внес свой вклад!

5 ответов5

3

Это не совсем то, как или почему работает кэширование - кэширование предназначено для того, чтобы использовать преимущества более высокой скорости и лучшего произвольного доступа к SSD или другой памяти, а не сводить к минимуму количество операций записи на жесткий диск. Кэширование предназначено для максимизации скорости, а не сокращения записи благодаря наличию меньшего, более быстрого буфера, поддерживающего большое, медленное устройство хранения.

Фактически, bcache, который является частью основного ядра Linux, будет просто передавать последовательные записи на жесткий диск, а не пропускать их через SSD, так как нет никакого преимущества в производительности.

ZIL/L2Arc использует SSD для хранения журналов (в случае ZIL) и часто используемых кластеров файлов (с L2Arc). ZIL ускоряет синхронные записи, сохраняя их, пока они все не будут готовы к записи. L2Arc хранит общедоступные файлы в более быстром хранилище. Ни один из них не позволит вам делать то, что вам нужно.

Fusion Drive также использует SSD и HDD, которые прозрачно помещают часто используемые файлы на SSD для более быстрого чтения, а HDD - для массового хранения менее часто используемых файлов. Это также не позволяет вам использовать SSD в качестве чистого места, и время от времени создавать резервные копии файлов на главном диске.

То, на что вы обращаете внимание, - это не кэширование, а периодическое резервное копирование системы на жесткий диск. Я предполагаю, что вы могли бы кое-что выдумать вместе с Aufs - первой веткой на жестком диске с большими файлами (так что требуется точность) и веткой на SSD, а затем запустите сценарий, который перемещает файлы с SSD на Жесткий диск периодически, имея к нему доступ из того же места. Я еще не проверял это, но в отличие от кеширования, периодическое перемещение файлов и использование aufs, вероятно, будет именно тем, что вам нужно.

Самый простой способ сортировки файлов по возрасту - ls -tr - t сортирует по времени (от самого нового к старому) и r меняет порядок в обратном порядке. (Если у вас есть определенный диапазон, find . -mtime n прекрасно работает, так как конкретное число дает вам файлы, измененные n дней назад, -n дает вам файлы, измененные за последние n дней, а + n дает вам файлы, измененные n дней назад ). Вы можете найти некоторые идеи о том, как использовать его здесь

Так как тишина - ваша настоящая цель, вы можете проверить, поддерживает ли ваш привод тихий режим, с помощью hdparm -M /dev/sda - это должно вывести что-то вроде acoustic = 254 (128=quiet ... 254=fast) , в этом случае вы можете Сделайте ваш жесткий диск тише с помощью команды hdparm -M 128 /dev/sda . Запустите противоположную команду hdparm -M 1254 /dev/sda когда вам нужно больше скорости.

3

Поскольку другие ответы рассматривали проблему с точки зрения программного обеспечения, я подумал включить некоторую информацию об аппаратных решениях.

В статье Sound Proof your Hard Drive перечислены следующие параметры:

  • Дефрагментация вашего жесткого диска
  • Оберните жесткий диск в резиновые ленты, чтобы ослабить вибрации
  • Пойдите для нового жесткого диска: большинство жестких дисков сегодняшнего дня оснащены жидкостными динамическими подшипниками, которые позволяют пластинам оставаться почти бесшумными даже при вращении с очень высокой скоростью.

По своему опыту я могу засвидетельствовать, что никогда не слышу свой новый жесткий диск объемом 4 ТБ даже при копировании очень больших файлов.

В результате некоторых исследований можно также найти акустические демпфирующие материалы для жесткого диска, такие как корпус и акустические материалы SilentDrive HD или система крепления Silent для жесткого диска NoiseMagic NoVibes III. Я не знаю, где они продаются, а резиновые ленты выше кажутся мне почти такими же эффективными.

Можно также звукоизоляцию всего компьютера. Некоторыми примерами веб-сайтов, которые продают звукоизоляционные материалы, являются Quiet PC USA, AcousticPC или Dynamat, но их много.

Некоторые компьютерные корпуса уже предназначены для бесшумной работы. Смотри например
Испытано шесть малошумных корпусов, ориентированных на производительность.

Как последнее замечание, шумный жесткий диск, который трескается, щелкает или скрипит, может быть признаком того, что ваш жесткий диск начинает выходить из строя, поэтому будьте осторожны.

2

Несколько вариантов Puppy Linux основаны на Ubuntu, но используют Aufs.

Puppy работает полностью из оперативной памяти, при нормальной работе доступ к жестким дискам отсутствует.

Если вы скажете Puppy, что ваш жесткий диск является флэш-накопителем, он будет периодически выгружать файловую систему RAM на диск, а не непрерывно. Это было разработано для уменьшения износа частых операций записи на флэш-накопители, но отлично работает и на жестких дисках.

Как и почти все в Puppy, вы можете использовать графический интерфейс, чтобы установить, как часто вы хотите сохранить файловую систему RAM. Как правило, это будет происходить каждые 10 минут или около того, но ничто не мешает настроить его, например, на сброс каждые 720 минут (12 часов).

Puppy Linux Event Manager

Этот отрывок из моего файла menu.lst загрузчика Grub4DOS показывает настройку для параметра ядра pmedia который говорит, что он использует флэш-накопитель вместо жесткого диска ...

# 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

Заметка о Puppy Linux "вариациях" ...
Я использую Puppy Linux 5.2.8 "Lupu", который основан на (собранном путем) Ubuntu 10.04 Lucid Lynx. Эта версия также часто называется "Lucid" вместо "Lupu" из-за его происхождения. Существуют также версии на основе Slackware и некоторых других дистрибутивов. Поскольку вы уже используете Xubuntu, Puppy Linux Lupu будет наиболее знакомым. Это также будет намного быстрее. Я использовал Xubuntu около года, прежде чем нашел Puppy.

Существует также гораздо более новая версия, основанная на "Ubuntu Precise Pangolin" под названием "Puppy Linux Precise". В ядро, использованное в более новой версии, внесены серьезные изменения, которые могут не работать на старом оборудовании. Если ваша машина меньше 5 лет, вы можете быть счастливее с Precise. Я полагаю, что методика, описанная выше, все еще будет работать на Precise, хотя точные параметры и т.д. Могут отличаться, но я не могу проверить это.

0

Короткое решение и быстро реализуемое (но не отвечающее именно тому, что вы хотите): перенести диск в другое место. это может быть файл-сервер netowrk chassi (например, WD world edition) или диск USB3, и вы можете установить его в той же комнате, что и тихий компьютер, или в другой комнате, чтобы избежать его полного прослушивания.

На мой взгляд, это лучше, так как вы наверняка будете использовать диск только тогда, когда вы хотите передавать данные по сети - ОС может выполнять какую-то другую операцию восстановления баланса дерева файловой системы, которую вы не можете избежать и которая может вас беспокоить. , Такая другая комната - большой плюс.

Кэширование должно быть достаточно простым - просто скопируйте данные дня на внешний диск, что можно сделать с помощью таких решений, как rsync или unison .

Более длинное решение опять-таки не является идеальным (то есть без единого приложения), но вы получите диск в одном корпусе с ssd и достигнете более высоких скоростей (но вам действительно нужна более высокая скорость, чем сеть, всего за 5 ГБ в день?):

Вы можете использовать smartctl чтобы установить время замедления вашего диска и сохранить этот диск в отключенном состоянии - чтобы операционная система не выполняла какие-либо действия на диске. Затем просто напишите скрипт для mount и резервного копирования (как указано выше) нужных вам данных.

0

Вам не понравится мой ответ, но вы на самом деле злоупотребляете термином кеш, вы на самом деле описываете решение для резервного копирования. Посмотрите на rsync или поищите другие решения для резервного копирования, если вы хотите что-то более полное.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .