حال 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).
اولین عدد که در اینجا 1 میباشد، state یا وضعیت domain ID مربوط به guest میباشد و به این معناست که guest در حال اجرا (running) است. دستور بعدی نیازمند عددی است که تعیین کننده VNC port برای session کنسول guest است. خروجی دستور دوم VPN port مورد نظر را فراهم میکند که میتواند جهت اتصال به خروجی video مربوط به guest مزبور مورد استفاده قرار گیرد.
حال با دسترسی به اطلاعات فوق زمان سوئیچ کردن به سیستم لینوکس راهدور و اتصال به XenServer جهت مشاهده session کنسول guestمان فرا رسیده است. برای این منظور، یک SSH tunnel میبایست ایجاد شود و port forwarding نیز به منظور اتصال مستقیم به local VNC connection از طریق SSH tunnel برقرار شود. به عنوان مثال در این سناریو من از لینوکس Mint 17.2 به عنوان Linux station خود برای برقرار این ارتباط استفاده کردهام، شما نیز میتوانید به طریق مشابه بر روی سایر توزیعهای لینوکسی این کار را انجام دهید.
اما اولین گام برای اطمینان از اینکه OpenSSH و xtightvncviewer بر روی Linux host نصب شدهاند یا خیر، این است که در Linux station خود (در اینجا Linux Mint 17.2) از دستور زیر استفاده نماییم:
$ sudo apt-get install openssh-client xtightvncviewer
دستور فوق باعث نصب utilityهای مزبور بر روی Linux station مد نظر خواهد شد. در گام بعد جهت ایجاد یک SSH tunnel به هاست XenServer خود و نصب port forwarding جهت تعیین VNC port روی هاست XenServer که پیشتر پورت 5902 مشخص شده است، بصورت زیر عمل میکنیم:
# ssh -L <any_port>:localhost:<VM_Port_Above> root@<server> -N
# ssh -L 5902:localhost:5902 root@<servername> -N
توجه نمایید که option یا گزینه -L در دستورات فوق میگوید که SSH از port forward استفاده کند. اولین پورت میتواند هر پورتی بیشتر از 1024 باشد به شرط اینکه روی ماشین Linux Mint استفاده نشده باشد. عبارت 'localhost:5902' مشخص میکند که ترافیک میبایست به localhost راهدور بر روی پورت 5902، forward شود که در این سناریو پورت VNC مربوط به XenServer ماشین مجازی با نام TecmintVM است.
عبارت 'root@<server>' نیز credential مربوط به login پروتکل SSH در هاست XenServer میباشد. در نهایت نیز سوئیچ -N به SSH میگوید که به سادگی یک port forwarding connection باز کند. با استفاده از دستور lsof نیز میتوانید خروجی tunnel ایجاد شده را مشاهده نمایید:
$ sudo lsof -i | grep 5902
حال با دسترسی به اطلاعات فوق زمان سوئیچ کردن به سیستم لینوکس راهدور و اتصال به XenServer جهت مشاهده session کنسول guestمان فرا رسیده است. برای این منظور، یک SSH tunnel میبایست ایجاد شود و port forwarding نیز به منظور اتصال مستقیم به local VNC connection از طریق SSH tunnel برقرار شود. به عنوان مثال در این سناریو من از لینوکس Mint 17.2 به عنوان Linux station خود برای برقرار این ارتباط استفاده کردهام، شما نیز میتوانید به طریق مشابه بر روی سایر توزیعهای لینوکسی این کار را انجام دهید.
اما اولین گام برای اطمینان از اینکه OpenSSH و xtightvncviewer بر روی Linux host نصب شدهاند یا خیر، این است که در Linux station خود (در اینجا Linux Mint 17.2) از دستور زیر استفاده نماییم:
$ sudo apt-get install openssh-client xtightvncviewer
دستور فوق باعث نصب utilityهای مزبور بر روی Linux station مد نظر خواهد شد. در گام بعد جهت ایجاد یک SSH tunnel به هاست XenServer خود و نصب port forwarding جهت تعیین VNC port روی هاست XenServer که پیشتر پورت 5902 مشخص شده است، بصورت زیر عمل میکنیم:
# ssh -L <any_port>:localhost:<VM_Port_Above> root@<server> -N
# ssh -L 5902:localhost:5902 root@<servername> -N
توجه نمایید که option یا گزینه -L در دستورات فوق میگوید که SSH از port forward استفاده کند. اولین پورت میتواند هر پورتی بیشتر از 1024 باشد به شرط اینکه روی ماشین Linux Mint استفاده نشده باشد. عبارت 'localhost:5902' مشخص میکند که ترافیک میبایست به localhost راهدور بر روی پورت 5902، forward شود که در این سناریو پورت VNC مربوط به XenServer ماشین مجازی با نام TecmintVM است.
عبارت 'root@<server>' نیز credential مربوط به login پروتکل SSH در هاست XenServer میباشد. در نهایت نیز سوئیچ -N به SSH میگوید که به سادگی یک port forwarding connection باز کند. با استفاده از دستور lsof نیز میتوانید خروجی tunnel ایجاد شده را مشاهده نمایید:
$ sudo lsof -i | grep 5902
در اینجا tunnel مورد نظر برقرار شده و در حال گوش دادن (listening) برای connectionهاست. حال زمان آن است که یک VNC connection به guest مورد نظر بر روی XenServer باز شود. ابزار کمکی 'xvncviewer' نصب شده و SSH connection جهت forward کردن ترافیک به XenServer در حال گوش دادن بر روی 'localhost:5902' میباشد، بنابراین توسط دستور زیر میتوانیم به کنسول guestمان متصل شویم.
$ xvncviewer localhost:5902
$ xvncviewer localhost:5902
✳️ پایان Part-4. امیدوارم این بخش از آموزش مورد توجه شما قرار گرفته باشد. بخش پنجم این آموزش فردا شب ساعت 21:00 ارائه خواهد شد. با سپاس میثم ناظمی