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

2044
sirprize

сначала короткая версия : я ищу совместимое с 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.

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

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

5 ответов на вопрос

3
Journeyman Geek

Thats not really how or why caching works - caching is meant to take advantage of the faster speed and better random access of the SSD or other memory, rather than minimising writes to the hdd. Caching is designed to maximise speed, not reduce write, by having a smaller, faster buffer backing a large, slow storage device.

In fact, bcache, which is part of the mainline linux kernel, will simply pass on sequential writes to the hdd, rather than passing it through the SSD since there's no performance advantage.

ZIL/L2Arc uses the SSD to store logs (in the case of ZIL) and commonly used file clusters (with L2Arc). ZIL speeds up synchronous writes by storing them till they're all ready to be written. L2Arc stores commonly accessed files on faster storage. Neither of these will let you do what you need.

Fusion drive also uses a SSD and a HDD transparently putting commonly used files on the SSD for faster reads, and HDDs for bulk storage of less often used files. It too doesn't let you use the SSD as scratch space, and back up files to the main drive every so often

What you're looking at isn't caching at all, but rather periodic backups of the system to the HDD. I'm guessing ou might be able to fudge something together with Aufs -the first branch on the HDD with larger files (so it takes precidence), and a branch on the SSD, then run a script that moves files from the SSD to the HDD periodically, while having it accessable from the same location. I've not tested this out yet, but unlike caching, periodically moving files and using aufs will likely be exactly what you want.

The simplest way to sort files by age is ls -tr - t sorts by time (newest to oldest) and r reverses the order. (If you have a specific range in mind find . -mtime n works great n as a specific number gives you files modified n days ago, -n gives you files modified in the last n days and + n gives you files modified n days ago). You can find some ideas on how to use it here

Since quietness is your real goal, you can check if your drive supports silent mode with hdparm -M /dev/sda - this should output something like acoustic = 254 (128=quiet ... 254=fast), in which case you can make your hard drive quieter with the command hdparm -M 128 /dev/sda. Run the opposite command hdparm -M 1254 /dev/sda when you need more speed.

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

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

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

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

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

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

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

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

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

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

Several variations of Puppy Linux are based on Ubuntu but using Aufs.

Puppy runs entirely from RAM, there are no HDD accesses in normal operation.

If you tell Puppy that your HDD is a flash drive, it will dump the RAM filesystem to disk periodically instead of continuously. This was designed to reduce the wear of frequent writes to flashdrives but works fine on HDDs too.

As with just about everything in Puppy, you can use a GUI to set how often you want the RAM filesystem saved. Typically, this will be every 10mins or so but there's nothing to prevent setting it to dump every 720mins (12 hours) for example.

Puppy Linux Event Manager

This excerpt from my Grub4DOS bootloader menu.lst file shows the setting for the pmedia kernel option that says it is using flashdrive instead of an 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 

A note about Puppy Linux "variations"...
I'm using Puppy Linux 5.2.8 "Lupu" which is based on (built by paring down) Ubuntu 10.04 Lucid Lynx. This version is also often called "Lucid" instead of "Lupu" due to its origins. There are also versions based on Slackware and some other distributions. Since you are already using Xubuntu, Puppy Linux Lupu would be the most familiar. It would also be much faster. I used Xubuntu for about a year before finding Puppy.

There is also a much newer version based on "Ubuntu Precise Pangolin" called "Puppy Linux Precise." There are major changes to the kernel used in the newer version that may not work well with older hardware. If your machine is less than 5yo, you might be happier with Precise. I believe the technique described above will still work on Precise though the exact options, etc. may be different but am unable to test it.

0
nass

short solution and quickly implementable (but not answer to exactly what you want) is: transfer the storage disk elsewhere. it may be a netowrk file server chassi (like the WD world edition) or USB3 disk and you can have it in the same room as the quiet pc, or in a different room so as to avoid listening to it completely.

This is better in my opinion as you'll surely only be using the drive when you want to transfer data over the network - the OS may be doing some other tidy-up or filesystem tree rebalancing that you can't avoid and would disturb you. So different room is a big plus.

Caching should be easy enough - just backup the day's data onto the external disk, which you can accomplish using solutions like rsync or unison.

The longer solution is again not ideal (ie no single application) but you'll get the drive in the same box with the ssd and achieve higher speeds (but do you really need higher speed than network for just 5GB / day?):

you can use smartctl to set the spin down time of your drive and retain this drive in an unmounted state - to avoid having the OS do stuff on the drive. Then just write a script to mount and backup (as above) the data you need.

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

You wont like my answer but your 're actually abusing the term cache, you are actually describing a backup solution. Have a look at rsync, or search further for other backup solutions if you would like something more complete.

Это абсолютно верно, и это то, что я подробно изложил в своем ответе :) Journeyman Geek 10 лет назад 0

Похожие вопросы