Perkenalan

Perkenalan

13 April 2010
Oleh Pierre Vignéras


Abstrak:

RAID masih belum diadopsi oleh sebagian besar pengguna akhir meskipun kualitasnya yang melekat seperti kinerja dan keandalan. Alasan seperti kompleksitas teknologi RAID (level, keras/lunak), pengaturan, atau dukungan dapat diberikan. Kami percaya alasan utamanya adalah bahwa sebagian besar pengguna akhir memiliki sejumlah besar perangkat penyimpanan heterogen (USB Stick, IDE/SATA/SCSI Internal/Eksternal Hard Drives, SD/XD Card, SSD, ...), dan bahwa sistem berbasis RAID itu sebagian besar dirancang untuk hard disk yang homogen (dalam ukuran dan teknologi). Oleh karena itu, saat ini tidak ada solusi penyimpanan yang mengelola perangkat penyimpanan yang heterogen secara efisien.

Dalam artikel ini, kami mengusulkan solusi seperti itu dan kami menyebutnya Prouhd (kumpulan serangan atas perangkat heterogen pengguna). Solusi ini mendukung perangkat penyimpanan yang heterogen (dalam ukuran dan teknologi), memaksimalkan konsumsi ruang penyimpanan yang tersedia, toleran terhadap kegagalan perangkat hingga tingkat yang dapat disesuaikan, masih membuat penambahan otomatis, penghapusan dan penggantian perangkat penyimpanan mungkin dan tetap menjadi performan di hadapan The Face Of alur kerja pengguna akhir rata-rata.

Meskipun artikel ini membuat beberapa referensi ke Linux, algoritma yang dijelaskan tidak tergantung pada sistem operasi dan dengan demikian dapat diimplementasikan pada salah satu dari mereka.

Perkenalan

Sedangkan RAID1 telah diadopsi secara besar-besaran oleh industri, masih belum umum di desktop pengguna akhir. Kompleksitas sistem serangan mungkin menjadi salah satu alasan ... di antara banyak lainnya. Sebenarnya, di pusat data canggih, penyimpanan dirancang sesuai dengan beberapa persyaratan (pendekatan "top-bottom" yang sudah dibahas dalam artikel sebelumnya2). Oleh karena itu, dari perspektif serangan, penyimpanan biasanya terdiri dari kumpulan disk dengan ukuran dan karakteristik yang sama termasuk suku cadang3. Fokusnya sering pada kinerja. Kapasitas penyimpanan global biasanya bukan masalah besar.

Kasing pengguna akhir rata-rata agak berbeda karena kapasitas penyimpanan global mereka terdiri dari berbagai perangkat penyimpanan seperti:

  • Hard drive (IDE internal, SATA internal/eksternal, USB eksternal, firewire eksternal);
  • Tongkat usb;
  • Memori flash seperti sdcard, xdcard,…;
  • SSD.

Sebaliknya, kinerja bukan masalah besar bagi pengguna akhir: sebagian besar penggunaan tidak memerlukan throughput yang sangat tinggi. Biaya dan kapasitas adalah faktor penting utama bersama dengan kemudahan penggunaan. Ngomong-ngomong, pengguna akhir biasanya tidak memiliki perangkat cadangan.

Kami mengusulkan dalam makalah ini algoritma untuk tata letak disk menggunakan raid (perangkat lunak) yang memiliki karakteristik berikut:

  • Ini mendukung perangkat penyimpanan yang heterogen (ukuran dan teknologi);
  • itu memaksimalkan ruang penyimpanan;
  • Ini toleran terhadap kegagalan perangkat hingga tingkat tertentu yang tergantung pada jumlah perangkat yang tersedia dan pada tingkat RAID yang dipilih;
  • Itu masih memungkinkan penambahan, penghapusan dan penggantian perangkat penyimpanan secara otomatis dalam kondisi tertentu;
  • itu tetap berkinerja dalam menghadapi alur kerja pengguna akhir rata-rata.

Algoritma

Keterangan

Secara konseptual, pertama -tama kami menumpuk perangkat penyimpanan satu di atas yang lain seperti yang ditunjukkan pada Gambar 1.

Gambar 1:Perangkat penyimpanan susun (ukuran yang sama, casing raid yang ideal).

Pada contoh itu dengan perangkat, masing -masing kapasitas (terabytes), kami berakhir dengan kapasitas penyimpanan global . Dari ruang penyimpanan global itu, menggunakan RAID, Anda bisa mendapatkan:

  • A 4 TB () Perangkat penyimpanan virtual (disebut PV untuk volume fisik4 Berikut ini) menggunakan raid0 (level 0), tetapi kemudian Anda tidak memiliki toleransi kesalahan (jika perangkat fisik gagal, seluruh perangkat virtual hilang).
  • a 1 tb () PV menggunakan RAID1; Dalam hal ini, Anda memiliki tingkat toleransi kesalahan 3 (PV tetap valid dalam menghadapi 3 penggerak kegagalan, dan ini adalah maksimum).
  • A 3 TB () PV menggunakan RAID5; Dalam hal ini, Anda memiliki tingkat toleransi kesalahan 1;
  • A 2 TB () PV menggunakan RAID10; Ini kasusnya, tingkat toleransi kesalahan juga 15 ( adalah jumlah set cermin, 2 dalam kasus kami).

Contoh sebelumnya hampir tidak mewakili kasus nyata (pengguna akhir). Gambar 2 mewakili skenario seperti itu, dengan 4 disk juga (meskipun kapasitas yang terdaftar tidak mewakili kasus penggunaan umum, mereka memudahkan perhitungan kapasitas mental untuk deskripsi algoritma). Dalam hal ini, kita hadapi perangkat , kapasitas masing -masing : 1 tb, 2 tb, 1 tb, dan 4 tb. Karenanya kapasitas penyimpanan global adalah:

.

Karena array serangan tradisional membutuhkan ukuran perangkat yang sama, dalam hal ini, kapasitas perangkat minimum digunakan:

. Karena itu, kita dapat memiliki:

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

Gambar 2:Perangkat penyimpanan susun (ukuran berbeda = kasus pengguna akhir biasa).

Dengan demikian, kemungkinan persis sama dari pada contoh sebelumnya. Namun perbedaan utama adalah ruang penyimpanan yang terbuang - didefinisikan sebagai ruang penyimpanan yang tidak digunakan dari setiap disk tidak untuk penyimpanan maupun untuk toleransi kesalahan6.

Dalam contoh kami, kapasitas 1 TB dari kedua perangkat HDA dan HDC untungnya digunakan sepenuhnya. Tetapi hanya 1 TB dari 2 TB perangkat HDB dan 1 TB dari 4 TB perangkat HDD benar -benar digunakan. Oleh karena itu dalam hal ini, ruang penyimpanan yang terbuang diberikan oleh rumus:

Dalam contoh ini, dari , Saya.e. 50% dari ruang penyimpanan global sebenarnya tidak digunakan. Untuk pengguna akhir, jumlah ruang sia-sia seperti itu jelas merupakan argumen yang menentang penggunaan RAID, terlepas dari semua keuntungan lain yang disediakan RAID (fleksibilitas untuk menambah/menghapus perangkat, toleransi kesalahan dan kinerja).

Algoritma yang kami usulkan memang sangat sederhana. Pertama, kami mengurutkan daftar perangkat dalam urutan kapasitas naik. Kemudian, kami mempartisi setiap disk sedemikian rupa sehingga array dengan jumlah maksimum partisi lain dengan ukuran yang sama dapat dibuat. Gambar 3 menunjukkan proses dalam contoh kami sebelumnya dengan 4 disk.

Gambar 3:Ilustrasi tata letak serangan vertikal.

Partisi pertama dibuat di semua disk. Ukuran partisi itu adalah ukuran disk pertama, HDA, yang merupakan minimum - 1 TB dalam kasus kami. Karena disk kedua dalam daftar yang diurutkan, bernama HDC juga memiliki kapasitas 1 TB, tidak ada ruang yang tersedia untuk membuat partisi baru. Oleh karena itu, dilewati. Disk berikutnya adalah HDB dalam daftar yang diurutkan kami. Kapasitasnya adalah 2 TB. Pertama Partisi sudah membutuhkan 1 TB. 1 TB lain tersedia untuk partisi dan menjadi . Perhatikan bahwa partisi 1 TB lainnya ini juga dibuat pada setiap disk berikut dalam daftar yang diurutkan kami. Oleh karena itu, perangkat terakhir kami, HDD sudah memiliki 2 partisi: Dan . Karena ini adalah disk terakhir, ruang penyimpanan yang tersisa (2 TB) akan terbuang sia -sia. Sekarang, array serangan dapat dibuat dari setiap partisi dengan ukuran yang sama dari berbagai disk. Dalam hal ini, kami memiliki pilihan berikut:

  • membuat array serangan menggunakan 4 Partisi, kita bisa mendapatkan:
    • 4 TB di RAID0;
    • 1 TB di RAID1;
    • 3 TB di RAID5;
    • 2 TB di RAID10;
  • membuat array lain menggunakan 2 Partisi, kita bisa mendapatkan:
    • 2 TB di RAID0;
    • 1 TB di RAID1.

Oleh karena itu, kami memaksimalkan ruang penyimpanan yang bisa kami dapatkan dari beberapa perangkat. Sebenarnya, kami meminimalkan ruang yang terbuang yang diberikan - dengan algoritma ini - dengan partisi terakhir drive terakhir, dalam hal ini: . Hanya 20% dari ruang penyimpanan global yang terbuang, dan ini adalah minimum yang bisa kita dapatkan. Mengatakan sebaliknya, 80% dari ruang penyimpanan global digunakan baik untuk penyimpanan atau toleransi kesalahan dan ini adalah maksimum yang bisa kita dapatkan menggunakan teknologi RAID.

Jumlah ruang penyimpanan yang tersedia tergantung pada level RAID yang dipilih untuk setiap PV dari partisi vertikal . Ini dapat bervariasi dari 2 tb raid1, raid1 hingga 6 tb raid0, raid0. Ruang penyimpanan maksimum yang tersedia dengan tingkat toleransi kesalahan 1 adalah 4 tb raid5, raid1.

Analisis

Di bagian ini, kami akan memberikan analisis algoritma kami. Kami mempertimbangkan perangkat penyimpanan dengan kapasitas masing -masing untuk Di mana . Mengatakan sebaliknya, itu Drive diurutkan berdasarkan kapasitasnya dalam urutan naik seperti yang diilustrasikan pada Gambar 4. Kami juga mendefinisikan untuk tujuan penyederhanaan.

Gambar 4:Ilustrasi algroritma umum.

Kami juga mendefinisikan:

  • Ruang penyimpanan global:

    secara alami, kami juga mendefinisikan (tidak ada perangkat tidak memberikan penyimpanan);

  • ruang penyimpanan yang terbuang ; Kami juga mendefinisikan (Tidak ada perangkat yang tidak menghasilkan limbah); Perhatikan toh itu (Dengan hanya satu perangkat Anda tidak dapat membuat array serangan apa pun dan oleh karena itu, ruang yang terbuang adalah maksimal!);
  • Ruang penyimpanan maksimum (aman) yang tersedia (menggunakan RAID57):
  • Kami juga mendefinisikan , Dan (Anda membutuhkan setidaknya 2 drive untuk membuat array serangan).
  • ruang penyimpanan yang hilang didefinisikan sebagai ; Ini mewakili jumlah ruang yang tidak digunakan untuk penyimpanan (termasuk ruang yang digunakan untuk toleransi kesalahan dan ruang yang terbuang); Perhatikan itu dan itu (Dengan satu drive, ruang yang terbuang maksimal, dan sama dengan ruang yang hilang).

Kami juga punya, :

ruang penyimpanan maksimum di level adalah ruang penyimpanan global di level sebelumnya . Ngomong -ngomong, saat perangkat penyimpanan baru ditambahkan, dengan kapasitas kita punya:

  • Ruang penyimpanan global yang baru: ;
  • Ruang penyimpanan maksimum yang tersedia baru: ;
  • Ruang yang terbuang baru adalah: ;
  • Ruang Hilang Baru: .

Ketika perangkat penyimpanan baru lebih besar, yang lain dalam konfigurasi ditambahkan, ruang penyimpanan maksimum yang tersedia ditingkatkan dengan jumlah yang sama dengan perangkat terakhir dalam konfigurasi sebelumnya tanpa perangkat baru. Selain itu, ruang yang hilang baru persis sama dengan ukuran perangkat baru itu.

Sebagai kesimpulan, membeli perangkat yang jauh lebih besar daripada yang terakhir dalam konfigurasi bukanlah kemenangan besar di tempat pertama, karena terutama meningkatkan ruang yang terbuang! Ruang sia -sia itu akan digunakan ketika drive baru dari kapasitas yang lebih tinggi akan diperkenalkan.

Anda dapat membandingkan algoritma kami dengan tata letak serangan biasa (Saya.e. Menggunakan ukuran perangkat yang sama ) pada set perangkat yang sama: penyimpanan global

  • Ruang tetap tidak berubah:

;

  • Penyimpanan maksimum menjadi:

;

  • Ruang yang terbuang menjadi:

  • Ruang yang hilang menjadi:

Saat perangkat kapasitas baru ditambahkan ke set perangkat, kami mendapatkan:

  • (Ruang penyimpanan yang tersedia ditingkatkan hanya);
  • (Sedangkan ruang yang terbuang meningkat ;
  • (dan ruang yang hilang meningkat dengan jumlah yang sama);

Seperti yang terlihat secara formal, algoritma tradisional sangat lemah dalam penanganan ukuran perangkat penyimpanan yang heterogen. Saat Anda menambahkan perangkat baru, dalam konfigurasi kapasitas yang lebih tinggi, Anda meningkatkan ruang yang terbuang dan ruang yang hilang dengan jumlah yang merupakan perbedaan ukuran antara perangkat baru dan yang pertama. Gambar 5 memberikan perbandingan grafis Dan di seluruh set perangkat untuk algoritma serangan tradisional (kiri) dan untuk prouhd (kanan).

Gambar 5:Representasi grafis dari jumlah Dan untuk algoritma serangan tradisional (kiri) dan algoritma prouhd (kanan)

Ngomong -ngomong, secara formal, sejak , Jelas itu . Dengan demikian, . Oleh karena itu algoritma heterogen selalu memberikan hasil yang lebih baik dalam hal ruang yang terbuang, seperti yang diharapkan. Dapat ditunjukkan dengan mudah bahwa algoritma heterogen juga memberikan hasil yang lebih baik secara sistematis untuk ruang yang hilang .

Sebaliknya, algoritma kami dapat dilihat sebagai perpanjangan dari tata letak tradisi di mana semua perangkat memiliki ukuran yang sama. Ini diterjemahkan secara formal ke , dan kita mempunyai:

  • Untuk ruang penyimpanan global:

;

  • Ruang penyimpanan maksimum:

(RAID5);

  • ruang yang terbuang dari:

;

  • ruang yang hilang:

;

    Dan kita kembali ke apa yang biasa kita lakukan di mana hanya satu disk yang hilang Drive dengan ukuran yang sama (menggunakan RAID5).

    Implementasi (tata letak-disk)

    Kami mengusulkan perangkat lunak Python open-source-yang disebut tata letak-disk dan tersedia di http: // www.sf.net/tata letak-disk- yang memberikan daftar label dan ukuran perangkat, mengembalikan kemungkinan tata letak menggunakan algoritma ini. Sebagai contoh, dengan 4 disk diambil dari Illustration 3, perangkat lunak mengusulkan yang berikut:

     serangan 

    Perangkat lunak ini mengatakan bahwa dari partisi pertama dari setiap 4 drive, beberapa opsi tingkat RAID tersedia (dari RAID1 hingga RAID5) 8. Dari partisi kedua di perangkat HDB dan HDD, hanya RAID1 yang tersedia.

    Pertunjukan

    Dari sudut pandang kinerja, tata letak ini jelas tidak optimal untuk setiap penggunaan. Secara tradisional, dalam kasus perusahaan, dua perangkat raid virtual yang berbeda memetakan ke perangkat penyimpanan fisik yang berbeda. Sebaliknya di sini, perangkat Prouhd yang berbeda membagikan beberapa perangkat penyimpanan fisik mereka. Jika tidak ada perawatan yang diambil, ini dapat menyebabkan kinerja yang sangat buruk karena permintaan apa pun yang dibuat untuk perangkat prouhd dapat diantri oleh kernel sampai permintaan lain yang dibuat untuk perangkat prouhd lainnya telah dilayani. Namun perlu dicatat bahwa ini tidak berbeda dari kasus disk tunggal kecuali dari sudut pandang kinerja yang ketat: throughput dari array serangan - terutama pada bacaan - mungkin mengungguli throughput disk tunggal berkat paralelisme.

    Untuk sebagian besar kasus pengguna akhir, tata letak ini baik-baik saja dari sudut pandang kinerja, terutama untuk menyimpan file multimedia seperti foto, audio atau file video di mana sebagian besar waktu, file ditulis sekali, dan dibaca beberapa kali, secara berurutan. Server file dengan tata letak disk yang seperti itu akan dengan mudah melayani beberapa klien pengguna akhir secara bersamaan. Tata letak seperti itu juga dapat digunakan untuk penyimpanan cadangan. Satu -satunya alasan konfigurasi seperti itu tidak boleh digunakan adalah di mana Anda memiliki persyaratan kinerja yang kuat. Di sisi lain, jika perhatian utama Anda adalah manajemen ruang penyimpanan, konfigurasi seperti itu sangat baik.

    Ngomong -ngomong, Anda dapat menggabungkan tata letak seperti itu dengan Linux Volume Manager (LVM). Misalnya, jika perhatian utama Anda adalah ruang penyimpanan dengan tingkat toleransi 1, Anda dapat menggabungkan, 3.0GB RAID5 Wilayah dengan 1.0GB RAID1 Wilayah dalam contoh sebelumnya sebagai grup volume yang menghasilkan perangkat virtual 4.0 GB, dari mana Anda dapat mendefinisikan volume logis (LV) sesuka hati.

    Keuntungan dari tata letak RAID/LVM gabungan seperti itu versus tata letak LVM yang ketat (tanpa array RAID di antaranya), adalah bahwa Anda dapat menguntungkan keunggulan level RAID (semua level 0, 1, 5, 10, 50, atau 6) sedangkan LVM Berikan, sejauh yang saya tahu, "miskin" (dibandingkan dengan serangan) mirroring dan stripping implementasi. Ngomong -ngomong, perhatikan bahwa menentukan opsi cermin atau garis pada pembuatan volume logis tidak akan memberikan kinerja yang diharapkan dan/atau peningkatan toleransi karena volume fisik (sudah) array RAID berbagi perangkat fisik nyata.

    Kasus Khusus SSD

    Solusi kami memanfaatkan ruang penyimpanan yang tersedia dengan baik dengan mengorbankan penalti kinerja mentah dalam beberapa kasus: ketika akses bersamaan dibuat untuk berbagai array serangan yang berbagi perangkat fisik yang sama. Akses bersamaan biasanya menyiratkan akses acak ke data.

    Hard Drive memiliki batasan keras pada througput I/O mereka dengan pola akses acak karena kendala mekanik mereka: Setelah data ditemukan, kepala bacaan (atau penulisan) harus mencari silinder yang benar dan tunggu sampai sektor yang benar lewat di bawahnya Berkat rotasi pelat. Jelas, membaca atau menulis ke hard disk terutama merupakan proses berurutan. Permintaan baca/tulis didorong ke antrian (dalam perangkat lunak atau perangkat keras), dan itu harus menunggu yang sebelumnya. Tentu saja, banyak perbaikan dilakukan untuk mempercepat proses membaca/menulis (misalnya, menggunakan buffer dan cache, manajemen antrian pintar, operasi curah, perhitungan lokalitas data. akses acak. Dalam beberapa hal, masalah akses acak (bersamaan) ini adalah alasan mengapa Raid diperkenalkan.

    SSD sangat berbeda dari hard disk. Secara khusus, mereka tidak memiliki kendala mekanik seperti itu. Mereka menangani akses acak jauh lebih baik daripada hard disk. Oleh karena itu, hukuman kinerja prouhd yang dibahas di atas mungkin tidak benar dengan SSD. Akses bersamaan yang dibuat untuk khas array serangan berbagi SSD fisik akan menghasilkan beberapa permintaan dengan pola akses acak yang dibuat untuk setiap SSD yang mendasarinya. Tapi seperti yang telah kita lihat, SSD menangani permintaan acak dengan cukup baik. Beberapa investigasi harus dilakukan untuk membandingkan kinerja prouhd melalui hard disk versus prouhd melalui SSD. Bantuan apa pun dalam hal ini akan dihargai.

    Partisi drive

    Prouhd mensyaratkan bahwa perangkat penyimpanan dipartisi dengan benar menjadi irisan dengan ukuran yang sama. Bergantung pada jumlah perangkat penyimpanan berukuran berbeda, algoritma dapat mengarah pada penciptaan sejumlah besar partisi di setiap perangkat. Untungnya, tidak diharuskan menggunakan partisi primer yang dibatasi hingga 4 oleh PC BIOS karena alasan warisan. Partisi logis dapat digunakan untuk membuat semua irisan yang diperlukan: hampir tidak ada batasan untuk nomornya. Di sisi lain, jika Anda membutuhkan partisi lebih dari 2 terabyte, maka partisi logis tidak lebih merupakan opsi.

    Untuk kasus khusus ini (ukuran partisi lebih dari 2TB), Tabel Partisi Guid (GPT) mungkin menjadi opsi. Sejauh yang saya tahu, hanya berpisah9 mendukung mereka.

    Mungkin tergoda untuk menggunakan LVM untuk tujuan partisi. Jika ini adalah pilihan yang sempurna dalam kasus partisi yang biasa, saya tidak akan merekomendasikannya untuk Prouhd. Sebenarnya, sebaliknya adalah pilihan yang baik: array RAID adalah pilihan sempurna untuk volume fisik LVM (PV). Maksud saya, setiap array serangan menjadi PV. Dari beberapa PV, Anda membuat Volume Group (VG). Dari VG tersebut, Anda membuat volume logis (LV) yang akhirnya Anda format dan pasang ke sistem file Anda. Oleh karena itu, rantai lapisan adalah sebagai berikut:

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

    Jika Anda menggunakan LVM untuk partisi drive, Anda berakhir dengan sejumlah besar lapisan yang membunuh kinerja (mungkin) dan desain:

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

    Sejujurnya, saya belum menguji konfigurasi yang rumit seperti itu. Saya akan tertarik dengan umpan balik. 😉

    Menangani kegagalan disk

    Tentu saja, disk apa pun akan gagal, satu hari atau yang lain. Semakin besar, semakin baik. Tapi, perencanaan penggantian disk bukanlah sesuatu yang dapat ditunda sampai kegagalan, biasanya tidak pada waktu yang tepat (hukum Murphy!). Berkat RAID (untuk level 1 ke atas), kegagalan disk tidak mencegah seluruh sistem bekerja secara normal. Ini adalah masalah karena Anda bahkan mungkin tidak memperhatikan bahwa ada yang salah. Sekali lagi, jika tidak ada yang direncanakan, Anda akan menemukannya dengan cara yang sulit, ketika disk kedua benar -benar gagal, dan ketika Anda tidak memiliki cara untuk memulihkan array serangan Anda. Hal pertama adalah memantau perangkat penyimpanan Anda. Anda memiliki (setidaknya) 2 alat untuk tujuan itu:

    SmartMontools:
    Smart adalah standar yang diimplementasikan di sebagian besar IDE dan drive SATA yang memantau kesehatan disk, melakukan beberapa tes (online dan offline), dan itu dapat mengirim laporan melalui email, terutama ketika satu atau banyak tes salah. Perhatikan bahwa Smart tidak memberikan jaminan bahwa ia akan mengantisipasi kegagalan, atau perkiraan kegagalannya akurat. Ngomong -ngomong, ketika Smart mengatakan bahwa ada sesuatu yang salah, lebih baik merencanakan penggantian disk segera. Ngomong-ngomong, dalam kasus seperti itu, jangan menghentikan drive kecuali Anda memiliki cadangan, mereka biasanya tidak suka dimulai kembali, terutama setelah kegagalan yang diperkirakan seperti itu. Mengkonfigurasi SmartMontools cukup sederhana. Instal perangkat lunak itu dan lihat file SmartD.conf biasanya di /dll.
    MDADM:
    MDADM adalah alat Linux untuk manajemen RAID (perangkat lunak). Ketika sesuatu terjadi pada array serangan, email dapat dikirim. Lihat file mdadm.conf biasanya di /dll untuk detailnya.

    Dalam serangan tradisional, ketika satu perangkat dari array serangan gagal, array dalam mode "terdegradasi" yang disebut. Dalam mode seperti itu, array masih berfungsi, data tetap dapat diakses, tetapi seluruh sistem mungkin menderita penalti kinerja. Saat Anda mengganti perangkat yang salah, array direkonstruksi. Bergantung pada tingkat RAID, operasi ini sangat sederhana (mirroring hanya membutuhkan satu salinan) atau sangat kompleks (RAID5 dan 6 membutuhkan perhitungan CRC). Dalam kedua kasus tersebut, waktu yang diperlukan untuk menyelesaikan rekonstruksi ini biasanya cukup besar (tergantung pada ukuran array). Tetapi sistem biasanya dapat melakukan operasi ini secara online. Itu bahkan dapat membatasi overhead sebanyak mungkin ketika array serangan melayani klien. Perhatikan bahwa level RAID5 dan RAID6 dapat menekankan server file dengan cukup baik selama rekonstruksi array.

    Dalam kasus Prouhd, efeknya pada seluruh sistem lebih buruk karena satu penggerak kegagalan berdampak banyak array serangan. Traditionnaly, array serangan terdegradasi dapat direkonstruksi secara bersamaan. Poin utamanya adalah mengurangi waktu yang dihabiskan dalam mode terdegradasi meminimalkan probabilitas kehilangan data secara global (semakin banyak waktu dalam mode terdegradasi, semakin banyak kemungkinan kehilangan data dapat terjadi). Tetapi rekonstruksi paralel bukanlah ide yang baik dalam kasus Prouhd karena raid arrays berbagi perangkat penyimpanan. Oleh karena itu, setiap rekonstruksi berdampak pada semua array. Rekonstruksi paralel hanya akan menekankan lebih banyak semua perangkat penyimpanan, dan dengan demikian, rekonstruksi global mungkin tidak akan pulih lebih cepat dari yang lebih sederhana.

    Sep 6 00:57:02 Phobos Kernel: MD: Syncing RAID Array MD0 Sep 6 00:57:02 Kernel Phobos: MD: Minimum _guaranteed_ Kecepatan Rekonstruksi: 1000 kb / detik / disk . 6 Sep 00:57:02 Kernel Phobos: MD: Menggunakan Bandwidth IDLE IDLE Maksimum yang tersedia (tetapi tidak lebih dari 200000 kb/ detik) untuk rekonstruksi . 6 September 00:57:02 Kernel Phobos: MD: Menggunakan jendela 128k, lebih dari total 96256 blok . 6 September 00:57:02 Kernel Phobos: MD: Menunda Sinkron Ulang MD1 hingga MD0 telah menyelesaikan kembali sinkronisasi (mereka berbagi satu atau lebih unit fisik) 6 Sep 6 00:57:02 Kernel Phobos: MD: Syncing Raid Array MD2 Sep 6 00: 57:02 Kernel Phobos: MD: minimum _guaranteed_ Kecepatan Rekonstruksi: 1000 kb / detik / disk . 6 Sep 00:57:02 Kernel Phobos: MD: Menggunakan Bandwidth Idle IO maksimum yang tersedia (tetapi tidak lebih dari 200000 kb/ detik) untuk rekonstruksi . 6 Sep 00:57:02 Kernel Phobos: MD: Menggunakan jendela 128k, lebih dari 625137152 blok . 6 September 00:57:02 Kernel Phobos: MD: Menunda ulang MD3 sampai MD2 telah menyelesaikan ulang (mereka berbagi satu atau lebih unit fisik) 6 Sep 6 00:57:02 Kernel Phobos: MD: Menunda Resync MD1 hingga MD0 telah selesai Resync (mereka berbagi satu atau lebih unit fisik) 6 Sep 6 00:57:02 Kernel Phobos: MD: Menunda Sinkron Ulang MD4 sampai MD2 telah menyelesaikan kembali Sync (mereka berbagi satu atau lebih unit fisik) Sep 6 00:57:02 Phobos Kernel: MD: Menunda ulang MD1 hingga MD0 telah menyelesaikan kembali sinkronisasi (mereka berbagi satu atau lebih unit fisik) 6 Sep 6 00:57:02 Kernel Phobos: MD: Menunda ulang MD3 hingga MD4 telah menyelesaikan resync (mereka berbagi atau lebih unit fisik) 6 September 00:57:25 Kernel Phobos: MD: MD0: Sinkronisasi Selesai . 6 September 00:57:26 Kernel Phobos: MD: Menunda Sinkronisasi Ulang MD3 sampai MD4 telah menyelesaikan kembali sinkronisasi (mereka berbagi satu atau lebih unit fisik) 6 Sep 6 00:57:26 Kernel Phobos: MD: Syncing Raid Array MD1 Sep 6 00: 57:26 Kernel Phobos: MD: minimum _guaranteed_ Kecepatan Rekonstruksi: 1000 kb / detik / disk . 6 September 00:57:26 Kernel Phobos: MD: Menggunakan Bandwidth IDLE IO IDLE yang tersedia maksimum (tetapi tidak lebih dari 200000 kb/ detik) untuk rekonstruksi . 6 Sep 00:57:26 Kernel Phobos: MD: Menggunakan jendela 128k, lebih dari total blok 2016064 . 6 September 00:57:26 Kernel Phobos: MD: Menunda Sinkron Ulang MD4 hingga MD2 telah menyelesaikan kembali sinkronisasi (mereka berbagi satu atau lebih unit fisik) 6 Sep 6 00:57:26 Kernel Phobos: RAID1 Conf printout: 6 Sep 6 00:57: 26 Kernel Phobos: −−− WD: 2 RD: 2 

    Oleh karena itu, kita dapat mengandalkan mdadm untuk melakukan hal yang benar dengan serangan, apakah itu adalah homogen, konfigurasi heteregeous atau kombinasi keduanya.

    Prosedur penggantian

    Mengganti perangkat yang gagal dengan yang sama.

    Ini adalah situasi yang ideal dan sebagian besar mengikuti pendekatan serangan tradisional kecuali bahwa Anda sekarang memiliki lebih dari satu array serangan untuk dikelola untuk setiap perangkat. Mari kita ambil contoh kita (Gambar 6 kiri), dan mari kita anggap bahwa kegagalan telah terdeteksi pada HDB. Perhatikan bahwa kegagalan mungkin telah terdeteksi secara lokal pada HDB2, dan bukan pada HDB1 misalnya. Ngomong -ngomong, seluruh disk harus diganti dan oleh karena itu, semua array menyangkut. Dalam contoh kami, kami telah mengatur penyimpanan 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. Hapus secara logis setiap partisi perangkat yang salah dari array RAID yang sesuai:
      mdadm /dev /md0 -faulty /dev /hdb1 -remove /dev /hdb1
      mdadm /dev /md1 -faulty /dev /hdb2 -remove /dev /hdb2
    2. Lepaskan perangkat yang salah secara fisik - kecuali Anda memiliki sistem hot -plug seperti USB, Anda harus mematikan seluruh sistem;
    3. Tambahkan perangkat baru secara fisik - kecuali jika Anda memiliki sistem hot -plug seperti USB, Anda harus menyalakan seluruh sistem;
    4. Partisi Perangkat baru (katakanlah /dev /sda) dengan tata letak yang sama persis dari perangkat yang gagal: 2 partisi 1TB setiap /dev /sda1 dan /dev /sda2;
    5. Secara logis tambahkan setiap partisi baru ke array RAID yang sesuai:
      mdadm /dev /md0 -add /dev /sda1
      mdadm /dev /md1 -add /dev /sda2

    Setelah beberapa saat, semua array serangan Anda akan dibangun kembali.

    Mengganti perangkat yang gagal dengan yang lebih besar.

    Kasing ini memang tidak begitu sederhana. Masalah utamanya adalah bahwa seluruh tata letak sama sekali tidak terkait dengan yang lama. Mari kita ambil contoh sebelumnya, dan lihat apa yang terjadi jika /dev /hdb gagal. Jika kami mengganti perangkat 2TB dengan perangkat baru 3TB, kami harus berakhir dengan tata letak Gambar 6 (kanan).

    Gambar 6:Mengganti perangkat yang gagal dengan yang lebih besar. Tata letak sebelum (kiri) dan setelah (kanan) penggantian /dev /hdb: 2 dengan /dev /sda: 3.

    Perhatikan partisi itu sekarang dari 2TB dan bukan 1TB seperti yang terjadi sebelumnya (lihat Gambar 3). Ini berarti bahwa array RAID sebelumnya terbuat dari /dev /hdb2: 1tb dan /dev /hdd2: 1TB tidak lebih relevan setelah penggantian: tidak muncul dalam algoritma tata letak. Sebaliknya, kami memiliki array serangan yang terbuat dari /dev /sda2: 2tb dan /dev /hdd2: 2tb.

    Gambar 7:Mengganti perangkat yang gagal (f) dengan yang lebih besar (k), kasus umum sebelum (atas) dan setelah (bawah).


    Dalam kasus umum, seperti yang ditunjukkan pada Gambar 7, partisi terakhir dari perangkat yang gagal , tidak lebih relevan. Oleh karena itu, seluruh array serangan berlabel ukuran , terbuat dari partisi perangkat harus disingkirkan. Array berikut, , yang dibuat dari partisi terakhir dari disk berikut, , harus diubah ukurannya sesuai dengan tata letak baru. Partisi memiliki ukuran . Partisi ini sekarang dapat "digabungkan" karena tidak ada "di antara" Dan . Oleh karena itu, partisi baru "bergabung" menjadi seukuran .

    Akhirnya, perangkat baru dimasukkan antar perangkat di peringkat Dan karena kapasitasnya adalah demikian . (Perhatikan bahwa semua perangkat akan beralih ke peringkat Karena perangkat baru ditambahkan setelah perangkat yang gagal ). Perangkat baru harus dipartisi sehingga semua partisi dari hingga berukuran sama dari pada tata letak sebelumnya: . Ukuran partisi diberikan oleh: Seperti yang telah kita lihat sebelumnya. Akhirnya, semua partisi berikut, hingga memiliki ukuran yang sama dari pada tata letak lama: . Perangkat baru ini, menambahkan modifikasi sendiri dalam tata letak baru sesuai dengan perbedaan antara ukurannya dan ukuran perangkat sebelumnya yang merupakan perangkat K di tata letak lama ( ). Oleh karena itu, dalam tata letak baru, partisi k memiliki ukuran yang diberikan oleh . Akhirnya, partisi selanjutnya harus dimodifikasi. Sebelumnya berukuran , Tapi ini tidak lebih relevan dalam tata letak baru. Itu harus dikurangi menjadi . Partisi berikut tidak boleh diubah. Perhatikan bahwa perangkat baru menggantikan partisi yang gagal dari perangkat yang gagal, tetapi tambahkan 1 partisi lebih ke array RAID . Kami perhatikan jumlah partisi yang membentuk array serangan . Karena itu, kami memiliki: . Untungnya, dimungkinkan untuk menumbuhkan array serangan di bawah Linux berkat perintah MDAM Grow yang hebat.

    Singkatnya, tata letak lama:

    menjadi tata letak baru:

    dengan:

    Seperti yang kita lihat, mengganti perangkat yang salah dengan yang lebih besar menyebabkan cukup banyak modifikasi. Untungnya, mereka agak lokal: dalam satu set perangkat besar, modifikasi hanya terjadi pada sejumlah perangkat dan partisi yang dibatasi. Ngomong -ngomong, seluruh operasi jelas sangat memakan waktu dan rentan kesalahan jika dilakukan tanpa alat yang tepat.

    Mudah -mudahan, seluruh proses dapat diotomatisasi. Algoritma yang disajikan di bawah ini menggunakan LVM Advanced Volume Management. Seharusnya array serangan adalah volume fisik yang dimiliki beberapa kelompok virtual (VG) dari mana volume logis (LV) dibuat untuk pembuatan sistem file. Karena itu, kami perhatikan Volume fisik LVM didukung oleh array serangan .

    Kami mengira disk mati. Kami memiliki array serangan terdegradasi, dan array serangan yang aman. Prosedur penggantian otomatis didefinisikan langkah demi langkah di bawah.

    1. Cadangkan data Anda (ini harus jelas, kami bermain dengan array terdegradasi karena satu disk rusak, oleh karena itu kesalahan apa pun pada akhirnya akan menyebabkan kehilangan data! Untuk tujuan itu, Anda dapat menggunakan ruang penyimpanan yang tersedia yang bukan milik disk yang gagal. Array serangan berikutnya dalam tata letak misalnya misalnya.
    2. Tandai semua partisi perangkat rusak sebagai salah, dalam array serangan yang sesuai dan menghapusnya (mdadm -fail -remove).
    3. Lepaskan perangkat penyimpanan yang gagal .
    4. Masukkan perangkat penyimpanan baru .
    5. Partisi perangkat baru Menurut tata letak baru (fdisk). Secara khusus, partisi perangkat terakhir yang gagal dan partisi perangkat baru terakhir harus memiliki ukuran yang benar: Dan . Pada tahap itu, masih akan memiliki array yang terdegradasi: .
    6. Ganti partisi yang gagal dengan menambahkan partisi perangkat baru ke array serangan yang sesuai (mdadm -add). Setelah langkah ini, hanya saja adalah array serangan yang terdegradasi.
    7. Menghapus , Dan dari VG yang sesuai (pvmove). LVM akan menangani situasi itu dengan cukup baik, tetapi membutuhkan ruang kosong yang cukup di VG (dan waktu!). Ini sebenarnya akan menyalin data ke PV lain di VG (yang sama).
    8. Hentikan kedua array serangan Dan sesuai dengan Dan (mdadm stop).
    9. Partisi Gabungkan (FDISK) Dan menjadi satu partisi tunggal . Ini seharusnya berfungsi dengan baik, karena partisi lain tidak terpengaruh oleh itu. Itu harus dilakukan pada setiap perangkat mengikuti perangkat yang gagal : itu adalah perangkat penyimpanan secara total (perangkat sudah dipartisi pada langkah 5).
    10. Buat array RAID baru dari partisi gabungan (mdadm create).
    11. Buat yang sesuai (pvcreate), dan tambahkan ke VG sebelumnya (vgextend). Pada langkah itu, kami kembali ke ruang penyimpanan global yang aman: semua array serangan sekarang aman. Tapi tata letaknya tidak optimal: partisi masih belum digunakan misalnya.
    12. Menghapus dari VG yang sesuai (pvmove). Sekali lagi, Anda akan membutuhkan beberapa ruang penyimpanan yang tersedia.
    13. Hentikan array serangan yang sesuai (mdadm stop).
    14. Membagi partisi lama menjadi yang baru Dan (fdisk); Ini harus dilakukan pada setiap perangkat mengikuti k, yaitu Perangkat secara total. Ini seharusnya tidak menyebabkan masalah apa pun, partisi lain tidak terpengaruh.
    15. Buat dua array RAID baru Dan dari 2 partisi baru Dan (mdadm create).
    16. Membuat Dan Karena itu (pvCreate). Masukkan kembali ke VG (VGEXTEND).
    17. Terakhir, tambahkan setiap partisi perangkat baru ke array serangan yang sesuai . Anda harus menumbuhkan array serangan sehingga (mdadm tumbuh).
    18. Kami kembali dengan tata letak yang benar baru, dengan array serangan yang aman.

    Perhatikan bahwa proses ini berfokus pada pengguna akhir: itu membuat penggantian sesudah mungkin, mencegah pengguna menunggu lama antara penghapusan perangkat yang gagal dan penggantian yang baru. Semua dilakukan di awal. Tentu saja, waktu yang dibutuhkan sebelum seluruh kumpulan array serangan berjalan tidak terdegradasi bisa sangat besar. Tapi itu agak transparan dari sudut pandang pengguna akhir.

    Mengganti drive yang gagal dengan yang lebih kecil

    Kasus ini adalah yang terburuk, karena dua alasan. Pertama, kapasitas global jelas berkurang: . Kedua, karena beberapa byte dari drive yang lebih besar yang gagal digunakan untuk toleransi kesalahan10, Beberapa byte itu tidak ada lagi di perangkat baru. Ini akan memiliki konsekuensi pada algoritma praktis seperti yang akan kita lihat.

    Saat perangkat Gagal, semua array serangan , Di mana menjadi terdegradasi. Saat kami mengganti perangkat yang gagal oleh perangkat baru Di mana , , lalu menyerang array diperbaiki, tetapi array serangan tetap terdegradasi (lihat Gambar 8) karena tidak ada ruang penyimpanan yang cukup di perangkat baru untuk mengambil alih yang gagal. (Perhatikan bahwa semua perangkat akan beralih ke peringkat Karena perangkat baru ditambahkan sebelum perangkat yang gagal ).


    Angka 8: Mengganti perangkat yang gagal (f) dengan yang lebih kecil (k), kasus umum sebelum (atas) dan setelah (bawah).

    Seperti dalam kasus sebelumnya, solusinya membutuhkan penggabungan partisi dengan satu dari karena tidak ada lagi . Karena itu, di semua perangkat . Juga, perangkat baru , harus dipartisi dengan benar. Secara khusus, partisi terakhirnya . Perangkat harus mengubah partisi mereka sesuai dengan partisi baru . Untuk perangkat itu, partisi juga harus diubah: . Modifikasi terpenting menyangkut semua array serangan karena mereka masih terdegradasi. Untuk mereka semua, jumlah perangkat (virtual) mereka harus dikurangi satu: misalnya, terbuat dari Partisi "vertikal" dari perangkat hingga perangkat Sejak perangkat cukup lebar untuk mendukung partisi . Tidak ada lagi kasusnya karena perangkat baru tidak menyediakan ruang penyimpanan yang cukup untuk mendukung a partisi. Karena itu, .

    Singkatnya, tata letak lama:

    menjadi tata letak baru:

    dengan

    Sayangnya, sejauh yang kami tahu, saat ini tidak dimungkinkan untuk mengecilkan perangkat RAID menggunakan Linux Raid. Satu -satunya pilihan adalah menghapus seluruh rangkaian array seluruhnya, dan membuat yang baru dengan jumlah perangkat yang benar. Oleh karena itu, prosedur penggantian otomatis ditentukan langkah demi langkah di bawah ini:

    1. Cadangkan data Anda! 😉
    2. Tandai semua partisi perangkat rusak sebagai salah, dalam array serangan yang sesuai dan menghapusnya (mdadm -fail -remove).
    3. Hapus perangkat penyimpanan yang gagal .
    4. Masukkan perangkat penyimpanan baru .
    5. Partisi perangkat baru sesuai dengan tata letak baru (FDISK). Secara khusus, partisi terakhir harus memiliki ukuran yang benar: . Pada tahap itu kita masih punya Array RAID yang terdegradasi: .
    6. Ganti partisi yang salah dengan menambahkan perangkat baru dan tambahkan mereka ke array masing -masing . Setelah langkah ini, masih tua array yang terdegradasi, yaitu RAID ARRAY Total. Dua array serangan masih terbuat dari partisi berukuran salah: Dan .
    7. Untuk setiap array :
      1. Pindahkan data yang sesuai ke perangkat lain (pvmove pada volume LVM terkait );
      2. Hapus volume LVM yang sesuai dari grup volume (pvremove);
      3. Hentikan array terkait (mdadm stop);
      4. Buat array RAID baru dari partisi . Perhatikan bahwa sekarang ada satu partisi yang lebih sedikit : ;
      5. Buat volume LVM yang sesuai (pvCreate);
      6. Tambahkan volume LVM baru ke grup volume terkaitnya .
    8. Pada langkah ini, dan bahasa Prancis masih terbuat dari Old berukuran salah Dan .
    9. Pindahkan data yang sesuai ke perangkat lain (pvmove pada volume LVM terkait );
    10. Hapus volume LVM yang sesuai dari grup volume (pvremove);
    11. Hentikan array terkait (mdadm stop);
    12. Gabungkan (fdisk) partisi lama Dan menjadi satu partisi tunggal . Ini seharusnya berfungsi dengan baik, karena partisi lain tidak terpengaruh oleh itu. Itu harus dilakukan pada setiap perangkat mengikuti perangkat yang gagal : itu adalah Total perangkat penyimpanan.
    13. Buat array RAID baru dari partisi gabungan (mdadm create).
    14. Buat yang sesuai (pvcreate), dan tambahkan ke VG sebelumnya (vgextend). Hanya pada langkah itu tetap salah dan terdegradasi.
    15. Pindahkan data yang sesuai ke perangkat lain (pvmove pada volume LVM terkait ).
    16. Revove volume LVM yang sesuai dari grup volume (pvremove);
    17. Hentikan array terkait (mdadm stop);
    18. Partisi lama split (fdisk) menjadi partisi baru Dan . Ini harus dilakukan pada semua perangkat berikut Perangkat secara total.
    19. Buat array RAID baru (mdadm -create) Dan dari partisi Dan ;
    20. Buat (pvcreate) yang sesuai Dan dan tambahkan (vgextend) mereka ke yang sesuai .
    21. Anda kembali dengan tata letak yang benar baru, dengan array serangan yang aman.

    Perhatikan bahwa langkah 7 dilakukan satu array per satu array. Gagasan utamanya adalah mengurangi jumlah ruang penyimpanan yang tersedia yang dibutuhkan oleh algoritma. Pilihan lain adalah menghapus semua volume LVM (PV) pada saat yang sama dari VG terkait mereka, kemudian, untuk menghapus array RAID yang sesuai, dan kemudian untuk membuatnya kembali dengan jumlah partisi yang benar (harus dikurangi oleh satu). Menghapus semua array tersebut dalam satu belokan dapat mengakibatkan pengurangan besar ruang penyimpanan yang tersedia yang mungkin memblokir seluruh proses sambil menghapus PV dari VG yang sesuai. Karena penghapusan seperti itu menghasilkan perpindahan data dari satu PV ke yang lain (dalam VG yang sama), itu juga mensyaratkan bahwa ada cukup ruang bebas di VG untuk mengakomodasi salinan lengkapnya.

    Di sisi lain, algoritma yang dijelaskan dapat menghasilkan sejumlah besar transfer data. Misalnya, misalkan semua PV sebenarnya dalam satu VG. Penghapusan PV pertama dalam daftar ( Oleh karena itu) dapat mengakibatkan perpindahan data ke . Sayangnya, pada iterasi berikutnya, juga akan dihapus yang mengakibatkan transfert data yang sama dan seterusnya. Investigasi pada algoritma yang lebih pintar untuk langkah spesifik itu oleh karena itu suatu keharusan.

    Rekonstruksi array serangan

    Mengingat ukuran hard drive saat ini, dan kesalahan bit yang tidak dapat dipulihkan (UBE) - untuk drive disk kelas perusahaan (SCSI, FC, SAS) dan Untuk drive disk kelas desktop (IDE/ATA/PATA, SATA), rekonstruksi array disk setelah kegagalan perangkat bisa sangat menantang. Saat array dalam mode terdegradasi, selama rekonstruksi, ia mencoba untuk mendapatkan data dari perangkat yang tersisa. Tetapi dengan kapasitas perangkat yang besar saat ini, probabilitas kesalahan selama langkah itu menjadi signifikan. Terutama, ada tren dengan kelompok RAID5 besar yang tidak dapat dipulihkan setelah kegagalan disk tunggal. Oleh karena itu desain raid6 yang dapat menangani 2 kegagalan disk simultan tetapi dengan hit kinerja yang sangat tinggi.

    Alih -alih mengatur grup RAID5 besar, mungkin lebih baik untuk mengatur set array RAID10 yang besar. Ini memberikan hasil yang lebih baik baik dalam hal keandalan (RAID1 jauh lebih mudah untuk pulih daripada RAID5), dan kinerja. Tetapi biaya penyimpanan yang tinggi - 50% dari ruang hilang - sering membuat pilihan ini tidak relevan meskipun harga MB murah saat ini.

    Dengan Prouhd, mengingat bahwa ruang yang terbuang minim, opsi RAID10 mungkin merupakan kompromi yang dapat diterima (tentu saja tata letak serangan tradisional).

    Selain itu, di Prouhd, komponen serangan tidak mencakup seluruh drive tetapi hanya sebagian dari itu (sebuah partisi). Oleh karena itu, probabilitas kesalahan sektor lain berkurang.

    Menambahkan/Menghapus Perangkat ke/Dari Prouhd

    Seperti yang ditunjukkan oleh Gambar 9, menambahkan perangkat baru Di kolam jauh lebih sederhana dari kasus penggantian sebelumnya. Partisi terakhir dari perangkat baru berdampak pada tata letak sebelumnya:

    Dan semua array RAID hingga Haruskah melihat jumlah perangkat mereka meningkat satu:

    Gambar 9:Menambahkan perangkat (k) ke kumpulan, kasus umum sebelum (kiri) dan setelah (kanan).

    Kebalikannya juga jauh lebih sederhana daripada prosedur penggantian seperti yang ditunjukkan oleh Gambar 10. Menghapus perangkat Dari pool lead juga ke modifikasi partisi terkaitnya :

    Dan semua array RAID hingga Haruskah melihat jumlah perangkat mereka menurun satu:

    Gambar 10:Menghapus perangkat (k) dari kumpulan, kasus umum sebelum (kiri) dan setelah (kanan).

    Kedua algoritma langkah demi langkah cukup mudah dibandingkan dengan yang pengganti. Mereka ditinggalkan untuk penasaran pembaca karena itu.

    Peramalan: kotak penyimpanan untuk pengguna akhir rata-rata

    Diambil secara individual, setiap perangkat penyimpanan menjawab beberapa persyaratan yang dimiliki pengguna akhir pada satu waktu (misalnya, kamera membutuhkan kartu XD). Namun seringkali, perangkat penyimpanan baru ditambahkan ke kumpulan karena berbagai alasan (kamera baru tanpa dukungan kartu XD, disk USB baru untuk lebih banyak ruang penyimpanan, ...). Pengguna akhir akhirnya memiliki ruang penyimpanan global yang terdiri dari komponen terputus individu. Beberapa perangkat masih membutuhkan konteks di sana agar berguna (kamera baru dan kartu SD barunya). Tetapi yang lain mungkin tidak digunakan bahkan jika mereka masih bekerja (kartu XD lama).

    Studi ini menunjukkan bahwa kotak penyimpanan dapat disediakan dengan fitur -fitur berikut:

    • menyediakan ruang penyimpanan global, terbuat dari perangkat penyimpanan fisik apa pun dengan berbagai ukuran, dari teknologi apa pun (disk, SDD, flash, USB-stick, sdcard, xdcard, dan sebagainya);
    • mendukung penambahan, penghapusan dan penggantian disk;
    • mendukung setiap level serangan;
    • mendukung campuran tingkat serangan;
    • mendukung toleransi kesalahan hingga tingkat yang tergantung pada tingkat serangan yang digunakan;
    • Ketika digunakan dengan benar, kotak dapat memberikan kinerja tinggi (misalnya, jika 2 array serangan tidak pernah digunakan secara bersamaan);
    • menawarkan kinerja yang baik untuk kebutuhan pengguna akhir rata-rata (seperti streaming media);
    • sangat efisien dalam hal efisiensi penyimpanan: byte tunggal apa pun dapat digunakan (baik untuk penyimpanan atau untuk toleransi kesalahan tergantung pada kebutuhan spesifik pengguna). Mengatakan sebaliknya, kotak penyimpanan mengurangi ruang yang terbuang ke minimum (bahwa ruang masih dapat digunakan untuk menyimpan data, tetapi toleransi kesalahan tidak didukung dalam kasus seperti itu).

    Tentu saja, kompleksitas solusi kami harus ditutupi oleh pengguna akhir. Sebagai contoh, bayangkan kotak penyimpanan yang terdiri dari sejumlah besar hubungan untuk drive dan tongkat USB, disk firewire, disk SATA/SCSI, kartu XD/SD dan yang lainnya, yang mengimplementasikan solusi yang disajikan yang disajikan. Pada inisialisasi, ketika semua perangkat telah terhubung, perangkat lunak akan mendeteksi semua perangkat penyimpanan, dan akan mengusulkan konfigurasi sederhana seperti:

    • Maksimalkan ruang (pilih RAID5 jika memungkinkan, lalu RAID10, lalu RAID1);
    • Maksimalkan kinerja (pilih RAID10 jika memungkinkan, lalu RAID1);
    • konfigurasi aman (pilih RAID10 jika memungkinkan, RAID5, lalu RAID1);
    • konfigurasi khusus.

    Menyajikan konfigurasi tersebut secara grafis, memungkinkan perbandingan konfigurasi, mengusulkan konfigurasi yang telah ditentukan sebelumnya untuk beban kerja yang terkenal (file multimedia, file sistem, file log dan sebagainya) akan menambahkan hingga solusi awal.

    Akhirnya, kinerja utama (dan biaya) dari kotak penyimpanan tersebut akan berasal dari jumlah pengontrol yang sebenarnya. Permintaan bersamaan (RAID secara alami meningkatkannya) paling baik dilayani ketika mereka berasal dari pengontrol yang berbeda.

    Pertanyaan, Komentar & Saran

    Jika Anda memiliki pertanyaan, komentar, dan/atau saran pada dokumen ini, jangan ragu untuk menghubungi saya di alamat berikut: [email protected].

    Pengakuan

    Penulis ingin mengucapkan terima kasih kepada Lubos Rendek untuk menerbitkan karya ini dan Pascal Grange atas komentar dan sarannya yang berharga.


    Catatan kaki

    … RAID1
    Untuk pengenalan teknologi RAID, silakan merujuk ke artikel online seperti:

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

    … artikel2
    http: // www.Vigneras.org/pierre/wp/2009/07/21/memilih-sistem-sistem-letak-linux-linux/
    ... suku cadang3
    Ngomong -ngomong, karena disk yang serupa mungkin gagal pada waktu yang sama, mungkin lebih baik untuk membuat kumpulan penyimpanan dari disk dari model yang berbeda atau bahkan vendor.
    … Volume4
    Ini berasal dari terminologi LVM yang sering digunakan dengan serangan di Linux.
    … 15
    Ini adalah kasus terburuk dan yang harus diperhitungkan. Tentu saja, disk HDA dan HDC mungkin gagal, misalnya, dan PV akan tetap tersedia, tetapi kasus terbaik bukan yang mewakili tingkat toleransi kesalahan.
    … Toleransi6
    Perhatikan bahwa ini independen pada tingkat RAID yang sebenarnya dipilih: Setiap byte dalam array serangan digunakan, baik untuk penyimpanan atau untuk toleransi kesalahan. Dalam contohnya, menggunakan RAID1, kami hanya mendapatkan 1 TB dari 8 TB dan mungkin terlihat seperti limbah. Tetapi jika RAID1 dipilih untuk array seperti itu, itu sebenarnya berarti bahwa tingkat toleransi kesalahan 3 diperlukan. Dan gelar toleransi kesalahan seperti itu memiliki biaya penyimpanan!
    … RAID57
    Dari sudut pandang ruang penyimpanan yang tersedia, RAID5 mengkonsumsi satu partisi untuk toleransi kesalahan. Ketika hanya 2 partisi yang tersedia, RAID1 adalah satu -satunya pilihan yang tersedia dengan toleransi kesalahan, dan juga mengkonsumsi satu partisi untuk tujuan itu. Oleh karena itu, dari perspektif ruang penyimpanan maksimum yang tersedia, array 2 perangkat RAID1 dianggap sebagai array RAID5.
    .. 8
    Raid0 hanya disajikan jika opsi -unsafe ditentukan. RAID6 dan level RAID lainnya tidak diterapkan saat ini. Bantuan apa pun diterima! 😉
    ... berpisah9
    Lihat http: // www.gnu.org/software/belah/indeks.shtml
    … Toleransi10
    Kecuali jika RAID0 digunakan, tetapi dalam hal ini, situasinya bahkan lebih buruk!

    Hak Cipta

    Dokumen ini dilisensikan di bawah a Creative Commons Atribution-Share 2.0 Lisensi Prancis. Tolong, lihat detailnya: http: // createveCommons.org/lisensi/by-sa/2.0/

    Penafian

    Informasi yang terkandung dalam dokumen ini hanya untuk tujuan informasi umum. Informasi disediakan oleh Pierre Vignéras dan sementara saya berusaha untuk menjaga informasi tetap mutakhir dan benar, saya tidak membuat representasi atau jaminan dalam bentuk apa pun, tersurat atau tersirat, tentang kelengkapan, akurasi, keandalan, kesesuaian atau ketersediaan sehubungan dengan Hormat dokumen atau informasi, produk, layanan, atau grafik terkait yang terkandung dalam dokumen untuk tujuan apa pun.

    Setiap ketergantungan yang Anda tempatkan pada informasi tersebut karena itu adalah risiko Anda sendiri. Dalam hal apa pun saya tidak akan bertanggung jawab atas kehilangan atau kerusakan termasuk tanpa batasan, kehilangan atau kerusakan tidak langsung atau konsekuensial, atau kerugian atau kerusakan apa pun yang timbul dari kehilangan data atau keuntungan yang timbul dari, atau sehubungan dengan, penggunaan ini dokumen.

    Melalui dokumen ini Anda dapat menautkan ke dokumen lain yang tidak berada di bawah kendali Pierre Vignéras. Saya tidak memiliki kendali atas sifat, konten, dan ketersediaan situs -situs tersebut. Dimasukkannya tautan apa pun tidak selalu menyiratkan rekomendasi atau mendukung pandangan yang diungkapkan

    Tutorial Linux Terkait:

    • Cara Menginstal Ubuntu di USB Stick
    • Buat USB Bootable Manjaro Linux
    • Eclipse IDE untuk instalasi pengembang C/C ++ di Ubuntu…
    • Bash dan DD: Menguji kecepatan drive flash dengan skrip sederhana
    • Buat Ubuntu 20 Bootable.04 USB Stick pada MS Windows 10
    • Cara mempartisi drive usb di linux
    • Cara mengatur raid1 di linux
    • Pengantar Otomatisasi Linux, Alat dan Teknik
    • Cara membandingkan kinerja disk di linux
    • Tes Benchmark Drive USB di Linux