همانطور که در خروجی شکل فوق مشاهده میکنید، بخش مشخص شده نگرانی ماست!. شاید این موضوع برای خیلی از افراد کوچک به نظر برسد اما این روند نامگذاری برای VDI خاص مورد نظر ما مناسب نیست، بنابراین میبایست توسط دستورات زیر اقدام به rename کردن آن نماییم:
# xe vdi-param-set uuid=90611915-fb7e-485b-a0a8-31c84a59b9d8 name-label="TecmintVM Disk 0 VDI"
# xe vm-disk-list vm=TecmintVM
# xe vdi-param-set uuid=90611915-fb7e-485b-a0a8-31c84a59b9d8 name-label="TecmintVM Disk 0 VDI"
# xe vm-disk-list vm=TecmintVM
ممکن این موضوع بی اهمیت به نظر برسد، اما از روی تجربه میتوان گفت که این یک موضوع جدی است و از یکسری از مشکلات زمانیکه یک Storage Repository را از یک XenServer، جدا میکنید (detaching) و مجدداً سعی در الحاق (attach) آن به XenServer دیگری را دارید، جلوگیری خواهد کرد. اما چنانچه از name-label مناسبی برای VDI خود استفاده کرده باشید، به راحتی میتوانید SR خود را از یک XenServer، detach کرده و به XenServer دیگری attach نمایید بدون اینکه هیچگونه مشکل mappingی پیش آید.
اما همانطور که پیشتر اشاره شد، گام بعدی در پس از ایجاد guest مجازی فراهم کردن منابع بیشتر برای آن است. در این سناریو guest مجازی ما با حافظهای در حدود 256 MiB (Mebibytes)، ایجاد و provision شده است. برای اکثر guestها این حافظه کافی نیست، بنابراین جهت اینکه مشاهده کنیم که guestمان از چه مقدار حافظه استفاده میکند، از دستور زیر میتوان استفاده نمود:
# xe vm-param-list uuid=6eab5bdd-c277-e55d-0363-dcfd186c8e8e | grep -i memory
اما همانطور که پیشتر اشاره شد، گام بعدی در پس از ایجاد guest مجازی فراهم کردن منابع بیشتر برای آن است. در این سناریو guest مجازی ما با حافظهای در حدود 256 MiB (Mebibytes)، ایجاد و provision شده است. برای اکثر guestها این حافظه کافی نیست، بنابراین جهت اینکه مشاهده کنیم که guestمان از چه مقدار حافظه استفاده میکند، از دستور زیر میتوان استفاده نمود:
# xe vm-param-list uuid=6eab5bdd-c277-e55d-0363-dcfd186c8e8e | grep -i memory
همانطور که در خروجی شکل فوق مشاهده میکنید، میزان حافظه برای این guest حدود 256 MiB است که شاید برای این سناریو مناسب باشد اما تجربه نشان داده که برای کارهای سنگین به هیچ وجه کافی نیست. حال جهت افزایش حافظه در دسترس guest مورد نظر از دستور زیر استفاده میکنیم. توجه داشته باشید که جهت افزایش یا کاهش میزان حافظه RAM توسط دستور xe میبایست guest مورد نظر را power off کنیم. در اینجا من حافظه ماشین مجازی خود را به 2GiB (Gibibytes) افزایش میدهم:
# xe vm-memory-limits-set dynamic-max=2147483648 dynamic-min=2147483648 static-max=2147483648 static-min=2147483648 name-label=TecmintVM
توجه: در واقع توسط دستور فوق 2GiB از حافظه RAM برای guest مورد نظر همیشه رزرو خواهد شد.
# xe vm-memory-limits-set dynamic-max=2147483648 dynamic-min=2147483648 static-max=2147483648 static-min=2147483648 name-label=TecmintVM
توجه: در واقع توسط دستور فوق 2GiB از حافظه RAM برای guest مورد نظر همیشه رزرو خواهد شد.
حال guest مورد نظر آماده است که بر روی آن یک سیستمعامل نصب نماییم. اما همانطور که پیشتر در بخش Storage Repository یک Samba server جهت ذخیره کردن فایلهای ISO installer به XenServer خود اضافه کردیم، در اینجا میتوانیم توسط دستور زیر این موضوع را تأیید کنیم:
# xe sr-list name-label=Remote\ ISO\ Library\ on:\ //<servername>/ISO
فقط توجه داشته باشید که در دستور فوق عبارت <servername> را با آدرس صحیح Samba server خود جایگزین کردهاید.
# xe sr-list name-label=Remote\ ISO\ Library\ on:\ //<servername>/ISO
فقط توجه داشته باشید که در دستور فوق عبارت <servername> را با آدرس صحیح Samba server خود جایگزین کردهاید.
حال میبایست یک CD-ROM مجازی به guest مزبور جهت boot شدن فایل ISO به آن اضافه شود. برای این منظور، فرض کنید که Debian Net Installer ISO بر روی ISO storage repository موجود است. بنابراین:
# xe cd-list | grep debian
# xe cd-list | grep debian
سپس جهت اضافه کردن Guest ISO به XenServer داریم:
# xe vm-cd-add vm=TecmintVM cd-name=debian-8-netinst.iso device=3
# xe vbd-list vm-name-label=TecmintVM userdevice=3
# xe vm-cd-add vm=TecmintVM cd-name=debian-8-netinst.iso device=3
# xe vbd-list vm-name-label=TecmintVM userdevice=3
در واقع دستور اول فوق نامها را براساس Debian ISO لیست کرده و دستور دوم نیز اقدام به اضافه کردن یک دستگاه virtual CD-ROM
به guest مزبور (با نام TecmintVM) و اختصاص آن به device ID شماره 3 میکند. دستور سوم نیز اقدام به تعیین UUID برای CD-ROM جدید اضافه شده جهت تنظیم دستگاه به منظور boot کردن Debian ISO مورد نظر میکند.
گام بعدی ساخت CD-ROM bootable جهت اینکه به guest بگوییم تا سیستمعامل را از روی CD-ROM مربوطه نصب کند، میباشد. برای این منظور:
# xe vbd-param-set uuid=3836851f-928e-599f-dc3b-3d8d8879dd18 bootable=true
# xe vm-param-set uuid=6eab5bdd-c277-e55d-0363-dcfd186c8e8e other-config:install-repository=cdrom
توجه نمایید که اولین دستور فوق باعث تنظیم CD-ROM جهت boot شدن اوسط UUIDی که پیشتر در شکل فوق بدست آمد خواهد شد. دومین دستور نیز باعث راهنمایی guest مجازی جهت استفاده از CD-ROM به عنوان متدی برای نصب سیستمعامل عمل میکند.
به guest مزبور (با نام TecmintVM) و اختصاص آن به device ID شماره 3 میکند. دستور سوم نیز اقدام به تعیین UUID برای CD-ROM جدید اضافه شده جهت تنظیم دستگاه به منظور boot کردن Debian ISO مورد نظر میکند.
گام بعدی ساخت CD-ROM bootable جهت اینکه به guest بگوییم تا سیستمعامل را از روی CD-ROM مربوطه نصب کند، میباشد. برای این منظور:
# xe vbd-param-set uuid=3836851f-928e-599f-dc3b-3d8d8879dd18 bootable=true
# xe vm-param-set uuid=6eab5bdd-c277-e55d-0363-dcfd186c8e8e other-config:install-repository=cdrom
توجه نمایید که اولین دستور فوق باعث تنظیم CD-ROM جهت boot شدن اوسط UUIDی که پیشتر در شکل فوق بدست آمد خواهد شد. دومین دستور نیز باعث راهنمایی guest مجازی جهت استفاده از CD-ROM به عنوان متدی برای نصب سیستمعامل عمل میکند.
در نهایت آخرین گام در تنظیمات guest، attach کردن یک اینترفیس شبکه مجازی یا اصطلاحاً VIF به آن خواهد بود. این موضوع برای متد نصب از طریق Debian Network installer و pull کردن packageها از repositoryهای Debian بسیار مهم است.
همانطور که پیشتر در بخش XenServer Networking اقدام به ایجاد یک VLAN خاص با عنوان VLAN 10 برای این guest مجازی کردیم، در اینجا قصد داریم از آن استفاده کنیم.
# xe network-list name-description="Tecmint test VLAN 10"
# xe vif-create vm-uuid=6eab5bdd-c277-e55d-0363-dcfd186c8e8e network-uuid=cfe987f0-b37c-dbd7-39be-36e7bfd94cef device=0
اولین دستور فوق جهت بدست آوردن UUID شبکه یا network ایجاد شده برای این guest خواهد کرد. دستور بعدی نیز جهت ایجاد یک network adapter برای guest مورد نظر و attach کردن network adapter ایجاد شده به network مزبور میکند.
همانطور که پیشتر در بخش XenServer Networking اقدام به ایجاد یک VLAN خاص با عنوان VLAN 10 برای این guest مجازی کردیم، در اینجا قصد داریم از آن استفاده کنیم.
# xe network-list name-description="Tecmint test VLAN 10"
# xe vif-create vm-uuid=6eab5bdd-c277-e55d-0363-dcfd186c8e8e network-uuid=cfe987f0-b37c-dbd7-39be-36e7bfd94cef device=0
اولین دستور فوق جهت بدست آوردن UUID شبکه یا network ایجاد شده برای این guest خواهد کرد. دستور بعدی نیز جهت ایجاد یک network adapter برای guest مورد نظر و attach کردن network adapter ایجاد شده به network مزبور میکند.
تبریک میگم! در این لحظه ماشین مجازی شما آماده boot و نصب شدن است! بنابراین جهت start کردن guest مزبور میبایست از دستور زیر استفاده نمایید:
# xe vm-start name-label=TecmintVM
اگر پس از اجرای دستور فوق هیچگونه errorی را در ترمینال لینوکس خود مشاهده نکردید، به این معنی است که guest شما با موفقیت start شده است. همچنین دستور زیر میتواند start شدن صحیح و مناسب یک guest را تأیید کند:
# xe vm-list name-label=TecmintVM
# xe vm-start name-label=TecmintVM
اگر پس از اجرای دستور فوق هیچگونه errorی را در ترمینال لینوکس خود مشاهده نکردید، به این معنی است که guest شما با موفقیت start شده است. همچنین دستور زیر میتواند start شدن صحیح و مناسب یک guest را تأیید کند:
# xe vm-list name-label=TecmintVM
حال سوال بزرگی که مطرح میشود این است که چگونه میتوان به installer یا نصاب ماشین مجازی دسترسی پیدا کرد؟ راهکار شرکت Citrix برای این منظور استفاده از نرمافزار XenCenter است. اما موضوع اینجاست که XenCenter را که نمیتوان بر روی لینوکس اجرا کرد، چرا که فقط بر روی سیستمعامل ویندوز قابل اجراست و با فرض اینکه در حال حاضر دسترسی به هیچگونه ماشینی با سیستمعامل لینوکس نداریم، پس چه باید کرد؟
در پاسخ به سوال فوق متدی که میتوان جهت حل این مشکل مورد استفاده قرار داد، استفاده از یک SSH tunnel از کامپیوتر لینوکسی به هاست XenServer و سپس port forwarding به VNC connection از طریق این tunnel میباشد. این متد بسیار هوشمند است و بطور شگفتانگیزی کار میکند، اما نباید تصور کرد که از طریق این متد کاربر قادر خواهد بود با به XenServer توسط SSH دسترسی پیدا کند.
اما جهت ایجاد SSH tunnel گام اول تعیین domain number مربوط به guest مورد نظر روی XenServer است. برای این منظور میبایست از چندین دستور استفاده کرد:
# xe vm-list params=dom-id name-label=TecmintVM
# xenstore-read /local/domain/1/console/vnc-port
توجه کنید که ترتیب دستورات فوق بسیار مهم است. دستور اول یک شماره که برای دستور دوم مورد نیاز است را بر میگرداند (در اینجا شماره 1).
در پاسخ به سوال فوق متدی که میتوان جهت حل این مشکل مورد استفاده قرار داد، استفاده از یک SSH tunnel از کامپیوتر لینوکسی به هاست XenServer و سپس port forwarding به VNC connection از طریق این tunnel میباشد. این متد بسیار هوشمند است و بطور شگفتانگیزی کار میکند، اما نباید تصور کرد که از طریق این متد کاربر قادر خواهد بود با به XenServer توسط SSH دسترسی پیدا کند.
اما جهت ایجاد SSH tunnel گام اول تعیین domain number مربوط به guest مورد نظر روی XenServer است. برای این منظور میبایست از چندین دستور استفاده کرد:
# xe vm-list params=dom-id name-label=TecmintVM
# xenstore-read /local/domain/1/console/vnc-port
توجه کنید که ترتیب دستورات فوق بسیار مهم است. دستور اول یک شماره که برای دستور دوم مورد نیاز است را بر میگرداند (در اینجا شماره 1).