Cách tốt nhất để phát triển phần mềm Linux RAID 1 lên RAID 10


22

mdadm dường như không hỗ trợ phát triển một mảng từ cấp 1 đến cấp 10.

Tôi có hai đĩa trong RAID 1. Tôi muốn thêm hai đĩa mới và chuyển đổi mảng thành một mảng RAID 10 bốn đĩa.

Chiến lược hiện tại của tôi:

  1. Tạo bản sao lưu tốt.
  2. Tạo một mảng RAID 10 đĩa xuống cấp với hai đĩa bị thiếu.
  3. rsync the RAID 1 array with the RAID 10 array.
  4. fail and remove một đĩa từ mảng RAID 1.
  5. Thêm đĩa có sẵn vào mảng RAID 10 và đợi resynch hoàn tất.
  6. Phá hủy mảng RAID 1 và thêm đĩa cuối cùng vào mảng RAID 10.

Vấn đề là thiếu sự dư thừa ở bước 5.

Có cách nào tốt hơn?


5
Đừng quên bước 0. Tạo một bản sao lưu tốt của mọi thứ.
Anthony Lewis

Tôi tin rằng các bước của bạn là chính xác. Bạn mất đi sự dư thừa trong khoảng thời gian bạn sao chép dữ liệu từ bộ này sang bộ khác.
Kevin Kuphal

Có thể tạo RAIDd 4disk xuống cấp không?
pauseka

1
Có, bạn chỉ cần sử dụng "/ dev / hda thiếu / dev / hdb bị mất", vì nếu không, bạn sẽ mất toàn bộ một cặp và tất cả đều sụp đổ. "Câu trả lời được chấp nhận" cho câu hỏi này, tình cờ, là hoàn toàn sai và không hoạt động.
womble

Tôi cũng đang tìm kiếm một cách tốt để làm điều này và tôi nghĩ rằng phương pháp được mô tả trong câu hỏi là cách tốt nhất tôi tìm thấy cho đến nay. Câu trả lời của Mark Turner không giúp ích gì vì nó tạo ra một mảng 2 thiết bị không thể định hình lại thành 4 thiết bị (2 thiết bị còn lại chỉ có thể được thêm dưới dạng phụ tùng). Và câu trả lời của Suresh Kumar giống như được mô tả trong câu hỏi, ngoại trừ nó sẽ không hoạt động chính xác như thế; các thiết bị còn thiếu phải là thứ 2 và thứ 4, không phải thứ 3 và thứ 4. Về các bước trong câu hỏi: Tôi nghĩ bước 5 có dự phòng đầy đủ và bước 6 có dự phòng cho một nửa dữ liệu. Tôi thực sự thấy các bước đã được đổi tên
aditsu

Câu trả lời:


8

Với linux soft, bạn có thể tạo một mảng RAID 10 chỉ với hai đĩa.

Tên thiết bị được sử dụng dưới đây:

  • md0 là mảng cũ của loại / cấp RAID1.
  • md1 là mảng mới của loại / cấp RAID10.
  • sda1sdb2các phân vùng mới , trống (không có dữ liệu).
  • sda2sdc1là các phân vùng cũ (với dữ liệu quan trọng).

Thay thế tên để phù hợp với trường hợp sử dụng của bạn. Sử dụng ví dụ lsblkđể xem bố cục hiện tại của bạn.

0) Sao lưu, sao lưu, sao lưu, sao lưu oh và BACKUP

1) Tạo mảng mới (4 thiết bị: 2 hiện có, 2 thiếu):

mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing

Lưu ý rằng trong ví dụ này bố trí sda1có một đối tác bị thiếu và sdb2có một đối tác bị thiếu khác. Dữ liệu của bạn trên md1không an toàn tại thời điểm này (thực tế đó là RAID0 cho đến khi bạn thêm thành viên bị thiếu).

Để xem bố cục và các chi tiết khác của mảng được tạo, hãy sử dụng:

mdadm -D /dev/md1

Chú thích! Bạn nên lưu bố cục của mảng:

# View current mdadm config:
cat /etc/mdadm/mdadm.conf
# Add new layout (grep is to make sure you don't re-add md0):
mdadm --detail --scan | grep "/dev/md1" | tee -a /etc/mdadm/mdadm.conf
# Save config to initramfs (to be available after reboot)
update-initramfs -u

2) Định dạng và gắn kết. Các /dev/md1nên ngay lập tức có thể sử dụng, nhưng cần phải được định dạng và sau đó gắn kết.

3) Sao chép tập tin. Sử dụng ví dụ rsync để sao chép dữ liệu từ RAID 1 cũ sang RAID 10. mới (đây chỉ là một lệnh ví dụ, đọc các trang hướng dẫn cho rsync)

rsync -arHx / /where/ever/you/mounted/the/RAID10

4) Thất bại phần 1 của RAID1 cũ (md0) và thêm nó vào RAID10 mới (md1)

mdadm /dev/md0 --fail /dev/sda2 --remove /dev/sda2
mdadm /dev/md1 --add /dev/sda2

Chú thích! Điều này sẽ xóa sạch dữ liệu từ sda2. Các md0vẫn nên được sử dụng nhưng chỉ khi các thành viên cuộc tấn công khác là hoạt động đầy đủ.

Cũng lưu ý rằng điều này sẽ bắt đầu quá trình đồng bộ hóa / khôi phục trên md1. Để kiểm tra trạng thái, sử dụng một trong các lệnh dưới đây:

# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1

Đợi đến khi phục hồi xong.

5) Cài đặt GRUB trên Mảng mới (Giả sử bạn đang khởi động từ nó). Một số đĩa CD cứu hộ / khởi động Linux hoạt động tốt nhất.

6) Khởi động trên mảng mới. NẾU LÀM VIỆC ĐÚNG ĐÚNG Phá hủy mảng cũ và thêm đĩa còn lại vào mảng mới.

ĐIỂM KHÔNG CÓ TRẢ LẠI

Tại thời điểm này, bạn sẽ hủy dữ liệu về thành viên cuối cùng của mảng md0 cũ. Hãy chắc chắn mọi thứ đang hoạt động.

mdadm --stop /dev/md0
mdadm /dev/md0 --remove /dev/sdc1
mdadm /dev/md1 --add /dev/sdc1

Và một lần nữa - chờ cho đến khi phục hồi md1xong.

# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1

7) Cập nhật cấu hình mdadm

Nhớ cập nhật /etc/mdadm/mdadm.conf(xóa md0).

Và lưu cấu hình vào initramfs (sẽ khả dụng sau khi khởi động lại)

update-initramfs -u

1
Trường hợp bốn đĩa đi vào nó?
womble

Ơ Tôi nêu rõ để tạo mảng với 2 đĩa, sao chép dữ liệu, không đột kích 1 bằng cách xóa một đĩa, thêm đĩa đó vào RAID10, sau đó khởi động vào RAID10, nếu nó hoạt động, phá hủy RAID1 và di chuyển đĩa cuối cùng sang RAID mới ....
Mark Turner

4
Bạn đã chỉnh sửa câu trả lời của bạn sau khi nhận xét của tôi. Ngoài ra, quy trình của bạn cung cấp RAID-10 hai đĩa với hai phụ tùng ... hầu như không phải là RAID-10 bốn đĩa. Khối lượng RAID-10 cũng không thể được định hình lại.
womble

2
Tôi đã chạy các lệnh khi bạn cung cấp chúng, và tôi kết thúc với RAID-10 hai đĩa với hai phụ tùng, như được hiển thị bởi / Proc / mdstat. Đây là trên kernel 2.6.30, với mdadm v2.6.7.2.
womble

3
"mdadm: raid10 mảng / dev / md1 không thể được định hình lại." Điều này cũng được đề cập trong trang web mdadm.
womble

9

Thực hiện theo quy trình tương tự như Mark Turner nhưng khi bạn tạo mảng đột kích, hãy đề cập đến 2 đĩa bị thiếu

mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing

Và sau đó tiến hành các bước khác.

Tóm lại, tạo RAID10 với tổng số 4 đĩa (trong đó có 2 đĩa bị thiếu), đồng bộ lại, thêm hai đĩa khác sau đó.


6

Vừa hoàn thành việc chuyển từ LVM trên hai đĩa 2TB mdadm RAID 1 sang LVM trên bốn đĩa RAID 10 (hai đĩa gốc + hai đĩa mới).

Như @aditsu lưu ý thứ tự ổ đĩa rất quan trọng khi tạo mảng.

mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda missing /dev/sdb missing

Mã ở trên cung cấp một mảng có thể sử dụng với hai đĩa bị thiếu (thêm số phân vùng nếu bạn không sử dụng toàn bộ đĩa). Ngay khi đĩa thứ ba được thêm vào, nó sẽ bắt đầu đồng bộ hóa. Tôi đã thêm đĩa thứ tư trước khi đồng bộ hóa thứ ba xong. Nó hiển thị như một bản dự phòng cho đến khi đĩa thứ ba kết thúc sau đó nó bắt đầu đồng bộ hóa.

Các bước cho tình huống của tôi:

  1. Tạo bản sao lưu tốt.

  2. Tạo một mảng RAID 10 đĩa xuống cấp với hai đĩa bị thiếu (chúng tôi sẽ gọi các đĩa bị thiếu # 2 và 4).

  3. Nói với vợ đừng thay đổi / thêm bất kỳ tập tin nào cô ấy quan tâm

  4. Lỗi và xóa một đĩa khỏi mảng RAID 1 (đĩa 4).

  5. Di chuyển phạm vi vật lý từ mảng RAID 1 sang mảng RAID 10 để trống đĩa 2.

  6. Giết mảng RAID 1 đang hoạt động, thêm đĩa trống bây giờ (đĩa 2) vào mảng RAID 10 và đợi đồng bộ hóa hoàn tất.

  7. Thêm đĩa đầu tiên được xóa khỏi RAID 1 (đĩa 4) vào mảng RAID 10.

  8. Cho vợ đi trước.

Ở bước 7 tôi nghĩ ổ đĩa 1, 2, OR 4 có thể bị lỗi (trong khi đồng bộ lại đĩa 4) mà không làm chết mảng. Nếu ổ 3 không thành công, dữ liệu trên mảng là bánh mì nướng.


+1, đặc biệt là cho bước 3;)

-1, hướng dẫn không rõ ràng, không có vợ, mất dữ liệu của tôi
ZAB

1

Bây giờ tôi đã chuyển raid1 sang raid10 và trong khi trang này giúp tôi nhưng có một số điều còn thiếu trong các câu trả lời ở trên. Đặc biệt là mục tiêu của tôi là giữ ext4imes.

thiết lập là:

  • 2 đĩa raid1 của mỗi loại msdos và md0 với phân vùng ext4 và mbr với msdos
  • 2 đĩa mới trở thành bản gốc mới (tất cả cùng kích thước)
  • dẫn đến một cuộc đột kích 4 đĩa md127 ext4 nhưng do kích thước tôi đã phải chuyển từ mbr sang gpt
  • Đây là đĩa nhà của tôi, vì vậy không cần thiết lập bootmanager hoặc dự định
  • sử dụng Ubuntu hàng ngày của tôi (vì vậy: không sử dụng đĩa cứu hộ bên ngoài)
  • sử dụng gparted, dd và mdadm

như bất cứ ai đã nói trước đây: bước không nên được sao lưu và có thể xảy ra sự cố trong quá trình dẫn đến dataloss cực đoan

  1. SAO LƯU

  2. thiết lập cuộc đột kích mới

    1. tạo một cuộc đột kích mới

      mdadm -v --create /dev/md127 --level=raid10 --raid-devices=4 /dev/sdb1 missing /dev/sde1 missing
      

      (tôi thấy rằng bố cục rất quan trọng .. thứ 2 và thứ 4 dường như là các bản sao trong cuộc đột kích 'gần' mặc định)

    2. thiết lập phân vùng của cuộc đột kích tôi đang sử dụng gparted thiết lập gpt trên md127 và sau đó thêm một phân vùng mới (ext4) có kích thước của cái cũ hoặc lớn hơn
  3. di cư

    1. bây giờ nhận được dữ liệu ... tôi lần đầu tiên thử sử dụng rsync đã hoạt động nhưng không giữ được giờ sinh ... sử dụng dd để sao chép từ cuộc đột kích cũ sang cuộc tấn công mới

      dd if=/dev/md0 of=/dev/md127p1 bs=1M conv=notrunc,noerror,sync
      

      ĐỢI CHO CNTT
      bạn có thể kiểm tra bằng cách gửi USR1 đến quy trình đó

      kill -s USR1 <pid>
      
    2. sửa lỗi đột kích
      gparted là một công cụ tuyệt vời: bạn bảo nó kiểm tra & sửa phân vùng và thay đổi kích thước của nó thành kích thước đầy đủ của đĩa đó chỉ với một vài mouseclicks;)

    3. đặt một uuid mới cho phân vùng đó và cập nhật fstab của bạn với nó (thay đổi uuid)

    4. lưu trữ cuộc đột kích của bạn trong conf

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

      và loại bỏ cái cũ

      vim /etc/mdadm/mdadm.conf 
      
    5. khởi động lại nếu bạn không ở trên hệ thống
  4. phá hủy cái cũ

    1. thất bại lần đầu tiên và thêm nó vào cuộc đột kích mới

      mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1
      

      sau đó tạo gpt trên thiết bị đó và đặt phân vùng trống mới

      mdadm /dev/md127 --add /dev/sdc1
      

      ĐỢI CHO CNTT
      bạn có thể kiểm tra với

      cat /proc/mdstat
      
    2. dừng cái thứ hai

      mdadm --stop /dev/md0 
      

      sau đó tạo gpt trên thiết bị cuối cùng đó và thiết lập lại phân vùng trống mới

      mdadm /dev/md127 --add /dev/sdd1
      

      ĐỢI CHO NÓ


0

Tôi đã làm điều đó với LVM. Cấu hình ban đầu: - sda2, sdb2 - và tạo raid1 md1 trên đầu trang. sda1 và sdb1 đã được sử dụng cho phân vùng raid1 cho / boot thứ hai. - md1 là pv trong không gian nhóm âm lượng, với một số lvm trên đó.

Tôi đã thêm đĩa sdc và sdd và tạo các phân vùng như trên sda / sdb.

Vì thế:

  1. đã tạo md10 như:

    mdadm --create / dev / md10 --level raid10 - sợ-thiết bị = 4 / dev / sdc2 bị thiếu / dev / sdd2

  2. mở rộng vg trên nó:

    PVCreate / dev / md10 không gian vgextend / dev / md10

  3. đã chuyển khối lượng từ md1 sang md10:

    pvmove -v / dev / md1 / dev / md10

(chờ hoàn thành) 4. giảm nhóm âm lượng:

vgreduce space /dev/md1
pvremove /dev/md1
  1. dừng mảng md1:

    mdadm -S / dev / md1

  2. thêm đĩa từ md1 cũ vào md10:

    mdadm -a / dev / md10 / dev / sda2 / dev / sdb2

  3. cập nhật cấu hình trong /etc/mdadm/mdadm.conf:

    mdadm -E --scan >> / dev / mdadm / mdadm.conf

(và loại bỏ md1 cũ)

Mọi thứ được thực hiện trên hệ thống trực tiếp, với khối lượng hoạt động được sử dụng cho kvm's;)

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.