Elemen dasar Platform Virtualisasi Flash (FVP), bagian 2. Menggunakan platform atau sistem file Anda sendiri

Salah satu topik yang saya diskusikan dengan Satyam dan Murali Vilayannur adalah sistem file yang digunakan untuk menyimpan data pada perangkat flash. Fakta-fakta penting berikut harus diingat: Satyam menciptakan VMFS3, Murali adalah pengembang terkemuka VMFS5. Dari sudut pandang ini, penggunaan VMFS akan tampak jelas. Namun, kejutan besar bagi saya adalah kenyataan bahwa untuk perangkat flash kami tidak menggunakan VMFS, kejutan yang lebih besar adalah bahwa kami tidak menggunakan sistem file sama sekali.

Kenapa tidak VMFS?
Sistem file menyediakan fitur yang tidak diperlukan dan kadang-kadang bahkan bertentangan dengan persyaratan platform yang memproses I / O aktif pada perangkat flash. Salah satu masalah terbesar dengan menggunakan sistem file yang mirip dengan VMFS pada perangkat flash adalah bahwa ia dioptimalkan untuk sistem penyimpanan SAN dan model manajemen datanya; Satyam menulis artikel tentang ini untuk ACM saat bekerja di VMware. Sayangnya, ini membuat sistem file alat yang tidak pantas untuk tugas FVP.

Sistem file alamat langsung membebani perangkat flash, mengurangi masa pakai, tidak secara optimal memproses operasi I / O yang sewenang-wenang, menguji algoritma pengumpulan sampah mereka (seringkali sangat rapuh) untuk kekuatan, dan objek mereka (file dan direktori) kurang cocok untuk tingkat mesin virtual dan kualitas manajemen layanan, yang sangat penting untuk tugas FVP. Bagian selanjutnya akan merinci masalah pengelolaan data pada perangkat flash, tetapi untuk sekarang kesimpulan singkat: jika perangkat flash Anda mahal untuk Anda, jangan letakkan sistem file pengalamatan langsung di atasnya.

Sistem file juga menyediakan kemampuan yang jauh melebihi kebutuhan FVP. Misalnya, kunci disk. VMFS memiliki manajer penguncian terdistribusi canggih yang mengontrol akses berbagai host ESXi ke disk. FVP mengelola disk lokal dari host dan tidak memerlukan kunci pada host lain, akibatnya, manajer kunci yang didistribusikan menjadi benar-benar berlebihan. Hal yang sama dapat dikatakan tentang kompatibilitas POSIX dan transaksi terdistribusi. Dan sebagainya.

Operasi flash tingkat rendah
Berikut adalah contoh bagaimana menulis ke perangkat flash berbeda secara mendasar dari rekaman pada hard drive. Flash tidak bisa menimpa data yang ada. Data dalam memori flash hanya dapat ditulis pada halaman kosong. Fitur memori flash adalah bahwa perekaman dapat dilakukan dengan halaman, dan menghapus hanya dapat dilakukan dalam blok. Apa itu halaman dan apa itu blok? Flash menyimpan data dalam sel; sel digabungkan menjadi halaman (4 KB); halaman dikelompokkan ke dalam blok. Sebagian besar pabrikan menggabungkan 128 halaman menjadi satu blok. Jika Anda ingin menghapus halaman, maka Anda perlu menghapus seluruh blok. Semua data yang diperlukan dari halaman lain harus disimpan di tempat lain. Telah diketahui secara luas bahwa perangkat flash memiliki siklus tulis dan hapus yang terbatas.

Akibatnya, penulisan I / O acak dapat memiliki dampak yang lebih besar dari yang Anda pikirkan. Masalahnya adalah bahwa sebagian besar sistem file dikembangkan pada tahun 80-an dan 90-an dan belum berkembang sejak saat itu. Sistem file tidak memperhitungkan penurunan kinerja yang disebabkan oleh perangkat flash menggunakan operasi tingkat rendah yang dirancang untuk hard drive; Sebagian besar produsen perangkat flash menerapkan berbagai mekanisme untuk memperhitungkan penurunan kinerja progresif. Dengan bantuan beberapa skema, kami mempertimbangkan mekanisme ini dan mencari tahu mengapa fragmentasi berdampak pada perangkat flash.

Manajemen pemakaian
Catatan, untuk kesederhanaan, saya memutuskan untuk menampilkan 9 halaman dalam satu blok, bukan 128 halaman per blok.

Mari kita mulai dengan proses manajemen keausan. Dalam contoh ini, aplikasi telah membuat data dan mencatatnya di halaman A, B dan C di blok 1 (Langkah 1). Data baru tiba (Langkah 2), yang ditulis ke halaman D, E, dan F. Aplikasi memperbarui data sebelumnya (AC) dan alih-alih menggunakan halaman sebelumnya, perangkat flash terus menggunakan halaman baru. Data baru ini diberi label A-1, B-1 dan C-1. Mendistribusikan catatan setata mungkin disebut "manajemen keausan." Halaman lama sekarang ditandai sebagai kedaluwarsa.

Pengumpulan sampah dan banyak entri
Dalam contoh ini, blok A sudah penuh, apa yang terjadi jika ruang yang tersedia untuk pengguna untuk rekaman telah habis dan data baru tiba?

Flash akan menyalin data saat ini ke sel kosong. Data aktual di blok dibaca dan ditulis ke blok lain. Data yang sudah lewat waktu akan tetap ada di halaman-halamannya dan akan dihapus bersama dengan sisa halaman-halaman blokir. Proses ini disebut "pengumpulan sampah."

Pengumpulan sampah baik-baik saja, tetapi banyak entri yang terjadi selama operasinya menyebabkan kerusakan signifikan pada perangkat flash. Untuk merekam 3 halaman, perangkat flash harus membaca 6 halaman dan menulis 6 halaman ke tempat lain sebelum dapat menulis data baru. Dan jangan lupa tentang siklus penghapusan. Misalkan skenario di mana disk penuh, di mana kita (sementara) akan memindahkan data sebelum merekam data baru? Dalam diagram saya, saya menambahkan blok B untuk opsi ini. Untuk melakukan ini dalam situasi nyata (saat menggunakan sistem file), Anda perlu mengalokasikan ruang berlebih yang disediakan oleh pengontrol flash.

Untuk melakukan ini dalam situasi nyata (saat menggunakan sistem file), Anda perlu mengalokasikan ruang berlebih yang disediakan oleh pengontrol flash

Kelebihan ruang
Kapasitas flash dapat dicadangkan untuk proses yang dikelola oleh pengontrol flash. Ini dapat dilakukan oleh pabrikan perangkat flash dan oleh pengguna. Misalnya, ketika Anda membeli akselerator flash PCIe 160 GB, pada kenyataannya, Anda mendapatkan kartu 192 GB. 160 GB tersedia untuk pengguna dan 32 GB dicadangkan tambahan untuk operasi tingkat pengontrol tingkat flash, seperti pengumpulan sampah, koreksi kesalahan, dan firmware pengontrol. Ketika Anda membeli drive SSD non-industri, Anda biasanya mendapatkan sedikit ruang berlebih yang dipesan. Saat memformat perangkat flash ini dalam sistem file apa pun, Anda harus mengetahui fitur-fitur ini dan, mungkin, memesan ruang tambahan di luar kapasitas yang tersedia. Saat ini tidak ada rekomendasi penskalaan standar, jadi Anda harus membuat pilihan berdasarkan pengalaman Anda sendiri. Dalam kasus terburuk, Anda akan menemukan diri Anda dengan disk terfragmentasi dan SSD harus terus-menerus mentransfer data untuk menulis yang baru. Bayangkan anak-anak bermain tag, hanya pola gerakannya yang sedikit lebih rumit.

Mempertimbangkan kembali manajemen data pada perangkat flash
Insinyur PernixData telah mengembangkan format baru untuk mengelola data pada perangkat flash untuk FVP. Detail akan diungkapkan dalam artikel berikut, dan sekarang beberapa poin mendasar.

Dioptimalkan untuk flash
Format ini dirancang untuk menyimpan data I / O sementara dengan set metadata seminimal mungkin, dan bekerja dengan perangkat flash dengan kinerja maksimum yang tersedia untuknya. Itu mengkonversi entri acak menjadi yang berturut-turut, untuk mengambil keuntungan dari kinerja flash yang lebih tinggi dalam mode tulis berurutan. Ini mengurangi jumlah data yang berlebihan menimpa dan menghapus siklus. Dan algoritma tidak mengandung batasan warisan dari sistem file, seperti ukuran blok besar, direktori, file, transaksi panjang, manajer kunci, dll.

Kapasitas yang dibagikan secara dinamis antara mesin virtual
Terima kasih integrasi yang dalam Dengan VMkernel, FVP dapat melacak blok data dan menentukan apakah mesin virtual mereka membaca atau menulis. Secara independen melacak operasi tersebut, platform dapat skala membaca dan menulis buffer dalam ruang yang dialokasikan untuk mesin virtual. FVP dapat melakukan cache atau menghapus set data mesin virtual sewenang-wenang dari cache. Sebaliknya, kebijakan evakuasi data pada sistem file tradisional untuk perangkat flash akan menjadi kurang optimal dan akan menghasilkan banyak penulisan ulang, karena sistem file hanya dapat menulis data ke akhir file atau menghapus blok dari akhir juga.

Ini juga berarti bahwa Anda tidak perlu menetapkan konfigurasi ruang cache statis untuk setiap mesin virtual, karena jika Anda menggunakan sistem file dengan pengalamatan langsung. Itu adalah keputusan besar bagi kami; pengalaman pengguna dari produk harus seintuitif mungkin.

Saya mengutip manajer produk kami Bala: "Keanggunan produk, menurut pendapat saya, adalah bahwa ia melakukan tugas-tugas dasar, TIDAK memerlukan tindakan baru atau tidak biasa dari pengguna."

Dalam hal pekerjaan sehari-hari, ini luar biasa: Anda tidak perlu melakukan pra-skala cache untuk setiap mesin virtual. Ini berarti Anda tidak perlu tahu dan memprediksi penggunaan flash di masa depan - FVP akan melakukan segalanya untuk Anda. Kurangnya alokasi sumber daya yang keras berarti kurangnya penggunaan flash oleh mesin virtual yang tidak dibongkar dan munculnya siklus pembersihan blok yang berlebihan untuk mesin virtual aktif dengan ukuran cache flash yang tidak mencukupi. Ini meminimalkan masalah banyak perekaman dan memastikan kinerja dan keandalan maksimum perangkat flash.

Artikel asli .

Sejak 2016, FVP ditarik dari penjualan.

Kenapa tidak VMFS?
Apa itu halaman dan apa itu blok?
Misalkan skenario di mana disk penuh, di mana kita (sementara) akan memindahkan data sebelum merekam data baru?