إعداد جهاز ظاهري يستند إلى CentOS لـ Azure

تنبيه

تشير هذه المقالة إلى CentOS، وهو توزيع Linux يقترب من حالة نهاية العمر الافتراضي (EOL). ضع في اعتبارك استخدامك والتخطيط وفقا لذلك. لمزيد من المعلومات، راجع إرشادات نهاية العمر الافتراضي CentOS.

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

تعلم كيفية إنشاء وتحميل قرص ثابت ظاهري Azure (VHD) يحتوي على نظام تشغيل Linux (OS) يستند إلى CentOS. لمزيد من المعلومات، راجع:

المتطلبات الأساسية

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

ملاحظات تثبيت CentOS

  • لمزيد من النصائح حول إعداد Linux ل Azure، راجع ملاحظات تثبيت Linux العامة.
  • تنسيق VHDX غير مدعوم في Azure، فقط VHD ثابت. يمكنك تحويل القرص إلى تنسيق VHD باستخدام Hyper-V Manager أو convert-vhd cmdlet. إذا كنت تستخدم VirtualBox، يمكنك تحديد حجم ثابت بدلا من الحجم الافتراضي الذي يتم تخصيصه ديناميكيا عند إنشاء القرص.
  • يجب تمكين الوحدة النمطية vfat kernel في النواة.
  • عند تثبيت نظام Linux، نوصي باستخدام الأقسام القياسية بدلا من إدارة وحدة التخزين المنطقية (LVM)، والتي غالبا ما تكون الافتراضية للعديد من التثبيتات. يؤدي استخدام الأقسام إلى تجنب تعارض اسم LVM مع الأجهزة الظاهرية المستنسخة، خاصة إذا كان قرص نظام التشغيل بحاجة إلى إرفاقه بجهاز ظاهري آخر متطابق لاستكشاف الأخطاء وإصلاحها. يمكن أيضا استخدام LVM أو RAID على أقراص البيانات.
  • يعد دعم Kernel لتحميل أنظمة ملفات الوظائف المعرفة من قبل المستخدم (UDF) ضروريا. في التمهيد الأول على Azure، يتم تمرير تكوين التوفير إلى Linux VM باستخدام الوسائط بتنسيق UDF المرفقة بالضيف. يجب على عامل Azure Linux أو cloud-init تحميل نظام ملفات UDF لقراءة تكوينه وتوفير الجهاز الظاهري.
  • لا تدعم إصدارات Linux kernel التي تقل عن 2.6.37 NUMA على Hyper-V بأحجام أجهزة ظاهرية أكبر. تؤثر هذه المشكلة بشكل أساسي على التوزيعات القديمة باستخدام نواة Centos 2.6.32 المصدر وتم إصلاحها في Centos 6.6 (kernel-2.6.32-504). يجب على الأنظمة التي تعمل على kernels المخصصة الأقدم من 2.6.37 أو Red Hat Enterprise Linux (RHEL)أقدم من 2.6.32-504 تعيين معلمة numa=off التمهيد على سطر أوامر kernel في grub.conf. لمزيد من المعلومات، راجع Red Hat KB 436883.
  • لا تقم بتكوين قسم مبادلة على قرص نظام التشغيل.
  • يجب أن يكون لجميع أقراص VHD على Azure حجم ظاهري محاذاته إلى 1 ميغابايت. عند التحويل من قرص خام إلى VHD، يجب التأكد من أن حجم القرص الخام هو مضاعف 1 ميغابايت قبل التحويل. لمزيد من المعلومات، راجع ملاحظات تثبيت Linux.

إشعار

Cloud-init >= 21.2 يزيل متطلبات UDF. ولكن بدون تمكين وحدة UDF، لن يتم تحميل CD-ROM أثناء التوفير، مما يمنع تطبيق البيانات المخصصة. الحل البديل لهذه الحالة هو تطبيق البيانات المخصصة باستخدام بيانات المستخدم. على عكس البيانات المخصصة، لا يتم تشفير بيانات المستخدم. لمزيد من المعلومات، راجع تنسيقات بيانات المستخدم.

CentOS 6.x

هام

وصل CentOS 6 إلى EOL الخاص به ولم يعد مدعوما من قبل مجتمع CentOS. لن يتم إصدار أي تحديثات أو تصحيحات أمان إضافية لهذا الإصدار، مما يجعلها عرضة لمخاطر الأمان المحتملة. نوصي بشدة بالترقية إلى إصدار أحدث من CentOS لضمان سلامة النظام واستقراره. لمزيد من المساعدة، راجع قسم تكنولوجيا المعلومات أو مسؤول النظام.

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

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

  3. في CentOS 6، NetworkManager يمكن أن يتداخل مع عامل Azure Linux. إلغاء تثبيت هذه الحزمة:

    sudo rpm -e --nodeps NetworkManager
    
  4. أنشئ الملف /etc/sysconfig/network أو حرره، ثم أضف النص التالي:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. أنشئ الملف /etc/sysconfig/network-scripts/ifcfg-eth0 أو حرره، ثم أضف النص التالي:

    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. إذا كنت ترغب في استخدام النسخ المتطابقة OpenLogic المستضافة داخل مراكز بيانات Azure، فاستبدل /etc/yum.repos.d/CentOS-Base.repo الملف بالمستودعات التالية. يضيف هذا الإجراء أيضا مستودع [openlogic] الذي يتضمن حزما إضافية، مثل عامل Azure Linux:

    [openlogic]
    name=CentOS-$releasever - openlogic packages for $basearch
    baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
    enabled=1
    gpgcheck=0
    
    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that might be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #contrib - packages by Centos Users
    [contrib]
    name=CentOS-$releasever - Contrib
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    

    إشعار

    تفترض بقية هذه المقالة أنك تستخدم المستودع على الأقل [openlogic] ، والذي يستخدم لتثبيت عامل Azure Linux.

  9. أضف السطر التالي إلى /etc/yum.conf:

    http_caching=packages
    
  10. قم بإلغاء تحديد بيانات تعريف yum الحالية وتحديث النظام بأحدث الحزم:

    sudo yum clean all
    

    ما لم تكن تقوم بإنشاء صورة لإصدار أقدم من CentOS، نوصي بتحديث جميع الحزم إلى الأحدث:

    sudo yum -y update
    

    قد تكون إعادة التشغيل مطلوبة بعد تشغيل هذا الأمر.

  11. اختياري: تثبيت برامج تشغيل خدمات تكامل Linux (LIS).

    هام

    الخطوة مطلوبة ل CentOS 6.3 والإصدارات السابقة وهي اختيارية للإصدارات اللاحقة.

    sudo rpm -e hypervkvpd  ## (might return an error if not installed, that's OK)
    sudo yum install microsoft-hyper-v
    

    بدلاً من ذلك، يمكنك اتباع إرشادات التثبيت اليدوي في صفحة تنزيل LIS لتثبيت RPM على الجهاز الظاهري.

  12. تثبيت عامل Azure Linux والتبعيات. بدء تشغيل الخدمة وتمكينها waagent :

    sudo yum install python-pyasn1 WALinuxAgent
    sudo service waagent start
    sudo chkconfig waagent on
    

    تزيل NetworkManager حزمة WALinuxAgent الحزم و NetworkManager-gnome إذا لم تتم إزالتها بالفعل، كما هو موضح في الخطوة 3.

  13. تعديل خط تمهيد kernel في تكوين grub الخاص بك لتضمين معلمات kernel الأخرى ل Azure. للقيام بهذه الخطوة، افتح /boot/grub/menu.lst في محرر نص وتأكد من أن النواة الافتراضية تتضمن المعلمات التالية:

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
    

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

    نوصي أيضا بإزالة المعلمات التالية:

    rhgb quiet crashkernel=auto
    

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

    هام

    يجب أيضا على CentOS 6.5 والإصدارات الأقدم تعيين معلمة kernel numa=off. لمزيد من المعلومات، راجع Red Hat KB 436883.

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

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

    يمكن لعامل Azure Linux تكوين مساحة التبديل تلقائيا باستخدام قرص المورد المحلي المرفق بالجهاز الظاهري بعد توفير الجهاز الظاهري على Azure. قرص المورد المحلي هو قرص مؤقت وقد يتم إفراغه عند إلغاء توفير الجهاز الظاهري. بعد تثبيت عامل Azure Linux (راجع الخطوة السابقة)، قم بتعديل المعلمات /etc/waagent.conf التالية بشكل مناسب:

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
    
  16. إلغاء توفير الجهاز الظاهري وإعداده للتزويد على Azure:

    sudo waagent -force -deprovision+user
    sudo export HISTSIZE=0
    

    إشعار

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

  17. حدد Action>Shut down في Hyper-V Manager. أصبح قرص Linux VHD جاهزاً الآن للتحميل إلى Azure.

CentOS 7.0+

اتبع الخطوات الواردة في الأقسام التالية إذا كنت تستخدم CentOS 7.0+.

التغييرات في CentOS 7 (والمشتقات المشابهة)

يعد إعداد CentOS 7 VM ل Azure مشابها ل CentOS 6. تجدر الإشارة إلى عدة اختلافات هامة:

  • NetworkManager لم تعد الحزمة تتعارض مع عامل Azure Linux. يتم تثبيت هذه الحزمة بشكل افتراضي ونوصي بعدم إزالتها.

  • يتم الآن استخدام GRUB2 كمحمل التمهيد الافتراضي، لذلك تم تغيير إجراء تحرير معلمات kernel. (راجع قسم "خطوات التكوين".)

  • يعد XFS الآن نظام الملفات الافتراضي. لا يزال من الممكن استخدام نظام الملفات ext4 إذا أردت ذلك.

  • نظرا لأن CentOS 8 Stream والأحدث لم يعد يتضمن network.service بشكل افتراضي، تحتاج إلى تثبيته يدويا:

    sudo yum install network-scripts
    sudo systemctl enable network.service
    

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

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

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

  3. أنشئ الملف /etc/sysconfig/network أو حرره، ثم أضف النص التالي:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. أنشئ الملف /etc/sysconfig/network-scripts/ifcfg-eth0 أو حرره، ثم أضف النص التالي:

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

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. إذا كنت ترغب في OpenLogic استخدام المرايا المستضافة داخل مراكز بيانات Azure، فاستبدل ملف /etc/yum.repos.d/CentOS-Base.repo بالمستودعات التالية. يضيف هذا الإجراء أيضا مستودع [openlogic] الذي يتضمن حزما لعامل Azure Linux:

    [openlogic]
    name=CentOS-$releasever - openlogic packages for $basearch
    baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
    enabled=1
    gpgcheck=0
    
    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that might be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    

    إشعار

    تفترض بقية هذه المقالة أنك تستخدم المستودع على الأقل [openlogic] ، والذي يستخدم لتثبيت عامل Azure Linux.

  7. امسح بيانات تعريف yum الحالية وقم بتثبيت أي تحديثات:

    sudo yum clean all
    

    ما لم تكن تقوم بإنشاء صورة لإصدار أقدم من CentOS، نوصي بتحديث جميع الحزم إلى الأحدث:

    sudo yum -y update
    

    قد تكون إعادة التشغيل مطلوبة بعد تشغيل هذا الأمر.

  8. تعديل خط تمهيد kernel في تكوين grub الخاص بك لتضمين معلمات kernel الأخرى ل Azure. للقيام بهذه الخطوة، افتح /etc/default/grub في محرر نص وقم بتحرير المعلمة GRUB_CMDLINE_LINUX . على سبيل المثال:

    GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    يضمن هذا التعديل أيضا إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول، والذي يمكن أن يساعد دعم Azure في تصحيح المشكلات. كما أنه يقوم بإيقاف تشغيل اصطلاحات تسمية CentOS 7 الجديدة لبطاقات واجهة الشبكة. نوصي أيضا بإزالة المعلمات التالية:

    rhgb quiet crashkernel=auto
    

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

  9. بعد الانتهاء من التحرير /etc/default/grub، أعد إنشاء تكوين grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

    إشعار

    إذا كنت تقوم بتحميل جهاز ظاهري ممكن ل UEFI، فإن الأمر لتحديث grub هو grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg. أيضا، يجب تمكين الوحدة النمطية vfat kernel في النواة. وإلا، يفشل التوفير.

    تأكد من تمكين الوحدة النمطية udf. ستؤدي إزالتها أو تعطيلها إلى فشل التزويد أو التمهيد. (_Cloud-init >= 21.2 يزيل متطلبات udf. لمزيد من المعلومات، اقرأ الجزء العلوي من المستند.)

  10. إذا كنت تقوم بإنشاء الصورة من VMware أو VirtualBox أو KVM، فتأكد من تضمين برامج تشغيل Hyper-V في initramfs:

    1. قم بتعديل /etc/dracut.conf وأضف المحتوى:

      add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
      
    2. أعد بناء initramfs:

      sudo dracut -f -v
      
  11. تثبيت عامل Azure Linux والتبعيات لملحقات Azure VM:

    sudo yum install python-pyasn1 WALinuxAgent
    sudo systemctl enable waagent
    
  12. تثبيت cloud-init للتعامل مع التزويد:

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    • تكوين waagent ل cloud-init:
    sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=auto/g' /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
    
    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
    
    sudo 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/swapfile ]]; then
    echo Removing swapfile - RHEL 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
    
  13. تكوين المبادلة:

    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 مخبوزا في الصورة للقيام بهذه الخطوة في كل مرة يتم فيها إنشاء الجهاز الظاهري:

        sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
        sudo 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"]
          - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
        EOF
        
  14. قم بتشغيل الأوامر التالية لإلغاء توفير الجهاز الظاهري وإعداده للتزويد على Azure.

    إشعار

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

    sudo rm -f /var/log/waagent.log
    sudo cloud-init clean
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  15. حدد Action>Shut down في Hyper-V Manager. أصبح قرص Linux VHD جاهزاً الآن للتحميل إلى Azure.

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