آرایه های RAID در NVMe

آرایه های RAID در NVMe
در این مقاله در مورد روش های مختلف سازماندهی آرایه های RAID صحبت خواهیم کرد و همچنین یکی از اولین کنترلرهای سخت افزاری RAID با پشتیبانی NVMe را نشان خواهیم داد.

تمام کاربردهای متنوع فناوری RAID در بخش سرور یافت می شود. در بخش مشتری، تنها نرم افزار RAID0 یا RAID1 روی دو دیسک بیشتر استفاده می شود.

در این مقاله مروری کوتاه بر فناوری RAID، آموزش کوتاهی در مورد نحوه ایجاد آرایه های RAID با استفاده از سه ابزار مختلف و مقایسه عملکرد دیسک مجازی با استفاده از هر روش ارائه می شود.

RAID چیست؟

ویکیپدیا تعریف جامعی از فناوری RAID ارائه می دهد:

RAID (انگلیسی آرایه اضافی دیسک های مستقل - آرایه اضافی از دیسک های مستقل (مستقل)) - فناوری مجازی سازی داده ها برای ترکیب چندین دستگاه دیسک فیزیکی در یک ماژول منطقی برای افزایش تحمل خطا و عملکرد.

پیکربندی آرایه های دیسک و فناوری های مورد استفاده به انتخاب شده بستگی دارد سطح RAID. سطوح RAID در مشخصات استاندارد شده است فرمت داده های دیسک RAID رایج. بسیاری از سطوح RAID را توصیف می کند، اما رایج ترین آنها RAID0، RAID1، RAID5 و RAID6 هستند.

RAID0یا راه راه، یک سطح RAID است که دو یا چند درایو فیزیکی را در یک درایو منطقی ترکیب می کند. حجم دیسک منطقی برابر است با مجموع حجم دیسک های فیزیکی موجود در آرایه. هیچ افزونگی در این سطح RAID وجود ندارد و خرابی یک درایو می تواند منجر به از دست رفتن تمام داده ها در دیسک مجازی شود.

سطح RAID1یا اینه، کپی های یکسانی از داده ها را روی دو یا چند دیسک ایجاد می کند. اندازه دیسک مجازی از حداقل اندازه دیسک های فیزیکی تجاوز نمی کند. تا زمانی که حداقل یک دیسک فیزیکی از آرایه فعال باشد، داده های روی دیسک مجازی RAID1 در دسترس خواهند بود. استفاده از RAID1 افزونگی را اضافه می کند، اما راه حل نسبتاً گرانی است، زیرا در آرایه های دو یا چند دیسک ظرفیت تنها یک دیسک در دسترس است.

سطح RAID5 مشکل گرانی را حل می کند. برای ایجاد یک آرایه با سطح RAID5 به حداقل 3 دیسک نیاز دارید و آرایه در برابر خرابی یک دیسک مقاوم است. داده ها در RAID5 در بلوک هایی با چک جمع ذخیره می شوند. هیچ تقسیم بندی دقیقی بین دیسک های داده و دیسک های چک جمع وجود ندارد. چک‌سام‌ها در RAID5 نتیجه عملیات XOR اعمال شده روی بلوک‌های N-1 هستند که هر کدام از یک دیسک متفاوت گرفته شده‌اند.

اگرچه آرایه‌های RAID باعث افزایش افزونگی و ایجاد افزونگی می‌شوند، اما برای ذخیره‌سازی نسخه‌های پشتیبان مناسب نیستند.

پس از یک گشت و گذار کوتاه در انواع آرایه های RAID، می توانید به سراغ دستگاه ها و برنامه هایی بروید که به شما امکان می دهند آرایه های دیسک را جمع آوری و استفاده کنید.

انواع کنترلرهای RAID

دو راه برای ایجاد و استفاده از آرایه های RAID وجود دارد: سخت افزار و نرم افزار. راه حل های زیر را در نظر خواهیم گرفت:

  • RAID نرم افزار لینوکس.
  • Intel® Virtual RAID بر روی CPU.
  • LSI MegaRAID 9460-8i.

توجه داشته باشید که راه حل Intel® روی یک چیپست اجرا می شود، که این سوال را ایجاد می کند که آیا یک راه حل سخت افزاری یا نرم افزاری است. به عنوان مثال، هایپروایزر VMWare ESXi نرم افزار VROC را در نظر می گیرد و به طور رسمی از آن پشتیبانی نمی کند.

RAID نرم افزار لینوکس

آرایه‌های RAID نرم‌افزاری در خانواده سیستم‌عامل لینوکس یک راه‌حل نسبتاً رایج در هر دو بخش مشتری و سرور هستند. تنها چیزی که برای ایجاد یک آرایه نیاز دارید، ابزار mdadm و چند دستگاه بلوک است. تنها نیازی که RAID نرم افزار لینوکس روی درایوهایی که استفاده می کند قرار می دهد این است که یک دستگاه بلوک قابل دسترسی برای سیستم باشد.

عدم وجود هزینه برای تجهیزات و نرم افزار مزیت بارز این روش است. RAID نرم افزار لینوکس آرایه های دیسک را با هزینه زمان CPU سازماندهی می کند. لیست سطوح RAID پشتیبانی شده و وضعیت آرایه های دیسک فعلی را می توان در فایل mdstat که در ریشه procfs قرار دارد مشاهده کرد:

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

پشتیبانی از سطوح RAID با اتصال ماژول هسته مناسب اضافه می شود، به عنوان مثال:

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

تمام عملیات با آرایه های دیسک از طریق ابزار خط فرمان mdadm انجام می شود. آرایه دیسک در یک دستور مونتاژ می شود:

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

پس از اجرای این دستور، دستگاه بلوک /dev/md0 در سیستم ظاهر می شود که شما را به عنوان یک دیسک مجازی نشان می دهد.

Intel® Virtual RAID بر روی CPU

آرایه های RAID در NVMeکلید سخت افزاری استاندارد Intel® VROC
Intel® Virtual RAID On CPU (VROC) یک فناوری سخت افزاری و نرم افزاری برای ایجاد آرایه های RAID بر اساس چیپست های Intel® است. این فناوری عمدتاً برای مادربردهایی در دسترس است که از پردازنده های Intel® Xeon® Scalable پشتیبانی می کنند. به طور پیش فرض، VROC در دسترس نیست. برای فعال کردن آن، باید یک کلید مجوز سخت افزاری VROC را نصب کنید.

مجوز استاندارد VROC به شما امکان می دهد آرایه های دیسک با سطوح RAID 0، 1 و 10 ایجاد کنید. نسخه پریمیوم این لیست را با پشتیبانی از RAID5 گسترش می دهد.

فناوری Intel® VROC در مادربردهای مدرن همراه با Intel® Volume Management Device (VMD) کار می‌کند که قابلیت تعویض داغ را برای درایوهای NVMe فراهم می‌کند.

آرایه های RAID در NVMeمجوز استاندارد Intel® VROC هنگامی که سرور بوت می شود، آرایه ها از طریق Setup Utility پیکربندی می شوند. روی زبانه فناوری مورد Intel® Virtual RAID در CPU ظاهر می شود، جایی که می توانید آرایه های دیسک را پیکربندی کنید.

آرایه های RAID در NVMeایجاد یک آرایه RAID1 روی دو درایو
فناوری Intel® VROC دارای ویژگی های خاص خود است. آرایه های دیسک ساخته شده با استفاده از VROC با RAID نرم افزار لینوکس سازگار هستند. این بدان معنی است که وضعیت آرایه ها را می توان در /proc/mdstat نظارت کرد و از طریق mdadm مدیریت کرد. این "ویژگی" به طور رسمی توسط اینتل پشتیبانی می شود. پس از مونتاژ RAID1 در Setup Utility، می توانید همگام سازی درایوها را در سیستم عامل مشاهده کنید:

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>

توجه داشته باشید که با استفاده از mdadm نمی‌توانید آرایه‌ها را روی VROC جمع‌آوری کنید (آرایه‌های مونتاژ شده Linux SW RAID خواهند بود)، اما می‌توانید دیسک‌های موجود در آنها را تغییر دهید و آرایه‌ها را از هم جدا کنید.

LSI MegaRAID 9460-8i

آرایه های RAID در NVMeظاهر کنترلر LSI MegaRAID 9460-8i
کنترلر RAID یک راه حل سخت افزاری مستقل است. کنترلر فقط با درایوهایی که مستقیماً به آن متصل هستند کار می کند. این کنترلر RAID تا 24 درایو NVMe را پشتیبانی می کند. این پشتیبانی از NVMe است که این کنترلر را از بسیاری دیگر متمایز می کند.

آرایه های RAID در NVMeمنوی اصلی کنترلر سخت افزار
هنگام استفاده از حالت UEFI، تنظیمات کنترلر در Setup Utility ادغام می شود. در مقایسه با VROC، منوی کنترلر سخت افزار بسیار پیچیده تر به نظر می رسد.

آرایه های RAID در NVMeایجاد RAID1 روی دو دیسک
توضیح نحوه پیکربندی آرایه‌های دیسک بر روی یک کنترل‌کننده سخت‌افزار موضوعی نسبتاً حساس است و می‌تواند دلیلی برای یک مقاله کامل باشد. در اینجا ما به سادگی خود را به ایجاد RAID0 و RAID1 با تنظیمات پیش فرض محدود می کنیم.

دیسک های متصل به کنترل کننده سخت افزار برای سیستم عامل قابل مشاهده نیستند. در عوض، کنترلر تمام آرایه های RAID را به عنوان درایوهای SAS "ماسک" می کند. درایوهای متصل به کنترلر، اما بخشی از آرایه دیسک نیستند، توسط سیستم عامل قابل دسترسی نخواهند بود.

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.

با وجود اینکه آرایه های NVMe به عنوان درایوهای SAS پنهان شده اند، با سرعت PCIe کار می کنند. با این حال، این ویژگی به شما امکان می دهد از NVMe در Legacy بوت شوید.

پایه تست

هر روشی برای سازماندهی آرایه های دیسک مزایا و معایب فیزیکی خاص خود را دارد. اما آیا هنگام کار با آرایه های دیسک تفاوت عملکردی وجود دارد؟

برای دستیابی به حداکثر انصاف، تمام تست ها بر روی یک سرور انجام می شود. پیکربندی آن:

  • 2x Intel® Xeon® 6240؛
  • 12x DDR4-2666 16 گیگابایت؛
  • LSI MegaRAID 9460-8i؛
  • کلید سخت افزار استاندارد Intel® VROC؛
  • 4x Intel® SSD DC P4510 U.2 2TB;
  • 1 x Samsung 970 EVO Plus M.2 500GB.

واحدهای تست P4510 هستند که نیمی از آن به مادربرد و نیمی دیگر به کنترلر RAID متصل است. M.2 اوبونتو 20.04 را اجرا می کند و آزمایش ها با استفاده از نسخه 3.16 fio اجرا می شود.

آزمایش

اول از همه، اجازه دهید تاخیر در هنگام کار با دیسک را بررسی کنیم. تست در یک رشته اجرا می شود، اندازه بلوک 4 کیلوبایت است. هر آزمون 5 دقیقه طول می کشد. قبل از شروع، دستگاه بلوک مربوطه به عنوان زمانبندی I/O روی هیچ تنظیم شده است. دستور fio به شکل زیر است:

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

از نتایج fio، ما clat 99.00٪ را می گیریم. نتایج به دست آمده در جدول زیر نشان داده شده.

خواندن تصادفی، μs
ضبط تصادفی، μs

دیسک
112
78

Linux SW RAID، RAID0
113
45

VROC، RAID0
112
46

LSI، RAID0
122
63

Linux SW RAID، RAID1
113
48

VROC، RAID1
113
45

LSI، RAID1
128
89

علاوه بر تاخیر در دسترسی به داده ها، می خواهم عملکرد درایوهای مجازی را ببینم و آنها را با عملکرد یک دیسک فیزیکی مقایسه کنم. دستور اجرای fio:

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

عملکرد بر حسب عملیات ورودی/خروجی سنجیده می شود. نتایج در جدول زیر ارائه شده است.

خواندن تصادفی 1 رشته، IOPS
نوشتن تصادفی 1 موضوع، IOPS
خواندن تصادفی 128 موضوع، IOPS
نوشتن تصادفی 128 موضوع، IOPS

دیسک
11300
40700
453000
105000

Linux SW RAID، RAID0
11200
52000
429000
232000

VROC، RAID0
11200
52300
441000
162000

LSI، RAID0
10900
44200
311000
160000

Linux SW RAID، RAID1
10000
48600
395000
147000

VROC، RAID1
10000
54400
378000
244000

LSI، RAID1
11000
34300
229000
248000

به راحتی می توان فهمید که استفاده از یک کنترلر سخت افزاری باعث افزایش تاخیر و عملکرد بهتر در مقایسه با راه حل های نرم افزاری می شود.

نتیجه

استفاده از راه حل های سخت افزاری برای ایجاد آرایه دیسک از دو دیسک غیر منطقی به نظر می رسد. با این حال، وظایفی وجود دارد که استفاده از کنترلرهای RAID توجیه پذیر است. با ظهور کنترلرهایی که از رابط NVMe پشتیبانی می کنند، کاربران این فرصت را دارند که از SSD های سریع تری در پروژه های خود استفاده کنند.

آرایه های RAID در NVMe

فقط کاربران ثبت نام شده می توانند در نظرسنجی شرکت کنند. ورود، لطفا.

آیا از راه حل های RAID استفاده می کنید؟

  • ٪۱۰۰بله، راه حل های سخت افزاری 32

  • ٪۱۰۰بله، راه حل های نرم افزاری 54

  • ٪۱۰۰شماره 18

  • ٪۱۰۰بدون نیاز به RAID 4

108 کاربر رای دادند. 14 کاربر رای ممتنع دادند.

منبع: www.habr.com

اضافه کردن نظر