بررسی بازدهی عملی یک پارتیشن GPFS به روش کپی فایل های متعدد همزمان توسط dd لینوکس

مقدمه

سیستم فایل GPFS یکی از سیستم فایل های بسیار مطرح دنیا در زمینه اشتراک دیسک های SAN است که به تازگی آزمون های استفاده از آن در اداره کل فنی سیاسی آغاز شده است. یکی از سوالاتی که در مورد این سیستم فایل و نحوه عملکرد آن مطرح است، بازدهی سرعت آن در هنگام کار تعداد زیادی از کاربران است، که ما در اینجا با ساخت یک سری کپی همزمان فایل سعی در شبیه سازی آن کرده ایم.

شرایط تست

در سیستم تست ما دو کنترلر وجود دارد که هر کدام دارای 4 اتصال FC چهار گیگابیت بر ثانیه هستند. دو سوییچ FC هم وجود دارد که از هر کنترلر دو اتصال FC به آنها برقرار شده است. به عبارت دیگر از هر کنترلر دو اتصال به سوییچ اول و دو اتصال به سوییچ دوم وجود دارد.

هر LUN تست ما از پنج عدد هارد دیسک FC ظرفیت 300 گیگابایت 10 هزار دور که با هم راید پنج بسته شده اند تشکیل شده است که هر لان در حدود یک ترابایت می شود. کل ولوم gpfs از شش عدد لان که یک پارتیشن GPFS نسخه 3.4 که در حالت استریپ و رپلیکا بسته شده است (با استریپ 3 و رپلیکا 2). این پارتیشن حجمی برابر 6 ترابایت دارد و از ترکیب شش LUN با همدیگر ساخته شده است.

از آنجا که سه تا از این LUN ها روی یک کنترلر و سه تای دیگر روی یک کنترلر دیگر هستند، ما از پهنای باند هر دو کنترلر با هم استفاده می کنیم.

از آنجا که ما رپلیکا 2 داریم (یعنی به اطلاعات دو بار کپی می شوند) هر فایل هنگامی که ذخیره می شود حجم آن دو برابر حجم واقعی آن نمایش داده می شود.

از آنجا که کنترلرهای CX3 قابلیت active/active ندارند و فقط می توانند بصورت active/passive کار کنند، هر کنترلر در آن واحد می تواند فقط owner یک لان باشد. البته کنترلر دوم می تواند در صورتی که کنترلر اول رفت به سرعت جایگزین آن شود، اما نمی تواند با آن روی یک لان کار کند. به عبارت دیگر نمی توان یک lun درست کرد که هر دو کنترلر مالک آن باشند و به این صورت پهنای باند را بالاتر برد، اما با استفاده از قابلیت استریپ gpfs در اینجا از هر دو کنترلر با هم استفاده شده است تا حداکثر پهنای باند ممکن ایجاد شود.

کلاینت های متصل به این سیستم 5 عدد سیستم RHEL هستند که GPFS روی آنها سوار شده است و همه آنها یک پارتیشن را مشترکا تحت عنوان /gpfs1 می بینند که بین آنها share شده است. همه اینها با استفاده از multi path خود لینوکس و اتصالات FC سرعت 4 گیگابیت بر ثانیه به سوییچ های FC متصل شده اند.

برای تست ساده ما از دستور dd استفاده کردیم که برای رایت از dev/zero روی فایل سیستم یک فایل 10 گیگابایتی درست می کند و برای read همان فایل را خوانده و در dev/null از بین می برد. ما ابتدا روی

ما برای تست سنگین از اسکریپت زیر استفاده کردیم:

for (( i=1 ; i<=20 ; i++))
do
dd if=/dev/zero of=/gpfs1/`uname -n`-$i bs=1024k count=10000 2>> results-`uname -n`.txt &
done

این اسکریپت 20 عدد دستور dd می سازد که ورودی آنها از dev/zero است و خروجی آنها یک فایل 10 گیگابایتی با بلوک سایز 1 مگابایت است. استفاده از dev/zero تاثیر احتمالی محدودیت پهنای باند سورس (مثل وقتی که از یک هارد یک فایل کپی می شود و خود هارد مبدا یکی از گلوگاههای تست است) را منتفی می کند. علاوه بر این خود dd سرعت متوسط کپی را در انتهای کار به ما می دهد که با 2>> داخل فایل results به انتهای فایل append می شود.

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

کار این اسکریپت بصورت ساده ساختن 20 فایل ده گیگابایتی همزمان روی سرورها است. ما این اسکریپت را همزمان روی هر 5 تا کلاینت اجرا کردیم که به معنی شبیه سازی عملکرد 100 کاربر همزمان وقتی هر کدام در حال نوشتن یک فایل 10 گیگابایتی هستند می باشد.

نتایج تست

پنج کلاینت ما اینجا gpfs1 تا gpfs5 نام دارند و نتایج تست بصورت متوسط در اینجا آورده شده است. تمام نتایج مگابایت بر ثانیه هستند.:

  • تک سرور gpfs1 تنها 149 نوشتن و 162 خواندن.
  • دو سرور gpfs1 , gpfs2 نوشتن 148 و خواندن 164 به ازای هر سرور.
  • پنج سرور gpfs1 تا gpfs5 با هم نوشتن 63 و خواندن 155 به ازای هر سرور.
  • پنج سرور و به ازای هر سرور 20 تا فایل همزمان: 3.1 به ازای هر فایل به ازای هر سرور (62 مگابایت بر ثانیه به ازای هر سرور)

البته باید توجه داشت که این ولوم تستی است و هنوز optimise نشده است.

تجزیه و تحلیل نتایج

همانطور که دیده می شود، در حالت تست یک سرور، یا دو سرور سرعت نوشتن به ازای هر استریم از 150 مگابایت بر ثانیه بالاتر نمی رود. این مقداری عجیب است، چون این محدودیت سرعت دیسک نیست (وگرنه باید بین رایت با یک سرور و یا دو سرور اختلاف حاصل می شد).دلیل این محدودیت سرعت جای بررسی بیشتری دارد.

اما در حالت های یک استریم به ازای هر سرور و پنج سرور همزمان، یا 20 استریم به ازای هر سرور و 5 سرور همزمان، محدودیت سرعت، محدودیت سرعت ولوم است. همانطوری که از اعداد می توان استنباط کرد، محدودیت سرعت کل ولوم (یعنی دیسک SAN) در اینجا 5*63 مگابایت بر ثانیه یعنی حدود 2.5 گیگابیت بر ثانیه در حالت رایت است. به عبارت دیگر اگر قرار باشد ما استریم های 30 مگابیت بر ثانیه (تقریبا برابر DV) روی این ولوم رایت کنیم، نهایتا می توانیم 83 استریم رایت همزمان داشته باشیم، و البته read همزمان هم در اینجا اصلا لحاظ نشده است.