Sandaran, bahagian 1: Tujuan, semakan kaedah dan teknologi

Sandaran, bahagian 1: Tujuan, semakan kaedah dan teknologi
Mengapa anda perlu membuat sandaran? Lagipun, peralatan itu sangat, sangat boleh dipercayai, dan selain itu, terdapat "awan" yang lebih baik dalam kebolehpercayaan daripada pelayan fizikal: dengan konfigurasi yang betul, pelayan "awan" dengan mudah boleh bertahan daripada kegagalan pelayan fizikal infrastruktur, dan dari sudut pandangan pengguna perkhidmatan, akan ada lompatan kecil, hampir tidak ketara dalam perkhidmatan masa. Di samping itu, pertindihan maklumat selalunya memerlukan pembayaran untuk masa pemproses "tambahan", beban cakera dan trafik rangkaian.

Program yang ideal berjalan pantas, tidak membocorkan memori, tidak mempunyai lubang, dan tidak wujud.

-Tidak diketahui

Memandangkan atur cara masih ditulis oleh pembangun protein, dan selalunya tiada proses ujian, ditambah pula dengan program yang jarang dihantar menggunakan "amalan terbaik" (yang dengan sendirinya juga merupakan program dan oleh itu tidak sempurna), pentadbir sistem selalunya perlu menyelesaikan masalah yang terdengar secara ringkas tetapi secara ringkas: "kembali kepada keadaan semula", "bawa pangkalan kepada operasi biasa", "berfungsi perlahan-lahan - gulung semula", dan juga kegemaran saya "Saya tidak tahu apa, tetapi betulkan".

Sebagai tambahan kepada ralat logik yang timbul akibat kerja cuai pembangun, atau gabungan keadaan, serta pengetahuan yang tidak lengkap atau salah faham tentang ciri kecil program binaan - termasuk penyambungan dan sistem, termasuk sistem pengendalian, pemacu dan perisian tegar - terdapat juga kesilapan lain. Sebagai contoh, kebanyakan pembangun bergantung pada masa jalan, melupakan sepenuhnya undang-undang fizikal, yang masih mustahil untuk memintas menggunakan program. Ini termasuk kebolehpercayaan tak terhingga subsistem cakera dan, secara amnya, sebarang subsistem penyimpanan data (termasuk RAM dan cache pemproses!), dan masa pemprosesan sifar pada pemproses, dan ketiadaan ralat semasa penghantaran melalui rangkaian dan semasa pemprosesan pada pemproses, dan kependaman rangkaian, yang sama dengan 0. Anda tidak sepatutnya mengabaikan tarikh akhir yang terkenal, kerana jika anda tidak memenuhinya tepat pada masanya, akan ada masalah yang lebih teruk daripada nuansa operasi rangkaian dan cakera.

Sandaran, bahagian 1: Tujuan, semakan kaedah dan teknologi

Apakah yang perlu dilakukan dengan masalah yang meningkat secara berkuat kuasa dan menggantung data berharga? Tiada apa-apa untuk menggantikan pemaju yang masih hidup, dan ia bukan fakta bahawa ia akan dapat dilakukan dalam masa terdekat. Sebaliknya, hanya beberapa projek sahaja yang berjaya membuktikan sepenuhnya bahawa program itu akan berfungsi seperti yang diharapkan, dan tidak semestinya mungkin untuk mengambil dan menggunakan bukti untuk projek lain yang serupa. Selain itu, bukti sedemikian mengambil banyak masa dan memerlukan kemahiran dan pengetahuan khas, dan ini secara praktikal meminimumkan kemungkinan penggunaannya dengan mengambil kira tarikh akhir. Di samping itu, kami masih belum tahu cara menggunakan teknologi ultra-pantas, murah dan boleh dipercayai tidak terhingga untuk menyimpan, memproses dan menghantar maklumat. Teknologi sedemikian, jika wujud, adalah dalam bentuk konsep, atau - selalunya - hanya dalam buku dan filem fiksyen sains.

Artis yang baik meniru, artis yang hebat mencuri.

β€”Pablo Picasso.

Penyelesaian yang paling berjaya dan perkara mudah yang mengejutkan biasanya berlaku apabila konsep, teknologi, pengetahuan dan bidang sains yang tidak serasi pada pandangan pertama bertemu.

Sebagai contoh, burung dan kapal terbang mempunyai sayap, tetapi walaupun persamaan fungsi - prinsip operasi dalam beberapa mod adalah sama, dan masalah teknikal diselesaikan dengan cara yang sama: tulang berongga, penggunaan bahan yang kuat dan ringan, dsb. - hasilnya berbeza sama sekali, walaupun sangat serupa. Contoh terbaik yang kita lihat dalam teknologi kita juga sebahagian besarnya dipinjam dari alam semula jadi: petak bertekanan kapal dan kapal selam adalah analogi langsung dengan annelida; membina tatasusunan serbuan dan menyemak integriti data - menduplikasi rantai DNA; serta organ berpasangan, kebebasan kerja organ yang berbeza dari sistem saraf pusat (automasi jantung) dan refleks - sistem autonomi di Internet. Sudah tentu, mengambil dan menggunakan penyelesaian siap sedia "head-on" penuh dengan masalah, tetapi siapa tahu, mungkin tidak ada penyelesaian lain.

Sekiranya saya tahu di mana anda akan jatuh, saya akan meletakkan straw!

β€”Pepatah rakyat Belarusia

Ini bermakna salinan sandaran adalah penting bagi mereka yang ingin:

  • Dapat memulihkan operasi sistem anda dengan masa henti yang minimum, atau bahkan tanpanya sama sekali
  • Bertindak dengan berani, kerana sekiranya berlaku ralat sentiasa ada kemungkinan penarikan balik
  • Meminimumkan akibat rasuah data yang disengajakan

Ini sedikit teori

Sebarang klasifikasi adalah sewenang-wenangnya. Alam tidak mengklasifikasikan. Kami mengklasifikasikan kerana ia lebih mudah untuk kami. Dan kita klasifikasikan mengikut data yang kita juga ambil sewenang-wenangnya.

β€”Jean Bruler

Tanpa mengira kaedah storan fizikal, storan data logik boleh dibahagikan kepada dua cara untuk mengakses data ini: blok dan fail. Bahagian ini baru-baru ini sangat kabur, kerana storan logik semata-mata, serta fail semata-mata, tidak wujud. Walau bagaimanapun, untuk kesederhanaan, kami akan menganggap bahawa mereka wujud.

Simpanan data blok membayangkan bahawa terdapat peranti fizikal di mana data ditulis dalam bahagian tetap tertentu, blok. Blok diakses pada alamat tertentu; setiap blok mempunyai alamat sendiri dalam peranti.

Sandaran biasanya dibuat dengan menyalin blok data. Untuk memastikan integriti data, rakaman blok baharu, serta perubahan kepada blok sedia ada, digantung semasa penyalinan. Jika kita mengambil analogi dari dunia biasa, perkara yang paling dekat ialah almari dengan sel bernombor yang sama.

Sandaran, bahagian 1: Tujuan, semakan kaedah dan teknologi

Storan data fail berdasarkan prinsip peranti logik adalah hampir dengan storan menyekat dan selalunya disusun di atas. Perbezaan penting ialah kehadiran hierarki storan dan nama yang boleh dibaca manusia. Abstraksi diperuntukkan dalam bentuk fail - kawasan data bernama, serta direktori - fail khas di mana penerangan dan akses kepada fail lain disimpan. Fail boleh dibekalkan dengan metadata tambahan: masa penciptaan, bendera akses, dsb. Sandaran biasanya dilakukan dengan cara ini: mereka mencari fail yang diubah, kemudian menyalinnya ke storan fail lain dengan struktur yang sama. Integriti data biasanya dilaksanakan dengan ketiadaan fail yang ditulis. Metadata fail disandarkan dengan cara yang sama. Analogi terdekat ialah perpustakaan, yang mempunyai bahagian dengan buku yang berbeza, dan juga mempunyai katalog dengan nama buku yang boleh dibaca manusia.

Sandaran, bahagian 1: Tujuan, semakan kaedah dan teknologi

Baru-baru ini, pilihan lain kadangkala diterangkan, dari mana, pada dasarnya, penyimpanan data fail bermula, dan yang mempunyai ciri kuno yang sama: penyimpanan data objek.

Ia berbeza daripada storan fail kerana ia tidak mempunyai lebih daripada satu sarang (skim rata), dan nama fail, walaupun boleh dibaca manusia, masih lebih sesuai untuk diproses oleh mesin. Apabila melakukan sandaran, storan objek paling kerap dianggap sama dengan storan fail, tetapi kadangkala terdapat pilihan lain.

β€” Terdapat dua jenis pentadbir sistem, mereka yang tidak membuat sandaran, dan mereka yang SUDAH melakukannya.
- Sebenarnya, terdapat tiga jenis: ada juga yang menyemak bahawa sandaran boleh dipulihkan.

-Tidak diketahui

Perlu juga difahami bahawa proses sandaran data itu sendiri dijalankan oleh program, jadi ia mempunyai semua kelemahan yang sama seperti mana-mana program lain. Untuk menghapuskan (tidak menghapuskan!) pergantungan pada faktor manusia, serta ciri - yang secara individu tidak mempunyai kesan yang kuat, tetapi bersama-sama boleh memberikan kesan yang ketara - apa yang dipanggil peraturan 3-2-1. Terdapat banyak pilihan untuk cara mentafsirnya, tetapi saya lebih suka tafsiran berikut: 3 set data yang sama mesti disimpan, 2 set mesti disimpan dalam format yang berbeza dan 1 set mesti disimpan dalam storan jauh secara geografi.

Format storan hendaklah difahami seperti berikut:

  • Jika terdapat pergantungan pada kaedah penyimpanan fizikal, kami menukar kaedah fizikal.
  • Sekiranya terdapat pergantungan pada kaedah penyimpanan logik, kami menukar kaedah logik.

Untuk mencapai kesan maksimum peraturan 3-2-1, disyorkan untuk menukar format storan dalam kedua-dua cara.

Dari sudut pandangan kesediaan sandaran untuk tujuan yang dimaksudkan - memulihkan fungsi - perbezaan dibuat antara sandaran "panas" dan "sejuk". Yang panas berbeza daripada yang sejuk hanya dalam satu perkara: ia segera sedia untuk digunakan, manakala yang sejuk memerlukan beberapa langkah tambahan untuk pemulihan: penyahsulitan, pengekstrakan dari arkib, dsb.

Jangan mengelirukan salinan panas dan sejuk dengan salinan dalam talian dan luar talian, yang membayangkan pengasingan fizikal data dan, sebenarnya, adalah satu lagi tanda klasifikasi kaedah sandaran. Jadi salinan luar talian - tidak disambungkan terus ke sistem di mana ia perlu dipulihkan - boleh sama ada panas atau sejuk (dari segi kesediaan untuk pemulihan). Salinan dalam talian boleh didapati secara langsung di mana ia perlu dipulihkan, dan selalunya ia panas, tetapi terdapat juga yang sejuk.

Di samping itu, jangan lupa bahawa proses mencipta salinan sandaran itu sendiri biasanya tidak berakhir dengan penciptaan satu salinan sandaran, dan mungkin terdapat bilangan salinan yang agak besar. Oleh itu, adalah perlu untuk membezakan antara sandaran penuh, i.e. salinan yang boleh dipulihkan secara bebas daripada sandaran lain, serta salinan pembezaan (incremental, differential, decremental, dll.) - yang tidak boleh dipulihkan secara bebas dan memerlukan pemulihan awal satu atau lebih sandaran lain.

Sandaran tambahan berbeza ialah percubaan untuk menjimatkan ruang storan sandaran. Oleh itu, hanya data yang diubah daripada sandaran sebelumnya ditulis kepada salinan sandaran.

Penurunan yang berbeza dicipta untuk tujuan yang sama, tetapi dengan cara yang sedikit berbeza: salinan sandaran penuh dibuat, tetapi hanya perbezaan antara salinan baharu dan yang sebelumnya sebenarnya disimpan.

Secara berasingan, adalah wajar mempertimbangkan proses sandaran ke atas storan, yang menyokong ketiadaan penyimpanan pendua. Oleh itu, jika anda menulis sandaran penuh di atasnya, hanya perbezaan antara sandaran sebenarnya akan ditulis, tetapi proses memulihkan sandaran akan serupa dengan memulihkan daripada salinan penuh dan telus sepenuhnya.

Adakah kustodiet ipsos kustodes?

(Siapakah yang akan menjaga pengawal itu sendiri? - lat.)

Sangat tidak menyenangkan apabila tiada salinan sandaran, tetapi lebih teruk jika salinan sandaran nampaknya telah dibuat, tetapi apabila memulihkan ternyata ia tidak dapat dipulihkan kerana:

  • Integriti data sumber telah terjejas.
  • Storan sandaran rosak.
  • Pemulihan berfungsi dengan sangat perlahan; anda tidak boleh menggunakan data yang telah dipulihkan sebahagiannya.

Proses sandaran yang dibina dengan betul mesti mengambil kira komen sedemikian, terutamanya dua yang pertama.

Keutuhan data sumber boleh dijamin dalam beberapa cara. Yang paling biasa digunakan ialah yang berikut: a) mencipta syot kilat sistem fail pada tahap blok, b) "membekukan" keadaan sistem fail, c) peranti blok khas dengan storan versi, d) rakaman berurutan fail atau blok. Jumlah semak juga digunakan untuk memastikan data disahkan semasa pemulihan.

Kerosakan storan juga boleh dikesan menggunakan checksum. Kaedah tambahan ialah penggunaan peranti khusus atau sistem fail di mana data yang telah direkodkan tidak boleh diubah, tetapi yang baharu boleh ditambah.

Untuk mempercepatkan pemulihan, pemulihan data digunakan dengan pelbagai proses untuk pemulihan - dengan syarat tiada kesesakan dalam bentuk rangkaian perlahan atau sistem cakera perlahan. Untuk mengatasi situasi dengan data yang dipulihkan separa, anda boleh memecahkan proses sandaran kepada subtugas yang agak kecil, setiap satunya dilakukan secara berasingan. Oleh itu, ia menjadi mungkin untuk memulihkan prestasi secara konsisten sambil meramalkan masa pemulihan. Masalah ini selalunya terletak pada pesawat organisasi (SLA), jadi kami tidak akan membincangkan perkara ini secara terperinci.

Pakar dalam rempah bukanlah orang yang menambahkannya ke setiap hidangan, tetapi orang yang tidak pernah menambah apa-apa tambahan kepadanya.

-DALAM. Sinyavsky

Amalan mengenai perisian yang digunakan oleh pentadbir sistem mungkin berbeza-beza, tetapi prinsip umum masih, satu cara atau yang lain, sama, khususnya:

  • Adalah sangat disyorkan untuk menggunakan penyelesaian siap sedia.
  • Program harus berfungsi dengan mudah, i.e. Seharusnya tiada ciri tidak berdokumen atau kesesakan.
  • Menyediakan setiap program hendaklah sangat mudah sehingga anda tidak perlu membaca manual atau helaian cheat setiap kali.
  • Jika boleh, penyelesaiannya harus universal, kerana pelayan boleh berbeza-beza dalam ciri perkakasan mereka.

Terdapat program biasa berikut untuk mengambil sandaran daripada peranti blok:

  • dd, biasa kepada veteran pentadbiran sistem, ini juga termasuk program serupa (dd_rescue yang sama, contohnya).
  • Utiliti terbina dalam beberapa sistem fail yang mencipta pembuangan sistem fail.
  • Utiliti omnivor; contohnya partclone.
  • Keputusan sendiri, selalunya proprietari; contohnya, NortonGhost dan kemudiannya.

Untuk sistem fail, masalah sandaran sebahagiannya diselesaikan menggunakan kaedah yang digunakan untuk peranti blok, tetapi masalah itu boleh diselesaikan dengan lebih cekap menggunakan, sebagai contoh:

  • Rsync, program dan protokol tujuan umum untuk menyegerakkan keadaan sistem fail.
  • Alat pengarkiban terbina dalam (ZFS).
  • Alat pengarkiban pihak ketiga; wakil yang paling popular ialah tar. Terdapat yang lain, sebagai contoh, dar - pengganti tar yang bertujuan untuk sistem moden.

Perlu disebutkan secara berasingan tentang alat perisian untuk memastikan konsistensi data semasa membuat salinan sandaran. Pilihan yang paling biasa digunakan ialah:

  • Memasang sistem fail dalam mod baca sahaja (ReadOnly), atau membekukan sistem fail (membekukan) - kaedah ini mempunyai kebolehgunaan terhad.
  • Mencipta syot kilat keadaan sistem fail atau peranti sekat (LVM, ZFS).
  • Penggunaan alat pihak ketiga untuk mengatur tera, walaupun dalam kes di mana mata sebelumnya tidak dapat diberikan atas sebab tertentu (program seperti hotcopy).
  • Teknik copy-on-change (CopyOnWrite), walau bagaimanapun, ia paling kerap dikaitkan dengan sistem fail yang digunakan (BTRFS, ZFS).

Jadi, untuk pelayan kecil anda perlu menyediakan skim sandaran yang memenuhi keperluan berikut:

  • Mudah digunakan - tiada langkah tambahan khas diperlukan semasa operasi, langkah minimum untuk membuat dan memulihkan salinan.
  • Universal - berfungsi pada kedua-dua pelayan besar dan kecil; ini penting apabila meningkatkan bilangan pelayan atau penskalaan.
  • Dipasang oleh pengurus pakej, atau dalam satu atau dua arahan seperti "muat turun dan bongkar".
  • Stabil - format storan standard atau lama digunakan.
  • Cepat dalam kerja.

Pemohon daripada mereka yang lebih atau kurang memenuhi syarat:

  • sandaran rdiff
  • rsnapshot
  • sendawa
  • pendua
  • bermuka dua
  • biarkan menipu
  • memberi
  • zbackup
  • berehat
  • borgbackup

Sandaran, bahagian 1: Tujuan, semakan kaedah dan teknologi

Mesin maya (berdasarkan XenServer) dengan ciri-ciri berikut akan digunakan sebagai bangku ujian:

  • 4 teras 2.5 GHz,
  • 16 GB RAM,
  • Storan hibrid 50 GB (sistem storan dengan caching pada SSD 20% daripada saiz cakera maya) dalam bentuk cakera maya yang berasingan tanpa pembahagian,
  • Saluran Internet 200 Mbps.

Mesin yang hampir sama akan digunakan sebagai pelayan penerima sandaran, hanya dengan cakera keras 500 GB.

Sistem pengendalian - Centos 7 x64: partition standard, partition tambahan akan digunakan sebagai sumber data.

Sebagai data awal, mari ambil tapak WordPress dengan 40 GB fail media dan pangkalan data mysql. Oleh kerana pelayan maya sangat berbeza dalam ciri, dan juga untuk kebolehulangan yang lebih baik, inilah

keputusan ujian pelayan menggunakan sysbench.sysbench --threads=4 --time=30 --cpu-max-prime=20000 cpu run
sysbench 1.1.0-18a9f86 (menggunakan LuaJIT 2.1.0-beta3 yang digabungkan)
Menjalankan ujian dengan pilihan berikut:
Bilangan utas: 4
Memulakan penjana nombor rawak dari masa semasa

Had nombor perdana: 20000

Memulakan urutan pekerja…

Thread bermula!

Kelajuan CPU:
peristiwa sesaat: 836.69

Keluaran:
acara/s (eps): 836.6908
masa berlalu: 30.0039s
jumlah acara: 25104

Latensi (ms):
min: 2.38
purata: 4.78
maksimum: 22.39
Persentil ke-95: 10.46
jumlah: 119923.64

Keadilan benang:
peristiwa (purata/stddev): 6276.0000/13.91
masa pelaksanaan (purata/stddev): 29.9809/0.01

sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=read memory run
sysbench 1.1.0-18a9f86 (menggunakan LuaJIT 2.1.0-beta3 yang digabungkan)
Menjalankan ujian dengan pilihan berikut:
Bilangan utas: 4
Memulakan penjana nombor rawak dari masa semasa

Menjalankan ujian kelajuan memori dengan pilihan berikut:
saiz blok: 1KiB
jumlah saiz: 102400MiB
operasi: baca
skop: global

Memulakan urutan pekerja…

Thread bermula!

Jumlah operasi: 50900446 (1696677.10 sesaat)

49707.47 MiB dipindahkan (1656.91 MiB/saat)

Keluaran:
acara/s (eps): 1696677.1017
masa berlalu: 30.0001s
jumlah acara: 50900446

Latensi (ms):
min: 0.00
purata: 0.00
maksimum: 24.01
Persentil ke-95: 0.00
jumlah: 39106.74

Keadilan benang:
peristiwa (purata/stddev): 12725111.5000/137775.15
masa pelaksanaan (purata/stddev): 9.7767/0.10

sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=write memory run
sysbench 1.1.0-18a9f86 (menggunakan LuaJIT 2.1.0-beta3 yang digabungkan)
Menjalankan ujian dengan pilihan berikut:
Bilangan utas: 4
Memulakan penjana nombor rawak dari masa semasa

Menjalankan ujian kelajuan memori dengan pilihan berikut:
saiz blok: 1KiB
jumlah saiz: 102400MiB
operasi: menulis
skop: global

Memulakan urutan pekerja…

Thread bermula!

Jumlah operasi: 35910413 (1197008.62 sesaat)

35068.76 MiB dipindahkan (1168.95 MiB/saat)

Keluaran:
acara/s (eps): 1197008.6179
masa berlalu: 30.0001s
jumlah acara: 35910413

Latensi (ms):
min: 0.00
purata: 0.00
maksimum: 16.90
Persentil ke-95: 0.00
jumlah: 43604.83

Keadilan benang:
peristiwa (purata/stddev): 8977603.2500/233905.84
masa pelaksanaan (purata/stddev): 10.9012/0.41

sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=1G fileio run
sysbench 1.1.0-18a9f86 (menggunakan LuaJIT 2.1.0-beta3 yang digabungkan)
Menjalankan ujian dengan pilihan berikut:
Bilangan utas: 4
Memulakan penjana nombor rawak dari masa semasa

Bendera terbuka fail tambahan: (tiada)
128 fail, 8MiB setiap satu
Jumlah saiz fail 1GiB
Saiz blok 4KiB
Bilangan permintaan IO: 0
Nisbah Baca/Tulis untuk ujian IO rawak gabungan: 1.50
FSYNC berkala didayakan, memanggil fsync() setiap 100 permintaan.
Memanggil fsync() pada akhir ujian, Didayakan.
Menggunakan mod I/O segerak
Melakukan ujian r/w rawak
Memulakan urutan pekerja…

Thread bermula!

Keluaran:
baca: IOPS=3868.21 15.11 MiB/s (15.84 MB/s)
tulis: IOPS=2578.83 10.07 MiB/s (10.56 MB/s)
fsync: IOPS=8226.98

Latensi (ms):
min: 0.00
purata: 0.27
maksimum: 18.01
Persentil ke-95: 1.08
jumlah: 238469.45

Nota ini bermula besar

siri artikel tentang sandaran

  1. Sandaran, bahagian 1: Mengapa sandaran diperlukan, gambaran keseluruhan kaedah, teknologi
  2. Bahagian Sandaran 2: Menyemak dan menguji alatan sandaran berasaskan rsync
  3. Sandaran Bahagian 3: Semakan dan Pengujian penduaan, penduaan, penduaan deja
  4. Sandaran Bahagian 4: Menyemak dan menguji zbackup, restic, borgbackup
  5. Sandaran Bahagian 5: Menguji bacula dan sandaran veeam untuk linux
  6. Sandaran Bahagian 6: Membandingkan Alat Sandaran
  7. Sandaran Bahagian 7: Kesimpulan

Sumber: www.habr.com

Tambah komen