Bagaimana cara mendapatkan jalur perangkat yang konsisten untuk perangkat MD saya, idealnya persis seperti yang saya tentukan ("/dev/md/myarray")?
Setelah mdadm --create /dev/md/foobar ...
, keduanya hostname
dan name
disimpan dalam metadata mdadm, karena Anda harus memverifikasi dengan mdadm --examine
atau mdadm --detail
:
# mdadm --detail /dev/md/foobar
Name : ALU:foobar (local to host ALU)
ALU
kebetulan adalah nama host dari mesin ArchLinux saya:
# hostname
ALU
Anda dapat menentukan host yang harus disimpan pada waktu pembuatan:
# mdadm --create /dev/md/foobar --homehost=barfoo
# mdadm --detail /dev/md/foobar
Name : barfoo:foobar
...tapi biasanya tidak ada yang ingat untuk melakukan itu.
Dan di situlah masalah dimulai ... Anda mungkin telah membuat larik RAID dari beberapa LiveCD atau lainnya, dan nama host di lingkungan itu sama sekali tidak cocok dengan instalasi utama Anda. Dan kemudian metadata menyimpan beberapa nama host yang sama sekali tidak terkait.
Demikian pula jika Anda mengatur semuanya dengan benar, tetapi kemudian menemui masalah dengan RAID Anda dan mem-boot sistem penyelamatan untuk memeriksa semuanya, lagi-lagi ada ketidakcocokan dengan nama host.
Atau sebaliknya, nama host mungkin cocok meskipun itu adalah mesin yang salah - jika Anda menggunakan nama host yang sama untuk dua sistem independen dan kemudian memigrasikan drive. Kemudian array alien mengambil alih nama yang asli...
Sekarang, metadata juga dapat diubah nanti menggunakan mdadm --assemble --update=homehost
atau --update=name
, itu adalah salah satu cara untuk mengatasi masalah. Ini harus diatur dengan benar tetapi sulit untuk diubah karena (untuk beberapa alasan) kekurangan hexediting metadata secara langsung, ini hanya dapat dilakukan pada waktu perakitan.
Cara lain adalah dengan mengabaikan sistem hostname
dan tentukan --homehost
pada rakitan atau atur HOMEHOST
di mdadm.conf
. Ini dijelaskan secara mendetail di halaman manual mdadm.conf.
HOMEHOST
Baris homehost memberikan nilai default untuk opsi --homehost=ke mdadm. Biasanya hanya ada satu kata lain di telepon. Itu harus berupa nama host, atau salah satu kata khusus<system>
,<none>
dan<ignore>
. Jika<system>
diberikan, maka gethostname(2) systemcall digunakan untuk mendapatkan nama host. Ini defaultnya.
[...]
Saat array dibuat, nama host ini akan disimpan di metadata. Ketika array dirakit menggunakan auto-assembly, array yang tidak merekam nama host yang benar dalam metadatanya akan dirakit menggunakan nama "asing". Nama "asing" selalu diakhiri dengan string digit yang diawali dengan garis bawah untuk membedakannya dari nama lokal yang mungkin. misalnya /dev/md/1_1 atau /dev/md/home_0.
Jadi Anda dapat mencoba menyetel HOMEHOST ALU
(dalam kasus saya), atau HOMEHOST <ignore>
yang lebih umum (atau HOMEHOST <none>
) di mdadm.conf
. Tapi itu hanya akan berfungsi saat mdadm.conf
itu hadir. Dan lagi jika Anda menyetel abaikan lalu menyambungkan larik dari komputer lain, Anda mungkin mengalami konflik nama.
Jadi akan lebih baik menyetel nama host dengan benar di metadata dan mdadm.conf dan tidak mengabaikannya, dan lebih baik lagi menyetel nama host yang sebenarnya di initramfs sebelum perakitan tetapi mungkin sulit untuk diterapkan.
Preferensi pribadi saya adalah tetap berpegang pada gaya numerik klasik. Identifikasi dengan UUID dan tidak ada yang lain:
ARRAY /dev/md1 UUID=8fe790ca:f3fa3388:4ae125b6:2c3a5d44
ARRAY /dev/md2 UUID=f14bef5b:a5356e51:25fde128:09983091
ARRAY /dev/md3 UUID=0639c68d:4c844bb1:5c02b33e:00ab4a93
Ini juga konsisten (tetapi juga bergantung padanya untuk dibuat dengan cara ini dan/atau diatur sesuai dalam metadata, jika tidak, Anda juga mungkin harus --update
dia). Dan array alien yang tidak cocok dengan UUID yang diberikan harus berakhir sebagai /dev/md127+
.
Pada akhirnya, apa pun yang Anda lakukan, Anda tidak boleh begitu saja mengandalkan /dev/mdX
atau /dev/md/name
Dengan cara yang sama Anda tidak begitu saja bergantung pada /dev/sdX
huruf. Selalu gunakan UUID sistem file untuk mengidentifikasi apa pun yang ada di array tersebut.
Ada terlalu banyak kasus sudut di mana nama mungkin tiba-tiba berubah, jadi paling banter, ini bisa menjadi bantuan orientasi atau petunjuk ke sysadmin, ini bukan jawaban untuk semua masalah.