Кэш SSD, чтобы минимизировать время раскрутки HDD?

8

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

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

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

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

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

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

sirprize
источник
1
Почему бы вам просто не сохранить данные на SSD за 14 дней (или сколько угодно) и написать сценарий, который запускается один раз в день и перемещает что-либо старше этого на жесткий диск? Таким образом, если вы используете что-то менее 14 дней, вы будете использовать SSD, а HDD будет писать только один раз в день. Если вам нужно что-то более старое, вы должны получить доступ к жесткому диску.
Ричард Пауэлл
Это именно то, что я сделаю, как я предложил в последнем предложении вопроса :) Одна из причин, по которой я задал вопрос, состояла в том, чтобы избежать (по общему признанию, небольшого) хлопот от необходимости раскручивать и монтировать привод вручную, а не просто имея прозрачную файловую систему.
sirprize

Ответы:

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когда вам нужно больше скорости.

Подмастерье Компьютерщик
источник
Спасибо за вклад, это мой любимый ответ. Я не знал о aufs и буду смотреть на это.
Sirprize
Прозрачность на самом деле невозможна для такого сложного процесса, как ваш - я могу придумать множество способов запуска задания резервного копирования, но вы действительно смотрите сценарии, некоторые sed / awk для выбора нужных файлов и перемещения файлы, возможно с cron. Я наполовину подозреваю, что только hdparm может решить проблему громкости с вашим жестким диском, и это позволит вам выключить диск, когда он не используется, что также может быть полезно.
Подмастерье Компьютерщик
Еще раз спасибо, я буду использовать некоторые bash-fu, cron, hdparm, mount и rsync, как предложено в последнем предложении вопроса. hdparm -M помог сделать привод немного тише, но я предпочитаю, чтобы диск вообще не вращался ночью.
sirprize
3

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

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

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

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

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

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

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

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

harrymc
источник
Спасибо за ваш отзыв, есть upvote. Я уже использую специализированное оборудование - в данном случае, абсолютно бесшумное оборудование, за исключением привода. Под «шумом» я подразумеваю нормальный звук здорового жесткого диска. Мне просто нужно будет использовать cron, чтобы раскрутить диск, смонтировать его, сделать резервную копию, размонтировать ее, а затем снова развернуть.
sirprize
2

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

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

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

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

Puppy Linux Event Manager

Этот отрывок из моего menu.lstфайла загрузчика Grub4DOS показывает настройку для параметра pmediaядра, который говорит, что он использует flashdrive вместо 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

Замечание о "вариациях" в 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, хотя точные параметры и т. Д. Могут отличаться, но я не могу их протестировать.

DocSalvager
источник
0

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

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

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

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

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

насс
источник
К сожалению, это все, чего я хотел избежать. Спасибо за ваше время, хотя!
сирприз
0

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

Dim
источник
Это абсолютно верно, и это то, что я подробно изложил в своем ответе :)
Путешественник Geek