Aturan praktis yang saya gunakan untuk disk IO adalah:
75 IOP per spindle untuk SATA.
150 IOP per spindle untuk FC / SAS
1500 IOP per spindle untuk SSD.
Serta IOP per array juga mempertimbangkan IOP per terabyte. Ini tidak biasa berakhir dengan rasio TIO per TB yang sangat buruk jika melakukan SATA + RAID6. Ini mungkin tidak terdengar terlalu banyak, tetapi Anda akan sering berakhir dengan seseorang melihat 'ruang kosong' pada sebuah array, dan ingin menggunakannya. Sudah umum bagi orang untuk membeli gigs dan mengabaikan iops, padahal yang terjadi justru sebaliknya di sebagian besar sistem perusahaan.
Kemudian tambahkan biaya penalti tulis untuk RAID:
- 2 untuk RAID1, RAID1 + 0
- 4 untuk RAID5 (atau 4)
- 6 untuk RAID6.
Denda tulis dapat dikurangi sebagian dari cache tulis besar yang bagus dan dalam kondisi yang tepat. Jika Anda memiliki banyak IO menulis berurutan (seperti log DB), Anda dapat mengurangi hukuman penulisan pada RAID 5 dan 6 secara signifikan. Jika Anda dapat menulis garis penuh (mis. Satu blok per spindel), Anda tidak harus membaca untuk menghitung paritas.
Asumsikan 8 + 2 RAID 6 set. Dalam operasi normal untuk satu tulisan IO Anda perlu:
- Baca blok 'diperbarui'.
- Baca blok paritas pertama
- Baca blok paritas kedua
- Hitung ulang paritas.
- tulis semua 3. (6 IO).
Dengan penulisan garis penuh yang di-cache - misalnya 8 'potongan' berturut-turut ukuran garis RAID Anda dapat menghitung paritas pada keseluruhan lot, tanpa perlu membaca. Jadi, Anda hanya perlu 10 penulisan - satu untuk setiap data, dan dua paritas.
Ini membuat penalti tulis Anda 1.2.
Anda juga harus ingat bahwa menulis IO mudah untuk di-cache - Anda tidak perlu langsung masuk ke disk. Ini beroperasi di bawah batasan waktu lunak - selama rata-rata tulisan Anda tidak melebihi kecepatan spindle, semuanya akan dapat berjalan pada 'kecepatan cache'.
Baca IO di sisi lain, menderita kendala waktu - Anda tidak dapat menyelesaikan pembacaan sampai data diambil. Algoritma caching dan loading cache menjadi penting pada saat itu - pola baca yang dapat diprediksi (misalnya berurutan, seperti yang akan Anda dapatkan dari cadangan) dapat diprediksi dan diambil sebelumnya, tetapi pola baca acak tidak dapat.
Untuk database, saya biasanya menyarankan Anda berasumsi bahwa:
sebagian besar IO 'basis data' Anda adalah pembacaan acak. (mis. buruk untuk akses acak) Jika Anda mampu membayar overhead, RAID1 + 0 baik - karena disk yang dicerminkan memberikan dua sumber bacaan.
sebagian besar IO 'log' Anda adalah penulisan berurutan. (mis. bagus untuk caching, dan bertentangan dengan apa yang akan disarankan banyak DBA, Anda mungkin ingin RAID50 daripada RAID10).
Rasio keduanya sulit sulit dikatakan. Tergantung apa yang DB lakukan.
Karena baca acak IO adalah kasus terburuk untuk caching, di sinilah SSD benar-benar masuk ke dalamnya - banyak produsen tidak repot-repot caching SSD karena itu tentang kecepatan yang sama pula. Jadi terutama untuk hal-hal seperti database temporer dan indeks, SSD memberikan pengembalian investasi yang baik.