Kiểm tra và xử lý lỗi Raid-1 mềm trên Server Linux

29-May-2018

Bài viết này sẽ hướng dẫn bạn cách kiểm tra và xử lý lỗi Raid-1 mềm trên Server Linux.

1. Raid 1 là gì ?

- Raid 1 là loại Raid cơ bản được sử dụng khá nhiều hiện nay do khả năng đạt an toàn về dữ liệu. để tiến hành setup Raid 1 thì cũng giống như Raid 0, server cần tối thiểu 2 ổ cứng để lưu trữ.

- Không giống như Raid 0, Raid 1 đảm bảo an toàn hơn về dữ liệu do dữ liệu được ghi vào 2 ổ giống hệt nhau (Mirroring).

+ Ưu điểm: An toàn về dữ liệu, trường hợp 1 trong 2 ổ đĩa bị hỏng thì dữ liệu vẫn có khả năng đáp ứng dịch vụ.

+ Nhược điểm: Hiệu suất không cao, Nâng cao chi phí (giả sử khách hàng sử dụng 2 ổ cứng 500GB. Khi sử dụng Raid 1 thì dung lượng lưu trữ có thể sử dụng chỉ được 500GB). Về ổ cứng yêu cầu phải 2 ổ cùng dung lượng, nếu 2 ổ khác dung lượng thì lấy ổ thấp nhất.

+ Đối tượng sử dụng: Các dịch vụ lưu trữ, các website vừa và nhỏ không yêu cầu quá cao về tốc độ đọc ghi (in/out) của ổ cứng. Các đối tượng yêu cầu sự an toàn về dữ liệu như các dịch vụ kế toán,lưu trữ thông tin khách hàng, bất động sản v.v…

2. Kiểm tra và xử lý lỗi khi Raid-1 mềm trên server linux.

Dưới đây sẽ hướng dẫn các bạn cách kiểm tra và xử lý lỗi của Raid-1 mềm trên server linux. Trong trường hợp server bạn sử dụng Raid-1 với phần cứng là card raid thì sẽ không thể áp dụng theo được.

- Kiểm tra: để kiểm tra trạng thái raid, loại raid mềm đang sử dụng:

#cat /proc/mdstat

Như trên hình, ta có thể thấy:

+ Loại Raid đang sử dụng cho server này là Raid 1 ở mục Personalities.

+ Server đang có 2 phân vùng raid là md126 và md127, các phân vùng này ta có thể mount vào các Directory trên Linux để sử dụng như một đĩa cứng thông thường.

+ Phân vùng md126 do ổ vdb2 và vda2, phân vùng md127 do ổ vdb1 và vda1 cấu thành.

+ Tình trạng raid vẫn bình thường và không gặp vấn đề gì dựa vào “[UU]”. Điều này cho thấy cả 2 ổ cứng vda và vdb gắn vào server vẫn đang hoạt động và chưa có tình trạng “gãy raid” xảy ra.

+ Trong trường hợp khi show ra ở dòng trạng thái gặp phải “[_U]” hoặc “[U_]” thì cần kiểm tra và xử lý ngay, vì trạng thái này cho thấy đã có vấn đề trên một trong hai ổ cứng.

- Xử lý: để xử lý tình trạng “gãy raid” như trên, điều tiên cần xác định ổ cứng nào đang gặp lỗi khiến server không thể nhận diện bằng lệnh:

# fdisk –l

Bằng lệnh này, chúng ta sẽ kiểm tra được những ổ cứng nào đang còn hoạt động trên server. Từ đây chúng ta có thể thấy ổ cứng còn đang hoạt động là vda và ổ cứng đang gặp lỗi là vdb (không show ra khi chạy lệnh fdisk).

Tiếp tục thực hiện gỡ ổ cứng vdb đang gặp lỗi ra khỏi raid array nhằm thay thế ổ cứng mới:

#mdadm --manage /dev/md126 --remove /dev/vdb2

Gỡ ổ vdb2 ra khỏi raid array md126

#mdadm --manage /dev/md127 --remove /dev/vdb1

Gỡ ổ vdb1 ra khỏi raid array md127

Sau khi gỡ ra xong, chúng ta kiểm tra lại raid bằng lệnh:

#cat /proc/mdstat

Tiến hành gắn lại một đĩa cứng mới với dung lượng bằng hoặc lớn hơn so với dung lượng đĩa cứng cũ. Lưu ý nếu gắn đĩa cứng mới có dung lượng thấp hơn dung lượng đĩa cứng cũ sẽ gây ra tình trạng “gãy raid” tiếp tục khi rebuild.

Sau khi gắn vào xong, kiểm tra lại đảm bảo đĩa cứng mới đã được nhận diện trên OS

Tiến hành add lại ổ vdb vào raid array.

Đầu tiên thực hiện chia phân vùng ổ vdb tương tự như trên vda trước đó để add vào raid array bằng lệnh sau:

#sfdisk –d /dev/vda | sfdisk /dev/vdb

Sau đó kiểm tra lại với fdisk –l

Tại đây sẽ cho thấy được phân vùng ổ vda và vdb là hoàn toàn giống nhau, trong trường hợp các phân vùng vdb1 – vda1, vdb2 – vda2 không giống nhau, cần kiểm tra và chạy lại lệnh trên một lần nữa. Tiếp tục thực hiện add lại các phân vùng vdb1, vdb2 vào md126 và md127 như trước đó.

#mdadm --manage /dev/md126 --add /dev/vdb2

#mdadm --manage /dev/md127 --add /dev/vdb1

Sau đó, mdadm sẽ tự động rebuild lại raid trên từng array và sau khi quá trình này hoàn tất, server sẽ hoạt động lại bình thường với cơ chế raid-1 và đảm bảo an toàn dữ liệu.

Có thể theo dõi quá trình rebuild thông qua lệnh:

#cat /proc/mdstat

Sau khi quá trình rebuild hoàn tất, thì kết quả show ra sẽ tương tự như lúc đầu.

Lưu ý: việc rebuild raid nên thực hiện vào các giờ thấp điểm vì việc rebuild có thể gây overload I/O trên các ổ cứng trên server.

Chúc bạn thành công!