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

 

 

این مطلب نیز ممکن است برای شما مفید باشد: RAID (آرایه چندگانه دیسک‌های مستقل)

 

در ابتدای کار باید تذکر بدهیم که اگرچه hdparm مزایای قابل توجهی برای افزایش عملکرد دیسک ارائه می‌دهد، اما بسیار خطرناک است. چراکه کار کردن با آن، در صورت عدم آشنایی با نحوه استفاده از برخی پارامترها در این ابزار، به احتمال زیاد منجر به از دست رفتن گسترده داده خواهد شد. مستندات hdparm پیشنهاد می‌دهد که شما نباید از برخی از دستورات در هیچ موقعی استفاده کنید.

به همین دلیل، دستورات خطرناک این ابزار در این آموزش ارائه نشده است. از همه مهم‌تر، همیشه توصیه می‌شود، قبل از استفاده از hdparm بر روی سیستم لینوکس، از هارد دیسک خود نسخه پشتیبان تهیه نمایید.

 

یافتن سرعت انتقال داده هارد دیسک در لینوکس

به منظور بررسی سرعت انتقال داده HDD در لینوکس، دستور hdparm را با پرچم t- بصورت زیر اجرا کنید:

$ sudo hdparm -t /dev/sda

خروجی این دستور به صورت زیر خواهد بود:

/dev/sda:
 Timing buffered disk reads: 246 MB in  3.00 seconds =  81.97 MB/sec

 

همانطور که مشاهده می‌کنید، سرعت انتقال داده 81.97 مگابایت در ثانیه است. اطمینان حاصل کنید که هیچ برنامه دیگری در پس زمینه اجرا نمی‌شود.

این دستور را حداقل دو یا سه بار اجرا کرده و میانگین سرعت انتقال داده درایو خود را از نتایج محاسبه نمایید.

همانطور که در خروجی فوق مشاهده می‌کنید، هسته لینوکس هنگام انتقال اطلاعات، داده‌های بازیابی شده از HDD را در یک بافر قرار می‌دهد. اگر می‌خواهید میزان دقیق‌تر انتقال داده را اندازه گیری نمایید، از دستور زیر استفاده کنید:

$ sudo hdparm -t --direct /dev/sda

خروجی اجرای این دستور به صورت زیر خواهد بود:

/dev/sda:
 Timing O_DIRECT disk reads: 242 MB in  3.02 seconds =  80.21 MB/sec

اکنون، برنامه hdparm از بافر استفاده نمی‌کند و داده‌ها را مستقیماً از hdd می‌خواند. همانطور که در خروجی فوق مشاهده کردید، میزان انتقال بدون بافر کاهش یافته است.

 

Hdparm، همیشه داده‌ها را از ابتدای دستگاه‌های ذخیره سازی می‌خواند. اگر می‌خواهید hdparm، داده‌های نواحی دیگر مربوط به دستگاه ذخیره سازی را بخواند، می‌توانید از پارامتر offset بصورت زیر استفاده کنید.

$ sudo hdparm -t --direct --offset 10 /dev/sda

در اینجا، 10 نشان دهنده تعداد گیگابایت حافظه رد شده است. مطابق دستور فوق، هنگام خواندن داده‌ها از دیسک، 10 گیگابایت حافظه اولیه در نظر گرفته نمی‌شود. بنابراین در دیسک 20 گیگابایتی، دستور فوق داده‌ها را از وسط دیسک ارسال می‌نماید.

خروجی اجرای دستور به صورت زیر خواهد بود:

dev/sda:
 Timing O_DIRECT disk reads (offset 10 GB): 244 MB in  3.01 seconds =  81.15 MB/sec

 

نرخ انتقال hdd را با مقادیر offset و بدون آن مقایسه نمایید. هنگامی‌که از پارامتر offset در دستور دوم استفاده شده است، سرعت انتقال کاهش یافته است. از این رو، به نظر می‌رسد که هارد دیسک‌ها اطلاعات را از مناطق بیرونی دیسک‌ها با سرعت کندتری ارسال می‌کنند.

 

یافتن تعداد سکتور‌های خوانده شده هارد دیسک

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

$ sudo hdparm -I /dev/sda

در سکتور capabilities، خروجی مشابه زیر را مشاهده خواهید کرد.

[...]
Capabilities:
	LBA, IORDY(can be disabled)
	Queue depth: 32
	Standby timer values: spec'd by Standard, no device specific minimum
	R/W multiple sector transfer: Max = 16	Current = 16
	Advanced power management level: 254
	Recommended acoustic management value: 208, current value: 208
	DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
[...]

طبق خروجی فوق، hdd استفاده شده همزمان 16 سکتور را در یک زمان می‌خواند.

 

برخی از HDD‌های مدرن می‌توانند، سکتورها را بازیابی کنند. این ویژگی، read ahead نامیده می‌شود. شما می‌توانید این مقدار را با استفاده از پرچم a- بصورت زیر بدست آورید:

$ sudo hdparm -a /dev/sda

خروجی دستور به صورت زیر خواهد بود:

/dev/sda:
 readahead     = 256 (on)

همانطور که در خروجی فوق مشاهده می‌نمایید، hdd می‌تواند 256 سکتور را یکجا بخواند.

 

تنظیم HDD برروی حالت سکوت به منظور افزایش زمان دسترسی

شما می‌توانید سرعت حرکت هد را در برخی هارد دیسک‌های مدرن کاهش دهید. کاهش سرعت حرکت هد، باعث کاهش میزان صدا و افزایش زمان دسترسی می‌شود. برای بررسی اینکه آیا HDD شما از این ویژگی acoustic mode پشتیبانی می‌کند یا خیر، دستور زیر را اجرا کنید:

$ sudo hdparm -M /dev/sda

اگر درایو شما از acoustic mode پشتیبانی کند، بایدخروجی مشابه زیر را دریافت نمایید.

/dev/sda:
 acoustic      = 208 (128=quiet ... 254=fast)

 

مقدار acoustic mode فعلی در سیستم استفاده شده 208 است. این مقدار را می‌توان بین 128 تا 254 تنظیم کرد.

 

به منظور قرار دادن HDD در حالت سکوت کافیست دستور زیر را اجرا کنید:

$ sudo hdparm -M 128 /dev/sda

به منظور قرار دادن حرکت هد در وضعیت سرعت بالا، دستور زیر را اجرا نمایید:

$ sudo hdparm -M 254 /dev/sda

لطفا توجه داشته باشید که سیستم عامل شما باید از این ویژگی پشتیبانی کند. چنانچه از این ویژگی پشتیبانی نمی‌کند، خروجی زیر را مشاهده خواهید کرد:

dev/sda:
 acoustic      = not supported

 

وضعیت Write-back caching

هنگامی‌که وضعیت Write-back caching فعال باشد، hdd داده‌ها را برای نوشتن در یک بافر قرار می‌دهد. به این ترتیب hdd می‌تواند سریع‌تر بنویسد.

برای تأیید اینکه آیا وضعیت Write-back caching فعال است، از پرچم W- استفاده نمایید.

$ sudo hdparm -W /dev/sda

در این صورت خروجی به صورت زیر خواهد بود:

/dev/sda:
 write-caching =  1 (on)

اگر مقدار خروجی 1 باشد، ویژگی Write-back caching فعال است. اگر 0 باشد، Write-back caching غیرفعال است و با استفاده از دستور زیر می‌توانید آن را فعال کنید:

$ sudo hdparm -W1 /dev/sda

 

اگر hdparm نتوانست، ویژگی Write-back caching را فعال نماید، اطمینان حاصل کنید که ویژگی Write-back caching در BIOS شما فعال باشد.

برای غیرفعال کردن آن کافیست از دستور زیر استفاده نمایید:

$ sudo hdparm -W0 /dev/sda

اگرچه Write-back caching سرعت نوشتن را افزایش می‌دهد؛ ولیکن در برخی شرایط توصیه نمی‌شود. به عنوان مثال، وقتی برق به طور ناگهانی از بین می‌رود، داده‌های موجود در بافر برای همیشه از بین می‌روند. بنابراین، هنگام اجرای برنامه‌های پایگاه داده مانند PostgreSQL، نباید ویژگی Write-back caching را فعال کنید.

 

محک زدن هارد دیسک

برای محک زدن HDD و تست سرعت خواندن درایو، از پرچم‌های T و t با همدیگر بصورت زیر استفاده نمایید.

$ sudo hdparm -Tt /dev/sda

خروجی دستور فوق به صورت زیر خواهد بود:

/dev/sda:
 Timing cached reads:   7232 MB in  1.99 seconds = 3629.42 MB/sec
 Timing buffered disk reads: 250 MB in  3.01 seconds =  82.99 MB/sec

 

این دستور را حداقل 2-3 بار تکرار کنید تا نتیجه معنی داری بدست آورید.

اگر روش خط فرمان را دوست ندارید، برنامه GNOME Disks GUI نیز به شما امکان می‌دهد که هارد دیسک‌ها را تست کنید.

این برنامه به صورت پیشفرض در لینوکس های توزیع اوبونتو نصب شده است.

بدین منظور، دیسک‌ها را از منو یا dash باز کنید، دیسک مورد نظر را انتخاب نمایید، بر روی سه نقطه کلیک کنید و گزینه Benchmark Disk را انتخاب نمایید.

 

برای شروع بررسی و محک هارد دیسک انتخابی، گزینه Start Benchmark را کلیک کنید:

 

برای جزئیات بیشتر، صفحات man را بررسی نمایید.

$ man hdparm

 

 

منبع:

ostechnix