Làm cách nào tôi có thể tạo mdadm tự động lắp ráp RAID sau mỗi lần khởi động?


43

Tôi đã tạo thành công RAID (phản chiếu) bằng cách sử dụng mdadm. Tuy nhiên, tôi phải chạy các lệnh sau sau mỗi lần khởi động:

mdadm --stop --scan // to stop /dev/md127 - I don't know where the number 127 even comes from
mdadm --assemble --scan // to start /dev/md0

Tôi đang làm gì sai / tại sao tôi cần chạy các lệnh này khi khởi động? Cách đúng để tự động khởi động RAID với mỗi lần khởi động lại là gì?

Câu trả lời:


36

Lưu ý: Bạn cần phải đăng nhập bằng root hoặc sử dụng sudo để thực hiện tất cả điều này ...

  • Sử dụng trình chỉnh sửa yêu thích của bạn để tạo hoặc chỉnh sửa tệp /etc/mdadm/mdadm.conf như sau:

Nếu tệp thậm chí không tồn tại, hãy dán đoạn sau vào tệp mới, trống:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
  • Lưu các tập tin

  • Chạy lệnh sau để thêm một tham chiếu đến cấu hình mảng của bạn ở cuối tệp:

    mdadm --dailail --scan >> /etc/mdadm/mdadm.conf

Điều này sẽ thêm một dòng như sau vào cuối mdadm.conf:

ARRAY / dev / md0 level = raid5 num-thiết bị = 3 siêu dữ liệu = 00,90 UUID = a44a52e4: 0211e47f: f15bce44: 817d167c

Nếu lệnh mdadm đã thêm bất kỳ nội dung nào khác phía trên dòng ARRAY, hãy xóa nó. Ví dụ: trên một trong các máy của tôi, lệnh trả về 'mdadm: siêu dữ liệu định dạng 00.90 không xác định, bị bỏ qua.' trước dòng ARRAY.

Bây giờ mảng của bạn sẽ tự động xây dựng khi khởi động và do đó bạn có thể thêm một mục vào / etc / fstab để gắn kết nó (nếu nó chưa có ở đó)


6
Tôi có thể nói thêm: bạn cũng nên cập nhật initramfs của mình vớiupdate-initramfs -u
Pablo Montepagano

1
mdadm --detail --scan không in bất cứ thứ gì trên hệ thống của tôi, mặc dù tôi biết chắc chắn rằng tôi có hai phân vùng là một phần của raid0 (gương). Bất kỳ lời khuyên chung về điều này đều được chào đón.
Lennart Rolland

1
@LennartRolland - hãy thử mdadm -Esthay thế.
slm

điều này không hiệu quả với tôi, tôi phải làm grub-install /dev/sdađể nó hoạt động (thay thế sda cho bất cứ điều gì phù hợp với bạn)
gorn

Ngoài ra, bạn chỉ có thể sử dụng tùy chọn kernel: md.auto=1... Tôi thực sự chưa kiểm tra kỹ điều này nhưng được cho là nó phát hiện ra chúng và lắp ráp chúng (hoặc ít nhất là cố gắng làm như vậy). Nhưng sau đó kernel.org/doc/html/v4.15/admin-guide/md.html hơi mơ hồ về điều đó: Khi md được biên dịch vào kernel (không phải là mô-đun), các phân vùng loại 0xfd được quét và tự động lắp ráp vào mảng RAID. [...] Kể từ kernel 2.6.9, chỉ các ổ đĩa có siêu khối loại 0 mới có thể được tự động phát hiện và chạy khi khởi động. Và nó không đề cập đến md.auto (hoặc bất cứ điều gì) vì vậy bây giờ tôi không chắc chắn.
Pryftan

7

Tôi nhận ra đây là một câu hỏi cũ hơn, nhưng tôi đã có một thời gian bực bội với điều này trên phiên bản 32-bit của Ubuntu Server 12.04.

Chạy mdadm --detail --scan >> /etc/mdadm/mdadm.confnối thêm dòng

ARRAY / dev / md0 siêu dữ liệu = 1,2 name = ubfox: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

Sau khi khởi động lại, tôi không bao giờ có thể thấy / dev / md0. Chạy mdadm --detail --scanlại (không đưa kết quả vào một tệp) tôi sẽ thấy

ARRAY / dev / md / ubfox: 0 metadata = 1.2 name = ubfox: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

và tự gắn /dev/md/ubuntu:0sẽ hoạt động. Cuối cùng, đó cũng là những gì tôi đặt trong tệp fstab.

Tôi không chắc chắn những gì tôi đã sai, nếu đây là cách nó hoạt động trong Ubuntu 12.04 hoặc nếu đây là một thực tiễn xấu. Chỉ muốn chia sẻ những gì làm việc cho tôi.


Cùng một vấn đề ở đây. Tuy nhiên, không chắc đó có phải là vấn đề không ..
Barshe De Troyer

3

Trên Debian wheezy cần thêm một bước nữa: trong /etc/default/mdadmthiết lập tự động khởi động từ false thành true

#TỰ ĐỘNG BẮT ĐẦU:
# nên mdadm bắt đầu mảng được liệt kê trong /etc/mdadm/mdadm.conf
# trong khi khởi động?
AUTOSTART = đúng

Ngoài ra tôi đã phải sử dụng mdadm -Es >>/etc/mdadm/mdadm.confthay vì --scantùy chọn, vì điều đó không làm việc cho tôi.


3
sudo mdadm -Es >> /etc/mdadm/mdadm.conf

Bây giờ chỉnh sửa các dòng được thêm vào /etc/mdadm/mdadm.conf theo cách sau. Xóa mọi thứ, nhưng những phần cơ bản. Nó sẽ trông giống như

ARRAY /dev/md5 UUID=031cea92:50a7a28c:6b077fe7:8817092a
ARRAY /dev/md6 UUID=53454954:4044eb66:9169d1ed:40905643

Lưu ý: bạn có thể chọn X trong mdX để thuận tiện cho bạn.

Bây giờ khởi động lại

sudo update-initramfs -u
sudo reboot

EDIT: lệnh đã được sửa.


Tôi đã viết thi vì câu trả lời của Linker3000 không phù hợp với tôi.
vào

3

Tôi gặp vấn đề này trên Raspberry Pi 2 đang chạy Raspbian GNU / Linux 8 (jessie). Tôi đã có một mảng RAID /dev/sda1/dev/sdb1không thể lắp ráp khi khởi động. Tôi đã có trong /etc/mdadm/mdadm.conftập tin của tôi mục

ARRAY /dev/md/0  metadata=1.2 UUID=53454954:4044eb66:9169d1ed:40905643 name=raspberrypi:0 

(số của bạn sẽ khác nhau; xem các câu trả lời khác về cách lấy cái này.)

Tôi đã có trong /etc/fstabtập tin của tôi mục

/dev/md0        /data           ext4    defaults          0       0

(và tất nhiên /datathực sự tồn tại)

Giống như OP, tôi có thể lắp ráp và gắn mảng RAID bằng tay sau khi khởi động, nhưng tôi không thể khiến nó tự động xảy ra trong khi khởi động mặc dù rõ ràng thiết lập chính xác.

Tôi đã có thể giải quyết vấn đề như sau. Tôi đã điều tra tập lệnh tại /etc/init.d/mdadm-raidvà chèn một dòng mã gỡ lỗi

ls /dev > /home/pi/devices.txt

Khởi động lại và kiểm tra tệp này Tôi đã học được rằng các thiết bị /dev/sda/dev/sdbtồn tại tại thời điểm mdadm-raidkhởi tạo xảy ra, nhưng các phân vùng /dev/sda1/dev/sdb1bị thiếu. Tôi chỉnh sửa /etc/init.d/mdadm-raidtập tin và chèn dòng

partprobe

sau tiêu đề (tức là sau ### END INIT INFOnhưng trước khi kịch bản bắt đầu). Điều này khiến các phân vùng bị phát hiện và do đó mdadm-raidtập lệnh có thể lắp ráp mảng RAID, giải quyết vấn đề. Hy vọng điều này sẽ giúp được ai đó!


0

Tôi đã chiến đấu với điều này trên Raspbian bằng cách sử dụng một vài USB HDD bên ngoài trên Raspberry Pi. Tôi đã phải làm rối với thứ tự bắt đầu của các dịch vụ để đảm bảo rằng mdadm-raid bắt đầu sau khi các ổ USB được udev nhận ra nhưng trước khi checkfs.sh (kiểm tra các hệ thống tập tin khi khởi động). Nếu mdadm-raid bắt đầu quá sớm, các ổ đĩa không có sẵn và do đó mảng không được lắp ráp. Điều đó có nghĩa là fsck sau đó đã thất bại và quá trình khởi động rơi vào dấu nhắc bảo trì (vì mảng đột kích là bắt buộc cho các dịch vụ khác).

Sửa đổi phụ thuộc khởi động để bắt đầu mdadm-raid sau khi checkroot.sh nhưng trước khi checkfs.sh và chạy update-rc.d mdadm-raid defaults, sau đó update-initramfs -uv -k `uname -r`(lưu ý backticks xung quanh uname) đã sửa nó (cuối cùng). Đối với tôi, dù sao, YMMV.


Lưu ý rằng uname -r ở trên được cho là ở trạng thái ngược nhưng tôi không thể tìm ra cách thoát chúng để chúng được in ở đây ...
Rodney

Phiên bản nào của raspbian là đây? Tôi đã làm cho nó hoạt động tốt trên Wheezy, nhưng xấu xí với Jessie đã phá vỡ sự lắp ráp khi khởi động.
nwaltham 15/03/2016

0

Tôi đã thử với

mdadm --create /dev/md/abcdef ...

Tôi thấy /dev/md/abcdefliên kết mềm vẫn tồn tại khi khởi động lại và nếu cần truy cập vào thiết bị thông qua liên kết mềm.

Nó có phải là một giải pháp chấp nhận được?


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.