در این لحظه دیگر تمام اطلاعات مورد نیاز جهت ایجاد یک iSCSI Storage Repository فراهم است و الان زمان آن است که توسط دستور زیر اقدام به اضافه کردن SR به XenServer مورد نظر خود نماییم.
# xe sr-create name-label="Tecmint iSCSI Storage" type=lvmoiscsi content-type=user device-config:target=X.X.X.X device-config:port=3260 device-config:targetIQN=iqn.2001-05.com.equallogic:0-8a0906-0d9a4ab02-46600020343560ef-xenct-xen2 device-config:chapuser="tecmint" device-config:chappassword="tecmint_chap" device-config:SCSIid=36090a028b04a9a0def60353420006046
در صورتیکه همه چیز به درستی کار کند و سیستم قادر به اتصال به دستگاه iSCSI باشد، میبایست UUIDی را برای Storage Repository اضافه شده نمایش دهد. برای مثال:
bea6caa4-ecab-8509-33a4-2cda2599fb75
توجه داشته باشید که UUID فوق یک علامت مهم است! چرا که در این مرحله میتوانیم با استفاده از دستور زیر اقدام به بررسی شرایط کار خود تا به این مرحله نماییم:
# xe sr-list name-label="Tecmint iSCSI Storage"
خروجی دستور فوق همانند شکل 70 خواهد بود. همانطور که در این خروجی مشاهده میکنید، UUID نمایش داده شده با UUID که پیشتر بدست آوردیم یکی است. بنابراین این موضوع اثبات میکند که XenServer ما توانسته بصورت موفقیتآمیز به دستگاه Dell iSCSI متصل شده و آماده ذخیرهسازی VDI فایلهای ماشینهای مجازی است.
# xe sr-create name-label="Tecmint iSCSI Storage" type=lvmoiscsi content-type=user device-config:target=X.X.X.X device-config:port=3260 device-config:targetIQN=iqn.2001-05.com.equallogic:0-8a0906-0d9a4ab02-46600020343560ef-xenct-xen2 device-config:chapuser="tecmint" device-config:chappassword="tecmint_chap" device-config:SCSIid=36090a028b04a9a0def60353420006046
در صورتیکه همه چیز به درستی کار کند و سیستم قادر به اتصال به دستگاه iSCSI باشد، میبایست UUIDی را برای Storage Repository اضافه شده نمایش دهد. برای مثال:
bea6caa4-ecab-8509-33a4-2cda2599fb75
توجه داشته باشید که UUID فوق یک علامت مهم است! چرا که در این مرحله میتوانیم با استفاده از دستور زیر اقدام به بررسی شرایط کار خود تا به این مرحله نماییم:
# xe sr-list name-label="Tecmint iSCSI Storage"
خروجی دستور فوق همانند شکل 70 خواهد بود. همانطور که در این خروجی مشاهده میکنید، UUID نمایش داده شده با UUID که پیشتر بدست آوردیم یکی است. بنابراین این موضوع اثبات میکند که XenServer ما توانسته بصورت موفقیتآمیز به دستگاه Dell iSCSI متصل شده و آماده ذخیرهسازی VDI فایلهای ماشینهای مجازی است.
ایجاد ISO Storage Repository
در این بخش میخواهیم درباره پروسه ایجاد یک ISO library صحبت کنیم. ISO فایلها معمولاً imageهایی از CDهای نصب هستند. بنابراین با داشتن یک Storage Repository خاص ایجاد شده از ISO فایلها، نصب ماشینهای مجازی جدید میتواند بسیار سریعتر صورت گیرد. در نتیجه زمانیکه یک administrator قصد دارد یک ماشین مجازی جدید ایجاد کند، میتواند به سادگی با انتخاب یکی از این فایلهای ISO موجود در ISO library، بسیار سریعتر از آنکه بخواهد یک CD فیزیکی نصب را در یک XenServer قرار دهد، اقدام به ایجاد یک ماشین مجازی کند.
اولین گام جمع کردن credentialها و اطلاعات پیکربندی ضروری برای SAMBA ISO library است. نام کاربری، کلمه عبور و اطلاعات اتصالی همه از طریق دستور ساده xe زیر که جهت اتصال SAMBA library به XenServer استفاده میشود، در دسترس هستند:
# xe-mount-iso-sr //<servername>/ISO -o username=<user>,password=<password>
اجرای دستور فوق باعث نمایش هیچگونه خروجیای بر روی screen شما نخواهد شد. بنابراین جهت اطمینان از اینکه SAMBA ISO به اشتراک گذاشته شده mount شده است یا خیر میتوانیم از دستور زیر استفاده کنیم:
# xe sr-list
خروجی دستور فوق بصورت زیر خواهد بود.
در این بخش میخواهیم درباره پروسه ایجاد یک ISO library صحبت کنیم. ISO فایلها معمولاً imageهایی از CDهای نصب هستند. بنابراین با داشتن یک Storage Repository خاص ایجاد شده از ISO فایلها، نصب ماشینهای مجازی جدید میتواند بسیار سریعتر صورت گیرد. در نتیجه زمانیکه یک administrator قصد دارد یک ماشین مجازی جدید ایجاد کند، میتواند به سادگی با انتخاب یکی از این فایلهای ISO موجود در ISO library، بسیار سریعتر از آنکه بخواهد یک CD فیزیکی نصب را در یک XenServer قرار دهد، اقدام به ایجاد یک ماشین مجازی کند.
اولین گام جمع کردن credentialها و اطلاعات پیکربندی ضروری برای SAMBA ISO library است. نام کاربری، کلمه عبور و اطلاعات اتصالی همه از طریق دستور ساده xe زیر که جهت اتصال SAMBA library به XenServer استفاده میشود، در دسترس هستند:
# xe-mount-iso-sr //<servername>/ISO -o username=<user>,password=<password>
اجرای دستور فوق باعث نمایش هیچگونه خروجیای بر روی screen شما نخواهد شد. بنابراین جهت اطمینان از اینکه SAMBA ISO به اشتراک گذاشته شده mount شده است یا خیر میتوانیم از دستور زیر استفاده کنیم:
# xe sr-list
خروجی دستور فوق بصورت زیر خواهد بود.
با مشاهده خروجی شکل فوق اطمینان حاصل میکنیم که XenServer ما با استفاده از یک iSCSI Storage Repository به عنوان یک CIFS ISO library جهت ذخیرهسازی فایلهای ISO نصب برای ماشینهای مجازی به درستی پیکربندی شده است.
چطور ماشینهای مجازی را در XenServer ایجاد و نصب کنیم؟
در این بخش قصد داریم به نحوه ایجاد و نصب guestها یا ماشینهای مجازی و نصب یک سیستمعامل بر روی XenServer بپردازیم. اما پیش از آن مطمئن شوید که مراحل ایجاد ISO Repository را پیشتر به درستی انجام دادهاید.
XenServer با یکسری از templateها که جهت provision کردن سریع یک guest مجازی استفاده میشوند، همراه است. این templateها گزینههایی را برای انتخاب سیستمعامل فراهم میکنند. این گزینههای شامل چیزهایی از جمله: فضای دیسک سخت، معماری CPU و مقدار حافظه RAM و... هستند.
این گزینهها میتوانند بعداً نیز بصورت دستی تغییر داده شوند اما در اینجا یک template ساده جهت نشان دادن مصرف این منابع در نظر گرفته شده است. جهت دسترسی به لیست templateهای موجود میتوانید از دستور xe به شکل زیر و ارسال آرگومانهای مختلف به آن از طریق خط فرمان سیستم XenServer استفاده کنید که در خروجی آن templateهای موجود نمایش داده خواهد شد.
# xe template-list
توجه داشته باشید که خروجی دستور فوق بسیار زیاد است، بنابراین به منظور سادهتر کردن خواندن خروجی دستور فوق را به دستور less، ارسال (pipe) خواهیم کرد:
# xe template-list | less
به این طریق شما میتوانید تجزیه آسانتری بر روی templateهای موجود داشته باشید و به اطلاعاتی همچون UUID آنها که مورد نیاز است برسید.
چطور ماشینهای مجازی را در XenServer ایجاد و نصب کنیم؟
در این بخش قصد داریم به نحوه ایجاد و نصب guestها یا ماشینهای مجازی و نصب یک سیستمعامل بر روی XenServer بپردازیم. اما پیش از آن مطمئن شوید که مراحل ایجاد ISO Repository را پیشتر به درستی انجام دادهاید.
XenServer با یکسری از templateها که جهت provision کردن سریع یک guest مجازی استفاده میشوند، همراه است. این templateها گزینههایی را برای انتخاب سیستمعامل فراهم میکنند. این گزینههای شامل چیزهایی از جمله: فضای دیسک سخت، معماری CPU و مقدار حافظه RAM و... هستند.
این گزینهها میتوانند بعداً نیز بصورت دستی تغییر داده شوند اما در اینجا یک template ساده جهت نشان دادن مصرف این منابع در نظر گرفته شده است. جهت دسترسی به لیست templateهای موجود میتوانید از دستور xe به شکل زیر و ارسال آرگومانهای مختلف به آن از طریق خط فرمان سیستم XenServer استفاده کنید که در خروجی آن templateهای موجود نمایش داده خواهد شد.
# xe template-list
توجه داشته باشید که خروجی دستور فوق بسیار زیاد است، بنابراین به منظور سادهتر کردن خواندن خروجی دستور فوق را به دستور less، ارسال (pipe) خواهیم کرد:
# xe template-list | less
به این طریق شما میتوانید تجزیه آسانتری بر روی templateهای موجود داشته باشید و به اطلاعاتی همچون UUID آنها که مورد نیاز است برسید.
با این UUID همه اطلاعات اولیه جهت نصب guest مجازی را در اختیار داریم. بنابراین با استفاده از دستور زیر اقدام به provision کردن guest جدید (به عنوان مثال در اینجا لینوکس توزیع Debian 7.0 نسخه Wheezy 7.0 (64-bit)) خواهیم پرداخت:
# xe vm-install template=”Debian Wheezy 7.0 (64-bit)” new-name-label="TecmintVM" sr-uuid=bea6caa4-ecab-8509-33a4-2cda2599fb75
# xe vm-install template=”Debian Wheezy 7.0 (64-bit)” new-name-label="TecmintVM" sr-uuid=bea6caa4-ecab-8509-33a4-2cda2599fb75
توجه کنید که UUID مشخص شده در شکل فوق، UUID ماشین مجازی provision شده است. اما دو کاری که پس از ایجاد ماشین مجازی میبایست انجام دهیم: اول فراهم کردن یک name-label جدید برای VDI ایجاد شده و دوم تغییر هر یک از مشخصههای سختافزاری پیشفرض provision شده توسط template است.
اما شاید این سوال برای شما پیش آید که چرا نامگذاری VDI جدید ایجاد شده مهم است؟ در پاسخ به این پرسش میبایست اشاره کنیم که سیستم بعد از اینکه ماشین مجازی را مورد نظر را ایجاد کرد، مقدار "0" را بصورت اتوماتیک به آن تخصیص میدهد. با استفاده از دستورات زیر میتوانید این مورد را بررسی نمایید:
# xe vbd-list vm-name-label=TecmintVM – Used to get the VDI UUID
# xe vdi-list vbd-uuids=2eac0d98-485a-7c22-216c-caa920b10ea9 [Used to show naming issue]
اما شاید این سوال برای شما پیش آید که چرا نامگذاری VDI جدید ایجاد شده مهم است؟ در پاسخ به این پرسش میبایست اشاره کنیم که سیستم بعد از اینکه ماشین مجازی را مورد نظر را ایجاد کرد، مقدار "0" را بصورت اتوماتیک به آن تخصیص میدهد. با استفاده از دستورات زیر میتوانید این مورد را بررسی نمایید:
# xe vbd-list vm-name-label=TecmintVM – Used to get the VDI UUID
# xe vdi-list vbd-uuids=2eac0d98-485a-7c22-216c-caa920b10ea9 [Used to show naming issue]
همینطور میتوانید با استفاده از دستور زیر نیز این موضوع را بررسی نمایید:
# xe vm-disk-list vm=TecmintVM
# xe vm-disk-list vm=TecmintVM
همانطور که در خروجی شکل فوق مشاهده میکنید، بخش مشخص شده نگرانی ماست!. شاید این موضوع برای خیلی از افراد کوچک به نظر برسد اما این روند نامگذاری برای 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 مورد نظر همیشه رزرو خواهد شد.