Pemacu storan Docker termasuk: 1. AUFS, iaitu pemacu storan peringkat fail 2. Overlay, iaitu Union FS 3. Pemeta peranti, yang merupakan mekanisme rangka kerja; yang juga merupakan Pemacu storan peringkat fail 5. ZFS, sistem fail serba baharu.
Persekitaran pengendalian artikel ini: sistem Windows 7, Docker versi 20.10.11, komputer Dell G3.
Apakah pemacu storan docker lima prinsip pemacu storan dan senario aplikasinya
1 Docker pada mulanya menggunakan AUFS sebagai sistem failnya Terima kasih kepada konsep lapisan AUFS, berbilang Kontena boleh berkongsi imej yang sama. Walau bagaimanapun, memandangkan AUFS tidak disepadukan ke dalam kernel Linux dan hanya menyokong Ubuntu, mempertimbangkan isu keserasian, pemacu storan telah diperkenalkan dalam Docker versi 0.7 Pada masa ini, Docker menyokong
AUFS, Btrfs, Device mapper, OverlayFS dan. ZFSLima jenis pemacu storan. Seperti yang dinyatakan di laman web rasmi Docker, tiada pemacu tunggal yang sesuai untuk semua senario aplikasi Hanya dengan memilih pemacu storan yang sesuai mengikut senario berbeza prestasi Docker boleh dipertingkatkan dengan berkesan. Bagaimana untuk memilih pemacu storan yang sesuai? Anda mesti terlebih dahulu memahami prinsip pemacu storan untuk membuat pertimbangan yang lebih baik Artikel ini memperkenalkan penjelasan terperinci tentang lima prinsip pemacu storan Docker dan perbandingan senario aplikasi dan ujian prestasi IO. Sebelum bercakap tentang prinsip, mari kita bercakap tentang dua teknologi salin-tulis dan peruntukan-tulis. 1. Copy-on-write (CoW)
Teknologi yang digunakan oleh semua pemandu - copy-on-write (CoW). CoW adalah copy-on-write, yang bermaksud menyalin hanya apabila penulisan diperlukan. Ini adalah untuk senario pengubahsuaian fail sedia ada. Contohnya, jika berbilang Bekas dimulakan berdasarkan imej, jika setiap Bekas diperuntukkan sistem fail yang serupa dengan imej, ia akan mengambil banyak ruang cakera. Teknologi CoW membenarkan semua bekas berkongsi sistem fail imej Semua data dibaca daripada imej Hanya apabila fail hendak ditulis, fail yang akan ditulis disalin daripada imej ke sistem failnya sendiri untuk pengubahsuaian. . Oleh itu, tidak kira berapa banyak bekas berkongsi imej yang sama, operasi tulis dilakukan pada salinan yang disalin daripada imej ke sistem failnya sendiri, dan fail sumber imej tidak akan diubah suai, dan berbilang operasi kontena dilakukan serentak. Fail akan menghasilkan salinan dalam sistem fail setiap bekas. Setiap bekas mengubah suai salinannya sendiri, yang diasingkan antara satu sama lain dan tidak menjejaskan satu sama lain. Menggunakan CoW boleh meningkatkan penggunaan cakera dengan berkesan.
2. Peruntukan atas permintaan
Peruntukan atas permintaan digunakan dalam senario di mana fail pada asalnya tidak wujud, hanya apabila fail baharu hendak ditulis . Peruntukkan ruang sebelum memperuntukkan ruang, yang boleh meningkatkan penggunaan sumber storan. Sebagai contoh, apabila bekas dimulakan, beberapa ruang cakera tidak akan diperuntukkan terlebih dahulu untuk bekas itu Sebaliknya, ruang baharu akan diperuntukkan atas permintaan apabila fail baharu ditulis.
2. Lima prinsip asas pemacu storan
1
AUFSAUFS (AnotherUnionFS ) ialah Union FS, yang merupakan
pemacu storan peringkat fail. AUFS boleh menindih sistem fail berlapis secara telus pada satu atau lebih sistem fail sedia ada, menggabungkan berbilang lapisan ke dalam perwakilan satu lapisan sistem fail. Ringkasnya, ia menyokong pemasangan direktori yang berbeza pada sistem fail di bawah sistem fail maya yang sama . Sistem fail ini boleh mengubah suai fail lapisan demi lapisan. Tidak kira berapa banyak lapisan di bawah adalah baca sahaja, hanya sistem fail paling atas sahaja boleh ditulis. Apabila fail perlu diubah suai, AUFS mencipta salinan fail, menggunakan CoW untuk menyalin fail daripada lapisan baca sahaja ke lapisan boleh tulis untuk pengubahsuaian, dan hasilnya juga disimpan dalam lapisan boleh tulis. Dalam Docker, lapisan baca sahaja di bawahnya ialah imej, dan lapisan boleh tulis ialah Container. Strukturnya adalah seperti yang ditunjukkan di bawah:
2
TindanTindan disokong selepas kernel Linux 3.18. , juga merupakan Union FS Berbeza daripada berbilang lapisan AUFS, Overlay hanya mempunyai dua lapisan:
sistem fail atas dan sistem fail bawah, masing-masing mewakili lapisan imej Docker dan lapisan kontena. Apabila fail perlu diubah suai, CoW digunakan untuk menyalin fail daripada bahagian bawah baca sahaja ke bahagian atas boleh tulis untuk pengubahsuaian, dan hasilnya juga disimpan di lapisan atas. Dalam Docker, lapisan baca sahaja di bawahnya ialah imej, dan lapisan boleh tulis ialah Container. Strukturnya adalah seperti yang ditunjukkan di bawah:
3
Pemeta perantiPemeta peranti disokong oleh kernel Linux 2.6.9 dan kemudiannya Ia menyediakan mekanisme rangka kerja dari peranti logik kepada peranti fizikal Di bawah mekanisme ini, pengguna boleh dengan mudah merumuskan dan melaksanakan pengurusan sumber storan mengikut keperluan mereka sendiri. AUFS dan OverlayFS yang dinyatakan sebelum ini ialah storan peringkat fail, manakala Pemeta peranti ialah storan peringkat blok Semua operasi dilakukan secara langsung pada blok, bukan fail. Pemacu pemeta Peranti akan mula-mula membuat kumpulan sumber pada peranti blok, dan kemudian mencipta peranti asas dengan sistem fail pada kumpulan sumber Semua imej ialah syot kilat peranti asas ini dan bekas ialah syot kilat imej. Oleh itu, sistem fail yang dilihat dalam bekas ialah petikan sistem fail peranti asas pada kumpulan sumber dan tiada ruang diperuntukkan untuk bekas. Apabila fail baharu ditulis, blok baharu diperuntukkan untuknya dalam imej bekas dan data ditulis Ini dipanggil peruntukan masa . Apabila anda ingin mengubah suai fail sedia ada, gunakan CoW untuk memperuntukkan ruang blok untuk petikan kontena, salin data untuk diubah suai ke blok baharu dalam petikan kontena, dan kemudian ubah suainya. Pemacu pemeta peranti akan mencipta fail 100G yang mengandungi imej dan bekas secara lalai. Setiap bekas adalah terhad kepada volum 10G dan boleh dikonfigurasikan dan dilaraskan sendiri. Strukturnya adalah seperti yang ditunjukkan di bawah: 4 Btrfs Btrfs dipanggil generasi seterusnya menulis. masa Salin sistem fail dan gabungkannya ke dalam kernel Linux Ia juga merupakan pemacu storan peringkat fail , tetapi ia boleh mengendalikan peranti asas secara langsung seperti pemeta Peranti. Btrfs mengkonfigurasi sebahagian daripada sistem fail sebagai sistem subfail yang lengkap, dipanggil subvolume. Menggunakan subvolum, sistem fail yang besar boleh dibahagikan kepada berbilang sistem subfail ini berkongsi ruang peranti asas dan diperuntukkan daripada peranti asas apabila ruang cakera diperlukan, sama seperti cara aplikasi memanggil malloc() kepada. memperuntukkan ingatan. Untuk menggunakan ruang peranti secara fleksibel, Btrfs membahagikan ruang cakera kepada beberapa bahagian. Setiap bahagian boleh menggunakan strategi peruntukan ruang cakera yang berbeza. Contohnya, beberapa bahagian hanya menyimpan metadata dan beberapa bahagian hanya menyimpan data. Model ini mempunyai banyak kelebihan, seperti Btrfs menyokong penambahan peranti yang dinamik. Selepas pengguna menambah cakera baharu pada sistem, dia boleh menggunakan arahan Btrfs untuk menambah peranti pada sistem fail. Btrfs menganggap sistem fail yang besar sebagai kumpulan sumber dan mengkonfigurasinya ke dalam berbilang sistem subfail yang lengkap juga boleh ditambahkan pada kumpulan sumber Imej asas ialah petikan sistem subfail -imej dan bekas Masing-masing mempunyai syot kilat sendiri, dan syot kilat ini semuanya syot kilat subvolum. Apabila fail baharu ditulis, blok data baharu diperuntukkan untuknya dalam petikan bekas dan fail itu ditulis dalam ruang ini. Ini dipanggil peruntukan masa. Apabila anda ingin mengubah suai fail sedia ada, gunakan salinan CoW untuk memperuntukkan data asal dan syot kilat baharu, tukar data dalam ruang yang baru diperuntukkan ini, dan kemudian kemas kini struktur data yang berkaitan untuk menghala ke sistem subfail baharu dan syot kilat, data asal asal Dan syot kilat tidak mempunyai penuding yang menunjuk kepadanya dan ditulis ganti. 5 ZFS Sistem fail ZFS ialah sistem fail baharu yang revolusioner yang secara asasnya mengubah pengurusan sistem fail Dengan cara ini, ZFS sepenuhnya. meninggalkan "pengurusan volum" dan tidak lagi mencipta volum maya sebaliknya, ia menumpukan semua peranti ke dalam kumpulan storan untuk pengurusan Menggunakan konsep "kolam storan" untuk mengurus Ruang storan fizikal . . Pada masa lalu, sistem fail dibina pada peranti fizikal. Untuk mengurus peranti fizikal ini dan menyediakan lebihan untuk data, konsep "pengurusan volum" menyediakan imej peranti tunggal. ZFS dibina pada kolam storan maya yang dipanggil "zpools". Setiap kolam storan terdiri daripada beberapa peranti maya (vdevs). Peranti maya ini boleh menjadi cakera mentah, peranti cermin RAID1 atau kumpulan berbilang cakera dengan tahap RAID bukan standard. Sistem fail pada zpool kemudiannya boleh menggunakan jumlah kapasiti storan peranti maya ini. Mari kita lihat penggunaan ZFS dalam Docker. Mula-mula, peruntukkan sistem fail ZFS dari zpool ke lapisan asas imej, dan lapisan imej lain adalah klon petikan sistem fail ZFS ini. Syot kilat adalah baca sahaja, dan klon boleh ditulis dalam cermin. Lapisan paling atas menghasilkan lapisan yang boleh ditulis. Seperti yang ditunjukkan di bawah: Apabila menulis fail baharu, gunakan peruntukan atas permintaan, blok data baharu dijana daripada zpool, data baharu ditulis pada blok ini dan ruang baharu ini disimpan dalam bekas (klon ZFS). Apabila anda ingin mengubah suai fail sedia ada, gunakan copy-on-write untuk memperuntukkan ruang baharu dan salin data asal ke ruang baharu untuk melengkapkan pengubahsuaian. 3. Perbandingan pemacu storan dan senario penyesuaian 1 AUFS VS Tindan AUFS dan Overlay adalah kedua-dua sistem fail bersama, tetapi AUFS mempunyai berbilang lapisan, manakala Tindanan hanya mempunyai dua lapisan, jadi apabila melakukan operasi salin atas tulis, jika fail itu besar dan wujud Untuk lapisan bawah, AUSF mungkin lebih perlahan. Selain itu, Overlay disepadukan ke dalam barisan utama kernel linux, tetapi AUFS tidak, jadi ia mungkin lebih pantas daripada AUFS. Tetapi Tindanan masih terlalu muda dan harus digunakan dalam pengeluaran dengan berhati-hati. Sebagai pemacu storan pertama Docker, AUFS mempunyai sejarah yang panjang, agak stabil, telah diamalkan dalam sejumlah besar pengeluaran dan mempunyai sokongan komuniti yang kuat. Sumber terbuka semasa DC/OS menentukan penggunaan Tindanan. 2 Tindan VS Pemeta peranti Tindanan ialah storan peringkat fail dan pemeta Peranti adalah peringkat blok storan. Apabila Fail sangat besar dan kandungan yang diubah suai adalah sangat kecil akan menyalin keseluruhan fail tanpa mengira saiz kandungan yang diubah suai memerlukan lebih banyak masa daripada fail yang kecil, dan fail peringkat blok, sama ada besar atau kecil, hanya Menyalin blok yang perlu diubah suai bukanlah keseluruhan fail Dalam senario ini, pemeta peranti jelas lebih pantas. Oleh kerana tahap blok mengakses cakera logik secara langsung, ia sesuai untuk senario intensif IO. Untuk senario dengan program dalaman yang kompleks, konkurensi yang besar tetapi sedikit IO, prestasi Overlay secara relatifnya lebih kukuh. 3. Pemeta peranti VS Pemacu Btrfs VS ZFS Kedua-dua Pemeta Peranti dan Btrfs Ia beroperasi secara langsung pada blok dan tidak menyokong storan dikongsi Ini bermakna apabila berbilang bekas membaca fail yang sama, berbilang salinan perlu disimpan Oleh itu, pemacu storan ini tidak sesuai untuk digunakan pada platform PaaS bekas berketumpatan tinggi. Selain itu, apabila banyak bekas dimulakan dan dihentikan, ia boleh menyebabkan limpahan cakera dan menyebabkan hos tidak dapat berfungsi. Pemeta peranti tidak disyorkan untuk kegunaan pengeluaran, Btrfs boleh menjadi sangat cekap dalam binaan buruh pelabuhan. Pembelajaran yang disyorkan: "tutorial buruh pelabuhan"
ZFS pada asalnya direka untuk pelayan Salaris dengan jumlah memori yang besar, jadi ia akan memberi kesan pada memori apabila digunakan, dan sesuai untuk persekitaran dengan memori yang besar. COW ZFS menjadikan masalah pemecahan lebih serius Untuk fail besar yang dijana oleh penulisan berurutan, jika sebahagian daripadanya diubah secara rawak pada masa hadapan, alamat fizikal fail pada cakera keras tidak lagi berterusan, dan bacaan berurutan akan datang akan Prestasi. akan menjadi lebih miskin. ZFS menyokong berbilang bekas yang berkongsi blok cache, yang sesuai untuk PaaS dan senario pengguna berketumpatan tinggi.
Atas ialah kandungan terperinci Apakah pemacu storan docker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!