virt-make-fs(1) Virtualization Support virt-make-fs(1)

virt-make-fs - ایجاد سیستم فایل از یک دایرکتوری یا فایل tar

virt-make-fs [--options] input.tar output.img
virt-make-fs [--options] input.tar.gz output.img
virt-make-fs [--options] directory output.img

دستور Virt-make-fs یک ابزار خط فرمانی برای ساخت یک سیستم فایل از یک بایگانی tar یا تعدادی فایل درون یک دایرکتوری است. این ابزار مشابه ابزارهایی مانند mkisofs(1)، genisoimage(1) و mksquashfs(1) است. بر خلاف آن ابزارها، این برنامه می‌تواند انواع سیستم‌فایل‌های متداول مانند ext2/3 یا NTFS را ایجاد کند، که در صورت تمایل به ضمیمه کردن این سیستم‌فایل‌ها به ماشین‌های مجازی موجود (مثلاً برای وارد کردن حجم بالایی از داده‌های فقط‌خواندنی به یک VM) بسیار مفید است.

برای ساخت دیسک‌های خالی، از virt-format(1) استفاده کنید. برای ساخت لایه‌بندی‌های پیچیده، از guestfish(1) استفاده نمایید.

روش استفاده پایه:

virt-make-fs input output.img

که در آن "input" یا یک دایرکتوری شامل فایل‌هایی است که می‌خواهید اضافه کنید، یا یک بایگانی tar (شامل tar فشرده‌نشده یا فشرده‌شده با gzip)؛ و output.img یک ایمیج دیسک است. نوع ورودی به طور خودکار تشخیص داده می‌شود. ایمیج دیسک خروجی به‌طور پیش‌فرض یک ایمیج خلوت (sparse) خام ext2 خواهد بود، مگر اینکه گزینه‌های اضافی را مشخص کنید (بخش "گزینه‌ها" در ادامه را ببینید).

نوع پیش‌فرض سیستم فایل "ext2" است. تقریباً هر نوع سیستم فایلی که توسط libguestfs پشتیبانی شود قابل استفاده است (اما نه فرمت‌های فقط‌خواندنی مانند ISO9660). در ادامه برخی از گزینه‌های متداول‌تر آورده شده است:

توجه داشته باشید که سیستم فایل‌های ext3 شامل ژورنال هستند، که معمولاً اندازه‌ای بین ۱ تا ۳۲ مگابایت دارد. اگر قصد ندارید از سیستم فایل به نحوی استفاده کنید که به ژورنال نیاز داشته باشد، این مورد صرفاً هدررفت سربار است.
هنگام خروجی دادن داده به یک ماشین مجازی مهمان ویندوزی مفید است.
سربار کمتری نسبت به "ext2" دارد، اما محدودیت‌های مشخصی روی طول نام فایل و اندازه کل سیستم فایل دارد.

مثال

virt-make-fs --type=minix input minixfs.img

به صورت اختیاری virt-make-fs می‌تواند یک جدول پارتیشن به دیسک خروجی اضافه کند.

افزودن پارتیشن می‌تواند سازگاری ایمیج دیسک را با برخی سیستم‌عامل‌های مجازی‌سازی‌شده که انتظار ندارند سیستم فایل مستقیماً روی یک دستگاه بلاکی قرار داشته باشد افزایش دهد (لینوکس مشکلی با این موضوع ندارد و هر دو نوع را به خوبی مدیریت می‌کند).

از طرف دیگر، اگر از جدول پارتیشن استفاده کنید، ایمیج خروجی دیگر یک سیستم فایل مستقیم و ساده نخواهد بود. برای مثال نمی‌توانید fsck(8) را مستقیماً روی یک ایمیج دیسک پارتیشن‌بندی‌شده اجرا کنید. (با این حال ابزارهای libguestfs مانند guestfish(1) و virt-resize(1) همچنان قابل استفاده هستند).

مثال

افزودن یک پارتیشن MBR:

virt-make-fs --partition -- input disk.img

اگر ممکن است اندازه ایمیج دیسک خروجی در مقیاس ترابایت یا بزرگ‌تر باشد، بهتر است از جدول پارتیشن سازگار با EFI/GPT استفاده کنید:

virt-make-fs --partition=gpt --size=+4T --format=qcow2 input disk.img

بر خلاف فرمت‌هایی مانند tar و squashfs، یک سیستم فایل "دقیقاً هم‌اندازه" فایل‌های درون خود نیست، بلکه ممکن است فضای اضافی داشته باشد. بسته به اینکه چگونه می‌خواهید از خروجی استفاده کنید، ممکن است این فضای اضافی را بیهوده بدانید و بخواهید آن را به حداقل برسانید، یا ممکن است بخواهید فضایی خالی باقی بگذارید تا بعداً بتوان فایل‌های بیشتری اضافه کرد. virt-make-fs به‌طور پیش‌فرض فضای اضافی را به حداقل می‌رساند، اما در صورت تمایل می‌توانید از گزینه --size برای ایجاد فضای خالی در سیستم فایل استفاده کنید.

روش جایگزین برای باقی گذاشتن فضای اضافی بدون بزرگ‌تر کردن حجم فایل ایمیج خروجی، استفاده از فرمت دیسک ایمیج جایگزین (به جای فرمت پیش‌فرض "raw") است. استفاده از --format=qcow2 از فرمت بومی ایمیج qemu/KVM qcow2 استفاده خواهد کرد (پیش از استفاده مطمئن شوید هایپروایزر شما از آن پشتیبانی می‌کند). این کار به شما امکان می‌دهد مقدار بزرگی برای --size انتخاب کنید اما فضای اضافی در واقع تا زمانی که سعی نکنید چیزی در آن ذخیره کنید در ایمیج تخصیص داده نخواهد شد.

فراموش نکنید که می‌توانید از دستورات محلی شامل resize2fs(8) و virt-resize(1) نیز برای تغییر اندازه سیستم‌فایل‌های موجود استفاده کنید، یا دستور virt-make-fs را مجدداً اجرا کنید تا ایمیج دیگری را از ابتدا بسازید.

مثال

virt-make-fs --format=qcow2 --size=+200M input output.img

نمایش راهنمای خلاصه.
این پارامتر اندازه سکتور ایمیج دیسک خروجی را تعیین می‌کند.

مقدار پیش‌فرض 512 بایت است.

همچنین "guestfs_add_drive_opts" در guestfs(3) را ببینید.

ساخت یک دیسکت فلاپی مجازی.

در حال حاضر این گزینه اندازه (1440K)، نوع پارتیشن (MBR) و نوع سیستم فایل (VFAT) را از پیش تعیین می‌کند. در آینده ممکن است هندسه (geometry) را نیز انتخاب کند.

از گزینه --size (یا -s) برای انتخاب اندازه ایمیج خروجی استفاده کنید.

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

برای انتخاب یک دیسک خروجی با اندازه ثابت، یک عدد مطلق همراه با یکی از پسوندهای b/K/M/G/T/P/E به معنای بایت، کیلوبایت، مگابایت، گیگابایت، ترابایت، پتابایت یا اگزابایت مشخص کنید. این مقدار باید به اندازه کافی بزرگ باشد تا تمام فایل‌های ورودی را در بر گیرد، در غیر این صورت با خطا مواجه خواهید شد.

برای باقی گذاشتن فضای اضافی، یک علامت "+" (مثبت) و یک عدد همراه با یکی از پسوندهای b/K/M/G/T/P/E به معنای بایت، کیلوبایت، مگابایت، گیگابایت، ترابایت، پتابایت یا اگزابایت مشخص کنید. برای مثال: --size=+200M به معنای فضای کافی برای فایل‌های ورودی به علاوه (تقریباً) ۲۰۰ مگابایت فضای خالی اضافی است.

توجه داشته باشید که virt-make-fs فضای خالی را تخمین می‌زند و بنابراین سیستم‌فایل‌هایی که تولید می‌کند دقیقاً شامل مقدار فضای خالی درخواست‌شده نخواهند بود. (تولید یک سیستم فایل که دقیقاً دارای فضای خالی مورد نظر باشد بسیار هزینه‌برتر و زمان‌برتر است).

انتخاب فرمت ایمیج دیسک خروجی.

مقدار پیش‌فرض "raw" (ایمیج دیسک خلوت خام) است.

انتخاب نوع سیستم فایل خروجی.

مقدار پیش‌فرض "ext2" است.

هر سیستم فایلی که به صورت خواندن/نوشتن توسط libguestfs پشتیبانی شود در اینجا قابل استفاده است.

تنظیم برچسب (label) سیستم فایل.
در صورت تعیین، این پرچم یک جدول پارتیشن MBR به ایمیج دیسک خروجی اضافه می‌کند.

می‌توانید نوع جدول پارتیشن را تغییر دهید، مثلاً --partition=gpt برای دیسک‌های بزرگ.

برای MBR، ابزار virt-make-fs بایت نوع پارتیشن را به طور خودکار تنظیم می‌کند.

فعال‌سازی اطلاعات اشکال‌زدایی (debugging).
نمایش شماره نسخه و خروج.
فعال‌سازی ردگیری (trace) در libguestfs.

guestfish(1)، virt-format(1)، virt-resize(1)، virt-tar-in(1)، mkisofs(1)، genisoimage(1)، mksquashfs(1)، mke2fs(8)، resize2fs(8)، guestfs(3)، http://libguestfs.org

Richard W.M. Jones http://people.redhat.com/~rjones

Copyright (C) 2010-2025 Red Hat Inc.

این برنامه نرم‌افزار آزاد است؛ می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) همان‌طور که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است؛ چه نسخه ۲ مجوز و چه (به انتخاب خودتان) هر نسخه بعدی، بازتوزیع کرده و/یا تغییر دهید.

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

شما باید همراه با این برنامه یک نسخه از مجوز عمومی همگانی گنو را دریافت کرده باشید؛ در غیر این صورت، به آدرس زیر بنویسید:

Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor
Boston, MA 02110-1301 USA

برای دریافت فهرستی از اشکالات 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