Meningkatkan IO dengan FlashCache

14

Saya memiliki server dengan 2 HDD (2x 1 TB), berjalan di RAID 1 (SW-RAID). Saya ingin meningkatkan kinerja IO dengan menggunakan flashcache. Ada menjalankan mesin virtual KVM di atasnya, menggunakan LVM.

Mengenai ini, saya punya pertanyaan berikut:

  • Apakah ini akan berhasil? flashcacheberfungsi untuk perangkat blok, namun ini semua mesin virtual dengan pengaturannya sendiri.
  • Berapa banyak yang saya harapkan untuk meningkatkan kinerja? Sebagian besar mesin virtual menjalankan situs web dan beberapa permainan host.
  • Seberapa besar kebutuhan SSD? Apakah SSD yang lebih besar akan meningkatkan kinerja karena dapat menyimpan lebih banyak file?
  • Apa yang terjadi jika SSD mati? Akan flashcachemengambil file dari HDD tradisional dan saya hanya bisa mengganti SSD?
  • Seberapa cepat writebackdibandingkan dengan writethroughdan writearound?

Sayangnya, saya tidak memiliki akses ke sistem pengujian, jadi bisakah saya menginstal flashcachedi server langsung tanpa melepas disk? Saya menemukan tutorial yang bagus di sini yang akan saya gunakan.

Devator
sumber
Saya pikir Anda akan menikmati kinerja yang lebih konsisten jika Anda dapat menggunakan SSD sebagai drive utama Anda.
ewwhite
Tidak ada akses ke sistem pengujian? Yang Anda butuhkan hanyalah workstation dengan HDD, SSD, dan mesin virtual dengan dua disk virtual (satu berada di setiap perangkat). Sistem produksi tidak dimaksudkan untuk digunakan sebagai laboratorium pembelajaran.
Skyhawk
Tautan mati pada tutorial yang Anda sebutkan. Adakah tempat lain yang bisa saya temukan info itu?
Thaeli

Jawaban:

18

Flashcache, bagi mereka yang belum melihatnya, adalah metode untuk memperpanjang cache blok-Linux dengan drive SSD. Ini lebih murah daripada menjalankan server dengan setengah TB RAM hanya untuk caching.

Apakah ini akan berhasil?

Itu harus. Linux block-cache bekerja dengan cara caching blok yang diakses , bukan file . Selama Anda tidak memberikan mesin KVM akses langsung ke perangkat blok (Anda tidak), Linux Block Cache akan dimainkan. Namun, jika Anda sedang memberikan mesin KVM akses blok-perangkat langsung jawabannya ada kurang jelas.

Jika Anda menggunakan disk virtual yang didukung file, itu pasti akan berfungsi.

Jika Anda menggunakan disk virtual yang didukung LV, saya tidak tahu.

Berapa banyak yang saya harapkan untuk meningkatkan kinerja?

Itu adalah sesuatu yang tidak bisa kami jawab. Itu tergantung pada berbagai hal. Secara abstrak, Anda akan mendapatkan kinerja terbaik untuk mengukur SSD Anda menjadi lebih besar dari set blok aktif. Jika Anda mendapatkan caching yang sempurna, kinerja Anda akan sama dengan menjalankan seluruh sistem Anda pada SSD. Yang akan Anda lakukan secara efektif.

Seberapa besar kebutuhan SSD?

Mencari tahu ukuran pasti yang Anda butuhkan adalah sesuatu yang tidak dapat kami bantu. Lebih banyak lebih baik, tentu saja, tetapi menemukan rasio yang tepat antara cache-SSD dan penyimpanan utama bukan hal yang mudah.

Rumitnya ini adalah penulisan yang diatur untuk segera dihapus, seperti operasi sistem file tertentu dan beberapa konfigurasi basis data. Tulisan-tulisan itu hanya akan di-cache sebentar, dan kinerjanya tidak akan terpengaruh dengan ada atau tidaknya flashcache.

Apa yang terjadi jika SSD mati?

Hal yang sama terjadi ketika Anda memberitahu Linux untuk drop-cache tetapi dengan twist. Dengan drop-cache, semua penulisan tanpa blush yang ada di blok-cache akan dibuang ke disk. Apa yang terjadi ketika SSD menghilang tergantung pada mode caching :

Writethrough : Semua penulisan ditulis ke cache dan penyimpanan utama secara paralel, sehingga kemungkinan hilangnya SSD secara tiba-tiba yang menyebabkan kesalahan pada VM sangat kecil.

Writearound : Semua tulisan ditulis ke penyimpanan utama dan hanya di-cache saat dibaca. Tidak ada kemungkinan kesalahan dalam VM.

Writeback : Semua tulisan pergi ke Cache terlebih dahulu, dan ditulis ke penyimpanan utama di latar belakang. Kemungkinan besar menyebabkan kesalahan pada VM Anda jika SSD gagal, dan saya tidak akan menggunakan mode ini dalam produksi.

Seberapa jauh akan lebih cepat dibandingkan dengan writethrough dan writearound?

Tergantung pada seberapa banyak tulisan yang Anda lakukan. Jika penulisan Anda secara berkala memenuhi penyimpanan utama Anda, peningkatan kinerja bisa jadi cukup signifikan. Jika Anda kebanyakan membaca dengan beberapa penulisan, Anda tidak akan melihat peningkatan.

Juga, writeback adalah kebijakan buruk untuk apa yang Anda lakukan jadi jangan gunakan itu.

sysadmin1138
sumber
1
Hai sysadmin, terima kasih atas jawaban komprehensif Anda. Saya tidak akan menggunakan writebackkarena bisa merusak segalanya tanpa BBU. Saya tidak akan menggunakan caching SSD sama sekali, tetapi hanya SSD biasa. Terima kasih lagi!
Devator
4

Ya, itu akan berfungsi dengan baik selama Anda menggunakan perangkat blok yang tepat. Dan ada sebuah trik.

Ketika LVM memindai PV, ia harus melihat partisi melalui hard drive itu sendiri, dan melalui perangkat "virtual" flashcache juga.

Satu gejala yang jelas adalah bahwa alat LVM mengeluh tentang duplikat PV.

Cara mengatasinya, untuk menghindari peringatan tersebut dan yang lebih penting, pastikan bahwa perangkat flashcache digunakan oleh LVM2, adalah untuk menyesuaikan filter /etc/lvm/lvm.conf.

Halaman LVM.CONF(5)manual akan menjelaskannya lebih baik daripada saya, tetapi saya akan meninggalkan Anda dengan sebuah contoh, jika semua volume fisik didukung oleh flashcache:

filter = [ "a/.*dm.*/" ]
Pierre Carrier
sumber
1

Beberapa aplikasi membuka file dengan cara yang tidak buffer.

http://man7.org/linux/man-pages/man2/open.2.html

O_DIRECT (Sejak Linux 2.4.10) Cobalah untuk meminimalkan efek cache I / O ke dan dari file ini. Secara umum ini akan menurunkan kinerja, tetapi berguna dalam situasi khusus, seperti ketika aplikasi melakukan caching mereka sendiri. File I / O dilakukan langsung ke / dari buffer ruang pengguna. Bendera O_DIRECT sendiri berupaya untuk mentransfer data secara serempak, tetapi tidak memberikan jaminan bendera O_SYNC bahwa data dan metadata yang diperlukan ditransfer. Untuk menjamin I / O sinkron, O_SYNC harus digunakan selain O_DIRECT. Lihat CATATAN di bawah untuk diskusi lebih lanjut.

Sebagai contoh, ini sangat umum untuk database. Jadi periksa ulang apakah flashcache berfungsi dengan set aplikasi ini.

Tagar
sumber