Bagaimana cara mengganti nama array serangan mdadm?

23

Untuk beberapa alasan, ketika saya mencoba untuk mengubah nama array serangan mdadm menjadi nama tekstual, perubahan tidak mengambil.

Saya mencoba saran dari pertanyaan serverfault ini , tetapi tidak berhasil.

~$ mdadm --version
mdadm - v3.1.4 - 31st August 2010

~$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
  Creation Time : Tue Sep 27 08:32:32 2011
     Raid Level : raid1
     Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
  Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Sun Oct  2 17:59:37 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : omicron:0  (local to host omicron)
           UUID : 75c4a555:482aecd0:ade70dfc:1547926a
         Events : 17

Number   Major   Minor   RaidDevice State
   0       8       80        0      active sync   /dev/sdf
   1       8       96        1      active sync   /dev/sdg

~$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0

~$ sudo mdadm --assemble /dev/md/alpha --update=name /dev/sd[gf]
mdadm: /dev/md/alpha has been started with 2 drives.

~$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Sep 27 08:32:32 2011
     Raid Level : raid1
     Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
  Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Sun Oct  2 18:06:11 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : omicron:0  (local to host omicron)
           UUID : 75c4a555:482aecd0:ade70dfc:1547926a
         Events : 17

Number   Major   Minor   RaidDevice State
   0       8       80        0      active sync   /dev/sdf
   1       8       96        1      active sync   /dev/sdg

~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdf[0] sdg[1]
      1953513424 blocks super 1.2 [2/2] [UU]

md126 : active (auto-read-only) raid1 sdd[0] sde[1]
      1953513424 blocks super 1.2 [2/2] [UU]

md127 : active (auto-read-only) raid1 sdb[0] sda[1]
      976762496 blocks [2/2] [UU]

unused devices: <none>

Seperti yang Anda lihat, nama tersebut masih dilaporkan omicron:0dan masih dapat dijangkau melalui file perangkat yang lama. Mencoba sudo mdadm --detail /dev/md/alphaakan berhasil, dan melaporkan nama yang sama, salah, hingga boot ulang berikutnya, ketika berhenti berfungsi.

Sepertinya ketika mencari tahu nama yang akan dimasukkan, mdadm menjadi bingung dan hanya membuat file perangkat sebagai gantinya.


KE SAMPING

Apakah ada cara untuk membuat mdadm memaksa pembaruan nama bagian dari superblock (yaitu secara eksplisit mengatur nama yang Anda inginkan dari array) tanpa harus secara eksplisit membuat ulang superblok? (yaitu sudo mdam --zero-superblock /dev/sd[fg]; sudo mdadm --create /dev/md/alpha --raid-devices=2 --level=1 --assume-clean --name=alpha /dev/sd[fg])


Masalahnya adalah bahwa setelah reboot, meskipun menambah ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=c66a267...mdadm.conf, file perangkat yang dinamai menghilang dan diganti dengan salah satu format standar. (/ dev / md125 atau serupa)

Bagaimana saya bisa membuat array mdadm yang diganti nama tetap namanya? - Yaitu - Bagaimana saya bisa membuat ubuntu bertahan file perangkat antara boot?

Zaz
sumber

Jawaban:

19

Anda harus memberikan nama itu dengan --name=:

sudo mdadm --assemble /dev/md/alpha --name=newname --update=name /dev/sd[gf]

Untuk memiliki perilaku yang konsisten saat reboot, Anda harus menggunakan nama yang sama dalam argumen --name daripada di bagian terakhir perangkat. Ini dia: sudo mdadm --assemble / dev / md / alpha --name = alpha --update = nama / dev / sd [gf]

Lihat posting Khassad di bawah ini untuk penjelasan lengkap.

pille
sumber
1
Pembaruan kecil untuk baris perintah ini, untuk kejelasan, seperti boob saya memasukkan nama asli array setelah '--update ='. sudo mdadm --assemble /dev/md/alpha --name={newname} --update=name /dev/sd[gf] Harapan yang masuk akal atau membuatnya lebih jelas ....
anastrophe
Hai, setelah mengeluarkan perintah # sudo mdadm --assemble / dev / md127 --name = md0 --update = nama / dev / sd [ab] Saya mendapatkan mdadm: / dev / sda sedang sibuk - melewatkan mdadm: / dev / sdb sibuk - melewatkan any thougths? Tentu saja, saya telah melepas array terlebih dahulu!
razor7
2
@ razor7mdadm --stop --scan md127
Daniel Dinnyes
12

Cara untuk membuat Ubuntu bertahan perubahan nama lintas boot adalah untuk memperbarui initramfs Anda. Setelah memperbarui nama array dan mdadm.conf Anda, Anda perlu mengeluarkan perintah berikut:

sudo update-initramfs -u

Seluruh proses:

sudo mdadm --stop /dev/md125
sudo mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[fg]
sudo mdadm -Db /dev/md/alpha

Perintah ketiga harus mengembalikan sesuatu seperti:

ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=5b024352:3a940335:233aa23f:5c6b2a1f

Rekatkan hasilnya ke /etc/mdadm/mdadm.conf (mengganti baris yang lama). Atau jalankan:

sudo mdadm -Db /dev/md/alpha >> /etc/mdadm/mdadm.conf

Jalankan berikutnya:

sudo update-initramfs -u

Akhirnya, reboot.

Diskusi ini bermanfaat .

Swoogan
sumber
8

Jawaban pertama oleh pille dan NN berfungsi.

Kuncinya di sini adalah ketika Anda tidak menentukan --nameopsi, satu-satunya penamaan ulang yang dilakukan oleh mdadmadalah menetapkan nama array dari nomor perangkat yang telah dialokasikan. Dalam pertanyaan ini adalah 0 sehingga nama array baru adalah 0.

Karena Anda menentukan nama perangkat ("alpha" di sini) untuk digunakan dalam perintah assemble, itu akan membuat dan menggunakan nama perangkat ini. Tetapi pada autostart mdadmmembuat perangkat berdasarkan nama yang dilihatnya di superblock, yaitu 0 dalam hal ini, sehingga nama perangkat yang Anda tentukan dalam perintah assemble Anda hilang.

Untuk membuat nama Anda berubah lengket dan koheren, Anda harus menggunakan nama yang sama di bagian terakhir nama perangkat Anda dan nama array baru Anda. Dalam hal ini, untuk perangkat "alpha" Anda harus menggunakan baris perintah ini:

mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[gf]

Anda juga dapat mengubah nama host, untuk melakukan ini Anda harus mendeklarasikannya secara eksplisit menggunakan -name=<hostname>:<array_name>sintaks.

Ini mungkin berguna misalnya setelah perubahan nama mesin.

Khassad
sumber
2

Sepertinya jawaban yang Anda cari tepat di halaman manual mdadm

[create, build, grow]
      -N, --name=
          Set  a name for the array.  This is **currently only effective when creat‐
          ing an array** with a version-1 superblock, or an  array  in  a  DDF  con‐
          tainer.   The  name is a simple textual string that can be used to iden‐
          tify array components when assembling.  If name is needed but not speci‐
          fied, it is taken from the basename of the device that is being created.
          e.g. when creating /dev/md/home the name will default to home.

dan untuk berkumpul

       -N, --name=
          Specify the name of the array to assemble.  **This must be the  name  that
          was  specified  when  creating the array**.  It must either match the name
          stored in the superblock exactly, or it  must  match  with  the  current
          homehost prefixed to the start of the given name.

Yang menjelaskan mengapa atribut nama tidak lengket setelah disetel. Jika Anda berhasil, silakan beri komentar yang jawabannya akan membantu Anda. Atau, Anda selalu bisa membuat symlink menggunakan aturan udev dan UUID array sebagai jangkar.

Saya tidak melihat gunanya menambahkan nama palsu ke /etc/mdadm.conf, Anda sudah menggunakan UUID yang merupakan nama array kanonik. Menambahkan variabel lain, yang Anda inginkan untuk diubah, hanyalah pemeliharaan yang tidak perlu dan meminta masalah, mis. Array gagal memulai.

Di luar pengamatan ini, tempat terbaik untuk memahami mengapa Anda tidak bisa memperbarui nama saat runtime adalah dengan melakukan ping ke milis linux-raid.

ppetraki
sumber
1

setelah Anda mengubah nama, apakah Anda mencoba memperbarui mdadm.conf?

 mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf
maniat1k
sumber
0

mdadm memiliki bug ketika volume serangan dibuat secara internal dengan spasi di namanya. Volume ini tidak akan dipasang dengan benar karena kesalahan format pada file /etc/mdadm/mdadm.conf yang dihasilkan. Anda perlu mengubah nama mereka di sana tetapi tidak akan bertahan lama. Jadi, mengganti nama nama internal diperlukan ... tetapi tidak didukung pada semua pengontrol RAID yang memblokir metadata mereka dan tidak mendukung opsi nama. Saya tidak melihat bagaimana cara mengubah nama volume ini (bahkan jika mereka dirujuk secara internal oleh UUID mereka, namanya adalah yang digunakan oleh Linux; Windows sebaliknya tidak memiliki bug seperti itu dan dengan sempurna me-mount volume RAID yang berisi spasi dalam nama mereka)!

verdy_p
sumber