إعداد جهاز Oracle Linux الظاهري لـ Azure
ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة
تفترض هذه المقالة أنك قمت بالفعل بتثبيت نظام تشغيل Oracle Linux على قرص ثابت ظاهري. توجد أدوات متعددة لإنشاء ملفات .vhd، على سبيل المثال حل الظاهرية، مثل Hyper-V. للحصول على الإرشادات، راجع تثبيت دور Hyper-V وتكوين جهاز ظاهري.
ملاحظات لتثبيت Oracle Linux
- راجع أيضًا ملاحظات تثبيت Linux العامة للحصول على مزيدٍ من النصائح حول إعداد Linux لـ Azure.
- Hyper-V وAzure يدعما Oracle Linux إما مع Unbreakable Enterprise Kernel (UEK) أو Kernel المتوافق مع Red Hat.
- لا يتم دعم UEK2 من Oracle على Hyper-V وAzure لأنه لا يتضمن برامج التشغيل المطلوبة.
- تنسيق VHDX غير مدعوم في Azure، إلا VHD ثابت. يمكنك تحويل القرص إلى تنسيق VHD باستخدام Hyper-V Manager أو cmdlet المسمى convert-vhd.
- يعد دعم Kernel لإدخال أنظمة ملفات UDF مطلوبًا. في التمهيد الأول على Azure، يتم تمرير تكوين التزويد إلى Linux VM عبر الوسائط بتنسيق UDF المرفقة بالضيف. يجب أن يكون عامل Azure Linux قادرًا على إدخال نظام ملفات UDF لقراءة تكوينه وتوفير الجهاز الظاهري.
- عند تثبيت نظام Linux، نوصي باستخدام الأقسام القياسية بدلا من LVM (غالبا ما يكون الافتراضي للعديد من التثبيتات). تتجنب هذه الأقسام القياسية تعارض اسم LVM مع الأجهزة الظاهرية المستنسخة، خاصة إذا كان قرص نظام التشغيل بحاجة إلى إرفاقه بجهاز ظاهري آخر لاستكشاف الأخطاء وإصلاحها. يمكن استخدام LVM أو RAID على أقراص البيانات إذا كنت تفضل ذلك.
- لا تدعم إصدارات Linux kernel الأقدم من 2.6.37 NUMA على Hyper-V بأحجام أجهزة ظاهرية أكبر. تؤثر هذه المشكلة بشكل أساسي على التوزيعات القديمة باستخدام نواة Red Hat 2.6.32 الأولية وتم إصلاحها في Oracle Linux 6.6 والإصدارات الأحدث.
- لا تقم بتكوين قسم مبادلة على قرص نظام التشغيل.
- يجب أن يكون لجميع أقراص VHD على Azure حجم ظاهري محاذاته إلى 1 ميغابايت. عند التحويل من قرص خام إلى VHD، يجب التأكد من أن حجم القرص الخام هو مضاعف 1 ميغابايت قبل التحويل. راجع ملاحظات تثبيت Linux للحصول على مزيدٍ من المعلومات.
- تأكد من تمكين المستودع
Addons
. حرر الملف/etc/yum.repos.d/public-yum-ol6.repo
(Oracle Linux 6) أو/etc/yum.repos.d/public-yum-ol7.repo
(Oracle Linux 7)، وقم بتغيير السطرenabled=0
إلىenabled=1
ضمن [ol6_addons] أو [ol7_addons] في هذا الملف.
Oracle Linux 6.X
هام
ضع في اعتبارك أن Oracle Linux 6.x هو بالفعل EOL. يحتوي الإصدار 6.10 من Oracle Linux على دعم ELS المتوفر، والذي سينتهي في 07/2024.
يجب إكمال خطوات تكوين محددة في نظام التشغيل لتشغيل الجهاز الظاهري في Azure.
في الجزء الأوسط من Hyper-V Manager، حدد الجهاز الظاهري.
انقر فوق اتصال لفتح نافذة الجهاز الظاهري.
أزّل تثبيت NetworkManager عن طريق تشغيل الأمر التالي:
sudo rpm -e --nodeps NetworkManager
إشعار
إذا لم تكن الحزمة مثبتة بالفعل، يفشل هذا الأمر مع ظهور رسالة خطأ. هذه الرسائل متوقعة.
أنشئ ملف باسم الشبكة في الدليل
/etc/sysconfig/
الذي يحتوي على النص التالي:NETWORKING=yes HOSTNAME=localhost.localdomain
أنشئ ملف باسم ifcfg-eth0 في الدليل
/etc/sysconfig/network-scripts/
الذي يحتوي على النص التالي:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
تعديل قواعد udev لتجنب إنشاء قواعد ثابتة لواجهة (واجهات) Ethernet. قد تتسبب هذه القواعد في حدوث مشكلات عند استنساخ جهاز ظاهري في Microsoft Azure أو Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
تأكد من بدء خدمة الشبكة في وقت التمهيد عن طريق تشغيل الأمر التالي:
sudo chkconfig network on
ثبّت python-pyasn1 عن طريق تشغيل الأمر التالي:
sudo yum install python-pyasn1
تعديل خط تمهيد kernel في تكوين grub الخاص بك لتضمين المزيد من معلمات kernel ل Azure. للقيام بذلك، افتح "/boot/grub/menu.lst" في محرر النصوص وتأكد من أن kernel تتضمن المعلمات التالية:
console=ttyS0 earlyprintk=ttyS0
يضمن هذا الإعداد إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول، والذي يمكن أن يساعد دعم Azure في تصحيح المشكلات.
بالإضافة إلى ما سبق، نوصي بإزالة المعلمات التالية:
rhgb quiet crashkernel=auto
التمهيد الرسومي والهادئ غير مفيد في بيئة سحابية حيث نريد إرسال جميع السجلات إلى المنفذ التسلسلي.
crashkernel
قد يتم ترك الخيار مكونا إذا رغبت في ذلك، ولكن لاحظ أن هذه المعلمة تقلل من كمية الذاكرة المتوفرة في الجهاز الظاهري بمقدار 128 ميغابايت أو أكثر، والتي قد تكون مشكلة على أحجام الأجهزة الظاهرية الأصغر.تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد. عادةً ما يكون هذا الإعداد هو الإعداد الافتراضي.
ثبّت عامل Azure Linux من خلال تشغيل الأمر التالي. أحدث إصدار هو 2.0.15.
sudo yum install WALinuxAgent
يؤدي تثبيت حزمة WALinuxAgent إلى إزالة حزم NetworkManager وNetworkManager-gnome إذا لم تتم إزالتها بالفعل كما هو موضح في الخطوة 2.
لا تنشئ مساحة مبادلة على قرص نظام التشغيل.
يمكن لـ Azure Linux Agent تكوين مساحة المبادلة تلقائياً باستخدام قرص المورد المحلي المرفق بالجهاز الظاهري بعد التوفير على Azure. قرص المورد المحلي هو قرص مؤقت وقد يتم إفراغه عند إلغاء توفير الجهاز الظاهري. بعد تثبيت عامل Azure Linux (راجع الخطوة السابقة)، قم بتعديل المعلمات التالية في /etc/waagent.conf بشكل مناسب:
ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
شغِّل الأوامر التالية لإلغاء تزويد الجهاز الظاهري وإعداده للتزويد على Azure:
sudo waagent -force -deprovision sudo export HISTSIZE=0 sudo logout
انقر فوق إجراء -> إيقاف التشغيل في Hyper-V Manager. أصبح قرص Linux VHD جاهزاً الآن للتحميل إلى Azure.
Oracle Linux 7.0 والإصدار الأحدث
التغييرات في Oracle Linux 7
يعد إعداد جهاز Oracle Linux 7 الظاهري ل Azure مشابها ل Oracle Linux 6، ومع ذلك هناك العديد من الاختلافات الهامة الجديرة بالملاحظة:
- Azure يدعم Oracle Linux إما مع Unbreakable Enterprise Kernel (UEK) أو Kernel المتوافقة مع Red Hat. يوصى باستخدام Oracle Linux مع UEK.
- لم تعد حزمة NetworkManager تتعارض مع عامل Azure Linux. يتم تثبيت هذه الحزمة بشكل افتراضي، ونوصي بعدم إزالتها.
- يستخدم GRUB2 الآن كمحمل التشغيل الافتراضي، لذلك تم تغيير إجراء تحرير معلمات kernel (انظر أدناه).
- يعد XFS الآن نظام الملفات الافتراضي. لا يزال من الممكن استخدام نظام الملفات ext4 إن أردت.
خطوات التكوين
في Hyper-V Manager، حدد «الجهاز الظاهري».
انقر فوق اتصال لفتح نافذة وحدة تحكم للجهاز الظاهري.
أنشئ ملف باسم الشبكة في الدليل
/etc/sysconfig/
الذي يحتوي على النص التالي:NETWORKING=yes HOSTNAME=localhost.localdomain
أنشئ ملف باسم ifcfg-eth0 في الدليل
/etc/sysconfig/network-scripts/
الذي يحتوي على النص التالي:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
تعديل قواعد udev لتجنب إنشاء قواعد ثابتة لواجهة (واجهات) Ethernet. قد تتسبب هذه القواعد في حدوث مشكلات عند استنساخ جهاز ظاهري في Microsoft Azure أو Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
تأكد من بدء خدمة الشبكة في وقت التمهيد عن طريق تشغيل الأمر التالي:
sudo chkconfig network on
ثبّت حزمة python-pyasn1 من خلال تشغيل الأمر التالي:
sudo yum install python3-pyasn1
شغّل الأمر التالي لمسح بيانات تعريف yum الحالية وتثبيت أية تحديثات:
sudo yum clean all sudo yum -y update
تعديل خط تمهيد kernel في تكوين grub الخاص بك لتضمين المزيد من معلمات kernel ل Azure. للقيام بذلك، افتح "/etc/default/grub" في محرر نصوص، وقم بتحرير المعلمة
GRUB_CMDLINE_LINUX
على سبيل المثال:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
سيضمن ذلك أيضًا إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول، والذي يمكن أن يساعد دعم Azure في مشكلات تصحيح الأخطاء. كما يقوم بإيقاف تشغيل اصطلاحات التسمية الخاصة بـ NICs في Oracle Linux 7 باستخدام Unbreakable Enterprise Kernel. بالإضافة إلى ما سبق، يوصى بإزالة المعلمات التالية:
rhgb quiet crashkernel=auto
التمهيد الرسومي والهادئ غير مفيد في بيئة سحابية حيث نريد إرسال جميع السجلات إلى المنفذ التسلسلي.
crashkernel
قد يتم ترك الخيار مكونا إذا رغبت في ذلك، ولكن لاحظ أن هذه المعلمة ستخفض مقدار الذاكرة المتوفرة في الجهاز الظاهري بمقدار 128 ميغابايت أو أكثر، والتي قد تكون مشكلة على أحجام الأجهزة الظاهرية الأصغر.بمجرد الانتهاء من تحرير "/etc/default/grub" لكل أعلاه، قم بتشغيل الأمر التالي لإعادة إنشاء تكوين grub:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد. عادةً ما يكون هذا الإعداد هو الإعداد الافتراضي.
ثبّت عامل Azure Linux وتبعياته:
sudo yum install WALinuxAgent sudo systemctl enable waagent
ثبّت cloud-init للتعامل مع التزويد
sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
تكوين waagent ل cloud-init
sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf
sudo echo "Adding mounts and disk_setup to init stage" sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
echo "Allow only Azure datasource, disable fetching network setting via IMDS"
sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF if [[ -f /mnt/resource/swapfile ]]; then echo Removing swapfile - Oracle Linux uses a swapfile by default swapoff /mnt/swapfile rm /mnt/swapfile -f fi echo "Add console log file" cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF # This tells cloud-init to redirect its stdout and stderr to # 'tee -a /var/log/cloud-init-output.log' so the user can see output # there without needing to look on the console. output: {all: '| tee -a /var/log/cloud-init-output.log'} EOF
كون المبادلة. لا تقم بإنشاء مساحة تبديل على قرص نظام التشغيل.
في السابق، تم استخدام عامل Azure Linux تلقائيا لتكوين مساحة التبديل باستخدام قرص المورد المحلي المرفق بالجهاز الظاهري بعد توفير الجهاز الظاهري على Azure. ومع ذلك، يتم التعامل مع هذا الآن بواسطة cloud-init، يجب عدم استخدام عامل Linux لتنسيق قرص المورد لإنشاء ملف التبديل، وتعديل المعلمات
/etc/waagent.conf
التالية بشكل مناسب:sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
إذا كنت تريد تثبيت التبديل وتنسيقه وإنشائه، فيمكنك إما:
- تمرير هذا كتكوين cloud-init في كل مرة تقوم فيها بإنشاء جهاز ظاهري
- استخدم توجيهاً سحابياً مخبأً في الصورة والذي يقوم بذلك في كل مرة يتم فيها إنشاء الجهاز الظاهري:
echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #cloud-config # Generated by Azure cloud image build disk_setup: ephemeral0: table_type: mbr layout: [66, [33, 82]] overwrite: True fs_setup: - device: ephemeral0.1 filesystem: ext4 - device: ephemeral0.2 filesystem: swap mounts: - ["ephemeral0.1", "/mnt/resource"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
شغِّل الأوامر التالية لإلغاء تزويد الجهاز الظاهري وإعداده للتزويد على Azure:
sudo cloud-init clean sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision sudo rm -f ~/.bash_history sudo export HISTSIZE=0
إشعار
إذا كنت تقوم بترحيل جهاز ظاهري معين ولا تريد إنشاء صورة معممة، فتخط خطوة إلغاء التوفير.
انقر فوق إجراء -> إيقاف التشغيل في Hyper-V Manager. أصبح قرص Linux VHD جاهزاً الآن للتحميل إلى Azure.
الخطوات التالية
أنت الآن جاهز لاستخدام Oracle Linux .vhd لإنشاء أجهزة ظاهرية جديدة في Azure. إذا كانت هذه هي المرة الأولى التي تقوم فيها بتحميل ملف .vhd إلى Azure، فراجع إنشاء جهاز ظاهري يعمل بنظام التشغيل Linux من قرص مخصص.