| virt-alignment-scan(1) | Virtualization Support | virt-alignment-scan(1) |
نام (NAME)
virt-alignment-scan - بررسی تراز پارتیشنهای ماشینهای مجازی
خلاصه دستور (SYNOPSIS)
virt-alignment-scan [--options] -d domname virt-alignment-scan [--options] -a disk.img [-a disk.img ...] virt-alignment-scan [--options]
توضیحات (DESCRIPTION)
هنگامی که سیستمعاملهای قدیمیتر نصب میشوند، ابزارهای پارتیشنبندی پارتیشنها را در سکتوری قرار میدهند که با فضای ذخیرهسازی زیرین تراز نیست (معمولاً اولین پارتیشن در سکتور 63 شروع میشود). پارتیشنهای ناتراز میتوانند منجر به صدور ورودی/خروجی (I/O) بیش از حد لازم توسط سیستمعامل شوند.
ابزار virt-alignment-scan تراز پارتیشنها را در ماشینهای مجازی و ایمیجهای دیسک بررسی میکند و در صورت وجود مشکلات تراز، به شما هشدار میدهد.
در حال حاضر ابزار مستقیمی برای اصلاح مشکلات تراز وجود ندارد. شما فقط میتوانید سیستمعامل مهمان را مجدداً نصب کنید. سند زیر از NetApp این مشکل و راهحلهای احتمالی را خلاصه کرده است: http://media.netapp.com/documents/tr-3747.pdf
خروجی (OUTPUT)
برای اجرای مستقیم این ابزار روی یک ایمیج دیسک، از گزینه -a استفاده کنید:
$ virt-alignment-scan -a winxp.img /dev/sda1 32256 512 bad (alignment < 4K) $ virt-alignment-scan -a fedora16.img /dev/sda1 1048576 1024K ok /dev/sda2 2097152 2048K ok /dev/sda3 526385152 2048K ok
برای اجرای ابزار روی مهمانی که توسط libvirt شناخته شده است، از گزینه -d و احتمالاً گزینه -c استفاده کنید:
# virt-alignment-scan -d RHEL5 /dev/sda1 32256 512 bad (alignment < 4K) /dev/sda2 106928640 512 bad (alignment < 4K) $ virt-alignment-scan -c qemu:///system -d Win7TwoDisks /dev/sda1 1048576 1024K ok /dev/sda2 105906176 1024K ok /dev/sdb1 65536 64K ok
اجرای virt-alignment-scan بدون هیچیک از گزینههای -a یا -d تمام دامنههای libvirt را اسکن میکند.
# virt-alignment-scan F16x64:/dev/sda1 1048576 1024K ok F16x64:/dev/sda2 2097152 2048K ok F16x64:/dev/sda3 526385152 2048K ok
خروجی شامل ۴ ستون یا بیشتر است که با فاصله از هم جدا شدهاند. تنها ۴ ستون اول در صورتی که بخواهید آن را از طریق برنامه پارس کنید اهمیت دارند. این ستونها عبارتند از:
- ستون ۱
- نام دستگاه
و پارتیشن
(مثلاً /dev/sda1
به معنای
اولین
پارتیشن
روی اولین
دستگاه
بلوکی).
هنگام فهرست کردن تمام دامنههای libvirt (در صورتی که گزینهای برای -a یا -d مشخص نشده باشد) نام دامنه libvirt یا UUID (در صورت استفاده از --uuid) به عنوان پیشوند به این ستون اضافه میشود؛ مانند: "WinXP:/dev/sda1"
- ستون ۲
- محل شروع پارتیشن به بایت.
- ستون ۳
- تراز پارتیشن به بایت یا کیلوبایت (مثلاً 512 یا "4K").
- ستون ۴
- عبارت "ok" اگر تراز برای عملکرد بهینه باشد، یا "bad" اگر تراز بتواند مشکلات عملکردی ایجاد کند.
- ستونهای ۵+
- توضیحات متنی اختیاری.
کد خروج برنامه بسته به اینکه آیا پارتیشنهای ناتراز یافت شدهاند یا خیر تغییر میکند. بخش «وضعیت خروج (EXIT STATUS)» را در ادامه ببینید.
اگر فقط کد خروج را بدون هیچ خروجی متنی میخواهید، از گزینه -q استفاده کنید.
گزینهها (OPTIONS)
- --help
- نمایش راهنمای کوتاه.
- -a file
- --add file
- افزودن file
که باید یک
ایمیج دیسک
از ماشین
مجازی باشد.
فرمت ایمیج دیسک به طور خودکار تشخیص داده میشود. برای بازنویسی این حالت و اجبار یک فرمت خاص، از گزینه --format=.. استفاده کنید.
- -a URI
- --add URI
- افزودن یک دیسک راه دور. بخش "ADDING REMOTE STORAGE" در guestfish(1) را ببینید.
- --blocksize=512
- --blocksize=4096
- --blocksize
- این پارامتر اندازه سکتور ایمیج دیسک را تنظیم میکند. این گزینه بر تمام دیسکهایی که بعد از این پارامتر صراحتاً اضافه میشوند تأثیر میگذارد. استفاده از --blocksize بدون آرگومان، اندازه سکتور دیسک را به مقدار پیشفرض که معمولاً ۵۱۲ بایت است بازمیگرداند. همچنین "guestfs_add_drive_opts" در guestfs(3) را ببینید.
- -c URI
- --connect URI
- در صورت
استفاده از
libvirt، به URI
داده شده
متصل
میشود. در
صورت عدم
ذکر، به
هایپروایزر
پیشفرض libvirt
متصل
میشویم.
اگر دستگاههای بلوکی مهمان را مستقیماً مشخص کنید (-a)، libvirt اصلاً استفاده نخواهد شد.
- -d guest
- --domain guest
- افزودن تمام دیسکهای مربوط به مهمان نامبرده شده در libvirt. میتوان به جای نام از UUID دامنه نیز استفاده کرد.
- --format=raw|qcow2|..
- --format
- رفتار
پیشفرض
برای گزینه
-a تشخیص
خودکار
فرمت ایمیج
دیسک است.
استفاده از
این گزینه
فرمت دیسک
را برای
گزینههای
-a بعدی در
خط فرمان
اجبار
میکند.
استفاده از
--format بدون
آرگومان،
وضعیت را به
تشخیص
خودکار
برای
گزینههای
-a بعدی
بازمیگرداند.
برای مثال:
virt-alignment-scan --format=raw -a disk.img
فرمت raw (بدون تشخیص خودکار) را برای disk.img اجبار میکند.
virt-alignment-scan --format=raw -a disk.img --format -a another.img
فرمت raw (بدون تشخیص خودکار) را برای disk.img اجبار کرده و برای another.img به تشخیص خودکار بازمیگردد.
اگر ایمیجهای دیسک مهمان با فرمت خام (raw) غیرقابل اعتماد دارید، باید از این گزینه برای مشخص کردن فرمت دیسک استفاده کنید. این کار از یک مشکل امنیتی احتمالی با مهمانهای مخرب جلوگیری میکند (CVE-2010-3851).
- -P nr_threads
- از نسخه 1.22 در
libguestfs، ابزار
virt-alignment-scan
چندریسمانی
(multithreaded) است و
مهمانها
را به صورت
موازی
بررسی
میکند. به
طور
پیشفرض
تعداد
ریسمانها
بر اساس
مقدار
حافظه آزاد
موجود در
زمان شروع
virt-alignment-scan انتخاب
میشود. شما
میتوانید
با استفاده
از گزینه -P
ابزار virt-alignment-scan
را مجبور
کنید
حداکثر از
"nr_threads"
ریسمان
استفاده
کند.
توجه داشته باشید که -P 0 به معنای تشخیص خودکار و -P 1 به معنای استفاده از یک ریسمان منفرد است.
- -q
- --quiet
- هیچ خروجی تولید نمیکند. فقط کد خروج را تنظیم میکند (بخش «وضعیت خروج (EXIT STATUS)» در ادامه را ببینید).
- --uuid
- چاپ UUIDها به
جای نامها.
این گزینه
برای دنبال
کردن یک
مهمان حتی
زمانی که
مهمان
مهاجرت
داده شده یا
تغییر نام
یافته، یا
زمانی که دو
مهمان نام
یکسانی
دارند مفید
است.
این گزینه فقط زمانی اعمال میشود که تمام دامنههای libvirt فهرست شوند (زمانی که هیچ گزینه -a یا -d مشخص نشده باشد).
- -v
- --verbose
- فعالسازی پیامهای پرجزئیات برای اشکالزدایی.
- -V
- --version
- نمایش شماره نسخه و خروج.
- -x
- فعالسازی ردگیری فراخوانیهای API در libguestfs.
تراز پیشنهادی (RECOMMENDED ALIGNMENT)
سیستمعاملهای قدیمیتر از ویندوز ۲۰۰۸ و لینوکس قبل از حدود سال ۲۰۱۰، اولین سکتور از اولین پارتیشن را در سکتور ۶۳ با اندازه سکتور ۵۱۲ بایت قرار میدهند. این اتفاق به دلیل یک تصادف تاریخی رخ داده است. درایوها مجبور بودند هندسه سیلندر / هد / سکتور (CHS) را به BIOS گزارش دهند. این هندسه در درایوهای امروزی کاملاً بیمعنی است، اما طبق گزارش هندسه، همیشه ۶۳ سکتور در هر ترک (track) وجود دارد. بنابراین سیستمعامل اولین پارتیشن را در ابتدای «ترک» دوم، یعنی در سکتور ۶۳ قرار میدهد.
هنگامی که سیستمعامل مهمان مجازیسازی میشود، سیستمعامل میزبان و هایپروایزر ممکن است دسترسیهای تراز شده با یکی از موارد زیر را ترجیح دهند:
- ۵۱۲ بایت
اگر سیستمعامل میزبان از فضای ذخیرهسازی محلی مستقیماً روی پارتیشنهای هارد دیسک استفاده کند، و هارد دیسک دارای سکتورهای فیزیکی ۵۱۲ بایتی باشد.
- ۴ کیلوبایت
برای ذخیرهسازی محلی روی هارد دیسکهای جدید با سکتورهای فیزیکی ۴ کیلوبایتی؛ برای ذخیرهسازی مبتنی بر فایل روی سیستمفایلهایی با اندازه بلوک ۴ کیلوبایتی؛ یا برای برخی انواع ذخیرهسازهای متصل به شبکه (NAS).
- ۶۴
کیلوبایت
برای ذخیرهسازهای متصل به شبکه سطح بالا. این اندازه بلوک بهینه برای برخی سختافزارهای NetApp است.
- ۱ مگابایت
بخش «تراز پارتیشن ۱ مگابایتی (1 MB PARTITION ALIGNMENT)» در ادامه را ببینید.
پارتیشنهایی که به درستی با فضای ذخیرهسازی زیرین تراز نشدهاند باعث ورودی/خروجی اضافه میشوند. برای مثال:
sect#63
┌──────────────────────────┬ ─ ─ ─ ─
│ guest │
│ filesystem block │
─ ┬──────────────────┴──────┬───────────────────┴─────┬ ─ ─
│ host block │ host block │
│ │ │
─ ┴─────────────────────────┴─────────────────────────┴ ─ ─
در این مثال، هر بار که یک بلوک ۴ کیلوبایتی مهمان خوانده میشود، باید به دو بلوک روی میزبان دسترسی پیدا کرد (بنابراین دو برابر ورودی/خروجی انجام میشود). هنگامی که یک بلوک ۴ کیلوبایتی مهمان نوشته میشود، ابتدا باید دو بلوک میزبان خوانده شوند، دادههای قدیمی و جدید ترکیب شوند، و دو بلوک دوباره نوشته شوند (۴ برابر ورودی/خروجی).
اندازه بلوک و ورودی/خروجی میزبان لینوکس (LINUX HOST BLOCK AND I/O SIZE)
نسخههای جدید هسته لینوکس اندازه بلوک فیزیکی و منطقی، و حداقل و اندازه پیشنهادی ورودی/خروجی را در دسترس قرار میدهند.
برای یک هارد دیسک مصرفی معمولی با سکتورهای ۵۱۲ بایتی:
$ cat /sys/block/sda/queue/hw_sector_size 512 $ cat /sys/block/sda/queue/physical_block_size 512 $ cat /sys/block/sda/queue/logical_block_size 512 $ cat /sys/block/sda/queue/minimum_io_size 512 $ cat /sys/block/sda/queue/optimal_io_size 0
برای یک هارد دیسک مصرفی جدید با سکتورهای ۴ کیلوبایتی:
$ cat /sys/block/sda/queue/hw_sector_size 4096 $ cat /sys/block/sda/queue/physical_block_size 4096 $ cat /sys/block/sda/queue/logical_block_size 4096 $ cat /sys/block/sda/queue/minimum_io_size 4096 $ cat /sys/block/sda/queue/optimal_io_size 0
برای یک NetApp LUN:
$ cat /sys/block/sdc/queue/logical_block_size 512 $ cat /sys/block/sdc/queue/physical_block_size 512 $ cat /sys/block/sdc/queue/minimum_io_size 4096 $ cat /sys/block/sdc/queue/optimal_io_size 65536
سیستم NetApp دسترسیهای ۵۱۲ بایتی را مجاز میداند (اما بسیار ناکارآمد خواهند بود)، حداقل اندازه ورودی/خروجی ۴ کیلوبایت را ترجیح میدهد، اما اندازه ورودی/خروجی بهینه آن ۶۴ کیلوبایت است.
برای کسب اطلاعات دقیق درباره معنای این اعداد، به این آدرس مراجعه کنید: http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/newstorage-iolimits.html
[با تشکر از Matt Booth برای ارائه دادههای درایو 4K. با تشکر از Mike Snitzer برای ارائه دادههای NetApp و اطلاعات تکمیلی.]
تراز پارتیشن ۱ مگابایتی (1 MB PARTITION ALIGNMENT)
مایکروسافت از زمان Windows 2008 Server مقدار ۱ مگابایت را به عنوان تراز پیشفرض برای تمام پارتیشنها انتخاب کرد و لینوکس نیز از این رویه پیروی کرده است.
با فرض سکتورهای ۵۱۲ بایتی در مهمان، اکنون مشاهده خواهید کرد که اولین پارتیشن در سکتور ۲۰۴۸ شروع میشود و پارتیشنهای بعدی (در صورت وجود) در مضربی از ۲۰۴۸ سکتور شروع خواهند شد.
تراز ۱ مگابایتی با تمام نیازمندیهای تراز فعلی (4K, 64K) سازگار است و فضایی برای رشد آتی در اندازههای بلوک فیزیکی فراهم میکند.
تنظیم تراز (SETTING ALIGNMENT)
ابزار virt-resize(1) میتواند تراز پارتیشنهای برخی از مهمانها را تغییر دهد. در حال حاضر این ابزار میتواند تمام پارتیشنهای همه مهمانهای ویندوز را به طور کامل تراز کند و در صورت لزوم بوتلودر را اصلاح نماید. برای مهمانهای لینوکس، میتواند پارتیشنهای دوم و بعدی را تراز کند، به طوری که اکثریت دسترسیهای سیستمعامل به جز زمان بوت تراز خواهند بود.
روش دیگر برای تصحیح مشکلات تراز پارتیشنها، نصب مجدد سیستمعاملهای مهمان است. اگر سیستمعاملها را از روی الگوها (templates) نصب میکنید، اطمینان حاصل کنید که این الگوها نیز دارای تراز پارتیشن صحیح هستند.
برای نسخههای قدیمیتر ویندوز، سند زیر از NetApp حاوی اطلاعات مفیدی است: http://media.netapp.com/documents/tr-3747.pdf
برای Red Hat Enterprise Linux ≤ 5، از یک اسکریپت Kickstart استفاده کنید که شامل یک بخش صریح %pre باشد که پارتیشنهای تراز شده را با استفاده از parted(8) ایجاد کند. از دستور Kickstart با عنوان "part" استفاده نکنید. سند NetApp بالا شامل یک مثال است.
وضعیت خروج (EXIT STATUS)
این برنامه مقادیر زیر را بازمیگرداند:
- 0
خروج موفق، تمام پارتیشنها برای بهترین عملکرد در تراز ≥ 64K قرار دارند
- 1
خطا در اسکن ایمیج دیسک یا مهمان
- 2
خروج موفق، برخی از پارتیشنها دارای تراز < 64K هستند که میتواند منجر به عملکرد ضعیف در ذخیرهسازهای تحت شبکه سطح بالا شود
- 3
خروج موفق، برخی از پارتیشنها دارای تراز < 4K هستند که میتواند منجر به عملکرد ضعیف در اکثر هایپروایزرها شود
همچنین ببینید (SEE ALSO)
guestfs(3), guestfish(1), virt-filesystems(1), virt-rescue(1), virt-resize(1), http://libguestfs.org.
نویسنده (AUTHOR)
Richard W.M. Jones http://people.redhat.com/~rjones
حق نشر (COPYRIGHT)
Copyright (C) 2011 Red Hat Inc.
مجوز (LICENSE)
این برنامه نرمافزار آزاد است؛ میتوانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) منتشر شده توسط بنیاد نرمافزار آزاد؛ چه نسخه ۲ مجوز، یا (به انتخاب خودتان) هر نسخه بعدی بازتوزیع کرده و/یا تغییر دهید.
این برنامه به این امید توزیع شده است که مفید واقع شود، اما بدون هیچگونه ضمانتی؛ حتی بدون ضمانت ضمنی قابلیت فروش یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید.
شما باید همراه با این برنامه یک نسخه از مجوز عمومی همگانی گنو را دریافت کرده باشید؛ در غیر این صورت به Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA بنویسید.
اشکالات (BUGS)
برای دریافت فهرست اشکالات مربوط به libguestfs، از این پیوند استفاده کنید: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools
برای گزارش یک اشکال جدید در libguestfs، از این پیوند استفاده کنید: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
هنگام گزارش اشکال، لطفاً موارد زیر را ارائه دهید:
- نسخه libguestfs.
- مکانی که libguestfs را از آنجا دریافت کردهاید (مثلاً کدام توزیع لینوکس، کامپایل شده از سورس کد، و غیره).
- اشکال را به دقت توصیف کرده و روشی برای بازتولید آن ارائه دهید.
- برنامه libguestfs-test-tool(1) را اجرا کرده و خروجی کامل و ویرایشنشده را در گزارش اشکال قرار دهید.
| 2026-07-11 | guestfs-tools-1.56.0 |