Cache SSD untuk meminimalkan waktu pemintalan HDD?

8

versi singkat pertama : Saya mencari perangkat lunak yang kompatibel dengan Linux yang dapat secara tembolok me-cache penulisan HDD menggunakan SSD. Namun, saya hanya ingin memutar HDD sekali atau dua kali sehari (untuk menulis data cache ke HDD). Sisa waktu, HDD tidak boleh berputar karena masalah kebisingan.

Sekarang versi yang lebih panjang : Saya telah membangun komputer yang benar-benar sunyi menjalankan Xubuntu. Ini memiliki APU A10-6700T, pendingin tanpa kipas besar, PSU tanpa kipas, SSD. Masalahnya adalah: ia juga memiliki (dan membutuhkan) HDD yang berisik dan saya ingin melarangnya memutarnya pada malam hari. Semua tulisan harus di-cache di SSD, bacaan tidak diperlukan di malam hari.

Setiap hari, komputer ini akan secara otomatis mengunduh sekitar 5 GB data yang akan disimpan selama sekitar satu tahun, sehingga total kapasitas disk yang dibutuhkan kurang dari 2 TB. Data ini saat ini disimpan pada hard disk drive berisik 3 TB yang berputar siang dan malam. Terkadang, saya perlu mengakses beberapa data dari beberapa bulan yang lalu. Namun, sebagian besar waktu saya hanya membutuhkan data dari 14 hari terakhir, yang sesuai dengan SSD. Idealnya, saya ingin solusi transparan (semua data pada satu sistem file) yang menyimpan semua cache ke SSD, menulis ke HDD hanya sekali sehari. Bacaan akan dilayani oleh cache jika masih ada di SSD, jika tidak HDD harus berputar.

Saya telah mencoba bcache tanpa banyak keberhasilan (menggunakan cache_mode = writeback, writeback_running = 0, writeback_delay = 86400, sequential_cutoff = 0, congested_write_threshold_us = 0 - ada yang hilang?) Dan saya membaca tentang ZFS ZIL / L2ARC tapi saya tidak yakin saya dapat mencapainya tujuan saya dengan ZFS. Ada petunjuk?

Jika semuanya gagal, saya hanya akan menggunakan beberapa skrip untuk secara otomatis menyalin file ke drive besar sambil menghapus file tertua dari SSD.

Sunting : Cache adalah istilah yang salah untuk apa yang saya inginkan. Sepertinya solusi yang dimaksudkan tidak mungkin bagi saya saat ini. Terima kasih kepada semua orang yang berkontribusi!

sirprize
sumber
1
Mengapa Anda tidak menyimpan data selama 14 hari (atau seberapa cocok) pada SSD dan menulis skrip yang berjalan sekali sehari dan memindahkan sesuatu yang lebih tua dari itu ke HDD? Dengan cara ini jika Anda menggunakan sesuatu yang kurang dari 14 hari Anda akan menggunakan SSD dan HDD hanya akan menulis sekali sehari. Jika Anda membutuhkan sesuatu yang lebih tua, Anda harus mengakses HDD.
Richard Powell
Itulah tepatnya yang akan saya lakukan, seperti yang saya sarankan dalam kalimat terakhir dari pertanyaan :) Salah satu alasan saya mengajukan pertanyaan adalah untuk menghindari kerumitan (memang kecil) perlu memutar dan memasang drive secara manual sebagai lawan dari hanya memiliki sistem file yang transparan.
sirprize

Jawaban:

3

Itu tidak benar-benar bagaimana atau mengapa caching berfungsi - caching dimaksudkan untuk mengambil keuntungan dari kecepatan yang lebih cepat dan akses acak yang lebih baik dari SSD atau memori lain, daripada meminimalkan penulisan ke hdd. Caching dirancang untuk memaksimalkan kecepatan, bukan mengurangi penulisan, dengan memiliki penyangga yang lebih kecil, lebih cepat, mendukung perangkat penyimpanan yang besar dan lambat.

Bahkan, bcache, yang merupakan bagian dari kernel linux mainline, hanya akan meneruskan menulis berurutan ke hdd, daripada meneruskannya melalui SSD karena tidak ada keunggulan kinerja.

ZIL / L2Arc menggunakan SSD untuk menyimpan log (dalam kasus ZIL) dan kluster file yang umum digunakan (dengan L2Arc). ZIL mempercepat penulisan sinkron dengan menyimpannya sampai semuanya siap untuk ditulis. L2Arc menyimpan file yang biasa diakses di penyimpanan yang lebih cepat. Tidak satu pun dari ini akan membiarkan Anda melakukan apa yang Anda butuhkan.

Drive fusi juga menggunakan SSD dan HDD secara transparan menempatkan file yang biasa digunakan pada SSD untuk membaca lebih cepat, dan HDD untuk penyimpanan massal file yang jarang digunakan. Itu juga tidak membiarkan Anda menggunakan SSD sebagai ruang awal, dan membuat cadangan file ke drive utama sesering mungkin

Apa yang Anda lihat bukanlah caching sama sekali, melainkan cadangan sistem secara berkala ke HDD. Saya kira Anda mungkin dapat memalsukan sesuatu bersama-sama dengan Aufs - cabang pertama pada HDD dengan file yang lebih besar (sehingga perlu diprioritaskan), dan cabang pada SSD, kemudian jalankan skrip yang memindahkan file dari SSD ke HDD secara berkala, sementara itu dapat diakses dari lokasi yang sama. Saya belum menguji ini, tetapi tidak seperti caching, memindahkan file secara berkala dan menggunakan aufs akan persis seperti yang Anda inginkan.

Cara paling sederhana untuk mengurutkan file berdasarkan usia adalah ls -tr-t sort by time (terbaru ke terlama) dan r membalik urutannya. (Jika Anda memiliki rentang tertentu yang find . -mtime nberfungsi baik n sebagai angka tertentu memberi Anda file yang dimodifikasi n hari yang lalu, -n memberi Anda file yang dimodifikasi dalam n hari terakhir dan + n memberi Anda file yang dimodifikasi n hari yang lalu). Anda dapat menemukan beberapa ide tentang cara menggunakannya di sini

Karena ketenangan adalah tujuan Anda yang sebenarnya, Anda dapat memeriksa apakah drive Anda mendukung mode senyap hdparm -M /dev/sda- ini akan menghasilkan sesuatu seperti acoustic = 254 (128=quiet ... 254=fast), dalam hal ini Anda dapat membuat hard drive Anda lebih tenang dengan perintah tersebut hdparm -M 128 /dev/sda. Jalankan perintah yang berlawanan hdparm -M 1254 /dev/sdaketika Anda membutuhkan lebih banyak kecepatan.

Journeyman Geek
sumber
Terima kasih atas masukannya, ini adalah jawaban favorit saya. Saya tidak tahu tentang auf dan akan memeriksanya.
sirprize
Transparansi tidak benar-benar mungkin untuk proses yang dikumpulkan seperti milik Anda - Saya dapat memikirkan banyak cara untuk memicu pekerjaan jenis cadangan, tetapi Anda benar-benar melihat skrip, beberapa sed / awk untuk memilih file yang Anda butuhkan, dan memindahkan file, mungkin dengan cron. Saya setengah curiga hdparm saja dapat memecahkan masalah 'kenyaringan' dengan hard drive Anda secara signifikan, dan itu akan membuat Anda mematikan drive saat tidak digunakan, yang mungkin berguna juga.
Journeyman Geek
Terima kasih lagi, saya akan menggunakan beberapa bash-fu, cron, hdparm, mount dan rsync seperti yang disarankan dalam kalimat terakhir dari pertanyaan. hdparm -M memang membantu membuat drive sedikit lebih tenang, tapi saya lebih suka disk tidak berputar sama sekali pada malam hari.
sirprize
3

Karena jawaban lain telah mengatasi masalah dari sudut pandang perangkat lunak, saya berpikir untuk memasukkan beberapa informasi tentang solusi perangkat keras.

Artikel Sound Proof Hard Drive Anda mencantumkan opsi berikut:

  • Defragmentasi hard drive Anda
  • Bungkus hard drive dengan karet gelang untuk meredam getaran
  • Gunakan hard drive baru: Sebagian besar hard drive saat ini dilengkapi dengan bantalan dinamis fluida, yang memungkinkan piring-piring tetap hampir diam bahkan ketika berputar pada kecepatan yang sangat tinggi.

Saya dapat bersaksi dari pengalaman saya sendiri bahwa saya tidak pernah dapat mendengar hard disk 4 TB baru saya, bahkan ketika menyalin file yang sangat besar.

Dengan beberapa penelitian, orang juga dapat menemukan bahan peredam akustik untuk hard disk seperti SilentDrive HD Enclosure & Acoustic Materials atau NoiseMagic NoVibes III Silent Hard Drive Mounting System . Saya tidak tahu di mana ini dijual, dan karet gelang di atas bagi saya hampir sama efisiennya.

Satu juga bisa kedap suara seluruh komputer. Beberapa contoh situs web yang menjual bahan kedap suara adalah Quiet PC USA , AcousticPC atau Dynamat , tetapi ada banyak seperti itu.

Beberapa kasing komputer sudah dirancang untuk pengoperasian senyap. Lihat misalnya
Enam Kasus dengan Kebisingan Rendah, Berorientasi pada Kinerja, Diuji .

Sebagai komentar terakhir, hard drive berisik yang berdentang, mengklik, atau melengking mungkin merupakan tanda bahwa hard drive Anda mulai gagal, jadi berhati-hatilah.

harrymc
sumber
Terima kasih atas tanggapan Anda, dapatkan upvote. Saya sudah menggunakan perangkat keras khusus - dalam hal ini, perangkat keras yang benar-benar diam kecuali untuk drive. Dengan "noise" yang saya maksudkan adalah suara normal hard drive yang sehat. Saya hanya perlu menggunakan cron untuk memutar drive, me-mount-nya, membuat cadangan, unmount dan kemudian memutarnya lagi.
sirprize
2

Beberapa variasi Puppy Linux didasarkan pada Ubuntu tetapi menggunakan Aufs .

Puppy sepenuhnya berjalan dari RAM, tidak ada akses HDD dalam operasi normal.

Jika Anda memberi tahu Puppy bahwa HDD Anda adalah flash drive, itu akan membuang sistem file RAM ke disk secara berkala alih-alih terus menerus. Ini dirancang untuk mengurangi keausan penulisan ke flashdrives tetapi berfungsi dengan baik pada HDD juga.

Seperti halnya semua yang ada di Puppy, Anda dapat menggunakan GUI untuk mengatur seberapa sering Anda ingin sistem file RAM disimpan. Biasanya, ini akan menjadi setiap 10 menit atau lebih tetapi tidak ada yang mencegah pengaturan untuk membuang setiap 720 menit (12 jam) misalnya.

Manajer Acara Puppy Linux

Kutipan ini dari menu.lstfile bootloader Grub4DOS saya menunjukkan pengaturan untuk pmediaopsi kernel yang mengatakan menggunakan flashdrive bukan 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

Catatan tentang "variasi" Puppy Linux ...
Saya menggunakan Puppy Linux 5.2.8 "Lupu" yang didasarkan pada (dibangun dengan memotong) Ubuntu 10,04 Lucid Lynx. Versi ini juga sering disebut "Lucid" bukan "Lupu" karena asalnya. Ada juga versi yang didasarkan pada Slackware dan beberapa distribusi lainnya. Karena Anda sudah menggunakan Xubuntu, Puppy Linux Lupu akan menjadi yang paling akrab. Itu juga akan jauh lebih cepat. Saya menggunakan Xubuntu sekitar setahun sebelum menemukan Puppy.

Ada juga versi yang jauh lebih baru berdasarkan "Ubuntu Precise Pangolin" yang disebut "Puppy Linux Precise." Ada perubahan besar pada kernel yang digunakan dalam versi yang lebih baru yang mungkin tidak berfungsi dengan baik dengan perangkat keras yang lebih lama. Jika mesin Anda kurang dari 5yo, Anda mungkin lebih senang dengan Precise. Saya percaya teknik yang dijelaskan di atas masih akan bekerja pada Precise meskipun opsi yang tepat, dll. Mungkin berbeda tetapi saya tidak dapat mengujinya.

DocSalvager
sumber
0

solusi singkat dan cepat diimplementasikan (tetapi tidak menjawab apa yang Anda inginkan) adalah: transfer disk penyimpanan di tempat lain. mungkin berupa chassi file server netowrk (seperti edisi dunia WD) atau disk USB3 dan Anda dapat memilikinya di ruangan yang sama dengan komputer yang tenang, atau di ruangan yang berbeda untuk menghindari mendengarkannya sepenuhnya.

Ini lebih baik menurut saya karena Anda pasti hanya akan menggunakan drive ketika Anda ingin mentransfer data melalui jaringan - OS mungkin melakukan beberapa rebalancing pohon sistem file atau rapi yang tidak dapat Anda hindari dan akan mengganggu Anda . Jadi kamar yang berbeda adalah nilai tambah yang besar.

Caching seharusnya cukup mudah - cukup buat cadangan data hari ini ke disk eksternal, yang bisa Anda selesaikan menggunakan solusi seperti rsyncatau unison.

Solusi yang lebih lama lagi tidak ideal (yaitu tidak ada aplikasi tunggal) tetapi Anda akan mendapatkan drive dalam kotak yang sama dengan SSD dan mencapai kecepatan yang lebih tinggi (tetapi apakah Anda benar-benar membutuhkan kecepatan lebih tinggi dari jaringan hanya 5GB / hari?):

Anda dapat menggunakan smartctluntuk mengatur waktu putaran ke bawah drive Anda dan mempertahankan drive ini dalam keadaan unmount - untuk menghindari OS melakukan hal-hal di drive. Kemudian cukup tulis skrip ke mountdan cadangkan (seperti di atas) data yang Anda butuhkan.

tidak
sumber
Sayangnya, itu semua hal yang ingin saya hindari. Terima kasih atas waktu Anda!
sirprize
0

Anda tidak akan menyukai jawaban saya tetapi Anda sebenarnya menyalahgunakan istilah cache, Anda sebenarnya menggambarkan solusi cadangan. Lihatlah rsync, atau cari lebih jauh untuk solusi cadangan lain jika Anda menginginkan sesuatu yang lebih lengkap.

Redup
sumber
Ini benar-benar benar, dan inilah yang saya bahas secara mendalam dalam jawaban saya :)
Journeyman Geek