إعداد جهاز Oracle Linux الظاهري لـ Azure

ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة

تفترض هذه المقالة أنك قمت بالفعل بتثبيت نظام تشغيل Oracle Linux (OS) على قرص ثابت ظاهري (VHD). توجد أدوات متعددة لإنشاء ملفات ‎.vhd. مثال على ذلك هو حل ظاهري مثل Hyper-V. للحصول على الإرشادات، راجع تثبيت دور Hyper-V وتكوين جهاز ظاهري (VM).

ملاحظات لتثبيت Oracle Linux

  • لمزيد من النصائح حول إعداد Linux ل Azure، راجع ملاحظات تثبيت Linux العامة.
  • Hyper-V وAzure يدعما Oracle Linux إما مع Unbreakable Enterprise Kernel (UEK) أو Kernel المتوافق مع Red Hat.
  • لا يتم دعم UEK2 من Oracle على Hyper-V وAzure لأنه لا يتضمن برامج التشغيل المطلوبة.
  • تنسيق VHDX غير مدعوم في Azure، فقط VHD ثابت. يمكنك تحويل القرص إلى تنسيق VHD باستخدام Hyper-V Manager أو convert-vhd cmdlet.
  • مطلوب دعم 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 بالفعل في نهاية العمر الافتراضي. يتوفر Oracle Linux الإصدار 6.10 دعم دورة الحياة الموسعة، والذي ينتهي في يوليو 2024.

يجب إكمال خطوات تكوين محددة في نظام التشغيل لتشغيل الجهاز الظاهري في Azure.

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

  2. حدد Connect لفتح نافذة الجهاز الظاهري.

  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. يمكن أن تتسبب هذه القواعد في حدوث مشكلات عند استنساخ جهاز ظاهري في 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 في محرر نص وتأكد من أن النواة تتضمن المعلمات التالية:

    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 تكوين مساحة التبديل تلقائيا باستخدام قرص المورد المحلي المرفق بالجهاز الظاهري بعد التوفير على 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. حدد Action>Shut down في Hyper-V Manager. أصبح قرص Linux VHD جاهزاً الآن للتحميل إلى Azure.


Oracle Linux 7.0 والإصدار الأحدث

اتبع الخطوات الواردة في الأقسام التالية إذا كنت تستخدم 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. حدد Connect لفتح نافذة وحدة تحكم للجهاز الظاهري.

  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. يمكن أن تتسبب هذه القواعد في حدوث مشكلات عند استنساخ جهاز ظاهري في 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 في تصحيح المشكلات. كما أنه يوقف اصطلاحات التسمية لبطاقات واجهة الشبكة في Oracle Linux 7 مع UEK. نوصي أيضا بإزالة المعلمات التالية:

       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. تكوين المبادلة:

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

      في السابق، تم استخدام عامل 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
      
    2. إذا كنت تريد تحميل التبديل وتنسيقه وإنشائه، فيمكنك إما:

      • مرر هذه التعليمة البرمجية كتكوين cloud-init في كل مرة تقوم فيها بإنشاء جهاز ظاهري.
      • استخدم توجيها 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. حدد Action>Shut down في Hyper-V Manager. أصبح قرص Linux VHD جاهزاً الآن للتحميل إلى Azure.

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