خبر

  • تک بورد - شیرجه رفتن عمیق در توپولوژی RAID توزیع شده OpenZFS 2.1

    شیرجه رفتن عمیق در توپولوژی RAID توزیع شده OpenZFS 2.1
    15 ساعت و 4 دقیقه قبل

    dRAID vdevs سریعاً با استفاده از ظرفیت اضافی و نه از دیسک های اضافی ، قابل استفاده مجدد می شود.
    جمعه بعد از ظهر ، پروژه OpenZFS نسخه 2.1.0 از سیستم فایل مورد علاقه ما "همیشه پیچیده است اما ارزشش را دارد" منتشر کرد. نسخه جدید با FreeBSD 12.2-RELEASE و بالاتر و هسته های لینوکس 3.10-5.13 سازگار است. این نسخه چندین بهبود عملکرد کلی و همچنین چند ویژگی کاملاً جدید را ارائه می دهد - بیشتر این موارد

    امروز ، ما می خواهیم بیشترین ویژگی OpenZFS 2.1.0 را اضافه کنیم - توپولوژی vdev vRAID. dRAID حداقل از سال 2015 در دست توسعه فعال بوده و هنگام ادغام در OpenZFS master در نوامبر 2020 به وضعیت بتا رسیده است. از آن زمان به بعد ، در چندین فروشگاه بزرگ توسعه OpenZFS به شدت آزمایش شده است - به این معنی که نسخه امروز "جدید" است برای وضعیت تولید ، نه "جدید" همانند موارد آزمایش نشده.

    بررسی اجمالی RAID (dRAID)

    بیشتر بخوانید ZFS 101 - درک فضای ذخیره سازی و عملکرد ZFS اگر قبلاً فکر می کردید که توپولوژی ZFS یک موضوع پیچیده است ، آماده باشید تا ذهن خود را به باد دهید . RAID توزیع شده (dRAID) یک توپولوژی کاملاً جدید vdev است که ما برای اولین بار در یک ارائه در اجلاس توسعه OpenZFS 2016 با آن روبرو شدیم.

    هنگام ایجاد vRAID dRAID ، مدیر تعدادی از داده ها ، برابری و بخش های ذخیره انرژی در هر نوار را مشخص می کند. این اعداد مستقل از تعداد دیسک های واقعی vdev هستند. ما می توانیم این عمل را در مثال زیر که از مستندات dRAID Basic Concepts برداشته شده است ، مشاهده کنیم:

    root @ box: ~ # zpool create mypool draid2: 4d: 1s: 11c wwn-0 wwn-1 wwn-2 .. wwn-A root @ box: ~ # zpool status mypool pool: mypool state: ONLINE config: NAME STATE READ WRITE CKSUM مخزن ONLINE 0 0 0 draid2: 4d: 11c: 1s-0 ONLINE 0 0 0 wwn-0 ONLINE 0 0 0 wwn-1 آنلاین 0 0 0 wwn-2 آنلاین 0 0 0 wwn-3 آنلاین 0 0 0 wwn-4 آنلاین 0 0 0 wwn-5 آنلاین 0 0 0 wwn-6 آنلاین 0 0 0 wwn-7 آنلاین 0 0 0 wwn-8 آنلاین 0 0 0 wwn-9 آنلاین 0 0 0 wwn-A ONLINE 0 0 0 spares draid2-0-0 AVAIL dRAID topology

    در مثال فوق ، یازده دیسک داریم: wwn-0 تا wwn-A. ما یک dRAID vdev با 2 دستگاه برابری ، 4 دستگاه داده و 1 دستگاه اضافی در هر نوار ایجاد کردیم - در اصطلاحات متراکم ، یک draid2: 4: 1.

    حتی اگر یازده دیسک کل در draid داشته باشیم 2 : 4: 1 ، فقط شش در هر نوار داده استفاده می شود - و یک در هر نوار فیزیکی. در دنیای خلأهای کامل ، سطوح بدون اصطکاک و جوجه های کروی ، طرح روی یک دیسک draid2: 4: 1 شبیه این است:

    0 1 2 3 4 5 6 7 8 9 A s PPDDDDPPDDD s DPPDDDDPDPDD s DDPPDDDDPPD s DDDPPDDDD. . s . . . . . . . . . . s . . . . . . . . . . s . . . . . . . . . . s . . . . . . . . . . s . . . . . . . . . . s . . . . . . . . . . s

    به طور م dثر ، dRAID مفهوم RAID "برابری مورب" را یک قدم دورتر طی می کند. اولین توپولوژی RAID برابری RAID5 نبود - RAID3 بود که در آن برابری به جای توزیع در سراسر آرایه در یک درایو ثابت بود.

    RAID5 درایو برابری ثابت را از بین برد و توازن را توزیع کرد در کل دیسک های آرایه بجای آن - که عملیات نوشتن تصادفی به مراتب سریعتر از RAID3 ساده تر را ارائه می دهد ، از آنجا که همه نوشتن ها را روی یک دیسک برابری ثابت تنگ نمی کند.

    تبلیغات در همه دیسک ها ، به جای اینکه همه را روی یک یا دو دیسک ثابت بریزید - و آن را به قطعات اضافی گسترش می دهد. اگر یک دیسک در vdev dRAID خراب شود ، برابری و بخشهای داده ای که روی دیسک مرده زندگی می کنند در بخش (های) اضافی ذخیره شده برای هر نوار آسیب دیده کپی می شوند.

    بیایید نمودار ساده شده بالا را در نظر بگیریم ، و بررسی کنید اگر یک دیسک از آرایه خارج شود چه اتفاقی می افتد. شکست اولیه در بیشتر گروه های داده سوراخ هایی ایجاد می کند (در این نمودار ساده ، راه راه):

    0 1 2 4 5 6 7 8 9 A P P D D D P P D D D D D D D D P P D D D D D P D D D D P P D D D P P D D D D s . . . . .

    اما وقتی رزویلر می کنیم ، این کار را روی ظرفیت اضافی رزرو شده قبلی انجام می دهیم:

    0 1 2 4 5 6 7 8 9 A D P P D D D P P D D D P D D D D P P D D D P P D D D D P P D D D D P P D D D D. s . . . . .

    لطفا توجه داشته باشید که این نمودارها ساده شده اند. تصویر کامل شامل گروه ها ، برش ها و ردیف هایی است که قصد نداریم اینجا وارد آنها شویم. طرح منطقی نیز به طور تصادفی جایگزین می شود تا چیزها به طور مساوی تری بر روی درایوها بر اساس جبران توزیع شود. کسانی که به جزئی ترین موها علاقه مند هستند ، توصیه می شود که به این تفصیل تفسیر شده در کد اصلی مراجعه کنند. اگر ما از دیسک های 4kn استفاده می کنیم ، یک vdev draid2: 4: 1 مانند آنچه در بالا نشان داده شده است برای هر بلوک فراداده روی دیسک 24KiB نیاز دارد ، جایی که یک RAIDz2 vdev شش عریض فقط 12KiB نیاز دارد. این اختلاف هرچه مقادیر d + p بیشتر شود بدتر می شود - برای draud2: 8: 1 برای همان بلوک فراداده به 40KiB بزرگ احتیاج دارد!

    به همین دلیل ، تخصیص ویژه vdev در استخرهایی با vdevs dRAID - وقتی یک استخر با draid2: 8: 1 و نیازهای ویژه سه جانبه برای ذخیره بلوک متادیتای 4KiB ، این کار را فقط در 12 کیلوبایت مخصوص انجام می دهید ، به جای 40KiB در درید 2: 8: 1.

    عملکرد DRAID ، تحمل خطا و بازیابی این نمودار زمانهای مشاهده شده برای مقاومت مجدد برای یک استخر 90 دیسک را نشان می دهد. خط آبی تیره در بالا زمان مقاومت مجدد بر روی یک دیسک ثابت ثابت است ؛ خطوط رنگارنگ در زیر زمانهایی را برای مقاومت مجدد بر روی ظرفیت اضافی توزیع شده نشان می دهد. این نمودار زمان های تغییر رنگ مشاهده شده برای یک استخر 90 دیسک را نشان می دهد. خط آبی تیره در بالا زمان مقاومت مجدد بر روی دیسک داغ ثابت است. خطوط رنگارنگ زیر نشان می دهد که زمان برای مقاومت مجدد بر روی ظرفیت اضافی توزیع شده است. اسناد OpenZFS

    در بیشتر موارد ، یک dRAID vdev عملکرد مشابهی با یک گروه معادل vdevs سنتی دارد - به عنوان مثال ، یک draid1: 2: 0 روی نه دیسک تقریباً معادل یک استخر از سه RAVEz1 vdevs 3 عریض انجام دهید. تحمل خطا نیز مشابه است - شما تضمین خواهید کرد که با یک p = 1 شکست خواهید خورد ، درست همانطور که با RAIDz1 vdevs هستید.

    تبلیغات

    توجه کنید که گفتیم تحمل خطا مشابه است ، یکسان نیست. یک استخر سنتی سه ویدئویی RAIDz1 با عرض 3 تضمین شده است که فقط از یک خرابی دیسک زنده خواهد ماند ، اما احتمالاً از یک ثانیه نیز زنده خواهد ماند - تا زمانی که دیسک دوم خراب نباشد ، همانند vdev نیست ، همه چیز خوب است.

    اگر این خرابی قبل از نصب مجدد مجدد رخ دهد ، در قطع دیسک نه دیسک 1: 2 ، قطعاً یک خرابی دیسک vdev (و استخر همراه آن) را از بین می برد. از آنجا که هیچ گروه ثابتی برای نوارهای جداگانه وجود ندارد ، احتمالاً خرابی دیسک دوم باعث از بین رفتن بخشهای اضافی در نوارهای قبلاً تخریب شده می شود ، مهم نیست که کدام دیسک در ثانیه از کار بیفتد.

    تا حدی تحمل خطا کاهش می یابد با زمان مقاوم سازی بسیار سریعتر. در نمودار بالای این بخش ، می توانیم ببینیم که در یک استخر نود دیسک 16 ترابایتی ، رزرو مجدد بر روی یک لوازم یدکی سنتی و ثابت تقریباً سی ساعت طول می کشد ، مهم نیست که ما چطور dRAID vdev را پیکربندی کرده ایم - اما مقاومت مجدد بر روی ظرفیت اضافی توزیع شده این می تواند به کمتر از یک ساعت برسد.

    این بیشتر به این دلیل است که استفاده مجدد از یک قطعه اضافی توزیع شده ، بار نوشتن را در بین دیسک های زنده مانده تقسیم می کند. هنگام نصب مجدد بر روی لوازم یدکی سنتی ، دیسک یدکی خود تنگنا است - خواندن ها از همه دیسک های vdev انجام می شوند ، اما نوشتن باید توسط قطعات اضافی تکمیل شود. اما هنگام استفاده از ظرفیت اضافی توزیع شده ، بارهای خواندن و نوشتن در بین تمام دیسک های زنده مانده تقسیم می شود.

    ماده مقاوم در برابر توزیع می تواند یک رزل کننده متوالی باشد ، نه یک ماده مقاوم در برابر بهبود - به این معنی که ZFS می تواند به سادگی کپی کند بیش از همه بخشهای تحت تأثیر ، بدون نگرانی در مورد اینکه این بخشها به چه بلوکهایی تعلق دارند. برعکس ، مقاومت های شفابخشی باید کل درخت بلوک را اسکن کنند - در نتیجه یک بار خواندن تصادفی وجود دارد ، نه یک بار کاری خواندن متوالی.

    وقتی یک جایگزین فیزیکی برای دیسک خراب به استخر اضافه می شود ، این عملیات بهبود خواهد یافت ، نه پی در پی - و به جای کل vdev ، بر عملکرد نوشتن دیسک جایگزین تنگنا خواهد شد. اما زمان انجام این عملیات بسیار کم اهمیت است ، زیرا vdev در ابتدا وضعیت تخریب شده ای ندارد.

    نتیجه گیری

    RAV توزیع شده vdevs بیشتر برای سرورهای ذخیره سازی بزرگ در نظر گرفته شده است - OpenZFS طراحی تخلیه و آزمایش انجام شده است عمدتا در حدود سیستم های 90 دیسک. در مقیاس کوچکتر ، vdevs و لوازم یدکی سنتی مانند گذشته مفید می مانند.

    ما به خصوص برای تازه کاران ذخیره سازی احتیاط می کنیم تا مراقب تخلیه باشند - این یک طرح کاملاً پیچیده تر از استخر با vdevs سنتی است. مقاومت مجدد سریع فوق العاده است - اما به دلیل داشتن راه راه های لزوماً با طول ثابت ، دراید هم در سطح فشرده سازی و هم در برخی سناریوهای عملکردی ضربه می خورد.

    با افزایش دیسک های معمولی بدون افزایش عملکرد قابل توجه ، درید و رزولوشن سریع حتی در سیستم های کوچکتر نیز ممکن است مطلوب باشد - اما باید فهمید که نقطه شیرین دقیقاً از کجا شروع می شود. در ضمن ، لطفاً بخاطر داشته باشید که RAID یک نسخه پشتیبان نیست - و این شامل draid نیز می باشد!





خبرهای دیگر از اسباب