Mảng RAID trên NVMe

Mảng RAID trên NVMe
Trong bài viết này, chúng tôi sẽ nói về các cách khác nhau để tổ chức mảng RAID, đồng thời giới thiệu một trong những bộ điều khiển RAID phần cứng đầu tiên có hỗ trợ NVMe.

Tất cả các ứng dụng đa dạng của công nghệ RAID đều có trong phân khúc máy chủ. Trong phân khúc máy khách, chỉ phần mềm RAID0 hoặc RAID1 trên hai đĩa thường được sử dụng nhiều nhất.

Bài viết này sẽ cung cấp thông tin tổng quan ngắn gọn về công nghệ RAID, hướng dẫn ngắn gọn về cách tạo mảng RAID bằng ba công cụ khác nhau và so sánh hiệu suất đĩa ảo bằng từng phương pháp.

RAID là gì?

Wikipedia đưa ra một định nghĩa toàn diện về công nghệ RAID:

RAID (Tiếng Anh Mảng dự phòng của đĩa độc lập - mảng dự phòng của các đĩa độc lập (độc lập)) - công nghệ ảo hóa dữ liệu để kết hợp một số thiết bị đĩa vật lý thành một mô-đun logic nhằm tăng khả năng chịu lỗi và hiệu suất.

Cấu hình của mảng đĩa và công nghệ được sử dụng phụ thuộc vào lựa chọn cấp độ đột kích. Các cấp độ RAID được chuẩn hóa trong thông số kỹ thuật Định dạng dữ liệu đĩa RAID phổ biến. Nó mô tả nhiều cấp độ RAID, nhưng phổ biến nhất là RAID0, RAID1, RAID5 và RAID6.

RAID0Hoặc Sọc, là cấp độ RAID kết hợp hai hoặc nhiều ổ đĩa vật lý thành một ổ đĩa logic. Dung lượng của đĩa logic bằng tổng dung lượng của các đĩa vật lý có trong mảng. Không có sự dư thừa ở cấp độ RAID này và lỗi của một ổ đĩa có thể dẫn đến mất tất cả dữ liệu trong đĩa ảo.

Уровень RAID1Hoặc Gương, tạo các bản sao dữ liệu giống hệt nhau trên hai hoặc nhiều đĩa. Kích thước của đĩa ảo không vượt quá kích thước tối thiểu của đĩa vật lý. Dữ liệu trên đĩa ảo RAID1 sẽ khả dụng miễn là có ít nhất một đĩa vật lý trong mảng hoạt động. Sử dụng RAID1 sẽ tăng thêm khả năng dự phòng, nhưng là một giải pháp khá tốn kém, vì trong mảng có hai hoặc nhiều đĩa thì chỉ có một dung lượng.

Уровень RAID5 giải quyết vấn đề chi phí cao. Để tạo một mảng ở cấp độ RAID5, bạn cần ít nhất 3 đĩa và mảng có khả năng chống lại sự hỏng hóc của một đĩa. Dữ liệu trong RAID5 được lưu trữ theo khối có tổng kiểm tra. Không có sự phân chia chặt chẽ giữa đĩa dữ liệu và đĩa tổng kiểm tra. Tổng kiểm tra trong RAID5 là kết quả của thao tác XOR được áp dụng cho N-1 khối, mỗi khối được lấy từ một đĩa khác nhau.

Mặc dù mảng RAID tăng cường khả năng dự phòng và cung cấp khả năng dự phòng nhưng chúng không phù hợp để lưu trữ các bản sao lưu.

Sau khi tìm hiểu ngắn gọn về các loại mảng RAID, bạn có thể chuyển sang các thiết bị và chương trình cho phép bạn tập hợp và sử dụng mảng đĩa.

Các loại bộ điều khiển RAID

Có hai cách để tạo và sử dụng mảng RAID: phần cứng và phần mềm. Chúng ta sẽ xem xét các giải pháp sau:

  • RAID phần mềm Linux.
  • Intel® Virtual RAID trên CPU.
  • LSI MegaRAID 9460-8i.

Lưu ý rằng giải pháp Intel® chạy trên chipset, điều này đặt ra câu hỏi liệu đó là giải pháp phần cứng hay phần mềm. Ví dụ: trình ảo hóa VMWare ESXi xem xét phần mềm VROC và không hỗ trợ chính thức phần mềm này.

RAID phần mềm Linux

Mảng RAID phần mềm trong dòng hệ điều hành Linux là một giải pháp khá phổ biến ở cả phân khúc máy khách và máy chủ. Tất cả những gì bạn cần để tạo một mảng là tiện ích mdadm và một vài thiết bị khối. Yêu cầu duy nhất mà RAID Phần mềm Linux đặt ra trên các ổ đĩa mà nó sử dụng là phải là một thiết bị khối có thể truy cập được vào hệ thống.

Việc không tốn chi phí cho thiết bị và phần mềm là một ưu điểm rõ ràng của phương pháp này. RAID phần mềm Linux tổ chức các mảng đĩa với chi phí về thời gian của CPU. Có thể xem danh sách các cấp độ RAID được hỗ trợ và trạng thái của mảng đĩa hiện tại trong tệp mdstat, nằm trong thư mục gốc của Procfs:

root@grindelwald:~# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] 
unused devices: <none>

Hỗ trợ cho các cấp độ RAID được thêm vào bằng cách kết nối mô-đun hạt nhân thích hợp, ví dụ:

root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
unused devices: <none>

Tất cả các thao tác với mảng đĩa được thực hiện thông qua tiện ích dòng lệnh mdadm. Mảng đĩa được tập hợp bằng một lệnh:

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1

Sau khi thực hiện lệnh này, thiết bị khối /dev/md0 sẽ xuất hiện trong hệ thống, đại diện cho bạn dưới dạng một đĩa ảo.

Intel® Virtual RAID trên CPU

Mảng RAID trên NVMeKhóa phần cứng tiêu chuẩn Intel® VROC
Intel® Virtual RAID On CPU (VROC) là công nghệ phần cứng và phần mềm để tạo mảng RAID dựa trên chipset Intel®. Công nghệ này chủ yếu có sẵn cho các bo mạch chủ hỗ trợ bộ xử lý Intel® Xeon® có thể mở rộng. Theo mặc định, VROC không có sẵn. Để kích hoạt nó, bạn phải cài đặt mã cấp phép phần cứng VROC.

Giấy phép VROC tiêu chuẩn cho phép bạn tạo các mảng đĩa với cấp độ RAID 0, 1 và 10. Phiên bản cao cấp mở rộng danh sách này với sự hỗ trợ RAID5.

Công nghệ Intel® VROC trên các bo mạch chủ hiện đại hoạt động cùng với Thiết bị quản lý ổ đĩa Intel® (VMD), cung cấp khả năng trao đổi nóng cho ổ NVMe.

Mảng RAID trên NVMeGiấy phép tiêu chuẩn Intel® VROC Mảng được cấu hình thông qua Tiện ích cài đặt khi máy chủ khởi động. Trên tab Nâng cao Mục Intel® Virtual RAID trên CPU xuất hiện, nơi bạn có thể định cấu hình mảng đĩa.

Mảng RAID trên NVMeTạo mảng RAID1 trên hai ổ đĩa
Công nghệ Intel® VROC có ưu điểm riêng của nó. Mảng đĩa được xây dựng bằng VROC tương thích với RAID phần mềm Linux. Điều này có nghĩa là trạng thái của mảng có thể được theo dõi trong /proc/mdstat và được quản lý thông qua mdadm. "Tính năng" này được Intel hỗ trợ chính thức. Sau khi lắp ráp RAID1 trong Setup Utility, bạn có thể quan sát quá trình đồng bộ hóa các ổ đĩa trong HĐH:

root@grindelwald:~# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md126 : active raid1 nvme2n1[1] nvme1n1[0]
      1855832064 blocks super external:/md127/0 [2/2] [UU]
      [>....................]  resync =  1.3% (24207232/1855832064) finish=148.2min speed=205933K/sec
      
md127 : inactive nvme1n1[1](S) nvme2n1[0](S)
      10402 blocks super external:imsm
       
unused devices: <none>

Lưu ý rằng bạn không thể tập hợp các mảng trên VROC bằng mdadm (các mảng được tập hợp sẽ là Linux SW RAID), nhưng bạn có thể thay đổi đĩa trong đó và tháo rời các mảng.

LSI MegaRAID 9460-8i

Mảng RAID trên NVMeNgoại hình của bộ điều khiển LSI MegaRAID 9460-8i
Bộ điều khiển RAID là một giải pháp phần cứng độc lập. Bộ điều khiển chỉ hoạt động với các ổ đĩa được kết nối trực tiếp với nó. Bộ điều khiển RAID này hỗ trợ tối đa 24 ổ NVMe. Chính sự hỗ trợ của NVMe đã khiến bộ điều khiển này trở nên khác biệt so với nhiều bộ điều khiển khác.

Mảng RAID trên NVMeMenu chính của bộ điều khiển phần cứng
Khi sử dụng chế độ UEFI, cài đặt bộ điều khiển được tích hợp vào Setup Utility. So với VROC, menu bộ điều khiển phần cứng trông phức tạp hơn nhiều.

Mảng RAID trên NVMeTạo RAID1 trên hai đĩa
Giải thích cách định cấu hình mảng đĩa trên bộ điều khiển phần cứng là một chủ đề khá tế nhị và có thể là lý do cho một bài viết chính thức. Ở đây chúng tôi sẽ chỉ giới hạn bản thân trong việc tạo RAID0 và RAID1 với cài đặt mặc định.

Các đĩa được kết nối với bộ điều khiển phần cứng sẽ không hiển thị với hệ điều hành. Thay vào đó, bộ điều khiển “che giấu” tất cả các mảng RAID dưới dạng ổ đĩa SAS. Các ổ đĩa được kết nối với bộ điều khiển, nhưng không phải là một phần của mảng đĩa, sẽ không thể truy cập được bởi hệ điều hành.

root@grindelwald:~# smartctl -i /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-48-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               AVAGO
Product:              MR9460-8i
Revision:             5.14
Compliance:           SPC-3
User Capacity:        1,999,844,147,200 bytes [1.99 TB]
Logical block size:   512 bytes
Rotation Rate:        Solid State Device
Logical Unit id:      0x000000000000000000000000000000
Serial number:        00000000000000000000000000000000
Device type:          disk
Local Time is:        Sun Oct 11 16:27:59 2020 MSK
SMART support is:     Unavailable - device lacks SMART capability.

Mặc dù được ngụy trang dưới dạng ổ SAS nhưng mảng NVMe sẽ hoạt động ở tốc độ PCIe. Tuy nhiên, tính năng này cho phép bạn khởi động từ NVMe ở Legacy.

Kiểm tra đứng

Mỗi phương pháp tổ chức mảng đĩa đều có ưu và nhược điểm vật lý riêng. Nhưng có sự khác biệt về hiệu suất khi làm việc với mảng đĩa không?

Để đạt được sự công bằng tối đa, tất cả các bài kiểm tra sẽ được tiến hành trên cùng một máy chủ. Cấu hình của nó:

  • 2x Intel® Xeon® 6240;
  • 12x DDR4-2666 16GB;
  • LSI MegaRAID 9460-8i;
  • Khóa phần cứng tiêu chuẩn Intel® VROC;
  • 4x SSD Intel® DC P4510 U.2 2TB;
  • 1xSamsung 970 EVO Plus M.2 500GB.

Các đơn vị thử nghiệm là P4510, một nửa trong số đó được kết nối với bo mạch chủ và nửa còn lại với bộ điều khiển RAID. M.2 đang chạy Ubuntu 20.04 và các thử nghiệm sẽ được chạy bằng fio phiên bản 3.16.

Kiểm tra

Trước hết, hãy kiểm tra độ trễ khi làm việc với đĩa. Thử nghiệm được thực hiện trong một luồng, kích thước khối là 4 KB. Mỗi bài kiểm tra kéo dài 5 phút. Trước khi bắt đầu, thiết bị khối tương ứng được đặt thành không có bộ lập lịch I/O. Lệnh fio trông như thế này:

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio  --iodepth=1 --loops=1000 --runtime=300  --rw=<mode> --filename=<blkdev>

Từ kết quả fio, chúng tôi lấy clat 99.00%. Kết quả được thể hiện trong bảng dưới đây.

Đọc ngẫu nhiên, μs
Ghi ngẫu nhiên, μs

Lái
112
78

RAID SW Linux, RAID0
113
45

VROC, RAID0
112
46

LSI, RAID0
122
63

RAID SW Linux, RAID1
113
48

VROC, RAID1
113
45

LSI, RAID1
128
89

Ngoài độ trễ khi truy cập dữ liệu, tôi còn muốn xem hiệu suất của ổ đĩa ảo và so sánh chúng với hiệu suất của đĩa vật lý. Lệnh chạy fio:

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio  --loops=1000 --runtime=300  --iodepth=<threads> --rw=<mode> --filename=<blkdev>

Hiệu suất được đo bằng các hoạt động I/O. Các kết quả được trình bày trong bảng dưới đây.

Đọc ngẫu nhiên 1 chủ đề, IOPS
Viết ngẫu nhiên 1 chủ đề, IOPS
Đọc ngẫu nhiên 128 chủ đề, IOPS
Viết ngẫu nhiên 128 chủ đề, IOPS

Lái
11300
40700
453000
105000

RAID SW Linux, RAID0
11200
52000
429000
232000

VROC, RAID0
11200
52300
441000
162000

LSI, RAID0
10900
44200
311000
160000

RAID SW Linux, RAID1
10000
48600
395000
147000

VROC, RAID1
10000
54400
378000
244000

LSI, RAID1
11000
34300
229000
248000

Dễ dàng nhận thấy rằng việc sử dụng bộ điều khiển phần cứng sẽ làm tăng độ trễ và ảnh hưởng đến hiệu suất so với các giải pháp phần mềm.

Kết luận

Sử dụng giải pháp phần cứng để tạo mảng đĩa từ hai đĩa có vẻ không hợp lý. Tuy nhiên, có những nhiệm vụ mà việc sử dụng bộ điều khiển RAID là hợp lý. Với sự ra đời của bộ điều khiển hỗ trợ giao diện NVMe, người dùng có cơ hội sử dụng ổ SSD nhanh hơn trong các dự án của mình.

Mảng RAID trên NVMe

Chỉ những người dùng đã đăng ký mới có thể tham gia khảo sát. Đăng nhập, xin vui lòng.

Bạn có đang sử dụng giải pháp RAID không?

  • 29,6%Có, giải pháp phần cứng32

  • 50,0%Có, giải pháp phần mềm54

  • 16,7%18

  • 3,7%Không cần RAID4

108 người dùng bình chọn. 14 người dùng bỏ phiếu trắng.

Nguồn: www.habr.com

Thêm một lời nhận xét