RAID1 có tăng hiệu năng với Linux mdadm không?


26

Tôi có một NAS 2 vịnh giá rẻ với ổ cứng 2TB. Để mạnh mẽ chống lại lỗi ổ đĩa, tôi nghĩ đến việc mua một ổ cứng 2TB thứ hai và đưa nó vào RAID1 với Linux mdadm. Hệ thống tập tin là ext4.

Điều này sẽ tăng hoặc giảm hiệu suất của NAS? Điều gì về chỉ đọc hoặc viết hiệu suất?

Dường như có rất nhiều ý kiến ​​về điều này trực tuyến nhưng không có sự đồng thuận.

Cảm ơn.

Chỉnh sửa:

Vì vậy, tôi đã có ba câu trả lời khác nhau: "nhanh hơn một chút", "bạn sẽ không chú ý" và "sẽ giảm hiệu suất nếu có bất cứ điều gì". (Tôi quan tâm chủ yếu đến hiệu suất đọc.) Wikipedia cho biết "hiệu suất đọc có thể tăng lên gần như là bội số tuyến tính của số lượng bản sao". Đó là cái nào

Chỉnh sửa 2:

Tôi đã tìm thấy bằng chứng gắn kết hỗ trợ RAID1 tăng hiệu suất đọc, bao gồm cả trang chủ MD:

Thay đổi được ghi cho tất cả các thiết bị song song. Dữ liệu được đọc từ bất kỳ một thiết bị. Trình điều khiển cố gắng phân phối các yêu cầu đọc trên tất cả các thiết bị để tối đa hóa hiệu suất.

Tôi cũng đã phát hiện ra RAID10 của MD --layout=f2, cung cấp dự phòng RAID1 với hiệu suất đọc của RAID0 và có thể được sử dụng chỉ với hai ổ đĩa. Tuy nhiên, hiệu suất ghi bị giảm, vì việc ghi tuần tự liên quan đến cả hai ổ đĩa tìm kiếm qua lại giữa các phần xa của ổ đĩa. man mdđể biết chi tiết.


2
viết; chậm hơn một chút. đọc; nhanh hơn một chút Từ những gì tôi hiểu, sự khác biệt viết gần như bằng không, và đọc là khá đáng chú ý.
Sirex

Đúng như những gì sirex nói .. bạn sẽ không nhận thấy sự khác biệt về hiệu suất bằng mắt thường .. Đừng mong đợi sẽ tăng gấp đôi hoặc thậm chí một nửa.
Piotr Kula


1
Tôi nhớ một phần: Truy cập vào NAS nhanh như thế nào. Nếu một đĩa đã lấp đầy kết nối mạng thì tốc độ bên trong sẽ không giúp bạn nhiều.
Hennes

Câu trả lời:


39

Có, Linux triển khai RAID1 tăng tốc các hoạt động đọc đĩa miễn là hai lần hoạt động đọc đĩa riêng biệt được thực hiện tại một thời điểm . Điều đó có nghĩa là đọc một tệp 10 GB sẽ không mất bất kỳ tệp RAID1 nào nhanh hơn trên một đĩa đơn, nhưng đọc hai tệp 10 GB riêng biệt * sẽ nhanh hơn.

Để chứng minh điều đó, chỉ cần đọc một số dữ liệu với dd. Trước khi thực hiện bất cứ điều gì, hãy xóa bộ nhớ cache đọc đĩa sync && echo 3 > /proc/sys/vm/drop_caches. Nếu không hdparmsẽ yêu cầu đọc siêu nhanh.

Tập tin duy nhất:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 65,9659 s, 159 MB/s

Hai tập tin:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT skip=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 64,9794 s, 161 MB/s
10485760000 bytes (10 GB) copied, 68,6484 s, 153 MB/s

Đọc 10 GB dữ liệu mất 65 giây trong khi đọc 10 GB + 10 GB = 20 GB dữ liệu mất tổng cộng 68,7 giây, điều đó có nghĩa là nhiều lần đọc đĩa được hưởng lợi rất nhiều từ RAID1 trên Linux. skip=$COUNTmột phần rất quan trọng Quá trình thứ hai đọc 10 GB dữ liệu từ phần bù 10 GB.

Câu trả lời của Jared và ý kiến ​​của ssh đề cập đến http://www.unicom.com/node/459 là sai. Điểm chuẩn từ đó chứng tỏ việc đọc đĩa không được hưởng lợi từ RAID1. Tuy nhiên, bài kiểm tra đã được thực hiện với công cụ đo điểm chuẩn bonnie ++ không thực hiện hai lần đọc riêng biệt cùng một lúc. Tác giả tuyên bố rõ ràng bonnie ++ không thể sử dụng để đánh dấu mảng RAID ( tham khảo readme ).


5

Có, bạn sẽ nhận được tăng hiệu suất đọc + dự phòng. Bạn có thể dễ dàng tưởng tượng rằng bạn có thể đọc các phần của các tệp cùng một lúc từ hai ổ cứng khác nhau vì các tệp nằm trên cả hai ổ cứng.

Vì vậy, về mặt lý thuyết, nếu bộ điều khiển RAID thực hiện đúng chức năng của nó, bạn có thể tăng tốc O (n).


5
mdadm là RAID phần mềm nên thực sự không có "Bộ điều khiển RAID" nhưng nó sẽ cung cấp khả năng đọc tốt khi thực hiện đọc song song, không quá nhiều trong trường hợp này, tôi cho rằng vì hộp NAS hiếm khi được xử lý đồng thời. Xem tại đây để biết chi tiết: freebsdwiki.net/index.php/ Kẻ
Shadok

1
Trong thực tế, hiệu suất giảm khi đọc từ cuộc đột kích MD của Phần mềm Linux. Xem unicom.com/node/459 (Trong bài kiểm tra đó, tốc độ đọc giảm từ 77 MB / s xuống 74 MB / s).
ssh

2
@ssh unicom.com/node/459 là hoàn toàn sai. bonnie ++ không thể sử dụng để kiểm tra các máy nhân bản RAID, được nêu rõ trong readme. Xem câu trả lời của tôi để biết thêm chi tiết. superuser.com/a/757264/68978
Nowaker

4
  • man 4 mdtuyên bố: " Lưu ý rằng việc cân bằng đọc được thực hiện bởi trình điều khiển không làm cho cấu hình hiệu suất RAID1 giống như với RAID0 ; một luồng đầu vào sẽ không được tăng tốc (ví dụ: một dd), nhưng nhiều luồng liên tiếp hoặc ngẫu nhiên khối lượng công việc sẽ sử dụng nhiều hơn một trục chính. Về lý thuyết , có một N-đĩa RAID1 sẽ cho phép N đề tuần tự để đọc từ tất cả các đĩa. ..."

  • Trên hết , trên thực tế , dựa trên iostatđầu ra được quan sát trên thiết lập RAID phần mềm 2 ổ cứng thông thường, không có sự cân bằng nào . Trong thực tế, có vẻ như mdadmtùy chọn --write-mostlyluôn luôn bật.


3

Không, bạn sẽ không nhận được bất kỳ lợi ích nào khi đọc từ mdadm RAID1. Tôi đã tự hỏi về điều này một thời gian trước đây.

dstathiển thị việc sử dụng đĩa, cũng bwm-ngthực sự hữu ích trong trường hợp này, vì nó có thể hiển thị việc sử dụng đọc / ghi trên các thành viên RAID mdadm riêng biệt. Chỉ cần ấn n(tiếp theo) một vài lần, nó sẽ chuyển từ thống kê giao diện sang thống kê đĩa. Sau đó chuyển sang giá trị tối đa tđể xem đọc / ghi tối đa từ mỗi đĩa. Bạn sẽ thấy như sau:

Ghi vào ổ đĩa RAID1 bwm-ng hiển thị 2 x ghi, ghi vào 2 đĩa cùng một lúc. Đọc từ khối lượng RAID1 bwm-ng cho thấy đọc từ ổ đĩa đơn (thành viên mảng).

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.