Hosting server ZFS sebagai tamu virtual

23

Saya masih baru di ZFS. Saya sudah menggunakan Nexenta tapi saya berpikir untuk beralih ke OpenIndiana atau Solaris 11 Express. Saat ini, saya sedang mempertimbangkan virtualisasi server ZFS sebagai tamu dalam ESXi, Hyper-V atau XenServer (saya belum memutuskan yang mana - saya condong ke ESXi untuk dukungan VMDirectPath dan FreeBSD).

Alasan utama adalah bahwa sepertinya saya memiliki sumber daya yang cukup untuk berkeliling sehingga saya dapat dengan mudah membuat 1-3 VM lain berjalan secara bersamaan. Sebagian besar Windows Server. Mungkin VM Linux / BSD juga. Saya ingin server ZFS tervirtualisasi untuk meng-host semua data untuk VM lain sehingga data mereka dapat disimpan pada disk yang terpisah secara fisik dari disk ZFS (mount sebagai iscsi atau nfs).

Server saat ini memiliki AMD Phenom II dengan 6 core total (2 unlocked), 16GB RAM (maxed out) dan LSI SAS 1068E HBA dengan (7) 1TB SATA II disk terpasang (merencanakan RAIDZ2 dengan cadangan panas). Saya juga memiliki (4) 32GB SATA II SSD terpasang ke motherboard. Saya berharap untuk mirror dua SSD ke mirror boot (untuk virtual host), dan meninggalkan dua SSD lainnya untuk ZIL dan L2ARC (untuk tamu ZFS VM). Saya bersedia menambahkan dua disk lagi untuk menyimpan tamu VM dan mengalokasikan ketujuh disk saat ini sebagai penyimpanan ZFS. Catatan: Motherboard tidak memiliki dukungan IOMMU karena 880G tidak mendukungnya, tetapi saya memiliki papan 890FX yang memiliki IOMMU jika itu membuat perbedaan besar.

Pertanyaan saya adalah:

1) Apakah bijaksana untuk melakukan ini? Saya tidak melihat adanya kerugian jelas (yang membuat saya bertanya-tanya mengapa tidak ada orang lain yang menyebutkannya). Saya merasa seperti saya bisa membuat pengawasan besar dan saya benci untuk berkomitmen untuk ini, pindah semua data saya hanya untuk menjadi fubar dari beberapa menit detail yang saya lewatkan.

2) Kinerja tamu virtual ZFS? Saya bersedia untuk mengambil hit kinerja kecil tapi saya pikir jika tamu VM memiliki akses disk penuh ke disk yang paling tidak, kinerja I / O disk akan diabaikan (dibandingkan dengan menjalankan ZFS non-virtual) . Adakah yang bisa membicarakan hal ini dari pengalaman hosting server ZFS sebagai tamu VM?

osij2is
sumber
Anda mengatakan Anda ingin meng-host data untuk semua VM lainnya. Apakah Anda melihat diri Anda menginginkan deduplikasi pada titik tertentu? Jika demikian, ini harus benar-benar pada mesin itu sendiri, karena deduplikasi sangat intensif memori. Mengapa tidak melihat sesuatu seperti SmartOS untuk kebutuhan ZFS Anda? Dengan begitu Anda mendapatkan hypervisor juga.
devicenull
Saya sudah berpikir tentang dedupe tetapi untuk saat ini, tidak, saya lebih suka tidak menggunakannya. Saya akan menyelidiki SmartOS. Saya belum pernah mendengarnya jadi saya akan memeriksanya.
osij2is

Jawaban:

38

Saya telah membangun sejumlah pengaturan penyimpanan ZFS "all-in-one" ini. Awalnya terinspirasi oleh posting yang sangat baik di Ubiquitous Talk , solusi saya mengambil pendekatan yang sedikit berbeda dengan desain perangkat keras, tetapi menghasilkan hasil penyimpanan ZFS tervirtualisasi terenkapsulasi.

Untuk menjawab pertanyaan Anda:

  • Menentukan apakah ini merupakan pendekatan yang bijak benar-benar tergantung pada tujuan Anda. Apa yang ingin Anda capai? Jika Anda memiliki teknologi (ZFS) dan sedang mencari aplikasi untuk itu, maka ini adalah ide yang buruk. Anda lebih baik menggunakan pengontrol RAID perangkat keras yang tepat dan menjalankan VM Anda di partisi VMFS lokal. Itu adalah jalan yang paling tidak menentang. Namun, jika Anda memiliki alasan khusus untuk ingin menggunakan ZFS (replikasi, kompresi, keamanan data, portabilitas, dll.), Maka ini pasti mungkin jika Anda bersedia melakukan upaya.

  • Performa sangat bergantung pada desain Anda terlepas dari apakah Anda menggunakan bare-metal atau virtual. Menggunakan PCI-passthrough (atau AMD IOMMU dalam kasus Anda) sangat penting, karena Anda akan memberikan akses langsung ZFS VM Anda ke pengontrol dan disk penyimpanan SAS. Selama VM Anda dialokasikan jumlah RAM dan sumber daya CPU yang tepat, kinerjanya mendekati asli. Tentu saja, masalah desain kolam Anda. Silakan pertimbangkan mirror versus RAID Z2. ZFS berskala di vdevs dan bukan jumlah disk .


Platform saya adalah VMWare ESXi 5 dan sistem operasi berkemampuan ZFS pilihan saya adalah NexentaStor Community Edition .

Ini adalah server rumah saya . Ini adalah HP ProLiant DL370 G6 yang menjalankan ESX dari kartu SD internal. Kedua disk 72GB yang dicerminkan di tengah dihubungkan dengan pengontrol RAID Smart Array P410 internal dan membentuk volume VMFS. Volume itu menampung NexentaStor VM. Ingat bahwa mesin virtual ZFS perlu hidup di suatu tempat pada penyimpanan yang stabil.

Ada pengontrol LSI 9211-8i SAS yang terhubung ke sangkar drive drive enam disk SATA 1 TB di sebelah kanan. Ini diteruskan ke mesin virtual NexentaStor, memungkinkan Nexenta untuk melihat disk sebagai pengaturan RAID 1 + 0. Disk ini adalah drive WD10EARS Western Digital Green Green yang selaras dengan zpoolbiner yang dimodifikasi .

Saya tidak menggunakan perangkat ZIL atau cache L2ARC dalam instalasi ini.

masukkan deskripsi gambar di sini

VM memiliki 6GB RAM dan 2 vCPU dialokasikan. Dalam ESXi, jika Anda menggunakan PCI-passthrough, reservasi memori untuk jumlah penuh dari RAM yang ditugaskan VM akan dibuat.

Saya memberikan dua antarmuka jaringan NexentaStor VM. Satu untuk lalu lintas manajemen. Yang lain adalah bagian dari vSwitch yang terpisah dan memiliki antarmuka vmkernel (tanpa uplink eksternal). Ini memungkinkan VM untuk menyediakan penyimpanan NFS yang dapat dipasang oleh ESXi melalui jaringan pribadi. Anda dapat dengan mudah menambahkan antarmuka uplink untuk memberikan akses ke host di luar.

Instal VM baru Anda di datastore yang diekspor ZFS. Pastikan untuk mengatur parameter "Virtual Machine Startup / Shutdown" di ESXi. Anda ingin penyimpanan VM untuk boot sebelum sistem tamu dan ditutup terakhir.


masukkan deskripsi gambar di sini

Berikut adalah hasil bonnie ++ dan iozone yang dijalankan langsung di NexentaStor VM. Kompresi ZFS tidak aktif untuk pengujian untuk menunjukkan angka yang lebih dapat dihubungkan, tetapi dalam praktiknya, kompresi standar ZFS (bukan gzip) harus selalu diaktifkan.

# bonnie++ -u root -n 64:100000:16:64

Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
saint           12G   156  98 206597  26 135609  24   410  97 367498  21  1478  17
Latency               280ms    3177ms    1019ms     163ms     180ms     225ms
Version  1.96       ------Sequential Create------ --------Random Create--------
saint               -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
    64:100000:16/64  6585  60 58754 100 32272  79  9827  58 38709 100 27189  80
Latency              1032ms     469us    1080us     101ms     375us   16108us

# iozone -t1 -i0 -i1 -i2 -r1m -s12g

    Iozone: Performance Test of File I/O

    Run began: Wed Jun 13 22:36:14 2012

    Record Size 1024 KB
    File size set to 12582912 KB
    Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s12g
    Output is in Kbytes/sec
    Time Resolution = 0.000001 seconds.
    Throughput test with 1 process
    Each process writes a 12582912 Kbyte file in 1024 Kbyte records

    Children see throughput for  1 initial writers  =  234459.41 KB/sec
    Children see throughput for  1 rewriters        =  235029.34 KB/sec
    Children see throughput for  1 readers          =  359297.38 KB/sec
    Children see throughput for 1 re-readers        =  359821.19 KB/sec
    Children see throughput for 1 random readers    =   57756.71 KB/sec
    Children see throughput for 1 random writers    =  232716.19 KB/sec

Ini adalah grafik NexentaStor DTrace yang menunjukkan IOPS VM penyimpanan dan kecepatan transfer selama uji coba. 4000 IOPS dan 400+ Megabytes / detik cukup masuk akal untuk disk low-end tersebut. (ukuran blok besar) masukkan deskripsi gambar di sini

Catatan lain.

  • Anda akan ingin menguji SSD Anda untuk melihat apakah mereka dapat disajikan langsung ke VM atau jika DirectPath memilih seluruh pengontrol motherboard.
  • Anda tidak memiliki banyak daya CPU, jadi batasi unit penyimpanan hingga 2 vCPU.
  • Jangan gunakan RAIDZ1 / Z2 / Z3 kecuali Anda benar-benar membutuhkan ruang disk.
  • Jangan gunakan deduplikasi. Kompresi gratis dan sangat berguna untuk VM. Deduplikasi akan membutuhkan lebih banyak RAM + L2ARC agar menjadi efektif.
  • Mulai tanpa SSD dan tambahkan jika perlu. Beban kerja tertentu tidak menekan ZIL atau L2ARC .
  • NexentaStor adalah paket lengkap. Ada manfaat memiliki GUI manajemen yang solid, namun, saya pernah mendengar tentang kesuksesan dengan Napp-It .
putih
sumber
+1. Terima kasih atas semua informasinya! Untuk menjawab pertanyaan Anda, saya melakukan ini karena beberapa alasan. Saya sebagian besar melakukan ini untuk meningkatkan core CPU lain untuk membuat satu atau dua VM lain (tidak melakukan ZFS) dan untuk memberikan target iSCSI ke server virtual Opteron saya. Alasan saya untuk ZFS adalah (tanpa urutan tertentu) kompresi dan keamanan data & replikasi. Dedupe terlihat sangat keren, tetapi dalam hal sumber daya dan data saya, saya tidak yakin apakah itu perlu. Saya menggunakan Nexenta sekarang tetapi saya sedang mempertimbangkan untuk pindah ke Solaris Express atau OpenIndiana jika saya terus menumpuk pada disk untuk melebihi batas 18TB.
osij2is
Jadi, saya mengerti komentar Anda tentang apakah menggunakan SSD untuk L2ARC atau ZIL atau tidak dan saya bersedia melakukan hal itu. Lihat dulu kinerjanya, MAKA menentukan apakah akan menambahkan ZIL dan / atau ARC. Adapun mirroring vs RAIDZ, setelah membaca komentar Anda dan membaca posting blog ini ( constantin.glez.de/blog/2010/01/... ) Saya kira mirroring memiliki sedikit keunggulan. Saya tidak benar-benar membutuhkan ruang disk tetapi jika saya dapat memiliki beberapa redundansi & kemampuan baca / tulis yang cepat, saya pikir saya akan beralih ke itu. Ruang penyimpanan apa pun yang bisa saya tipu benar-benar tidak layak.
osij2is
Plus, ingat bahwa kompresi berguna. Saya membayar Nexenta komersial untuk sistem klien dan apa pun yang lebih besar dari 18TB. Tetapi tips yang sama berlaku untuk OpenIndiana.
ewwhite
Apakah Anda menggunakan vnic E1000 atau vnic VMXNet3 untuk jaringan NFS? Karena saya hanya mendapatkan 1gbps antara Nexenta / Solaris dan VMware menggunakan pengaturan yang sama dan tidak dapat menemukan cara untuk mendapatkan lebih banyak kecepatan. Versi NexentaStor apa? Saya menduga versi yang mereka miliki saat ini rusak ...
Josh