Pengenalan

Pengenalan

13 April 2010
Oleh Pierre Vignéras


Abstrak:

RAID masih belum diterima pakai oleh kebanyakan pengguna akhir walaupun kualiti yang wujud seperti prestasi dan kebolehpercayaan. Sebab-sebab seperti kerumitan teknologi RAID (tahap, keras/lembut), set-up, atau sokongan boleh diberikan. Kami percaya sebab utama ialah kebanyakan pengguna akhir memiliki sejumlah besar peranti penyimpanan heterogen (tongkat USB, IDE/SATA/SCSI pemacu keras dalaman/luaran, kad SD/XD, SSD, ...), dan sistem berasaskan RAID kebanyakannya direka untuk cakera keras homogen (saiz dan teknologi). Oleh itu, pada masa ini tiada penyelesaian penyimpanan yang menguruskan peranti penyimpanan heterogen dengan cekap.

Dalam artikel ini, kami mencadangkan penyelesaian sedemikian dan kami menyebutnya prouhd (kolam raid ke atas peranti heterogen pengguna). Penyelesaian ini menyokong peranti penyimpanan heterogen (saiz dan teknologi), memaksimumkan penggunaan ruang penyimpanan yang tersedia, adalah toleran terhadap kegagalan peranti sehingga tahap yang disesuaikan, masih membuat penambahan automatik, penyingkiran dan penggantian peranti penyimpanan yang mungkin dan tetap berprestasi di muka aliran kerja pengguna akhir purata.

Walaupun artikel ini membuat beberapa rujukan kepada Linux, algoritma yang diterangkan adalah bebas daripada sistem operasi dan dengan itu boleh dilaksanakan pada mana -mana.

Pengenalan

Sedangkan serbuan1 telah diguna pakai secara besar-besaran oleh industri, ia masih tidak biasa di desktop akhir pengguna. Kerumitan sistem serangan mungkin salah satu sebab ... antara yang lain. Sebenarnya, di pusat data terkini, storan itu direka mengikut beberapa keperluan (pendekatan "atas-bawah" yang telah dibincangkan dalam artikel sebelumnya2). Oleh itu, dari perspektif serbuan, storan biasanya terdiri daripada kumpulan cakera yang sama saiz dan ciri -ciri termasuk alat ganti3. Tumpuannya sering berlaku pada prestasi. Kapasiti penyimpanan global biasanya bukan masalah besar.

Kes purata pengguna akhir agak berbeza kerana kapasiti penyimpanan global mereka terdiri daripada pelbagai peranti penyimpanan seperti:

  • Pemacu keras (IDE dalaman, SATA dalaman/luaran, USB luaran, firewire luaran);
  • Tongkat USB;
  • Memori flash seperti SDCard, XDCard, ...;
  • SSD.

Sebaliknya, prestasi bukanlah masalah besar bagi pengguna akhir: kebanyakan penggunaan tidak memerlukan throughput yang sangat tinggi. Kos dan kapasiti adalah faktor penting utama bersama -sama dengan kemudahan penggunaan. Dengan cara ini, pengguna akhir biasanya tidak mempunyai peranti ganti.

Kami mencadangkan dalam makalah ini algoritma untuk susun atur cakera menggunakan serbuan (perisian) yang mempunyai ciri -ciri berikut:

  • Ia menyokong peranti penyimpanan heterogen (saiz dan teknologi);
  • ia memaksimumkan ruang penyimpanan;
  • Adalah bertolak ansur dengan kegagalan peranti sehingga tahap tertentu yang bergantung kepada bilangan peranti yang ada dan pada tahap serbuan yang dipilih;
  • Ia masih menjadikan penambahan automatik, penyingkiran dan penggantian peranti penyimpanan yang mungkin dalam keadaan tertentu;
  • ia tetap berprestasi dalam menghadapi aliran kerja pengguna akhir purata.

Algoritma

Penerangan

Secara konseptual, kami mula -mula menyusun peranti penyimpanan satu ke atas yang lain seperti yang ditunjukkan dalam Rajah 1.

Rajah 1:Peranti penyimpanan menyusun (saiz yang sama, kes RAID IDEAL).

Pada contoh itu dengan peranti, masing -masing kapasiti (terabytes), kami mempunyai kapasiti penyimpanan global . Dari ruang penyimpanan global, menggunakan RAID, anda boleh mendapatkan:

  • 4 TB () Peranti penyimpanan maya (dipanggil PV untuk jumlah fizikal4 Dalam perkara berikut) menggunakan RAID0 (Tahap 0), tetapi kemudian anda tidak mempunyai toleransi kesalahan (jika peranti fizikal gagal, keseluruhan peranti maya hilang).
  • 1 TB () PV menggunakan RAID1; Dalam hal ini, anda mempunyai tahap toleransi kesalahan 3 (PV tetap sah dalam menghadapi 3 kegagalan pemacu, dan ini adalah maksimum).
  • 3 TB () PV menggunakan RAID5; Dalam hal ini, anda mempunyai tahap toleransi kesalahan 1;
  • A 2 TB () PV menggunakan RAID10; itu kes, tahap toleransi kesalahan juga 15 ( adalah bilangan set cermin, 2 dalam kes kami).

Contoh sebelumnya tidak mewakili kes sebenar (akhir). Rajah 2 mewakili senario sedemikian, dengan 4 cakera juga (walaupun kapasiti yang disenaraikan tidak mewakili kes penggunaan biasa, mereka memudahkan pengiraan kapasiti mental untuk penerangan algoritma). Dalam kes ini, kita menghadapi peranti , kapasiti masing -masing : 1 TB, 2 TB, 1 TB, dan 4 TB. Oleh itu, kapasiti penyimpanan global adalah:

.

Oleh kerana pelbagai serbuan tradisional memerlukan saiz peranti yang sama, dalam hal ini, kapasiti peranti minimum digunakan:

. Oleh itu, kita boleh mempunyai:

  • 4 TB, menggunakan RAID0;
  • 1 TB, menggunakan RAID1;
  • 3 TB, menggunakan RAID5;
  • 2 TB, menggunakan RAID10.

Rajah 2:Peranti penyimpanan menyusun (saiz yang berbeza = kes pengguna akhir biasa).

Oleh itu, persis kemungkinan yang sama daripada contoh sebelumnya. Perbezaan utama bagaimanapun, adalah ruang penyimpanan yang terbuang - ditakrifkan sebagai ruang penyimpanan yang tidak digunakan dari setiap cakera tidak untuk penyimpanan atau untuk toleransi kesalahan6.

Dalam contoh kami, kapasiti 1 TB kedua -dua peranti HDA dan HDC untungnya digunakan sepenuhnya. Tetapi hanya 1 TB dari 2 TB peranti HDB dan 1 TB dari 4 TB peranti HDD benar -benar digunakan. Oleh itu, dalam kes ini, ruang penyimpanan yang terbuang diberikan oleh formula:

Dalam contoh ini, daripada , i.e. 50% ruang penyimpanan global sebenarnya tidak digunakan. Bagi pengguna akhir, jumlah ruang yang sia-sia pastinya merupakan hujah terhadap penggunaan RAID, walaupun semua kelebihan RAID menyediakan (fleksibiliti untuk menambah/mengeluarkan peranti, toleransi kesalahan dan prestasi).

Algoritma yang kami cadangkan memang sangat mudah. Pertama, kami menyusun senarai peranti dalam urutan kapasiti menaik. Kemudian, kita memisahkan setiap cakera sedemikian rupa sehingga array dengan bilangan maksimum partisi lain dengan saiz yang sama dapat dibuat. Rajah 3 menunjukkan proses dalam contoh sebelumnya dengan 4 cakera.

Rajah 3:Ilustrasi susun atur serangan menegak.

Partition pertama dibuat pada semua cakera. Saiz partition itu adalah saiz cakera pertama, HDA, yang merupakan minimum - 1 TB dalam kes kami. Oleh kerana cakera kedua dalam senarai yang disusun, bernama HDC juga mempunyai kapasiti 1 TB, tiada ruang tersedia untuk membuat partition baru. Oleh itu, ia dilangkau. Cakera seterusnya adalah HDB dalam senarai disusun kami. Kemampuannya adalah 2 TB. Yang pertama partition mengambil 1 TB sudah. 1 TB lain tersedia untuk pemisahan dan menjadi . Perhatikan bahawa partition 1 TB yang lain juga dibuat pada setiap cakera berikut dalam senarai disusun. Oleh itu, peranti terakhir kami, HDD sudah 2 partisi: dan . Oleh kerana ia adalah cakera terakhir, ruang penyimpanan yang tinggal (2 TB) akan dibazirkan. Sekarang, array serbuan boleh dibuat dari setiap partition saiz yang sama dari cakera yang berbeza. Dalam kes ini, kami mempunyai pilihan berikut:

  • Membuat pelbagai serbuan menggunakan 4 Partition, kita boleh mendapatkan:
    • 4 TB di RAID0;
    • 1 TB dalam RAID1;
    • 3 TB di RAID5;
    • 2 TB dalam RAID10;
  • membuat array lain menggunakan 2 Partition, kita boleh mendapatkan:
    • 2 TB di RAID0;
    • 1 TB di RAID1.

Oleh itu, kami memaksimumkan ruang penyimpanan yang dapat kami dapatkan dari pelbagai peranti. Sebenarnya, kami meminimumkan ruang sia -sia yang diberikan - dengan algoritma ini - dengan partition terakhir pemacu terakhir, dalam kes ini: . Hanya 20% ruang penyimpanan global yang sia -sia, dan ini adalah minimum yang kita dapat. Sebaliknya, 80% ruang penyimpanan global digunakan sama ada untuk penyimpanan atau toleransi kesalahan dan ini adalah maksimum yang kita dapat menggunakan teknologi RAID.

Jumlah ruang penyimpanan yang ada bergantung pada tahap RAID yang dipilih untuk setiap PV dari partisi menegak . Ia boleh berubah dari 2 tb RAID1, RAID1 sehingga 6 tb RAID0, RAID0. Ruang penyimpanan maksimum yang tersedia dengan tahap toleransi kesalahan 1 ialah 4 TB RAID5, RAID1.

Analisis

Dalam bahagian ini, kami akan memberikan analisis algoritma kami. Kami mengambil kira Peranti penyimpanan kapasiti masing -masing untuk di mana . Berkata sebaliknya, Pemacu disusun mengikut kapasiti mereka dalam urutan menaik seperti yang digambarkan pada Rajah 4. Kami juga menentukan untuk tujuan penyederhanaan.

Rajah 4:Ilustrasi algroritma umum.

Kami juga menentukan:

  • Ruang Penyimpanan Global:

    Sememangnya, kita juga menentukan (tiada peranti tidak memberikan storan);

  • ruang penyimpanan yang terbuang ; Kami juga menentukan (tiada peranti tidak membuang -buang); Perhatikan pula (Dengan hanya satu peranti, anda tidak boleh membuat sebarang serbuan serbuan dan oleh itu, ruang sia -sia adalah maksimum!);
  • Ruang penyimpanan maksimum (selamat) yang tersedia (menggunakan RAID57):
  • Kami juga menentukan , dan (Anda memerlukan sekurang -kurangnya 2 pemacu untuk membuat pelbagai serbuan).
  • ruang penyimpanan yang hilang ditakrifkan sebagai ; Ia mewakili jumlah ruang yang tidak digunakan untuk penyimpanan (ia termasuk kedua -dua ruang yang digunakan untuk toleransi kesalahan dan ruang sia -sia); Perhatikan bahawa Dan itu (Dengan satu pemanduan, ruang sia -sia adalah maksimum, dan sama dengan ruang yang hilang).

Kami juga mempunyai, :

ruang penyimpanan maksimum pada tahap Adakah ruang penyimpanan global di peringkat sebelumnya . Dengan cara ini, apabila peranti storan baru ditambah, dengan kapasiti Kami ada:

  • Ruang Penyimpanan Global Baru: ;
  • Ruang penyimpanan maksimum maksimum yang baru: ;
  • Ruang sia -sia baru ialah: ;
  • ruang yang hilang baru: .

Apabila peranti penyimpanan baru lebih besar, yang lain dalam konfigurasi ditambah, ruang penyimpanan maksimum yang tersedia ditingkatkan dengan jumlah yang sama dengan peranti terakhir dalam konfigurasi sebelumnya tanpa peranti baru. Selain itu, ruang hilang baru sama persis dengan saiz peranti baru itu.

Sebagai kesimpulan, membeli peranti yang jauh lebih besar daripada yang terakhir dalam konfigurasi bukanlah kemenangan besar di tempat pertama, kerana ia meningkatkan ruang yang terbuang! Ruang sia -sia akan digunakan apabila pemacu baru kapasiti yang lebih tinggi akan diperkenalkan.

Anda boleh membandingkan algoritma kami dengan susun atur serbuan biasa (i.e. Menggunakan saiz peranti yang sama ) pada set peranti yang sama: penyimpanan global

  • Ruang tetap tidak berubah:

;

  • Penyimpanan maksimum menjadi:

;

  • Ruang sia -sia menjadi:

  • ruang yang hilang menjadi:

Apabila peranti baru kapasiti ditambah ke set peranti, kami mendapat:

  • (Ruang penyimpanan yang ada ditingkatkan oleh hanya);
  • (sedangkan ruang terbuang meningkat oleh ;
  • (dan ruang yang hilang meningkat dengan jumlah yang sama);

Seperti yang dilihat secara rasmi, algoritma tradisi sangat lemah dalam pengendalian saiz peranti penyimpanan heterogen. Apabila anda menambah peranti baru, dalam konfigurasi kapasiti yang lebih tinggi, anda meningkatkan kedua -dua ruang terbuang dan ruang yang hilang dengan jumlah yang perbezaan saiz antara peranti baru dan yang pertama. Rajah 5 memberikan perbandingan grafik dan di seluruh set peranti untuk algoritma serbuan tradisi (kiri) dan untuk prouhd (kanan).

Rajah 5:Perwakilan grafik kuantiti dan untuk algoritma serbuan tradisi (kiri) dan algoritma prouhd (kanan)

Dengan cara, secara rasmi, sejak , jelas bahawa . Oleh itu, . Oleh itu algoritma heterogen selalu memberikan hasil yang lebih baik dari segi ruang sia -sia, seperti yang diharapkan. Dapat ditunjukkan dengan mudah bahawa algoritma heterogen juga memberikan hasil yang lebih baik secara sistematik untuk ruang yang hilang .

Sebaliknya, algoritma kami dapat dilihat sebagai lanjutan susun atur tradisi di mana semua peranti adalah saiz yang sama. Ini diterjemahkan secara rasmi ke , Dan kita ada:

  • Untuk ruang penyimpanan global:

;

  • ruang penyimpanan maksimum:

(RAID5);

  • ruang yang sia -sia:

;

  • ruang yang hilang:

;

    Dan kita kembali kepada apa yang kita gunakan untuk di mana hanya satu cakera yang hilang pemacu saiz yang sama (menggunakan RAID5).

    Pelaksanaan (susun atur-susun atur)

    Kami mencadangkan perisian Python sumber terbuka-dipanggil susun atur dan boleh didapati di http: // www.sf.NET/LAYOUT-CERIK- yang diberikan senarai label dan saiz peranti, mengembalikan susun atur yang mungkin menggunakan algoritma ini. Sebagai contoh, dengan 4 cakera yang diambil dari ilustrasi 3, perisian mencadangkan yang berikut:

     RAID 

    Perisian ini memberitahu bahawa dari partition pertama setiap 4 pemacu, beberapa pilihan tahap RAID tersedia (dari RAID1 hingga RAID5) 8. Dari partition kedua pada peranti HDB dan HDD, hanya RAID1 yang tersedia.

    Prestasi

    Dari sudut pandangan prestasi, susun atur ini pastinya tidak optimum untuk setiap penggunaan. Secara tradisinya, dalam kes perusahaan, dua peta peranti RAID maya yang berbeza ke peranti penyimpanan fizikal yang berbeza. Sebaliknya di sini, mana -mana peranti prouhd yang berbeza berkongsi beberapa peranti penyimpanan fizikal mereka. Sekiranya tidak peduli, ini boleh membawa kepada prestasi yang sangat buruk kerana sebarang permintaan yang dibuat ke peranti prouhd mungkin dihukum oleh kernel sehingga permintaan lain yang dibuat ke peranti prouhd lain telah disampaikan. Perhatikan bagaimanapun bahawa ini tidak berbeza dari kes cakera tunggal kecuali dari sudut pandang prestasi yang ketat: throught of array serbuan - terutamanya pada bacaan - mungkin mengatasi kelebihan cakera tunggal terima kasih kepada paralelisme.

    Untuk kebanyakan kes pengguna akhir, susun atur ini sangat baik dari sudut pandangan prestasi, terutamanya untuk menyimpan fail multimedia seperti fail foto, audio atau video di mana kebanyakan masa, fail ditulis sekali, dan membaca beberapa kali, secara berurutan. Pelayan fail dengan susun atur cakera prouhd dengan mudah akan berkhidmat dengan pelanggan pengguna akhir secara serentak. Susun atur seperti itu juga boleh digunakan untuk penyimpanan sandaran. Satu -satunya sebab konfigurasi seperti itu tidak boleh digunakan adalah di mana anda mempunyai keperluan prestasi yang kuat. Di sisi lain, jika kebimbangan utama anda adalah pengurusan ruang penyimpanan, konfigurasi seperti itu sangat baik.

    Dengan cara ini, anda boleh menggabungkan susun atur seperti Linux Volume Manager (LVM). Sebagai contoh, jika kebimbangan utama anda adalah ruang penyimpanan dengan tahap toleransi 1, anda boleh menggabungkan, 3.Rantau 0GB RAID5 dengan 1.Rantau 0GB RAID1 dalam contoh sebelumnya sebagai kumpulan kelantangan yang menghasilkan peranti maya 4.0 GB, dari mana anda boleh menentukan jumlah logik (LV).

    Kelebihan susun atur RAID/LVM gabungan itu berbanding susun atur LVM yang ketat (tanpa sebarang serbuan serbuan di antara), adalah bahawa anda boleh memberi manfaat kepada kelebihan tahap RAID (semua peringkat 0, 1, 5, 10, 50, atau 6) manakala LVM Sediakan, sejauh yang saya tahu, "miskin" (berbanding dengan RAID) mencerminkan dan melucutkan pelaksanaan. Dengan cara ini, perhatikan bahawa menentukan pilihan cermin atau jalur pada penciptaan volum logik tidak akan memberikan prestasi yang diharapkan dan/atau penambahbaikan toleransi kerana jumlah fizikal (sudah) array serbuan berkongsi peranti fizikal sebenar.

    Kes Khas SSD

    Penyelesaian kami memanfaatkan ruang penyimpanan yang tersedia dengan mengorbankan penalti prestasi mentah dalam beberapa kes: apabila akses bersamaan dibuat kepada array serbuan yang berbeza yang berkongsi peranti fizikal yang sama. Akses serentak biasanya menyiratkan akses rawak ke data.

    Pemacu keras mempunyai had keras pada I/O mereka dengan corak akses rawak kerana kekangan mecanical mereka: selepas data telah ditempatkan, kepala bacaan (atau menulis) harus mencari silinder yang betul dan tunggu sehingga sektor yang betul berlalu di bawahnya Terima kasih kepada putaran plat. Jelas, membaca atau menulis ke cakera keras adalah proses berurutan. Permintaan baca/tulis ditolak ke barisan (dalam perisian atau perkakasan), dan ia hanya perlu menunggu yang sebelumnya. Sudah tentu, banyak penambahbaikan telah dibuat untuk mempercepatkan proses membaca/penulisan (contohnya, menggunakan penampan dan cache, pengurusan giliran pintar, operasi pukal, pengiraan lokasi data antara lain), tetapi prestasi pemacu keras secara fizikalnya terhad, terutamanya pada akses rawak. Dalam beberapa cara, masalah akses rawak (serentak) ini adalah sebab mengapa RAID telah diperkenalkan di tempat pertama.

    SSD sangat berbeza dengan cakera keras. Khususnya, mereka tidak mempunyai kekangan mecanical. Mereka mengendalikan akses rawak jauh lebih baik daripada cakera keras. Oleh itu, penalti prestasi Prouhd yang dibincangkan di atas mungkin tidak benar dengan SSD. Akses bersamaan yang dibuat kepada susunan serbuan yang berbeza yang berkongsi SSD fizikal akan menghasilkan beberapa permintaan dengan corak akses rawak yang dibuat kepada setiap SSD yang mendasari. Tetapi seperti yang kita lihat, SSD mengendalikan permintaan rawak dengan baik. Sebilangan penyiasatan harus dibuat untuk membandingkan prestasi Prouhd atas cakera keras berbanding Prouhd atas SSD. Sebarang pertolongan dalam hal ini akan dihargai.

    Pemacu Partition

    Prouhd memerlukan peranti penyimpanan dipisahkan dengan betul ke dalam irisan saiz yang sama. Bergantung pada bilangan peranti storan bersaiz yang berbeza, algoritma boleh membawa kepada penciptaan sejumlah besar partisi pada setiap peranti. Mujur. Partition Logik boleh digunakan untuk membuat semua kepingan yang diperlukan: hampir tidak ada batasan nombor mereka. Di sisi lain, jika anda memerlukan partisi lebih daripada 2 terabytes, maka partisi logik tidak lagi menjadi pilihan.

    Untuk kes khusus ini (saiz partition lebih daripada 2TB), Jadual Partition Guid (GPT) mungkin menjadi pilihan. Sejauh yang saya tahu, hanya berpisah9 menyokong mereka.

    Mungkin menggoda untuk menggunakan LVM untuk tujuan pemisahan. Sekiranya ini adalah pilihan yang sempurna dalam kes pemisahan yang biasa, saya tidak akan mengesyorkannya untuk prouhd. Sebenarnya, sebaliknya adalah pilihan yang baik: Array RAID adalah pilihan yang sempurna untuk LVM Fizikal Volume (PV). Maksud saya, setiap array serbuan menjadi PV. Dari beberapa PV, anda membuat kumpulan kelantangan (VG). Dari VGS tersebut, anda membuat Volum Logik (LV) yang akhirnya anda memformat dan dipasang ke sistem fail anda. Oleh itu, rantai lapisan adalah seperti berikut:

     Peranti -> RAID -> PV -> VG -> LV -> FS.

    Jika anda menggunakan LVM untuk pemacu partisi, anda berakhir dengan sejumlah besar lapisan yang membunuh prestasi (mungkin) dan reka bentuk:

     Peranti -> pv -> vg -> lv -> raid -> pv -> vg -> lv -> fs.

    Jujur, saya belum menguji konfigurasi yang kompleks. Saya akan berminat dengan maklum balas. 😉

    Pengendalian kegagalan cakera

    Sudah tentu, sebarang cakera akan gagal, satu hari atau yang lain. Yang kemudian, semakin baik. Tetapi, merancang penggantian cakera bukan sesuatu yang boleh ditangguhkan sehingga kegagalan, biasanya tidak pada waktu yang baik (undang -undang Murphy!). Terima kasih kepada RAID (untuk tahap 1 dan ke atas), kegagalan cakera tidak menghalang seluruh sistem berfungsi secara normal. Ini adalah masalah kerana anda mungkin tidak menyedari bahawa ada sesuatu yang tidak kena. Sekali lagi, jika tidak ada yang dirancang, anda akan menemuinya dengan cara yang sukar, apabila cakera kedua sebenarnya gagal, dan apabila anda tidak mempunyai cara untuk memulihkan tatasusunan serbuan anda. Perkara pertama ialah memantau peranti storan anda. Anda mempunyai (sekurang -kurangnya) 2 alat untuk tujuan itu:

    SmartMontools:
    Pintar adalah standard yang dilaksanakan di kebanyakan IDE dan pemacu SATA yang memantau kesihatan cakera, melakukan beberapa ujian (dalam talian dan luar talian), dan yang boleh menghantar laporan melalui e -mel, terutamanya apabila satu atau banyak ujian berlaku. Perhatikan bahawa pintar tidak memberi jaminan bahawa ia akan menjangkakan kegagalan, atau ramalan kegagalannya adalah tepat. Bagaimanapun, apabila Smart memberitahu bahawa ada sesuatu yang salah, lebih baik merancang untuk penggantian cakera tidak lama lagi. Dengan cara ini, dalam kes sedemikian, jangan menghentikan pemacu melainkan jika anda mempunyai ganti, mereka biasanya tidak suka dimulakan semula, terutama selepas kegagalan yang diramalkan. Mengkonfigurasi SmartMontools agak mudah. Pasang perisian itu dan lihat fail SMARTD.conf biasanya di /etc.
    mdadm:
    MDADM adalah Alat Linux untuk Pengurusan RAID (Software). Apabila sesuatu berlaku pada pelbagai serbuan, e -mel boleh dihantar. Lihat fail mdadm.conf biasanya di /etc untuk maklumat lanjut.

    Dalam serbuan tradisi, apabila satu peranti dari array serbuan gagal, array berada dalam mod yang dipanggil "terdegradasi". Dalam mod sedemikian, array masih berfungsi, data tetap dapat diakses, tetapi seluruh sistem mungkin mengalami penalti prestasi. Apabila anda mengganti peranti yang rosak, array dibina semula. Bergantung pada tahap RAID, operasi ini sama ada sangat mudah (pencerminan hanya memerlukan satu salinan) atau sangat kompleks (RAID5 dan 6 memerlukan pengiraan CRC). Dalam kedua -dua kes, masa yang diperlukan untuk menyelesaikan pembinaan semula ini biasanya agak besar (bergantung pada saiz array). Tetapi sistem biasanya dapat melaksanakan operasi ini secara dalam talian. Ia juga boleh mengehadkan overhead sebanyak mungkin apabila array serbuan melayani pelanggan. Perhatikan bahawa tahap RAID5 dan RAID6 dapat menekankan pelayan fail dengan baik semasa pembinaan semula array.

    Dalam kes prouhd, kesan ke atas keseluruhan sistem lebih buruk kerana satu kegagalan pemacu memberi kesan kepada banyak tatasusunan serbuan. Tradisi, susunan serbuan yang terdegradasi dapat dibina semula pada masa yang sama. Titik utama adalah untuk mengurangkan masa yang dihabiskan dalam mod terdegradasi meminimumkan kebarangkalian kehilangan data di seluruh dunia (semakin banyak masa dalam mod yang terdegrad. Tetapi pembinaan semula selari bukanlah idea yang baik dalam kes prouhd kerana RAID Arrays Share Storage Alat. Oleh itu, sebarang pembinaan semula memberi kesan kepada semua tatasusunan. Pembinaan semula selari hanya akan menekankan lebih banyak peranti penyimpanan, dan oleh itu, pembinaan semula global mungkin tidak akan pulih lebih awal daripada yang lebih mudah berurutan.

    6 Sep 6 00:57:02 Phobos kernel: MD: Penyegerakan Raid Array MD0 Sep 6 00:57:02 Phobos Kernel: MD: Minimum _Guaranteed_ Rekonstruksi Kelajuan: 1000 kb / sec / cakera . 6 Sep 6 00:57:02 Phobos kernel: MD: Menggunakan jalur lebar IO maksimum yang tersedia . 6 Sep 6 00:57:02 Phobos kernel: MD: Menggunakan tetingkap 128k, lebih dari 96256 blok . 6 Sep 6 00:57:02 Phobos kernel: MD: Menunda resync MD1 sehingga MD0 telah selesai resync (mereka berkongsi satu atau lebih unit fizikal) Sep 6 00:57:02 Phobos kernel: MD: Menyelaraskan array serbuan MD2 Sep 6 00: 57:02 Phobos Kernel: MD: Minimum _GewAteed_ Rekonstruksi Kelajuan: 1000 kb / sec / cakera . 6 Sep 6 00:57:02 Phobos kernel: MD: Menggunakan jalur lebar IO maksimum yang tersedia (tetapi tidak melebihi 200000 kb/ sec) untuk pembinaan semula . 6 Sep 6 00:57:02 Phobos kernel: MD: Menggunakan tetingkap 128k, lebih dari 625137152 blok . 6 Sep 6 00:57:02 Phobos kernel: MD: Menunda resync MD3 sehingga MD2 telah selesai resync (mereka berkongsi satu atau lebih unit fizikal) Sep 6 00:57:02 Phobos kernel: MD: Menunda resync MD1 sehingga MD0 telah selesai Resync (mereka berkongsi satu atau lebih unit fizikal) Sep 6 00:57:02 Phobos kernel: MD: Menunda Resync MD4 sehingga MD2 telah selesai Resync (mereka berkongsi satu atau lebih unit fizikal) Sep 6 00:57:02 Phobos Kernel: MD: Menunda resync MD1 sehingga MD0 telah selesai resync (mereka berkongsi satu atau lebih unit fizikal) 6 Sep 00:57:02 Phobos kernel: MD: Menunda resync MD3 sehingga MD4 telah selesai resync (mereka berkongsi satu atau lebih unit fizikal) Sep 6 00:57:25 Phobos kernel: MD: MD0: Sync selesai . 6 Sep 6 00:57:26 Phobos kernel: MD: Menunda resync MD3 sehingga MD4 telah selesai resync (mereka berkongsi satu atau lebih unit fizikal) Sep 6 00:57:26 Phobos kernel: MD: Menyelaraskan array serbuan MD1 Sep 6 00: 57:26 Phobos Kernel: MD: Minimum _GWAteed_ Rekonstruksi Kelajuan: 1000 kb / sec / cakera . 6 Sep 6 00:57:26 Phobos kernel: MD: Menggunakan jalur lebar IO maksimum yang tersedia . 6 Sep 6 00:57:26 Phobos kernel: MD: Menggunakan tetingkap 128k, lebih daripada jumlah blok 2016064 . 6 Sep 6 00:57:26 Phobos kernel: MD: Menunda resync MD4 sehingga MD2 telah selesai resync (mereka berkongsi satu atau lebih unit fizikal) Sep 6 00:57:26 Phobos kernel: RAID1 conf printout: 6 Sep 6 00:57: 26 kernel Phobos: --- WD: 2 RD: 2 

    Oleh itu, kita boleh bergantung kepada mdadm untuk melakukan perkara yang betul dengan serbuan, ia adalah homogen, konfigurasi heteregeous atau gabungan kedua -duanya.

    Prosedur penggantian

    Menggantikan peranti yang gagal dengan saiz yang sama.

    Ini adalah situasi yang ideal dan kebanyakannya mengikuti pendekatan serbuan tradisional kecuali anda kini mempunyai lebih daripada satu serbuan serbuan untuk dikendalikan untuk setiap peranti. Mari ambil contoh kami (Rajah 6 kiri), dan katakan bahawa kegagalan telah dikesan pada HDB. Perhatikan bahawa kegagalan mungkin telah dikesan secara tempatan di HDB2, dan bukan pada HDB1 sebagai contoh. Bagaimanapun, keseluruhan cakera perlu diganti dan oleh itu, semua tatasusunan. Dalam contoh kami, kami telah menyediakan storan dengan konfigurasi prouhd berikut:

    /Dev/MD0: HDA1, HDB1, HDC1, HDD1 (RAID5, (4-1)*1TB = 3 TB)

    /dev/md1: HDB2, HDD2 (RAID1, (2*1TB)/2 = 1TB)

    1. Secara logik, keluarkan setiap partition peranti yang rosak dari pelbagai serbuannya yang sepadan:
      mdadm /dev /md0 -faulty /dev /hdb1 -remove /dev /hdb1
      mdadm /dev /md1 -faulty /dev /hdb2 -remove /dev /hdb2
    2. Secara fizikal, keluarkan peranti yang rosak - melainkan jika anda mempunyai sistem plug panas seperti USB, anda perlu mematikan keseluruhan sistem;
    3. Menambah secara fizikal peranti baru - melainkan jika anda mempunyai sistem plug panas seperti USB, anda perlu kuasa pada keseluruhan sistem;
    4. Partition Peranti baru (katakan /dev /sda) dengan susun atur yang sama daripada peranti yang gagal: 2 partisi 1TB setiap /dev /sda1 dan /dev /sda2;
    5. Secara logiknya tambahkan setiap partition baru ke pelbagai serbuannya yang sepadan:
      mdadm /dev /md0 -add /dev /sda1
      mdadm /dev /md1 -add /dev /sda2

    Selepas beberapa ketika, semua tatasusunan serbuan anda akan dibina semula.

    Menggantikan peranti yang gagal dengan yang lebih besar.

    Kes ini tidak begitu mudah. Isu utama adalah bahawa keseluruhan susun atur sama sekali tidak berkaitan dengan yang lama. Mari ambil contoh sebelumnya, dan lihat apa yang berlaku jika /dev /hdb gagal. Sekiranya kita menggantikan peranti 2TB dengan peranti baru 3TB, kita harus berakhir dengan susun atur Rajah 6 (kanan).

    Rajah 6:Menggantikan peranti yang gagal oleh yang lebih besar. Susun atur sebelum (kiri) dan selepas (kanan) penggantian /dev /hdb: 2 dengan /dev /sda: 3.

    Perhatikan partition itu kini 2TB dan bukan dari 1TB kerana ia berlaku sebelum ini (lihat Rajah 3). Ini bermakna bahawa array serbuan terdahulu yang dibuat dari /dev /hdb2: 1TB dan /dev /hdd2: 1TB tidak lebih relevan selepas penggantian: ia tidak muncul dalam algoritma susun atur. Sebaliknya, kami mempunyai pelbagai serbuan yang diperbuat daripada /dev /sda2: 2TB dan /dev /hdd2: 2TB.

    Rajah 7:Menggantikan peranti gagal (f) dengan yang lebih besar (k), kes umum sebelum (atas) dan selepas (bawah).


    Dalam kes umum, seperti yang ditunjukkan pada Rajah 7, partisi terakhir peranti gagal , tidak lebih relevan. Oleh itu, keseluruhan serbuan serbuan dilabel saiz , Dibuat dari partition peranti harus dikeluarkan. Array berikut, , yang dibuat dari partisi terakhir cakera berikut, , harus diubahsuai mengikut susun atur baru. Partition mempunyai saiz . Partition ini kini boleh "digabungkan" kerana tidak ada "di antara" dan . Oleh itu, partition "bergabung" baru menjadi dengan saiz .

    Akhirnya, peranti baru dimasukkan di antara peranti di peringkat dan kerana kemampuannya begitu . (Perhatikan bahawa semua peranti akan beralih ke pangkat Kerana peranti baru ditambahkan selepas peranti gagal ). Peranti baru harus dipartisi sehingga semua partition dari sehingga adalah saiz yang sama daripada susun atur sebelumnya: . Saiz partition diberikan oleh: Seperti yang telah kita lihat sebelumnya. Akhirnya, semua partisi berikut, sehingga adalah saiz yang sama daripada susun atur lama: . Peranti baru ini, menambah pengubahsuaiannya sendiri dalam susun atur baru mengikut perbezaan antara saiznya dan saiz peranti sebelumnya yang merupakan peranti k di susun atur lama ( ). Oleh itu, dalam susun atur baru, partition k mempunyai saiz yang diberikan oleh . Akhirnya, partition seterusnya harus diubah suai. Sebelum ini bersaiz , Tetapi ini tidak lebih relevan dalam susun atur baru. Ia harus dikurangkan menjadi . Partition berikut tidak boleh diubah. Perhatikan bahawa peranti baru menggantikan partition yang gagal dari peranti yang gagal, tetapi menambah 1 lagi partition ke tatasusunan serbuan . Kami perhatikan bilangan partition yang membentuk pelbagai serbuan . Oleh itu, kita ada: . Mujur.

    Ringkasnya, susun atur lama:

    menjadi susun atur baru:

    dengan:

    Seperti yang kita lihat, menggantikan peranti yang rosak oleh yang lebih besar membawa kepada banyak pengubahsuaian. Mujur. Bagaimanapun, keseluruhan operasi jelas memakan masa dan rawan kesilapan jika dilakukan tanpa alat yang betul.

    Mudah -mudahan, keseluruhan proses dapat automatik. Algoritma yang dibentangkan di bawah menggunakan pengurusan kelantangan lanjutan LVM. Ia mengandaikan bahawa tatasusunan serbuan adalah jumlah fizikal yang dimiliki oleh beberapa kumpulan maya (VG) yang mana jumlah logik (LV) dicipta untuk pembuatan sistem fail. Oleh itu, kami perhatikan Kelantangan fizikal LVM yang disokong oleh array serbuan .

    Kami rasa cakera Telah mati. Oleh itu, kita mempunyai tatasusunan serbuan yang terdegradasi, dan tatasusunan serbuan selamat. Prosedur penggantian automatik ditakrifkan langkah demi langkah di bawah.

    1. Sandarkan data anda (ini sepatutnya jelas, kami bermain dengan susunan yang terdegrad! Untuk tujuan itu, anda boleh menggunakan ruang simpanan yang tersedia yang tidak tergolong dalam cakera yang gagal. Serangan serbuan seterusnya dalam susun atur baik -baik saja.
    2. Tandakan semua partition peranti yang rosak sebagai rosak, dalam tatasusunan serbuan mereka dan keluarkannya (mdadm -fail -remove).
    3. Keluarkan peranti penyimpanan yang gagal .
    4. Masukkan peranti storan baru .
    5. Partition peranti baru Menurut susun atur baru (fdisk). Khususnya, partition peranti gagal terakhir dan partition peranti baru yang terakhir harus mempunyai saiz yang betul: dan . Pada peringkat itu, masih akan mempunyai tray yang terdegradasi: .
    6. Ganti partition gagal dengan menambahkan partition peranti baru ke array serbuan yang sepadan (mdadm -add). Selepas langkah ini, hanya adalah array serbuan yang terdegradasi.
    7. Keluarkan , dan dari VG yang sepadan (pvmove). LVM akan mengendalikan keadaan itu dengan baik, tetapi memerlukan ruang kosong yang cukup dalam VG (dan masa!). Ia sebenarnya akan menyalin data ke PV lain dalam vg (sama).
    8. Hentikan kedua -dua tatasusunan serbuan dan sepadan dengan dan (berhenti mdadm).
    9. Partition Gabungan (FDISK) dan menjadi satu partisi tunggal . Ini harus berfungsi dengan baik, kerana partisi lain tidak terjejas oleh itu. Ia harus dilakukan pada setiap peranti berikut peranti gagal : itu dia Peranti penyimpanan secara total (peranti sudah dibahagikan pada langkah 5).
    10. Buat pelbagai serbuan baru dari partition yang digabungkan (MDADM membuat).
    11. Buat yang sepadan (pvCreate), dan tambahkannya ke VG sebelumnya (vGextend). Pada langkah itu, kami kembali ke ruang penyimpanan global yang selamat: semua tatasusunan serbuan kini selamat. Tetapi susun aturnya tidak optimum: partition masih tidak digunakan sebagai contoh.
    12. Keluarkan dari VG yang sepadan (pvmove). Sekali lagi, anda memerlukan beberapa ruang penyimpanan yang ada.
    13. Hentikan pelbagai serbuan yang sepadan (berhenti MDADM).
    14. Partition lama berpecah menjadi yang baru dan (fdisk); Ini harus dilakukan pada setiap peranti yang mengikuti k, itu Peranti secara keseluruhan. Ini tidak boleh menyebabkan masalah, partisi lain tidak terjejas.
    15. Buat dua array serbuan baru dan dari demikian 2 partisi baru dan (MDADM membuat).
    16. Buat dan Sehubungan itu (pvcreate). Masukkan mereka kembali ke VG (vGextend).
    17. Akhirnya, tambahkan setiap partisi peranti baru ke array serbuan yang sepadan . Anda mesti menanam tatasusunan serbuan Jadi itu (mdadm berkembang).
    18. Kami kembali dengan susun atur yang betul baru, dengan tatasusunan serbuan selamat.

    Perhatikan bahawa proses ini memberi tumpuan kepada pengguna akhir: ia menjadikan pengganti sebagai mudah, menghalang pengguna menunggu lama antara penyingkiran peranti yang gagal dan pengganti baru. Semua dilakukan pada awal. Sudah tentu, masa yang diperlukan sebelum seluruh kumpulan tatasusunan serbuan berjalan tidak degradasi boleh menjadi sangat besar. Tetapi ia agak telus dari sudut pandangan akhir pengguna.

    Menggantikan pemacu yang gagal dengan yang lebih kecil

    Kes ini adalah yang paling teruk, kerana dua sebab. Pertama, keupayaan global jelas dikurangkan: . Kedua, kerana beberapa bait pemacu yang lebih besar digunakan untuk toleransi kesalahan10, Sebilangan bait itu tidak lagi hadir dalam peranti baru. Ini akan memberi kesan kepada algoritma praktikal seperti yang akan kita lihat.

    Semasa peranti Gagal, semua tatasusunan serbuan , di mana menjadi terdegradasi. Apabila kita mengganti peranti yang gagal oleh peranti baru di mana , , kemudian serbuan serbuan menjadi diperbaiki, tetapi serangan serbuan tetap terdegradasi (lihat Rajah 8) kerana tidak ada ruang penyimpanan yang cukup dalam peranti baru untuk mengambil alih yang gagal. (Perhatikan bahawa semua peranti akan beralih ke pangkat Kerana peranti baru ditambahkan sebelumnya peranti gagal ).


    Rajah 8: Menggantikan peranti gagal (f) dengan yang lebih kecil (k), kes umum sebelum (atas) dan selepas (bawah).

    Seperti dalam kes sebelumnya, penyelesaiannya memerlukan penggabungan partisi dengan satu dari Oleh kerana tidak ada lagi . Oleh itu, pada semua peranti . Juga, peranti baru , harus dipartisi dengan betul. Khususnya, partisi terakhirnya . Peranti harus menukar partisi mereka mengikut partition baru . Bagi peranti tersebut, Partition harus juga diubah: . Pengubahsuaian yang paling penting menyangkut semua tatasusunan serangan kerana mereka masih terdegradasi. Bagi mereka semua, bilangan peranti mereka (maya) harus dikurangkan dengan satu: sebagai contoh, dibuat dari Partition "menegak" dari peranti sehingga ke peranti sejak peranti cukup luas untuk menyokong partition . Tidak lagi berlaku Oleh kerana peranti baru tidak menyediakan ruang penyimpanan yang mencukupi untuk menyokong a partition. Oleh itu, .

    Ringkasnya, susun atur lama:

    menjadi susun atur baru:

    dengan

    Malangnya, sejauh yang kita tahu, tidak (pada masa ini) mungkin untuk mengecilkan peranti RAID menggunakan RAID LINUX. Satu -satunya pilihan ialah mengeluarkan keseluruhan set tatasusunan sepenuhnya, dan untuk membuat yang baru dengan bilangan peranti yang betul. Oleh itu, prosedur penggantian automatik ditakrifkan langkah demi langkah di bawah:

    1. Sandarkan data anda! 😉
    2. Tandakan semua partition peranti yang rosak sebagai rosak, dalam tatasusunan serbuan mereka dan keluarkannya (mdadm -fail -remove).
    3. Keluarkan peranti penyimpanan yang gagal .
    4. Masukkan peranti storan baru .
    5. Partition peranti baru mengikut susun atur baru (fdisk). Khususnya, partisi terakhir harus mempunyai saiz yang betul: . Pada peringkat itu kita masih ada tatasusunan serbuan yang terdegradasi: .
    6. Ganti partisi yang rosak dengan menambahkan peranti baru dan menambahkannya ke array masing -masing . Selepas langkah ini, masih lama terdegradasi, itu RAID Secara keseluruhan. Dua tatasusunan serbuan masih diperbuat daripada partisi bersaiz yang salah: dan .
    7. Untuk setiap array :
      1. Gerakkan data yang sepadan dengan ke peranti lain (PVMove pada jumlah LVM yang berkaitan );
      2. Keluarkan kelantangan LVM yang sepadan dari kumpulan kelantangannya (pvremove);
      3. Berhenti array berkaitan (MDADM berhenti);
      4. Buat pelbagai serbuan baru dari partition . Perhatikan bahawa kini terdapat satu partition yang kurang di : ;
      5. Buat kelantangan LVM yang sepadan (pvcreate);
      6. Tambahkan kelantangan LVM baru ke kumpulan kelantangannya yang berkaitan .
    8. Pada langkah ini, dan Perancis masih terbuat dari saiz yang salah dan .
    9. Gerakkan data yang sepadan dengan ke peranti lain (PVMove pada jumlah LVM yang berkaitan );
    10. Keluarkan kelantangan LVM yang sepadan dari kumpulan kelantangannya (pvremove);
    11. Hentikan Array Berkaitan (MDADM berhenti);
    12. Gabungan (fdisk) partisi lama dan menjadi satu partisi tunggal . Ini harus berfungsi dengan baik, kerana partisi lain tidak terjejas oleh itu. Ia harus dilakukan pada setiap peranti berikut peranti gagal : itu dia Peranti penyimpanan secara keseluruhan.
    13. Buat pelbagai serbuan baru dari partition yang digabungkan (MDADM membuat).
    14. Buat yang sepadan (pvCreate), dan tambahkannya ke VG sebelumnya (vGextend). Pada langkah itu, hanya tetap salah dan terdegradasi.
    15. Gerakkan data yang sepadan dengan ke peranti lain (PVMove pada jumlah LVM yang berkaitan ).
    16. Revove volum LVM yang sepadan dari kumpulan kelantangannya (pvremove);
    17. Hentikan Array Berkaitan (MDADM berhenti);
    18. Partisi lama berpecah (fdisk) ke partition baru dan . Ini harus dilakukan pada semua peranti berikut, itu Peranti secara keseluruhan.
    19. Buat (MDADM -Create) Array Raid Baru dan dari partition dan ;
    20. Buat (pvcreate) yang sepadan dan dan tambahkan (vGEXTend) mereka ke yang sepadan .
    21. Anda kembali dengan susun atur yang betul baru, dengan tatasusunan serbuan selamat.

    Perhatikan bahawa langkah 7 dilakukan satu array setiap satu array. Idea utama adalah untuk mengurangkan jumlah ruang penyimpanan yang ada yang diperlukan oleh algoritma. Pilihan lain adalah untuk menghapuskan semua jilid LVM (PV) pada masa yang sama dari VG yang berkaitan, kemudian, untuk menghapuskan susunan serbuan yang sepadan mereka, dan kemudian mencipta semula mereka dengan bilangan partisi yang betul (ia harus dikurangkan oleh satu). Mengeluarkan semua tatasusunan tersebut dalam satu giliran boleh mengakibatkan pengurangan ruang penyimpanan yang besar yang mungkin menghalang keseluruhan proses sambil mengeluarkan PV dari VG yang sepadan mereka. Oleh kerana penyingkiran seperti itu menghasilkan data dari satu PV kepada orang lain (dalam VG yang sama), ia juga memerlukan ruang kosong yang cukup dalam VG untuk menampung salinan penuh.

    Di sisi lain, algoritma yang diterangkan boleh menghasilkan sejumlah besar pemindahan data. Contohnya, katakan bahawa semua PV sebenarnya dalam satu VG. Penyingkiran PV pertama dalam senarai ( oleh itu) boleh mengakibatkan langkah datanya ke . Malangnya, pada lelaran seterusnya, akan juga dikeluarkan yang mengakibatkan pemindahan data yang sama ke dan sebagainya. Penyiasatan pada algoritma yang lebih bijak untuk langkah tertentu yang mesti dilakukan oleh itu.

    Rekonstruksi pelbagai RAID

    Memandangkan saiz pemacu keras semasa, dan ralat bit yang tidak dapat dipulihkan (UBE) - untuk pemacu cakera kelas perusahaan (SCSI, FC, SAS) dan Untuk pemacu cakera kelas desktop (IDE/ATA/PATA, SATA), pembinaan semula array cakera selepas kegagalan peranti boleh menjadi agak mencabar. Apabila array berada dalam mod yang terdegradasi, semasa pembinaan semula, ia cuba mendapatkan data dari baki peranti. Tetapi dengan kapasiti peranti yang besar hari ini, kebarangkalian kesilapan semasa langkah itu menjadi penting. Terutama, terdapat trend dengan kumpulan RAID5 yang besar untuk tidak dapat dipulihkan selepas kegagalan cakera tunggal. Oleh itu, reka bentuk RAID6 yang dapat mengendalikan 2 kegagalan cakera serentak tetapi dengan prestasi penulisan yang sangat tinggi.

    Daripada menubuhkan kumpulan RAID5 yang besar, mungkin lebih baik untuk menetapkan set besar RAID10 Array. Ini memberikan hasil yang lebih baik dari segi kebolehpercayaan (RAID1 jauh lebih mudah untuk pulih daripada RAID5), dan prestasi. Tetapi kos penyimpanan yang tinggi - 50% ruang hilang - sering membuat pilihan ini tidak relevan walaupun harga murah MB hari ini.

    Dengan Prouhd, memandangkan ruang yang sia -sia adalah minimum, pilihan RAID10 mungkin menjadi kompromi yang boleh diterima (lebih dari susun atur RAID tradisional tentu saja).

    Lebih -lebih lagi, di Prouhd, komponen RAID tidak meliputi keseluruhan pemacu tetapi hanya sebahagian daripadanya (partition). Oleh itu, kebarangkalian kesilapan sektor lain dikurangkan.

    Menambah/mengeluarkan peranti ke/dari prouhd

    Seperti yang ditunjukkan oleh Rajah 9, menambah peranti baru di kolam lebih mudah daripada kes pengganti sebelumnya. Pemisahan terakhir peranti baru memberi kesan kepada susun atur sebelumnya:

    Dan semua serangan serbuan sehingga harus melihat bilangan peranti mereka meningkat dengan satu:

    Rajah 9:Menambah peranti (k) ke kolam, kes umum sebelum (kiri) dan selepas (kanan).

    Sebaliknya juga lebih mudah daripada prosedur penggantian seperti yang ditunjukkan oleh Rajah 10. Mengeluarkan peranti dari kolam juga membawa kepada pengubahsuaian partisi yang berkaitan :

    Dan semua serangan serbuan sehingga harus melihat bilangan peranti mereka menurun dengan satu:

    Rajah 10:Mengeluarkan peranti (k) dari kolam, kes umum sebelum (kiri) dan selepas (kanan).

    Kedua-dua algoritma langkah demi langkah agak mudah berbanding dengan pengganti. Mereka ditinggalkan untuk rasa ingin tahu pembaca.

    Ramalan: Kotak Penyimpanan untuk Purata Pengguna Akhir

    Diambil secara individu, setiap peranti penyimpanan menjawab beberapa keperluan pengguna akhir pada satu masa (contohnya, kamera memerlukan kad XD). Tetapi selalunya, peranti penyimpanan baru ditambah ke kolam untuk pelbagai sebab (kamera baru tanpa sokongan kad XD, cakera USB baru untuk lebih banyak ruang penyimpanan, ...). Pengguna akhir akhirnya mempunyai ruang penyimpanan global yang terdiri daripada komponen terputus individu. Beberapa peranti masih memerlukan konteks yang berguna (kamera baru dan kad SD baru). Tetapi yang lain tidak boleh digunakan walaupun mereka masih bekerja (kad XD lama).

    Kajian ini menunjukkan bahawa kotak penyimpanan boleh disediakan dengan ciri -ciri berikut:

    • Menyediakan ruang penyimpanan global, yang diperbuat daripada sebarang peranti penyimpanan fizikal dari sebarang saiz, sebarang teknologi (cakera, SDD, flash, usb-sticks, SDCard, XDCard, dan sebagainya);
    • menyokong penambahan cakera, penyingkiran dan penggantian;
    • menyokong sebarang tahap RAID;
    • menyokong campuran tahap RAID;
    • menyokong toleransi kesalahan sehingga tahap yang bergantung kepada tahap RAID yang digunakan;
    • Apabila digunakan dengan betul, kotak itu dapat memberikan prestasi tinggi (contohnya, jika 2 tatasusunan serbuan tidak pernah digunakan serentak);
    • menawarkan prestasi yang baik untuk keperluan pengguna akhir purata (seperti streaming media);
    • Sangat berkesan dari segi kecekapan penyimpanan: mana -mana byte tunggal boleh digunakan (sama ada untuk penyimpanan atau untuk toleransi kesalahan bergantung kepada keperluan pengguna khusus). Sebaliknya, kotak penyimpanan mengurangkan ruang terbuang kepada minimum (ruang itu masih boleh digunakan untuk menyimpan data, tetapi toleransi kesalahan tidak disokong dalam kes tersebut).

    Sudah tentu, kerumitan penyelesaian kita harus bertopeng ke pengguna akhir. Sebagai contoh, bayangkan kotak penyimpanan yang terdiri daripada sejumlah besar sambungan untuk pemacu dan tongkat USB, cakera firewire, cakera SATA/SCSI, XD/SD-CARD dan semua yang lain, yang melaksanakan penyelesaian yang dibentangkan. Pada permulaan, apabila semua peranti telah disambungkan, perisian akan mengesan semua peranti storan, dan akan mencadangkan konfigurasi mudah seperti:

    • memaksimumkan ruang (pilih RAID5 apabila mungkin, kemudian RAID10, kemudian RAID1);
    • memaksimumkan prestasi (pilih RAID10 apabila mungkin, kemudian RAID1);
    • Konfigurasi selamat (pilih RAID10 apabila mungkin, RAID5, kemudian RAID1);
    • konfigurasi tersuai.

    Membentangkan konfigurasi tersebut secara grafik, membolehkan perbandingan konfigurasi, mencadangkan konfigurasi yang telah ditetapkan untuk beban kerja yang terkenal (fail multimedia, fail sistem, fail log dan sebagainya) akan menambah penyelesaian awal.

    Akhirnya, prestasi utama (dan kos) kotak penyimpanan sedemikian akan datang dari bilangan pengawal sebenar. Permintaan serentak (RAID secara semula jadi meningkatkannya) yang terbaik dihidangkan apabila mereka datang dari pengawal yang berbeza.

    Soalan, Komen & Cadangan

    Sekiranya anda mempunyai sebarang pertanyaan, komen, dan/atau cadangan mengenai dokumen ini, sila hubungi saya di alamat berikut: [email protected].

    Pengakuan

    Penulis ingin mengucapkan terima kasih kepada Lubos Rendek kerana menerbitkan karya ini dan Pascal Grange atas komen dan cadangannya yang berharga.


    Nota kaki

    ... RAID1
    Untuk pengenalan mengenai teknologi RAID, sila rujuk artikel dalam talian seperti:

    http: // en.Wikipedia.org/wiki/standard_raid_levels

    … artikel2
    http: // www.Vigneras.org/pierre/wp/2009/07/21/memilih-the-kanan-file-system-layout-under-linux/
    ... alat ganti3
    Dengan cara ini, kerana cakera yang sama mungkin gagal pada masa yang sama, mungkin lebih baik untuk membuat kolam simpanan dari cakera model yang berbeza atau bahkan penjual.
    ... kelantangan4
    Ini berasal dari istilah LVM yang sering digunakan dengan RAID di Linux.
    ... 15
    Ini adalah kes terburuk dan yang harus diambil kira. Sudah tentu, cakera HDA dan HDC mungkin gagal, contohnya, dan PV akan tetap tersedia, tetapi kes terbaik bukanlah yang mewakili tahap toleransi kesalahan.
    ... toleransi6
    Perhatikan bahawa ini adalah bebas pada tahap serbuan sebenar yang dipilih: setiap bait dalam pelbagai serbuan digunakan, sama ada untuk penyimpanan atau untuk toleransi kesalahan. Contohnya, menggunakan RAID1, kami hanya mendapat 1 TB dari 8 TB dan mungkin kelihatan seperti pembaziran. Tetapi jika RAID1 dipilih untuk array sedemikian, ini sebenarnya bermaksud bahawa tahap toleransi kesalahan 3 diperlukan. Dan tahap toleransi yang salah mempunyai kos penyimpanan!
    ... RAID57
    Dari sudut pandangan ruang simpanan yang ada, RAID5 menggunakan satu partition untuk toleransi kesalahan. Apabila hanya 2 partisi yang tersedia, RAID1 adalah satu -satunya pilihan yang tersedia dengan toleransi kesalahan, dan ia juga menggunakan satu partition untuk tujuan itu. Oleh itu, dari perspektif ruang penyimpanan maksimum, 2 peranti RAID1 array dianggap sebagai array RAID5.
    8
    RAID0 hanya dibentangkan jika pilihan -Unsafe ditentukan. RAID6 dan tahap RAID lain tidak dilaksanakan pada masa ini. Sebarang pertolongan dialu -alukan! 😉
    ... berpisah9
    Lihat http: // www.gnu.org/perisian/parti/indeks.shtml
    ... toleransi10
    Kecuali RAID0 digunakan, tetapi dalam kes itu, keadaannya lebih teruk lagi!

    Hak cipta

    Dokumen ini dilesenkan di bawah a Creative Commons Atribusi-Share sama 2.0 Lesen Perancis. Sila, lihat untuk maklumat lanjut: http: // creativeCommons.org/lesen/by-sa/2.0/

    Penafian

    Maklumat yang terkandung dalam dokumen ini adalah untuk tujuan maklumat umum sahaja. Maklumat ini disediakan oleh Pierre Vignéras dan semasa saya berusaha untuk menyimpan maklumat terkini dan membetulkan, saya tidak membuat sebarang representasi atau jaminan apa -apa jenis, nyata atau tersirat, mengenai kesempurnaan, ketepatan, kebolehpercayaan, kesesuaian atau ketersediaan berkenaan dengan dokumen atau maklumat, produk, perkhidmatan, atau grafik yang berkaitan yang terkandung dalam dokumen untuk tujuan apa pun.

    Apa -apa pergantungan yang anda letakkan pada maklumat tersebut adalah dengan ketat atas risiko anda sendiri. Sekiranya tidak, kita akan bertanggungjawab atas sebarang kerugian atau kerosakan termasuk tanpa batasan, kerugian tidak langsung atau akibat atau kerosakan, atau apa -apa kerugian atau kerosakan apa pun yang timbul daripada kehilangan data atau keuntungan yang timbul daripada, atau berkaitan dengan penggunaan ini dokumen.

    Melalui dokumen ini, anda dapat menghubungkan ke dokumen lain yang tidak berada di bawah kawalan Pierre Vignéras. Saya tidak mempunyai kawalan ke atas sifat, kandungan dan ketersediaan laman web tersebut. Kemasukan sebarang pautan tidak semestinya menyiratkan cadangan atau menyokong pandangan yang dinyatakan

    Tutorial Linux Berkaitan:

    • Cara memasang Ubuntu di USB Stick
    • Buat Manjaro Linux Bootable USB
    • Eclipse IDE untuk pemasangan pemaju C/C ++ di Ubuntu ..
    • Bash dan DD: Menguji kelajuan pemacu kilat dengan skrip mudah
    • Buat Ubuntu 20 bootable.04 USB melekat pada MS Windows 10
    • Cara Memisahkan Pemacu USB di Linux
    • Cara Menyiapkan RAID1 di Linux
    • Pengenalan kepada Automasi, Alat dan Teknik Linux
    • Cara Prestasi Cakera Penanda Aras di Linux
    • Ujian penanda aras pemacu USB di Linux