Raid1 với phân vùng hoạt động và dự phòng


8

Tôi gặp vấn đề sau với phân vùng đột kích phần mềm RAID1 trên hệ thống Ubuntu của tôi (10.04 LTS, máy chủ 2.6.32-24 trong trường hợp có vấn đề).

Một trong các đĩa của tôi (sdb5) đã báo cáo lỗi I / O và do đó được đánh dấu là bị lỗi trong mảng. Các mảng sau đó đã xuống cấp với một thiết bị hoạt động. Do đó, tôi đã thay thế ổ cứng, nhân bản bảng phân vùng và thêm tất cả các phân vùng mới vào mảng đột kích của tôi. Sau khi đồng bộ tất cả các phân vùng kết thúc tốt đẹp, có 2 thiết bị hoạt động - ngoại trừ một trong số chúng. Tuy nhiên, phân vùng báo cáo đĩa bị lỗi trước đó không bao gồm phân vùng mới như một thiết bị hoạt động mà là một đĩa dự phòng:

md3 : active raid1 sdb5[2] sda5[1]
  4881344 blocks [2/1] [_U]

Một cái nhìn chi tiết cho thấy:

root@server:~# mdadm --detail /dev/md3
[...]
Number   Major   Minor   RaidDevice State
   2       8       21        0      spare rebuilding   /dev/sdb5
   1       8        5        1      active sync   /dev/sda5

Vì vậy, đây là câu hỏi: Làm thế nào để tôi nói cuộc đột kích của tôi để biến đĩa dự phòng thành một hoạt động? Và tại sao nó đã được thêm vào như một thiết bị dự phòng? Tái tạo hoặc gắn lại mảng không phải là một tùy chọn, vì đó là phân vùng gốc của tôi. Và tôi không thể tìm thấy bất kỳ gợi ý nào cho chủ đề đó trong Phần mềm Raid HOWTO.

Bất kỳ trợ giúp sẽ được đánh giá cao.

Giải pháp tạm thời

Tôi đã tìm thấy một giải pháp cho vấn đề của mình, nhưng tôi không chắc chắn rằng đây là cách thực sự để làm điều đó. Nhìn kỹ hơn về cuộc đột kích của tôi, tôi thấy rằng sdb5 luôn được liệt kê như một thiết bị dự phòng:

mdadm --examine /dev/sdb5
[...]
Number   Major   Minor   RaidDevice State
this     2       8       21        2      spare   /dev/sdb5

   0     0       0        0        0      removed
   1     1       8        5        1      active sync   /dev/sda5
   2     2       8       21        2      spare   /dev/sdb5

Vì vậy, hãy cài đặt lại thiết bị sdb5 vào mảng md3 luôn luôn kết thúc việc thêm thiết bị như một phụ tùng.

Cuối cùng tôi chỉ tạo lại mảng

mdadm --create /dev/md3 --level=1 -n2 -x0 /dev/sda5 /dev/sdb5

mà làm việc

Nhưng câu hỏi vẫn còn mở cho tôi: Có cách nào tốt hơn để thao tác các bản tóm tắt trong siêu khối và nói với mảng để biến sdb5 từ đĩa dự phòng sang đĩa hoạt động không? Tôi vẫn tò mò cho một câu trả lời.


"Cat / Proc / mdstat" thể hiện điều gì? Không phải nó chỉ là xây dựng lại và "phụ tùng" sẽ biến mất khi việc xây dựng lại kết thúc? "Mdadm --version" thể hiện điều gì? Có một lỗi cũ ... xem mail-archive.com/linux-ston@vger.kernel.org/msg09818.html .
rems

Không, đó là vấn đề. Đoạn mã đầu tiên trong câu hỏi hiển thị đầu ra của / Proc / mdstat cho mảng. Thiết bị đã được đồng bộ hóa, nhưng như bạn có thể thấy sau quá trình đồng bộ hóa thành công, thiết bị vẫn là phụ tùng và không bị biến thành hoạt động.
Daniel Baron

mdadm - v2.6.7.1
Daniel Baron

Câu trả lời:


1

Daniel: Ban đầu, kiểm tra kỹ để xem liệu phụ tùng có được tích hợp vào mảng hay không bằng cách thực hiện:

mèo / Proc / mdstat

cần báo cáo nếu có quá trình xây dựng đang diễn ra và thời gian dự kiến ​​sẽ diễn ra.

Nếu không có tòa nhà nào xảy ra, hãy thử những điều sau đây

mdadm / dev / md3 - ghi / dev / sdb5

mdadm / dev / md3 --add / dev / sdb5

Và báo cáo lại làm thế nào mà làm việc cho bạn. Xem http://linux.die.net/man/8/mdadm để biết thêm chi tiết.


Cảm ơn sự giúp đỡ của bạn, Rolnik. Như bạn có thể thấy từ đoạn đầu tiên của tôi / Proc / mdstat hiển thị cả hai thiết bị trong mảng. Thiết bị đã được đồng bộ hóa trước đó (không hiển thị ở đây) mà không gặp sự cố. Nhưng sau khi kết thúc quá trình đồng bộ lại, các thiết bị không được chuyển thành thiết bị hoạt động. Loại bỏ và thêm một lần nữa không thay đổi hành vi này.
Daniel Baron

1

Khá muộn, nhưng làm điều này sẽ chỉ kích hoạt ổ đĩa dự phòng:

mdadm --grow /dev/md3 -n 2

Như trang này nói:

Để tạo, xây dựng hoặc phát triển: -n, - sợ-thiết bị = Chỉ định số lượng thiết bị hoạt động trong mảng. Điều này, cộng với số lượng thiết bị dự phòng (xem bên dưới) phải bằng số lượng thiết bị thành phần (bao gồm cả thiết bị "bị thiếu") được liệt kê trên dòng lệnh cho - tạo. Đặt giá trị là 1 có thể là một sai lầm và do đó yêu cầu - buộc phải được chỉ định trước. Giá trị 1 sau đó sẽ được phép cho tuyến tính, đa đường, RAID0 và RAID1. Nó không bao giờ được phép cho RAID4, RAID5 hoặc RAID6. Số này chỉ có thể được thay đổi bằng cách sử dụng --grow cho mảng RAID1, RAID4, RAID5 và RAID6 và chỉ trên các hạt nhân cung cấp cổng phụ cần thiết.


0

Từ những gì tôi nhớ lại, khi tôi gặp vấn đề đó (vì một lý do khác) tôi đã phải sử dụng --grow để thêm lại ổ đĩa dự phòng "đúng cách" (cũng xóa tình trạng lỗi.)

Một cái gì đó như thế này (xác minh với tài liệu của bạn!):

mdadm --grow --level = errory --layout = flush / dev / sdb5

Sau đó, bạn có thể thêm thiết bị và nó sẽ được công nhận.

Vấn đề là trình điều khiển md lưu trạng thái của từng phân vùng trong dữ liệu khởi động ổ đĩa. Vì vậy, ngay cả sau khi khởi động lại, nó vẫn biết trạng thái và tránh các phân vùng được đánh dấu là bị lỗi.

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.