إعداد جهاز 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.

  1. في الجزء الأوسط من Hyper-V Manager، حدد الجهاز الظاهري.

  2. انقر فوق اتصال لفتح نافذة الجهاز الظاهري.

  3. أزّل تثبيت NetworkManager عن طريق تشغيل الأمر التالي:

    sudo rpm -e --nodeps NetworkManager
    

    إشعار

    إذا لم تكن الحزمة مثبتة بالفعل، يفشل هذا الأمر مع ظهور رسالة خطأ. هذه الرسائل متوقعة.

  4. أنشئ ملف باسم الشبكة في الدليل /etc/sysconfig/ الذي يحتوي على النص التالي:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. أنشئ ملف باسم ifcfg-eth0 في الدليل /etc/sysconfig/network-scripts/ الذي يحتوي على النص التالي:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. تعديل قواعد 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
    
  7. تأكد من بدء خدمة الشبكة في وقت التمهيد عن طريق تشغيل الأمر التالي:

    sudo chkconfig network on
    
  8. ثبّت python-pyasn1 عن طريق تشغيل الأمر التالي:

    sudo yum install python-pyasn1
    
  9. تعديل خط تمهيد kernel في تكوين grub الخاص بك لتضمين المزيد من معلمات kernel ل Azure. للقيام بذلك، افتح "/boot/grub/menu.lst" في محرر النصوص وتأكد من أن kernel تتضمن المعلمات التالية:

    console=ttyS0 earlyprintk=ttyS0
    

    يضمن هذا الإعداد إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول، والذي يمكن أن يساعد دعم Azure في تصحيح المشكلات.

    بالإضافة إلى ما سبق، نوصي بإزالة المعلمات التالية:

    rhgb quiet crashkernel=auto
    

    التمهيد الرسومي والهادئ غير مفيد في بيئة سحابية حيث نريد إرسال جميع السجلات إلى المنفذ التسلسلي.

    crashkernel قد يتم ترك الخيار مكونا إذا رغبت في ذلك، ولكن لاحظ أن هذه المعلمة تقلل من كمية الذاكرة المتوفرة في الجهاز الظاهري بمقدار 128 ميغابايت أو أكثر، والتي قد تكون مشكلة على أحجام الأجهزة الظاهرية الأصغر.

  10. تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد. عادةً ما يكون هذا الإعداد هو الإعداد الافتراضي.

  11. ثبّت عامل Azure Linux من خلال تشغيل الأمر التالي. أحدث إصدار هو 2.0.15.

    sudo yum install WALinuxAgent
    

    يؤدي تثبيت حزمة WALinuxAgent إلى إزالة حزم NetworkManager وNetworkManager-gnome إذا لم تتم إزالتها بالفعل كما هو موضح في الخطوة 2.

  12. لا تنشئ مساحة مبادلة على قرص نظام التشغيل.

    يمكن لـ 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.
    
  13. شغِّل الأوامر التالية لإلغاء تزويد الجهاز الظاهري وإعداده للتزويد على Azure:

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
    sudo logout
    
  14. انقر فوق إجراء -> إيقاف التشغيل في 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 إن أردت.

خطوات التكوين

  1. في Hyper-V Manager، حدد «الجهاز الظاهري».

  2. انقر فوق اتصال لفتح نافذة وحدة تحكم للجهاز الظاهري.

  3. أنشئ ملف باسم الشبكة في الدليل /etc/sysconfig/ الذي يحتوي على النص التالي:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. أنشئ ملف باسم ifcfg-eth0 في الدليل /etc/sysconfig/network-scripts/ الذي يحتوي على النص التالي:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  5. تعديل قواعد udev لتجنب إنشاء قواعد ثابتة لواجهة (واجهات) Ethernet. قد تتسبب هذه القواعد في حدوث مشكلات عند استنساخ جهاز ظاهري في Microsoft Azure أو Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. تأكد من بدء خدمة الشبكة في وقت التمهيد عن طريق تشغيل الأمر التالي:

    sudo chkconfig network on
    
  7. ثبّت حزمة python-pyasn1 من خلال تشغيل الأمر التالي:

    sudo yum install python3-pyasn1
    
  8. شغّل الأمر التالي لمسح بيانات تعريف yum الحالية وتثبيت أية تحديثات:

    sudo yum clean all
    sudo yum -y update
    
  9. تعديل خط تمهيد 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 ميغابايت أو أكثر، والتي قد تكون مشكلة على أحجام الأجهزة الظاهرية الأصغر.

  10. بمجرد الانتهاء من تحرير "/etc/default/grub" لكل أعلاه، قم بتشغيل الأمر التالي لإعادة إنشاء تكوين grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  11. تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد. عادةً ما يكون هذا الإعداد هو الإعداد الافتراضي.

  12. ثبّت عامل Azure Linux وتبعياته:

    sudo yum install WALinuxAgent
    sudo systemctl enable waagent
    
  13. ثبّت cloud-init للتعامل مع التزويد

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
  14. تكوين 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
    
  15. كون المبادلة. لا تقم بإنشاء مساحة تبديل على قرص نظام التشغيل.

    في السابق، تم استخدام عامل 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
    
  16. شغِّل الأوامر التالية لإلغاء تزويد الجهاز الظاهري وإعداده للتزويد على 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
    

    إشعار

    إذا كنت تقوم بترحيل جهاز ظاهري معين ولا تريد إنشاء صورة معممة، فتخط خطوة إلغاء التوفير.

  17. انقر فوق إجراء -> إيقاف التشغيل في Hyper-V Manager. أصبح قرص Linux VHD جاهزاً الآن للتحميل إلى Azure.

الخطوات التالية

أنت الآن جاهز لاستخدام Oracle Linux .vhd لإنشاء أجهزة ظاهرية جديدة في Azure. إذا كانت هذه هي المرة الأولى التي تقوم فيها بتحميل ملف .vhd إلى Azure، فراجع إنشاء جهاز ظاهري يعمل بنظام التشغيل Linux من قرص مخصص.