Apa arti angka "cadangan" mdadm?

8

Saya membuat RAID 5 berbasis mdadm dari enam hard drive menggunakan perintah berikut:

# mdadm --create /dev/md0 --level=5 --raid-devices=5 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 \
--spare-devices=1 /dev/sdg1

Saya berharap array memiliki satu cadangan panas, yaitu / dev / sdg1. Namun, memeriksa mdadm --detailmenunjukkan 2 suku cadang:

# mdadm --detail --scan 
ARRAY /dev/md0 metadata=1.2 spares=2 name=...

Juga, ukuran array seperti yang ditunjukkan oleh dfadalah 2 TB, yang akan sesuai dengan hanya empat dari 500 GB drive saya yang digunakan.

Jadi apa sebenarnya semantiknya --spare-devices? Halaman manual menyatakan bahwa "Menentukan jumlah perangkat cadangan (eXtra) dalam array awal.", Tapi sepertinya tidak demikian di sini.

jstarek
sumber
1
RAID 5 menggunakan paritas satu perangkat. Saya tidak tahu, itulah sebabnya saya berkomentar, tetapi mungkinkah itu ada hubungannya dengan itu? ( mdadm --detailtermasuk drive paritas dalam hitungan "suku cadang".) Anda dapat memeriksa ini dengan membuat array RAID 6 tanpa cadangan panas; jika teori saya berlaku, itu juga akan menunjukkan suku cadang = 2.
CVn
2
Dalam terminologi RAID standar, cadangan hanyalah sebagian besar disk kosong yang tidak aktif yang dapat secara otomatis diaktifkan untuk membantu membangun kembali array setelah disk lain gagal. Disk paritas bukan disk cadangan. Juga, jumlah disk cadangan bukan jumlah disk yang dapat gagal sebelum data Anda berisiko. (Jumlahnya tidak didefinisikan dengan baik. RAID 10 empat disk dapat menangani hingga 2 kegagalan disk, tetapi mungkin juga mati dengan 2 kegagalan disk.)
200_success
4
Saya menduga Anda melihat dua suku cadang, karena masih melakukan array init-itu awal "membangun kembali" ke salah satu dari dua suku cadang. Setelah itu selesai (periksa kemajuannya cat /proc/mdstat), saya pikir Anda akan melihat 1 yang diharapkan
Derobert
@derobert, Anda benar: Setelah pembangunan kembali awal selesai, saya mendapatkan ARRAY / dev / md0 metadata = 1.2 suku cadang = 1 nama = [...] dari mdadm --detail --scan dan info yang setara dari / proc / mdstat.
jstarek

Jawaban:

4

Output itu benar. Anda membuat RAID 5 dengan 5 disk (hanya 4 di antaranya yang akan "digunakan" untuk ruang). Dan Anda menambahkan drive cadangan ekstra.

Jadi Anda sebenarnya memiliki RAID 5 yang memungkinkan satu kegagalan disk + drive cadangan ekstra.

Jika yang Anda inginkan sebenarnya adalah RAID 5 dengan 6 disk dan memiliki ruang 5 disk maka Anda perlu mengubah perintah Anda menjadi:

mdadm --create /dev/md0 --level=5 --raid-devices=6 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1

Tetapi dalam hal ini Anda hanya dapat mentolerir satu kegagalan disk sesuai spesifikasi RAID 5.

EDIT: Menambahkan tautan dari halaman serangan resmi: Anda dapat melihat serangan 5 dengan 6 disk dan menyatakan cadangan = 1: Pembuatan Array Awal

UPDATE: Saya memutuskan untuk membuat serangan 5 di sistem saya dan nilai cadangan menghilang setelah array dalam keadaan bersih:

   Raid Devices : 4
  Total Devices : 4
              State : clean, degraded, recovering
     Active Devices : 3
    Working Devices : 4
     Failed Devices : 0
      Spare Devices : 1

Kondisi bersih:

   Raid Devices : 4
  Total Devices : 4
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

Demikian juga dengan komentar OP, selama pembuatan raid 5 awal ia memiliki drive cadangan hingga raid build / sync selesai.

BitsOfNix
sumber
1
Saya pikir informasi utama dari halaman wiki yang Anda tautkan adalah ini: "Untuk raid5 ada optimasi: mdadm mengambil salah satu disk dan menandainya sebagai 'cadangan'; kemudian menciptakan array dalam mode terdegradasi." - ini akan cocok dengan pengamatan yang dibuat oleh derobert dalam komentar di atas. Terlepas dari itu, saya khawatir Anda salah paham pertanyaan saya: Saya tidak ingin memiliki ruang sebesar 5 drive. Menyebutkan 2 TB hanyalah pengamatan.
jstarek
3

Demi kejelasan, saya akan mengumpulkan informasi yang diberikan oleh derobert dan Alexandre Alves dan beberapa pengujian lebih lanjut dari saya di sini:

mdadm's --spare-devicesparameter tidak bekerja sebagai negara halaman manual, yakni mendefinisikan jumlah 'hot spare' drive dalam array. "Cadangan panas", seperti dalam terminologi RAID normal, tidak ada hubungannya dengan drive tambahan yang ada dalam array RAID 5 atau RAID 6 - drive tambahan ini dimaksudkan untuk mengambil alih segera setelah drive dalam array telah gagal.

Jumlah drive cadangan diberikan pada waktu pembuatan array. Nantinya, bisa diperiksa menggunakan #mdadm --detail --scan.

Namun, selama periode singkat inisialisasi RAID 5 berbasis mdadm, ada optimasi, dijelaskan dalam https://raid.wiki.kernel.org/index.php/Initial_Array_Creation , yang membuat drive cadangan tambahan muncul di output dari perintah itu:

"Untuk raid5 ada optimasi: mdadm mengambil salah satu disk dan menandainya sebagai 'cadangan'; kemudian menciptakan array dalam mode terdegradasi. Kernel menandai cadangan disk sebagai 'membangun kembali' dan mulai membaca dari 'baik' disk, hitung paritas dan tentukan apa yang seharusnya ada pada disk cadangan dan kemudian tulis saja. "

Setelah inisialisasi array selesai, jumlah suku cadang yang dilaporkan kembali ke jumlah yang dipilih pada waktu pembuatan.

jstarek
sumber