bcache di md atau md di bcache

11

bcache memungkinkan satu atau lebih drive disk cepat seperti solid state drive (SSD) berbasis flash untuk bertindak sebagai cache untuk satu atau lebih drive hard disk yang lebih lambat .

Jika saya mengerti dengan benar,

  • SSD * dapat ditugaskan untuk men-cache beberapa HDD pendukung, dan kemudian perangkat yang di-cache dapat di-RAIDed dengan mdadm
    atau
  • beberapa HDD dapat diretas ke dalam satu perangkat dukungan md dan SSD ditugaskan untuk menyimpannya

Saya bertanya-tanya mana yang merupakan pendekatan yang lebih waras. Terjadi pada saya bahwa menumbuhkan RAID5 / 6 mungkin lebih sederhana dengan satu atau teknik lainnya, tapi saya tidak yakin yang mana!

Adakah alasan yang bagus (mis. Menumbuhkan penyimpanan dukungan atau yang lainnya) untuk memilih satu pendekatan dari yang lain (untuk sistem file besar non-root yang berisi file dukungan VM)?


* oleh "an SSD" Maksud saya semacam perangkat SSD yang berlebihan, misalnya RAID1 dari dua SSD fisik


sumber
Dalam semua kasus semua disk yang bcachedidukung harus diformat dengan bcache- jadi Anda harus membuat mdarray, memformat disk yang dihasilkan seluruhnya sebagai bcachepartisi yang didukung, tautkan ke drive cache dan pergi dari sana, atau format banyak disk dengan bcache, tautkan ke drive cache mereka, lalu format banyak disk sebagai satu larik. Dalam kedua kasus tersebut ada beberapa titik kegagalan yang mungkin semuanya tergantung pada interoperabilitas antara dua sistem file - belum lagi fs terakhir. lihat di sini : gulir ke bawah .
mikeserv
Berkat github.com/g2p/blocks , Anda dapat mengubahnya di tempat, meskipun ada beberapa batasan untuk ini.
Adam Ryczkowski
@ mikeserv Saya mengerti semua itu, ini untuk server yang dibangun khusus jadi semuanya baik. Apa maksudmu "dua filesystem"? bcache bukan filesystem - satu-satunya filesystem yang akan saya miliki adalah XFS pada bcache terakhir atau perangkat mdadm (tergantung opsi mana yang saya pilih).
Terima kasih @Adam, konversi di tempat bukan masalah bagi saya.
@ mikeerv tidak, bukan itu. Sistem file (mis. Btrfs, xfs, extN, dll.) Hidup di atas perangkat blok. mdadm dan bcache bekerja pada level perangkat blok bukan pada level sistem file (btrf membingungkan masalah dengan pelanggaran layering, tetapi itu adalah percakapan yang sepenuhnya terpisah).

Jawaban:

4

Saya pikir caching seluruh perangkat md masuk akal.

Menempatkan bcache ke cache seluruh perangkat md mengorbankan seluruh ide untuk melakukan raid, karena ia memperkenalkan satu lagi titik kegagalan.

  • Kegagalan OTH disk SSD relatif jarang terjadi, dan bcache dapat dimasukkan ke dalam writethrough/ writearoundmode (berbeda dengan writebackmode), di mana tidak ada data yang disimpan hanya ke perangkat cache, dan kegagalan cache tidak membunuh informasi di serangan itu membuatnya menjadi opsi yang relatif aman.

  • Fakta lain adalah bahwa ada overhead komputasi signifikan dari RAID-5 lunak; ketika melakukan caching setiap anggota raid pemintalan secara terpisah, komputer masih harus menghitung ulang semua paritas, bahkan pada hit cache

  • Jelas, Anda akan mengorbankan beberapa ruang ssd mahal, jika Anda melakukan cache setiap drive berputar secara terpisah. - Kecuali Anda berencana untuk menggunakan cache SSD yang digerebek.

  • Kedua opsi ini relatif tidak memengaruhi waktu proses pertumbuhan - walaupun opsi dengan drive pemintalan yang di-cache secara terpisah berpotensi lebih lambat karena lebih banyak lalu lintas bus.

Ini adalah proses yang cepat dan relatif sederhana untuk mengkonfigurasi bcache untuk menghapus drive SSD, ketika Anda perlu menggantinya. Berkat blok itu, migrasi mungkin dimungkinkan untuk melakukan pengaturan penyerbuan dua arah di tempat.

Anda juga harus ingat, bahwa saat ini sebagian besar (semua?) Distribusi live-CD tidak mendukungbcache , jadi Anda tidak bisa begitu saja mengakses data Anda dengan alat-alat seperti itu terlepas dari opsi bcache- mdraidlayout yang Anda pilih.

Adam Ryczkowski
sumber
1
Saya telah memperbarui pertanyaan untuk menjelaskan bahwa saya tidak berencana untuk memiliki cache SSD yang tidak berlebihan. Poin kedua Anda adalah poin yang sangat bagus, terima kasih untuk itu. Anda peluru ketiga tentang ruang: maksud Anda karena Anda akan menyimpan paritas pada SSD? ulang para terakhir Anda, saya menggunakan F20 tetapi pada akhirnya akan menggunakan RHEL / CentOS7 atau Debian Jessie (jika bcache-tools membuat cut).
@JackDouglas Iklan ke-3: Ya, persis seperti itu. Tetapi karena Anda berencana untuk menggunakan drive SSD yang digerebek, itu tidak berlaku untuk Anda.
Adam Ryczkowski
1
Itu masih dilakukan karena mereka tidak hanya akan dicerminkan tetapi juga perlu menyimpan paritas RAID untuk drive pendukung. Ini tidak terjadi jika RAID dilakukan di bawah bcache yang saya pikir adalah titik Anda
Saya percaya maksud Anda sebaliknya: ssd matrix tidak harus menyimpan paritas disk pemintalan, jika diumpankan ke seluruh drive mdraid.
Adam Ryczkowski
1
ya, itulah yang saya maksud!
1

Saya pikir pendekatan yang waras adalah dengan men-cache perangkat MD yang dihasilkan.

bcache dirancang untuk melewati membaca dan menulis berurutan.

Jika Anda melakukan bcache setiap perangkat secara terpisah, secara logis, beberapa perangkat yang menggunakan MD yang digerebek atau dilucuti, akan, dari perspektif bcache, secara konstan menulis blok acak.

Sementara volume MD yang di-cache akan terlihat seperti biasa, menulis file ke volume, alih-alih blok acak ke beberapa perangkat.

Seluruh titik serangan perangkat keras dan perangkat lunak adalah melakukan striping data di backend sehingga sistem file yang dihasilkan terlihat seperti volume normal.

Ini mungkin tidak benar (karena bcache devs mungkin pintar dan memperhitungkan situasi semacam itu), tetapi hal optimal yang logis untuk dilakukan adalah dengan meng-cache volume, daripada memblokir perangkat.

mencerahkan
sumber
juga poin yang sangat bagus
Tulisan berurutan besar ke RAID5 / 6 menghasilkan penulisan berurutan untuk semua perangkat komponen. Setiap perangkat komponen mendapatkan setiap blok data N-1 (atau paritas), tetapi data yang didapat berurutan. Tetapi Anda benar bahwa itu akan mengubah keadaan. Jika ada beberapa potongan yang sering melihat partial-stripe write, menghasilkan read-memodifikasi-write (bagian dari) parity stripe, yang bisa di-cache oleh bcache. Caching lebih tinggi, sebelum penulisan parsial-strip pernah mengenai perangkat MD, akan lebih baik lagi.
Peter Cordes