آموزش تغییر فرمت های image ماشین مجازی

 

مقدمه

در این آموزش، نحوه تبدیل بین  فرمت image ماشین مجازی (شامل qcow2، vdi، vhd و vmdk) را یاد می گیرید تا بتوانید محیط های مجازی خود را از دسکتاپ خود به فضای ابری ببرید و در صورت نیاز دوباره برگردید.

هنگامی که با یک سرور ابری راه دور کار می کنید، معمولاً با یک ماشین مجازی کار دارید: یک نمونه سندباکس و ایزوله از کل سیستم عامل که در یک خوشه سرور بزرگتر اجرا می شود. همچنین می توانید با استفاده از نرم افزارهایی مانند QEMU یا VirtualBox با ماشین های مجازی به صورت محلی روی دسکتاپ خود کار کنید.

ماشین‌های مجازی ممکن است شامل یک رابط دسکتاپ کامل باشند، یا ممکن است فقط یک سرور SSH را برای اجازه اتصالات ترمینال اجرا کنند. در هر صورت، آنها از نظر فنی مشابه هستند و مفروضات مشابهی دارند.

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

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

پیش نیاز ها

دستورات این آموزش را می توان در ویندوز، macOS یا لینوکس اجرا کرد، به شرطی که بتوانید QEMU و VirtualBox را به همراه ابزارهای خط فرمان آنها نصب کنید.

این آموزش دستورالعمل های نصب را با استفاده از Homebrew package manager ارائه می دهد. می‌توانید Homebrew را روی macOS، لینوکس یا ویندوز تحت WSL2 نصب کنید.

اگر روی DigitalOcean Droplet کار می کنید، باید حداقل 2 CPU و 2 گیگابایت حافظه داشته باشید.

همچنین برای اجرای دستورات این آموزش به حداقل 10 گیگابایت فضای خالی نیاز دارید.

توجه: اگر از macOS با یک CPU سیلیکون اپل (ساخته شده در سال 2020 به بعد) استفاده می کنید، فقط می توانید از QEMU استفاده کنید و استفاده از  VirtualBox برای شما مقدور نیست.

 

QEMU

QEMU قدرتمندترین و گسترده ترین نرم افزار مجازی سازی منبع باز است. این سیستم عامل بر روی تمام پلتفرم های اصلی (از جمله ویندوز، macOS، لینوکس و سایر سیستم عامل ها مانند اندروید) اجرا می شود و در صورت نیاز قادر به مجازی سازی و شبیه سازی است.

به عنوان مثال، اگر یک تصویر سرور لینوکس را بر روی دسکتاپ ویندوز اجرا می کنید (یک مورد استفاده رایج)، هر دوی این پلتفرم ها یک معماری اساسی مشترک دارند (Intel/AMD x86)، بنابراین QEMU می تواند از طریق مجازی سازی به عملکرد کامل برسد. اگر از QEMU برای ترکیب و تطبیق معماری‌ها استفاده می‌کنید، برای مثال با اجرای x86 Linux یا Windows (به عنوان سیستم‌عامل «میزبان» یا «مهمان») با معماری‌های ARM macOS یا Android، QEMU به‌طور خودکار از شبیه‌سازی برای ترجمه استفاده می‌کند.

در مقایسه با مجازی سازی، شبیه سازی معمولاً در محیط های تولید استفاده نمی شود زیرا جریمه عملکرد قابل توجهی را اضافه می کند. با این حال، QEMU مجازی‌سازی و شبیه‌سازی را به‌عنوان تقریباً معادل تلقی می‌کند، مزایای سازگاری قابل‌توجهی را فراهم می‌کند، زیرا به این معنی است که فرمت ماشین های مجازی، تصویر یکسان و ابزارهای مشابه را می‌توان در هر سناریو استفاده کرد.

QEMU یک نرم افزار خط فرمان است و در مقایسه با نرم افزارهای مجازی سازی دسکتاپ مانند VMware یا VirtualBox به دلیل تعداد زیادی گزینه که ماشین های مجازی را می توان با آن ها پیکربندی کرد، منحنی یادگیری بالایی دارد. می‌توان آن را به صورت اختیاری با رابط‌های کاربری گرافیکی مانند QtEmu در ویندوز یا لینوکس و UTM در macOS استفاده کرد. این آموزش دستورالعمل های خط فرمان را برای کار با QEMU ارائه می دهد.

 

نصب QEMU

برای نصب QEMU از Homebrew’s brew install استفاده کنید:

$ brew install qemu

این مجموعه کل ابزارها و دستورات QEMU را فراهم می کند، از جمله qemu-img، که برای تبدیل تصاویر ماشین مجازی در خط فرمان استفاده می شود. با اجرای دستور qemu-img مطمئن شوید که به دستور qemu-img دسترسی دارید:

$ which qemu-img

خروجی:

/usr/local/bin/qemu-img

 

توجه: اگر ترجیح می‌دهید بدون WSL2 روی ویندوز کار کنید، می‌توانید QEMU را با استفاده از نصب‌کننده اصلی آن روی ویندوز نصب کنید.

QEMU بیشتر قابلیت هایی را که در این آموزش به آن نیاز دارید ارائه می دهد. همچنین می توانید VirtualBox، یکی دیگر از بسته های مجازی سازی محبوب را نصب کنید.

VirtualBox

VirtualBox یک نرم افزار مجازی سازی متن باز است که توسط Oracle ارائه شده است. این سیستم عامل از تمام سیستم عامل های x86 (کامپیوترهای ویندوز، لینوکس و macOS که قبل از سال 2020 ساخته شده اند) پشتیبانی می کند. از معماری‌های شبیه‌سازی یا غیرx86 پشتیبانی نمی‌کند و در درجه اول برای اجرای لینوکس تحت ویندوز و بالعکس مفید است.

با این حال، استفاده از آن ساده‌تر از QEMU است، تنظیمات پیش‌فرض کاملاً سازگاری را ارائه می‌کند و به طور پیش‌فرض دارای یک رابط دسکتاپ است.

VitrtualBox به اندازه QEMU عملکرد خط فرمان را ارائه نمی دهد، بنابراین اغلب با نرم افزار ارکستراسیون اختصاصی مانند Vagrant جفت می شود تا پیکربندی های ماشین مجازی را خودکار و بازتولید کند. با این حال، شامل ابزار خط فرمان VBoxManage است که می تواند برای دستکاری برخی از تصاویر ماشین مجازی استفاده شود.

 

 

نصب VirtualBox

برای نصب VirtualBox در macOS، از brew install با پرچم –cask استفاده کنید، زیرا VirtualBox به عنوان یک بسته نرم افزاری کامل توزیع شده است که Homebrew آن را cask می نامد:

$ brew install --cask virtualbox

جهت نصب VirtualBox در توزیع‌های لینوکس اوبونتو یا دبیان (از جمله تحت WSL2)، ابتدا از آپدیت apt برای به‌روزرسانی منابع بسته خود استفاده کنید، سپس از apt install برای نصب استفاده کنید:

$ sudo apt update
$ sudo apt install virtualbox

 

شما می توانید برای نصب VirtualBox در ویندوز بدون WSL2 به صفحه دانلود آن مراجعه کنید.

پس از نصب VirtualBox، با اجرای  which vboxmanage، بررسی کنید که به دستور vboxmanage دسترسی دارید:

$ which vboxmanage

خروجی:

​​/usr/local/bin/vboxmanage

 

جایگزین هایی برای QEMU و VirtualBox  هم جهت مجازی سازی وجود دارد. با این حال، بیشتر این پلتفرم‌ها (مانند Hyper-V در ویندوز) یا برای استفاده در مقیاس بزرگ (مانند VMware) طراحی شده‌اند. در این آموزش مستقیماً به آنها پرداخته نمی شود، اما در مراحل زیر فرمت تصویر آنها را تبدیل خواهید کرد.

 

ایجاد تصویر ماشین مجازی با استفاده از QEMU

برای نشان دادن تبدیل تصاویر ماشین مجازی، می توانید با ایجاد یک تصویر با QEMU شروع کنید. اگر از قبل تصویری برای تبدیل دارید، می توانید از این بخش رد شوید.

برای ایجاد تصویر در قالب پیش‌فرض qcow2 QEMU از دستور ایجاد qemu-img با پرچم -f qcow2 استفاده کنید:

$ qemu-img create -f qcow2 ubuntu-desktop-22.04.qcow2 10G

در این مرحله، یک تصویر خالی ماشین مجازی ایجاد کرده اید. با وجود اینکه شما آن را ubuntu-desktop-22.04.qcow2 نامیدید و ظرفیت 10G را ارائه کردید، در این مرحله نه اوبونتو 22.04 نصب شده است و نه 10 گیگابایت بزرگ است.

بنابراین خروجی را به این شکل مشاهده می کنید:

Formatting 'ubuntu-desktop-22.04.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=10737418240 lazy_refcounts=off refcount_bits=16

تصاویر QEMU همیشه کمترین فضای ممکن را روی دیسک شما اشغال می کنند، در حالی که حداکثر ظرفیت اعلام شده خود را به هر نرم افزاری که در ماشین مجازی اجرا می شود منعکس می کند.

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

یک مرحله معمولی بعدی نصب اوبونتو 22.04 بر روی ماشین مجازی با استفاده از ISO 22.04 اوبونتو است. با این حال، می توانید این مرحله را برای این آموزش رد کنید، زیرا در واقع مستقیماً با این ماشین مجازی کار نخواهید کرد.

ISO نوع دیگری از فرمت تصویر دیسک است که معمولاً فقط خواندنی است و از نظر تاریخی به جای تصویر یک هارد دیسک قابل نوشتن بر روی رسانه نصب CD و DVD نوشته شده است.

نرم افزارهای دیگری مانند mkisofs و dd برای دستکاری تصاویر ISO وجود دارد. برای کسب اطلاعات بیشتر در مورد نصب لینوکس با استفاده از QEMU، به مستندات QEMU مراجعه کنید.

 

تبدیل تصویر QEMU به فرمت های دیگر ماشین مجازی

هنگامی که یک تصویر VM ایجاد کردید، می توانید از تبدیل qemu-img برای تبدیل آن به فرمت های دیگر استفاده کنید. vdi فرمت تصویر پیش فرض VirtualBox است. به‌طور پیش‌فرض، اینکار تصویر اصلی VM را پاک نمی‌کند، فقط یک تصویر جدید ایجاد می‌کند:

$ qemu-img convert -f qcow2 ubuntu-desktop-22.04.qcow2 -O vdi ubuntu-desktop-22.04.vdi

پرچم -f برای تعیین فرمت ورودی و نام فایل ورودی استفاده می شود.

پرچم -O برای تعیین فرمت خروجی و نام فایل خروجی استفاده می شود. همچنین می توانید پرچم -p را برای نشان دادن نوار پیشرفت اضافه کنید، که هنگام تبدیل تصاویر بسیار بزرگ مفید است. تصویری که در مرحله آخر ایجاد کردید بلافاصله تبدیل می شود، زیرا هنوز محتوایی ندارد.

می توانید تأیید کنید که ubuntu-desktop-22.04.vdi را با استفاده از ls ایجاد کرده اید:

$ ls ubuntu-desktop-22.04.vdi

خروجی:

ubuntu-desktop-22.04.vdi

 

فرمت های رایج دیگر عبارتند از vmdk که عمدتاً توسط VMware استفاده می شود و vhd که عمدتاً توسط Hyper-V مایکروسافت استفاده می شود. همچنین می‌توانید در صورت نیاز به نرم‌افزار، یک تصویر خام ایجاد کنید.

 

 

تبدیل سایر فرمت های ماشین مجازی به QEMU

اگر تصویری با فرمت vdi دارید، می توانید از دستور vboxmanage ارائه شده توسط VirtualBox برای تبدیل آن استفاده کنید:

$ vboxmanage clonemedium ubuntu-desktop-22.04.vdi ubuntu-desktop-22.04.img --format raw

خروجی:

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'raw'. UUID: 0501e707-c94e-4103-9069-d7b64a933d78

 

توجه داشته باشید که این کار به طور خودکار تصویر ایجاد شده را با پیکربندی VirtualBox محلی شما ثبت می کند، که ممکن است در صورت تلاش برای ایجاد کپی های گذرا ناخوشایند باشد. در صورتی که سهواً موارد تکراری را ثبت کنید، ممکن است مجبور شوید هر ورودی جدید را به صورت دستی از رابط VirtualBox حذف کنید.

تصاویر خام ماشین مجازی به هیچ وجه فشرده نمی شوند، بنابراین این دستور در واقع یک فایل کامل 10 گیگابایتی را برخلاف قبل ایجاد می کند. می‌توانید با معکوس کردن نحو از مرحله آخر، آن را به فرمت qcow2 برای استفاده با QEMU تبدیل کنید:

$ qemu-img convert -f raw ubuntu-desktop-22.04.img -O qcow2 ubuntu-desktop-22.04-new.qcow2

اکنون می توانید تصویر خام را برای بازیابی فضای دیسک حذف کنید:

$ rm ubuntu-desktop-22.04.img

در نهایت، می‌توانید از دستورات qemu-img check و qemu-img info برای خروجی برخی متادیتا از تصاویر ماشین مجازی خود استفاده کنید:

$ qemu-img check ubuntu-desktop-22.04.qcow2

خروجی:

No errors were found on the image.
Image end offset: 262144

 

qemu-img info ubuntu-desktop-22.04.qcow2

خروجی:

image: ubuntu-desktop-22.04.qcow2
file format: qcow2
virtual size: 10 GiB (10737418240 bytes)
disk size: 196 KiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false

 

جمع بندی

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

 

10رای - امتیاز 5 ممنون از امتیازی که دادید..!

دسته بندی شده در: