
Sheepdog adalah sistem scalable yang menyediakan perangkat blok terdistribusi ke mesin virtual. Pengembangannya dimulai pada tahun 2009 oleh pengembang dari perusahaan Jepang Nippon Telegraph dan Telephone Corporation . Sheepdog adalah aplikasi open source di bawah lisensi GPL2. Versi terbaru 0.9.3, dirilis pada November 2015, akan menjadi warisan versi 1.0, cocok untuk penggunaan komersial 1 . (sudah menjadi - perkiraan.)
Untuk kepentingan, versi pertama (0.1.0) dirilis oleh pengembang pada Agustus 2010 - dan pada saat yang sama, dukungan anjing gembala segera dimasukkan dalam cabang pengembangan QEMU utama.
Tes pertama pada anjing gembala I dilakukan pada November 2011 2 dan hasilnya bagus untuk operasi I / O. Namun, kemudian sistem Sheepdog masih memiliki masalah dengan pemulihan node yang jatuh. Masalah ini mungkin diselesaikan segera, karena pengembangan aplikasi cukup hidup, tetapi pada saat itu saya menggunakan solusi yang berbeda.
Kemungkinan
Prinsip kerja Sheepdog dijelaskan dengan sangat baik dalam presentasi yang dipublikasikan, jadi saya akan membatasi diri hanya pada tinjauan singkat.
Itu scalable
Volume gugus dapat secara sewenang-wenang ditingkatkan baik pada level node, meningkatkan kapasitas dan ruang untuk data selama operasi, dan dengan meningkatkan jumlah node. Semakin banyak node, semakin tinggi kinerja VDI I / O.
Dia sederhana
Tidak seperti sistem lain, seperti CEPH, Sheepdog tidak bekerja secara langsung dengan sistem file tetapi beroperasi dengan blok ukuran tetap, oleh karena itu ia tidak memerlukan daemon terpisah untuk melayani metadata. Semua kontrol dilakukan menggunakan alat anjing tunggal yang secara langsung berkomunikasi dengan domba
(ceph juga menggunakan objek - sekitar per.)
Menghitung simpul yang jatuh
Setiap VDI terdiri dari blok-blok (objek) yang direplikasi secara bersamaan ke beberapa node, oleh karena itu, jika salah satu dari mereka jatuh, data tetap tersedia, dan objek dari node yang jatuh mulai mereplikasi ke node lain.
Mendukung memblokir snapshot perangkat
Snapshot anjing gembala bekerja sama dengan Btrfs. Blok VDI terlampir disimpan, dan data baru ditulis ke blok baru.
Fungsi-fungsi berikut mungkin bermasalah dalam kondisi tertentu:
Sheepdog tidak mendukung SPOF
Jika VDI digunakan sebagai perangkat blok melalui QEMU, masalah dapat muncul jika terhubung secara bersamaan di beberapa tempat. SPOF 3 bisa mencegah ini. Anjing gembala tidak punya. Namun, di Sheepdog versi baru, VDI dapat diblokir agar tidak memungkinkan lebih dari satu koneksi.
Siklus hidup objek data
Objek VDI hanya dapat dihapus ketika semua klon dan foto yang terkait dengannya dihapus. Ini persis sama dengan untuk Btrfs. Oleh karena itu, menghapus foto yang tidak terpakai mungkin tidak cukup untuk memberikan ruang penyimpanan.
Daemon komunikasi
Anjing gembala sangat kecil dibandingkan dengan Ceph atau GlusterFS. Ini karena dia tidak mencoba menyelesaikan semua masalah sendiri, tetapi menggunakan secara maksimal apa yang sudah berhasil.
Pada gilirannya, ia menyediakan perangkat blok yang dapat digunakan sebagai disk fisik, serta serangan perangkat lunak, dll.
Itu hanya peduli tentang distribusi objek data antara node yang menjalankannya.
Namun, ia membutuhkan informasi yang disediakan oleh daemon komunikasi - komponen kunci yang tanpanya Sheepdog tidak akan berfungsi.
Daemon komunikasi - tidak menyediakan kemampuan untuk bertukar data antar node. Inilah yang dilakukan setan-setan domba . Melalui itu, domba hanya mengetahui simpul mana yang saat ini hidup.
corosync
Pertama-tama, Sheepdog mengasumsikan bahwa node akan berkomunikasi satu sama lain melalui corosync . Ini mendukung hingga 64 node, meskipun secara teoritis harus dapat melayani lebih banyak, penggunaannya optimal untuk cluster kecil hingga 16 node.
Biasanya, corosync juga menggunakan Pacemaker, jadi tidak perlu menginstal apa pun.
Instal corosync di Debian
Corosync ada di repositori distribusi, dan instalasinya sederhana:
$ apt-get install corosync libcorosync-common4
Pengaturan corosync
penjaga kebun binatang
Pengembang Sheepdog merekomendasikan penggunaan zookeeper untuk kluster yang lebih besar. Menurut pengembang, penyimpanan uji Sheepdog dengan 1000 node dibangun dan diuji 4 .
Instal zookeeper di Debian
$ apt-get install zookeeper zookeeperd
Meluncurkan daemon ..
$ /usr/share/zookeeper/bin/zkServer.sh start
Port default yang dijalankan zookeeper adalah 2181
Menjalankan anjing gembala dengan dukungan zookeeper:
$ sheep -c zookeeper:IP1:PORT1,IP2:PORT2,IP3:PORT3 ...other...option...
Bonus zookeeper adalah bahwa dalam kasusnya, Sheepdog memiliki konfigurasi node yang lebih jelas dan lebih mudah, tetapi ada masalah bahwa paket instalasi Debian tidak termasuk dukungannya.
Karenanya, untuk mendapatkan Sheepdog dengan dukungan zookeeper, Anda harus mengompilasinya dari kode sumber. Meskipun saya tidak dapat mengesampingkan bahwa situasinya mungkin berbeda saat ini.
(Dukungan penjaga kebun binatang masih membutuhkan kompilasi dari sumber - sekitar.)
Menyiapkan daemon domba
Node menjadi bagian dari Anjing Gembala ketika manajer objek, daemon domba , dimulai. Itu selalu berfungsi dalam dua salinan:
Contoh pertama proses dimulai sebagai gateway, yang menerima permintaan I / O dari klien (misalnya, dari driver perangkat blok QEMU), menghitung node target dan mengirimkan permintaan untuk diproses lebih lanjut di antara mereka. Artinya, ia membangun banyak koneksi jaringan.
- Lain berfungsi sebagai manajer objek lokal ( Manajer Objek )
Parameter konfigurasi daemon domba dapat diteruskan sebagai argumen baris perintah saat runtime. Jika tidak ada, nilai default akan digunakan, dan Anda harus berhati-hati:
Nomor port
Kecuali ditentukan lain, daemon domba berjalan pada port 7000
Jalur brankas
Kecuali ditentukan lain, direktori shep menggunakan direktori / var / lib / sheepdog, dan objek VDI disimpan dalam subdirektori obj
.
Secara teoritis, tidak ada yang mencegah beberapa contoh domba bekerja pada satu simpul - syarat utamanya adalah setiap orang menggunakan nomor port dan penyimpanan mereka sendiri. Masalah alamat IP dari simpul hampir terselesaikan. Setiap instance daemon domba yang berjalan pada port yang berbeda akan secara otomatis terhubung ke cluster yang ada!
Informasi penting adalah bahwa nomor port adalah bagian dari konfigurasi wadah VDI. Anda perlu tahu apakah Anda ingin mengkonfigurasi ulang daemon domba untuk dijalankan di port lain dari cluster yang ada.
Oleh karena itu, jika Anda menjalankan instance daemon domba dengan nomor port yang berbeda, tetapi dengan jalur yang sama ke toko objek, Anda dapat kehilangan informasi dalam wadah VDI yang ada.
Iblis domba sebagai pintu gerbang
Pada mesin yang tidak memiliki ruang penyimpanan untuk objek VDI, daemon domba dapat dijalankan secara eksklusif dalam mode gateway, dengan flag -G
.
Dalam hal ini, ketika mendistribusikan objek VDI, penyimpanan lokal tidak akan digunakan sama sekali, dan data akan didistribusikan secara langsung ke node lain.
Domba iblis sebagai manajer objek
Instance berjalan kedua, bertindak sebagai manajer objek lokal, menerima permintaan I / O dari instance yang dimulai sebagai gateway, dan melakukan operasi r / w di penyimpanan objek lokal ( Object storage )
Penyimpanan objek
Secara default, penyimpanan untuk objek VDI di Sheepdog adalah direktori /var/lib/sheepdog/obj
, yang juga digunakan oleh daemon domba sebagai bagian dari struktur direktori internal - ini adalah jalur penyimpanan default.
Jika Anda ingin objek VDI disimpan di tempat lain, Anda bisa melewati jalur tempat perangkat blok lain dipasang sebagai parameter saat startup.
sheep ... /cesta_do_přípojného_bodu
Bahkan ada lebih banyak cara untuk disampaikan. Versi baru Sheepdog mendukung apa yang disebut teknologi multi-perangkat, yang memungkinkan Anda untuk secara dinamis meningkatkan kapasitas memori, jika perlu, tanpa harus me-restart Sheepdog . Meningkatkan kapasitas penyimpanan bekerja mirip dengan Btrfs.
sheep ... /cesta_do_A,/cesta_do_B,/cesta_do_C
(direktori pertama yang ditentukan hanya akan digunakan untuk metadata - approx.per)
Penyimpanan tambahan juga dapat ditambahkan (atau dihapus) melalui dog node md
...
Fungsi yang ditawarkan oleh multi-perangkat sangat berguna ketika sistem file penyimpanan tidak mendukung "desain" ini (tidak seperti Btrfs atau ZFS). Secara umum, pilihan sistem file untuk menyimpan objek, properti, parameter, dan pengaturannya dapat secara signifikan mempengaruhi kinerja sistem file IO mesin virtual.
Teknologi multi-perangkat memerlukan atribut canggih di sisi file, yang bukan masalah bagi sistem file modern seperti btrfs 5 atau ext4. Tetapi beberapa sistem file lama seperti reiserfs atau ext2 6 Jangan mendukung mereka.
Jika Anda ingin menggunakan sistem file yang tidak mendukung atribut yang diperluas untuk menyimpan objek, kita perlu mengkompilasi Sheepdog tanpa dukungan multi-perangkat.
Jenis Penyimpanan - polos versus pohon
Saat memformat sebuah cluster, di antara opsi lain, Anda dapat menentukan jenis penyimpanan (penyimpanan backend). Anda dapat mengatur jenis ke dataran atau pohon . Untuk tipe biasa , struktur direktori akan terlihat seperti ini:
| |- obj | |- <id > | | |-< > | | |-< > | | |-< > | | |- ... | |- <id > | | ... |- config [] |- epoch | |- < > | |- < > | |- ... |- journal \- sheep.log []
Semua objek VDI dalam direktori obj
akan dikirim ke subdirektori yang namanya didasarkan pada pengidentifikasi era saat ini. Artinya, untuk setiap era, objek VDI yang sesuai akan disimpan secara terpisah. Namun, selama satu era, sejumlah besar objek VDI dapat muncul di direktori, yang selanjutnya memperlambat akses ke file. Oleh karena itu, Anda dapat memilih opsi kedua, yaitu pohon :
|- obj | |- aa | | |-< > | | |-< > | | |-< > | | |- ... | |- ab | | ... | |- meta | | |- < > | | |- ... | |- 0a | | ... |- config [] |- epoch | |- < > | |- < > | |- ... \- sheep.log []
Dalam jenis penyimpanan ini, daemon domba membuat satu set 256 subdirektori dengan nama 0a, ..., 99
di direktori obj
, dan kemudian menghamburkan objek berdasarkan dua karakter terakhir dari id VDI , yang unik tidak hanya untuk setiap wadah VDI tetapi juga snapshots atau klon.
Nama objek VDI
Ketika Sheepdog menyimpan data dalam wadah VDI, file akan mulai muncul di penyimpanan data obj
, masing-masing akan memiliki nama sendiri yang terdiri dari beberapa elemen:
../obj/8f/00e8b18f00000005 ^^
Dua karakter pertama menunjukkan jenis objek. Objek data dimulai dengan 00...
dan metadata (yang dapat disimpan di direktori lain) 80...
../obj/8f/00e8b18f00000005 ^^^^^^
Lalu datanglah VDI. Ini unik tidak hanya untuk setiap wadah, tetapi juga untuk snapshot atau klonnya.
../obj/8f/00e8b18f00000005 ^^ ^^
Dua digit terakhir dari pengidentifikasi VDI menunjukkan - dalam kasus jenis penyimpanan pohon - di mana subdirektori tempat objek berada.
../obj/8f/00e8b18f00000005 ^^^^^^^^
Dan pengidentifikasi wadah VDI dalam heksadesimal diikuti oleh nomor seri objek dalam wadah VDI
Era
Subdirektori epoch
berisi daftar biner dari objek-objek yang dimiliki oleh era tersebut. Jumlah zaman meningkat, setiap kali setiap cluster berubah - ketika sebuah node ditambahkan atau dihapus. Setiap perubahan tersebut memulai proses pemulihan , di mana keadaan saat ini objek lokal akan diperiksa pada node, diikuti oleh peningkatan era.
Bagaimana memilih penyimpanan objek VDI yang optimal
Kapasitas penyimpanan yang tersedia dihitung berdasarkan ruang kosong pada node. Ruang yang dipilih oleh domba selalu tergantung pada seberapa banyak ruang yang tersedia di perangkat blok tempat objek VDI disimpan.
Ukuran wadah VDI hanyalah bentuk virtual yang sama sekali tidak terkait dengan berapa banyak ruang yang ditempati objek VDI. Penting untuk mengetahui bagaimana Sheepdog memproses data dalam sebuah cluster:
Sheepdog selalu mencoba untuk menyimpan data secara merata di antara semua mesin pada zaman itu.
Ini berarti bahwa jika salah satu node jatuh, era berubah dan Sheepdog segera memulai proses pemulihan, itu akan membuat objek VDI yang hilang pada node yang tersisa untuk mengkompensasi kerugian.
Situasi serupa akan muncul ketika menambahkan node baru. Sheepdog akan mulai memindahkan objek VDI dari node baru ke repositori secara merata, sehingga persentase pengisian ruang data pada node akan seimbang mungkin. Gunakan perintah berikut untuk mendapatkan gambaran umum global tentang berapa banyak ruang yang saat ini digunakan pada node Anda:
nod1 ~ # collie node md info -A Id Size Used Avail Use% Path Node 0: 0 1.1 TB 391 GB 720 GB 35% /local/sheepdog-data/obj Node 1: 0 702 GB 394 GB 307 GB 56% /local/sheepdog-data/obj Node 2: 0 794 GB 430 GB 364 GB 54% /local/sheepdog-data/obj Node 3: 0 1.6 TB 376 GB 1.2 TB 22% /local/sheepdog-data/obj Node 4: 0 1.2 TB 401 GB 838 GB 32% /local/sheepdog-data/obj Node 5: 0 1.5 TB 370 GB 1.1 TB 24% /local/sheepdog-data/obj Node 6: 0 1.6 TB 388 GB 1.2 TB 23% /local/sheepdog-data/obj
Kinerja I / O
Penting untuk dikatakan di sini bahwa Sheepdog bekerja secara berbeda dari Ceph, dan memiliki prioritas yang berbeda.
Untuk Ceph, "bobot" perangkat OSD sangat penting ketika menempatkan objek data, serta kinerja perangkat blok, konektivitas host, dan kecepatan respons. (sebenarnya tidak - kira-kira)
Apakah Sheepdog melakukan sesuatu seperti ini, saya tidak tahu. Mungkin Data untuknya lebih dulu. Kinerja dalam hal operasi I / O adalah sekunder. Tentu saja, dengan node yang lebih kuat, kinerja I / O-nya dapat meningkat, tetapi selalu tergantung pada struktur spesifik. (Namun, tes menunjukkan kinerja anjing gembala yang lebih baik dibandingkan dengan ceph - approx.per)
Saya menambahkan node baru ke Sheepdog dengan data yang disimpan pada disk SATA II 2TB yang berputar. Kecepatan tulis maksimum untuk disk ini adalah sekitar 80M / s. Bahkan, ini sangat bervariasi karena drive SATA tidak dapat membaca dan menulis pada saat yang sama.
Awalnya, kecepatan tulis rata-rata pada VDI pada disk ini adalah sekitar 20 ~ 30M / s, karena selain data dari VDI, 392G data kontainer direplikasi sebagai bagian dari proses pemulihan. Ini berlangsung selama 6,5 jam. Kecepatan tulis berkisar antara 40 ~ 55M / s.
Jelas, dalam hal ini, kecepatan penulisan dibatasi oleh kinerja I / O dari perangkat blok lokal.
Untuk Sheepdog, aturan berikut ini berlaku: "Semakin banyak objek VDI yang ada pada node dengan koneksi cepat, semakin baik kinerja operasi I / O."
Karena fakta bahwa memindahkan objek VDI di latar belakang berarti bahwa "kematian cepat sebuah node" akan memperlambat replikasi objek data yang memakan banyak ruang, ini akan memanifestasikan dirinya sebagai penurunan kinerja operasi I / O wadah VDI.
Ruang yang ditempati
Saat menempatkan objek data, jumlah ruang kosong sangat penting untuk daemon domba . Mekanismenya tampak sederhana. Daemon domba , yang dengannya data dikomunikasikan dengan wadah VDI, dari waktu ke waktu menentukan pemanfaatan ruang yang bebas dan ditempati pada node, yang menyortirnya. Kemudian data didistribusikan di antara node dengan tingkat pemanfaatan terendah.
Jika ada jalur tulis yang paling cepat, operasi penulisan ke wadah VDI juga akan cepat. Karena semakin cepat operasi I / O dari wadah VDI dilakukan, semakin cepat daemon domba dapat melanjutkan ke operasi berikutnya.
Yang penting adalah bahwa dengan Sheepdog tidak akan ada situasi ketika salah satu node benar-benar penuh. Jika tingkat pemanfaatan pada node menjadi jauh lebih buruk, maka daemon domba mulai memindahkan objek datanya ke lokasi lain.
Sheepdog bekerja seperti halnya Btrfs - hanya menggunakan ruang yang benar-benar ditempati. Dengan demikian, Anda dapat membuat wadah VDI virtual dengan kapasitas 1 TB, yang sebenarnya akan memakan ruang sebanyak data yang disimpan di dalamnya. Dari sudut pandang ini, diinginkan untuk menggunakan format seperti disk virtual dan sistem file dalam wadah VDI sehingga dapat dibersihkan satu sama lain.
Peluncuran cluster
Sementara semua node dapat dihentikan pada saat yang sama, node tidak dapat dimulai sekaligus !!! Node harus dihubungkan secara bertahap. Dimulai dengan node yang pertama kali ditentukan dalam daftar node.
(Ini adalah pernyataan yang sangat aneh - kira-kira)
Vdi
Ini adalah singkatan umum dalam Sheepdog untuk disk virtual, bukan format spesifiknya . Secara umum, ini adalah kotak virtual dengan kompartemen ukuran tetap di mana Sheepdog kemudian menempatkan data yang ditransmisikan klien.
Membuat VDI
Sebelum kita membuat atau mengimpor VDI pertama, kita perlu memformat cluster. Saat memformat sebuah cluster, parameter ditetapkan yang kemudian akan digunakan secara default saat membuat setiap VDI berikutnya.
Contoh yang menunjukkan pembuatan VDI baru bernama Disk1 dan ukuran 1 GB
root@nod1 :~
Id
Pengidentifikasi VDI
Ukuran
Ukuran VDI yang belum tentu akan segera dialokasikan sebelumnya.
Jika VDI ini dalam format inkremental (qcow2 dan sejenisnya) yang dibuat menggunakan qemu-img convert
, itu tidak akan cocok dengan ukuran disk virtual, tetapi akan terus tumbuh.
Digunakan
Informasi tentang berapa banyak ruang yang ditempati objek data VDI.
VDI, yang tidak memerlukan alokasi objek data selama pembuatan, akan menempati apa-apa, karena objek data belum dibuat untuk itu.
Dibagikan
Volume objek data yang dibagikan oleh VDI lain
Waktu pembuatan
Waktu pembuatan VDI
Ukuran blok
Ukuran objek VDI. Perhatian! Ini tidak ditentukan dalam MB, tetapi sebagai kekuatan dua byte. Dalam versi yang lebih lama, hanya 4 MB objek ukuran tetap yang digunakan. Saat ini, VDI mungkin memiliki objek yang lebih besar. Ukuran optimal untuk objek VDI dari mesin virtual biasa terlihat seperti 64MB (26). Ukuran standar 22 (4 MB) juga minimal. Kurang tidak bisa dipasang. Semakin kecil ukuran objek, semakin besar jumlah file yang harus diproses Sheepdog saat bekerja dengan VDI, dan bekerja dengan file bukanlah masalah yang murah dari sudut pandang IO. Sejumlah besar file, terutama dengan pengontrol SATA lambat, dapat menyebabkan penurunan tajam dalam kecepatan baca dan tulis. Ukuran maksimum objek yang dapat digunakan adalah 31 (2 GB). Ini dapat bermanfaat jika VDI secara konsisten menyimpan sejumlah besar data statis, seperti cadangan.
Vdi id
Pengidentifikasi VDI.
Apa isi VDI?
Konten VDI adalah data. Ini adalah perangkat blok terdistribusi, jadi Sheepdog tidak menyelesaikan data atau sampah ini. Dari sudut pandang ini, VDI terlihat seperti volume logis LVM. VDI pra-populasi sesuai dengan partisi LV klasik dengan rentang khusus, sedangkan VDI menyerupai partisi LV tipis yang dibuat dalam kumpulan (lihat LVM (thin_provisioning)), tetapi dengan perbedaan bahwa data yang diperluas (objek) tidak disimpan secara lokal memblokir perangkat, dan tersebar di antara node.
Format VDI berfungsi dalam analogi ini sebagai sistem file. Beberapa menempati luasan yang dilindungi (objek) secara berurutan, yang lain memetakannya sebagai inode mereka, dan kemudian mengirim data secara langsung kepada mereka. Kombinasi yang salah dari sistem file penyimpanan node, format VDI, dan sistem file internal dapat menyebabkan penurunan kinerja I / O yang signifikan.
Untuk mempelajari lebih lanjut tentang format VDI, Anda dapat menggunakan info qemu-img :
root@nod1 :~# qemu-img info sheepdog:localhost:8000:disk1 image: sheepdog:localhost:8000:test2 file format: qcow2 virtual size: 12G (12884901888 bytes) disk size: 4.0G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false
Dari output perintah, Anda dapat mengetahui bahwa disk1 memiliki ukuran nominal 12G. Saat ini hanya membutuhkan 4G. Karena ini dalam format qcow2, jelas bahwa itu dibuat sebagai tambahan.
root@nod1 :~# collie vdi list Name Id Size Used Shared Creation time VDI id Copies Tag Block Size Shift disk2 0 4.0 GB 4.0 GB 0.0 MB 2015-12-04 16:07 825dc1 2 31 root@nod1 :~# qemu-img info sheepdog:localhost:8000:disk2 image: sheepdog:localhost:8000:disk2 file format: raw virtual size: 4.0G (4294967296 bytes) disk size: 4.0G root@nod1 :~# find /datastore/obj/ | grep 825dc1 /datastore/obj/meta/80825dc100000000 /datastore/obj/c1/00825dc100000000 /datastore/obj/c1/00825dc100000001
Dalam hal ini, Disk2 dibuat sebagai VDI 4 GB yang dialokasikan sebelumnya dalam format mentah dengan ukuran blok 2 GB, yang sebenarnya hanya membutuhkan dua 2 GB
Ekspor VDI ke file
Konten VDI dapat diekspor dari Sheepdog dalam beberapa cara. Mungkin yang tercepat menggunakan membaca anjing . Perintah ini agak membingungkan, tetapi hanya berarti: "Muat konten VDI dan kirimkan ke STDOUT ..", yang dapat diarahkan ke file:
root@nod1 :~
Jika VDI memiliki 10G tetapi hanya 2G yang digunakan, itu akan membuat file dengan kapasitas penuh 10 GB.
Dalam perintah ini, konten VDI tidak berubah , jadi jika konten VDI, misalnya, disk virtual dalam format qcow2 terkompresi, dapat digunakan secara langsung
.. -drive file=file:/disk1_exportovany_z_vdi,..,format=qcow2 ..
Cara lain untuk mendapatkan konten VDI ke dalam file adalah dengan menggunakan qemu-img convert . Ini tidak begitu cepat, tetapi memungkinkan Anda untuk mengubah VDI ke format lain menggunakan opsi berbeda dari format disk virtual yang sesuai.
root@nod1 :~
Cadangan tambahan
Buat cadangan tambahan
Delta antara foto pertama dan kedua ..
root@nod1 :~
Pulihkan VDI dari cadangan inkremental
root@nod1 :~
Saat mengimpor cadangan tambahan, VDI tentu saja harus memiliki snapshot dari mana cadangan dibuat.
Verifikasi dengan membaca konten asli dari tes gambar ...
root@nod1 :~
Impor VDI dari file
Mengimpor disk virtual yang ada sebagai file FS lokal dapat dilakukan dengan cara yang sama dengan ekspor. Tetapi dengan perbedaan yang digunakan penulisan anjing ("Membaca data dari STDIN dan menulis ke file VDI ..")
root@nod1 :~
- Konten hanya dapat diimpor ke VDI yang ada.
- VDI yang diimpor selalu membutuhkan lebih banyak ruang daripada file asli, karena blok data tempat VDI dipulihkan berisi data pada area yang ditandai.
Jika VDI belum ada dan kami tidak tahu berapa banyak ruang yang dibutuhkan untuk disk virtual, kami dapat menggunakan qemu-img convert
root@nod1 :~
Meskipun format VDI seperti qcow2, qed dan lainnya dapat digunakan dalam VDI. Untuk efisiensi I / O, lebih baik melakukan pra-alokasi blok data.
, Sheepdog VDI.
http://www.sheepdog-project.org/doc/vdi_read_and_write.html
VDI
VDI , .
root@nod1 :~
VDI, . Sheepdog , . , .
: 'dog node kill' , ethernet , sheep . (, Ethernet), sheep . .
IO VDI
VDI . . , IO VDI.
Sheepdog SYNC, . -, VFS, , , .
VDI Sheepdog , . . Sheepdog VDI-.
VFS-
IO VDI sheep -n . SYNC , , VFS . , VFS , , !
. , — , , .
sheep -n ...
Sheepdog . -D
- . sheep - IO — SSD . , VDI, SYNC . .
, VDI , VDI . , , , VDI.
sheep -w size=20000,directio,dir=/dir ...
size
directio
sheep , . SSD.
dir
, .
( ) dog .
VDI dog vd cashe flush , VDI!
— . VDI, VFS , (/store_dir/journal/[epoch]/[vdi_object_id]), , .
IO , (cik, cak), (sequence).
, Sheepdog VDI , , SSD-. , VDI , , VDI.
sheep —
$ sheep -j size=256M ...
, VDI , . -, — — -:
$ sheep -j dir=/dir,size=256M ...
dir = , . , SW RAID SSD.
: sheep , . , skip, .
$ sheep -j dir=/dir,size=256M,skip ...
- ↑ . 2015 . http://events.linuxfoundation.jp/sites/events/files/slides/COJ2015_Sheepdog_20150604.pdf
- ↑ http://www.abclinuxu.cz/blog/kenyho_stesky/2011/11/sheepdog-hrajeme-si-v-hampejzu
- ↑ SPOF ( S ingle p oint o f f ailure) , . SPOF VDI iSCSI tgtd
- ↑ 1
↑ Btrfs — COW, , . , -, . , , . , , . , :
autodefrag — , .
nocow — (), — GlusterFS
Btrfs , , FS, Sheepdog .
, , , Sheepdog.
↑ Ext2 . - FS Btrfs, ext2, inode. ext3 ext4 . inode , Sheepdog . , -, . , Sheepdog , dog vdi check . , ext2 , — - dog vdi md , VDI .
- ↑ , , vdi QEMU_Block_Disk
Referensi
https://github.com/collie/sheepdog/wiki — ,
http://www.osrg.net/sheepdog/ — Nippon Telegraph and Telephone Corporation
http://www.sheepdog-project.org/doc/index.html — Sheepdog 0.8.0; — Valerio Pachera
http://www.admin-magazine.com/Archive/2014/23/Distributed-storage-with-Sheepdog — Udo Seidela Sheepdog , 23- Admin 2014