Menyiapkan komputer virtual berbasis CentOS untuk Azure
Perhatian
Artikel ini mereferensikan CentOS, distribusi Linux yang mendekati status akhir masa pakai (EOL). Pertimbangkan penggunaan dan rencana yang sesuai. Untuk informasi selengkapnya, lihat panduan akhir masa pakai CentOS.
Berlaku untuk: ✔️ Mesin Virtual Linux ✔️ Set skala fleksibel
Pelajari cara membuat dan mengunggah hard disk virtual (VHD) Azure yang berisi sistem operasi (OS) Linux berbasis CentOS. Untuk informasi selengkapnya, lihat:
Prasyarat
Artikel ini mengasumsikan bahwa Anda telah menginstal OS Linux CentOS (atau turunan serupa) ke VHD. Ada beberapa alat untuk membuat file .vhd. Contohnya adalah solusi virtualisasi seperti Hyper-V. Untuk petunjuknya, lihat Menginstal peran Hyper-V dan mengonfigurasi VM.
Catatan instalasi CentOS
- Untuk tips selengkapnya tentang menyiapkan Linux untuk Azure, lihat Catatan penginstalan Linux umum.
- Format VHDX tidak didukung di Azure, hanya VHD tetap. Anda dapat mengonversi disk ke format VHD dengan menggunakan Hyper-V Manager atau
convert-vhd
cmdlet. Jika Anda menggunakan VirtualBox, Anda memilih Ukuran tetap dibandingkan dengan default yang dialokasikan secara dinamis saat Anda membuat disk. - Modul kernel vfat harus diaktifkan di kernel.
- Saat Anda menginstal sistem Linux, kami sarankan Anda menggunakan partisi standar daripada Logical Volume Manager (LVM), yang sering menjadi default untuk banyak penginstalan. Menggunakan partisi menghindari konflik nama LVM dengan VM kloning, terutama jika disk OS perlu dilampirkan ke VM lain yang identik untuk pemecahan masalah. LVM atau RAID juga dapat digunakan pada disk data.
- Dukungan kernel untuk memasang sistem file fungsi yang ditentukan pengguna (UDF) diperlukan. Pada boot pertama di Azure, konfigurasi provisi diteruskan ke VM Linux dengan menggunakan media berformat UDF yang dilampirkan ke tamu. Agen Azure Linux atau
cloud-init
harus memasang sistem file UDF untuk membaca konfigurasinya dan menyediakan VM. - Versi kernel Linux di bawah 2.6.37 tidak mendukung NUMA pada Hyper-V dengan ukuran VM yang lebih besar. Masalah ini terutama memengaruhi distribusi yang lebih lama menggunakan kernel Centos 2.6.32 upstram dan diperbaiki di Centos 6.6 (kernel-2.6.32-504). Sistem yang menjalankan kernel kustom yang lebih lama dari kernel berbasis 2.6.37 atau Red Hat Enterprise Linux (RHEL) yang lebih lama dari 2.6.32-504 harus mengatur parameter
numa=off
boot pada baris perintah kernel di grub.conf. Untuk informasi selengkapnya, lihat Red Hat KB 436883. - Jangan mengonfigurasi partisi swap pada disk OS.
- Semua VHD di Azure harus memiliki ukuran virtual yang selaras dengan 1MB. Saat Anda mengonversi dari disk mentah ke VHD, Anda harus memastikan bahwa ukuran disk mentah adalah kelipatan 1 MB sebelum konversi. Untuk informasi selengkapnya, lihat Catatan penginstalan Linux.
Catatan
Cloud-init >= 21.2 menghapus persyaratan UDF. Tetapi tanpa modul UDF diaktifkan, CD-ROM tidak akan dipasang selama provisi, yang mencegah data kustom diterapkan. Solusi untuk situasi ini adalah menerapkan data kustom dengan menggunakan data pengguna. Tidak seperti data kustom, data pengguna tidak dienkripsi. Untuk informasi selengkapnya, lihat Format data pengguna.
CentOS 6.x
Penting
CentOS 6 telah mencapai EOL-nya dan tidak lagi didukung oleh komunitas CentOS. Tidak ada pembaruan lebih lanjut atau patch keamanan yang akan dirilis untuk versi ini, membiarkannya rentan terhadap potensi risiko keamanan. Kami sangat menyarankan Agar Anda meningkatkan ke versi terbaru CentOS untuk memastikan keamanan dan stabilitas sistem Anda. Untuk bantuan lebih lanjut, konsultasikan dengan departemen TI atau administrator sistem Anda.
Di Hyper-V Manager, pilih VM.
Pilih Sambungkan untuk membuka jendela konsol untuk VM.
Di CentOS 6,
NetworkManager
dapat mengganggu agen Azure Linux. Hapus instalan paket ini:sudo rpm -e --nodeps NetworkManager
Buat atau edit file
/etc/sysconfig/network
dan tambahkan teks berikut:NETWORKING=yes HOSTNAME=localhost.localdomain
Buat atau edit file
/etc/sysconfig/network-scripts/ifcfg-eth0
dan tambahkan teks berikut:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Ubah aturan udev untuk menghindari pembuatan aturan statis untuk antarmuka Ethernet. Aturan ini dapat menyebabkan masalah saat Anda mengkloning VM di Azure atau 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
Pastikan bahwa layanan jaringan dimulai pada waktu boot:
sudo chkconfig network on
Jika Anda ingin menggunakan cermin OpenLogic yang dihosting dalam pusat data Azure, ganti
/etc/yum.repos.d/CentOS-Base.repo
file dengan repositori berikut. Tindakan ini juga menambahkan repositori [openlogic] yang menyertakan paket tambahan, seperti agen Linux Azure:[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
Catatan
Sisa artikel ini mengasumsikan bahwa Anda menggunakan setidaknya
[openlogic]
repositori, yang digunakan untuk menginstal agen Linux Azure.Tambahkan baris berikut ke
/etc/yum.conf
:http_caching=packages
Hapus metadata yum saat ini dan perbarui sistem dengan paket terbaru:
sudo yum clean all
Kecuali Anda membuat gambar untuk versi CentOS yang lebih lama, kami sarankan Anda memperbarui semua paket ke yang terbaru:
sudo yum -y update
Boot ulang mungkin diperlukan setelah Anda menjalankan perintah ini.
Opsional: Instal driver untuk Linux Integration Services (LIS).
Penting
Langkah ini diperlukan untuk CentOS 6.3 dan yang lebih lama dan bersifat opsional untuk rilis selanjutnya.
sudo rpm -e hypervkvpd ## (might return an error if not installed, that's OK) sudo yum install microsoft-hyper-v
Atau alternatifnya, Anda dapat mengikuti instruksi instalasi manual di halaman unduhan LIS untuk menginstal RPM ke VM Anda.
Instal agen dan dependensi Azure Linux. Mulai dan aktifkan
waagent
layanan:sudo yum install python-pyasn1 WALinuxAgent sudo service waagent start sudo chkconfig waagent on
Paket WALinuxAgent menghapus
NetworkManager
paket danNetworkManager-gnome
jika belum dihapus, seperti yang dijelaskan di langkah 3.Ubah baris boot kernel di konfigurasi grub Anda untuk menyertakan parameter kernel lainnya untuk Azure. Untuk melakukan langkah ini, buka
/boot/grub/menu.lst
di editor teks dan pastikan bahwa kernel default menyertakan parameter berikut:console=ttyS0 earlyprintk=ttyS0 rootdelay=300
Modifikasi ini juga memastikan bahwa semua pesan konsol dikirim ke port serial pertama, yang dapat membantu dukungan Azure dengan masalah penelusuran kesalahan.
Kami juga menyarankan agar Anda menghapus parameter berikut:
rhgb quiet crashkernel=auto
Boot grafis dan tenang tidak berguna di lingkungan cloud tempat Anda ingin semua log dikirim ke port serial. Opsi
crashkernel
dapat dibiarkan dikonfigurasi jika Anda mau. Tetapi parameter ini mengurangi jumlah memori yang tersedia di VM sebesar 128 MB atau lebih, yang mungkin menjadi masalah untuk ukuran VM yang lebih kecil.Penting
CentOS 6.5 dan versi yang lebih lama juga harus mengatur parameter kernel
numa=off
. Untuk informasi selengkapnya, lihat Red Hat KB 436883.Pastikan bahwa server Secure Shell diinstal dan dikonfigurasi untuk memulai pada waktu boot. Pengaturan ini biasanya default.
Jangan membuat ruang swap pada disk OS.
Agen Linux Azure dapat secara otomatis mengonfigurasi ruang pertukaran dengan menggunakan disk sumber daya lokal yang dilampirkan ke VM setelah VM disediakan di Azure. Disk sumber daya lokal adalah disk sementara dan mungkin dikosongkan ketika VM dideprovisi. Setelah Anda menginstal agen Linux Azure (lihat langkah sebelumnya), ubah parameter
/etc/waagent.conf
berikut dengan tepat: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.
Batalkan provisi VM dan siapkan untuk provisi di Azure:
sudo waagent -force -deprovision+user sudo export HISTSIZE=0
Catatan
Jika Anda memigrasikan VM tertentu dan tidak ingin membuat gambar umum, lewati langkah deprovisi.
Pilih Tindakan>Matikan di Hyper-V Manager. VHD Linux Anda sekarang siap untuk diunggah ke Azure.
CentOS 7.0+
Ikuti langkah-langkah di bagian berikutnya jika Anda menggunakan CentOS 7.0+.
Perubahan di CentOS 7 (dan turunan serupa)
Menyiapkan VM CentOS 7 untuk Azure mirip dengan CentOS 6. Beberapa perbedaan signifikan perlu dicatat:
Paket
NetworkManager
tidak lagi bertentangan dengan agen Azure Linux. Paket ini diinstal secara default dan kami sarankan Anda tidak menghapusnya.GRUB2 sekarang digunakan sebagai bootloader default, sehingga prosedur untuk mengedit parameter kernel telah berubah. (Lihat bagian "Langkah konfigurasi".)
XFS sekarang menjadi sistem file default. Sistem file ext4 masih dapat digunakan jika Anda mau.
Karena CentOS 8 Stream dan yang lebih baru tidak lagi disertakan
network.service
secara default, Anda perlu menginstalnya secara manual:sudo yum install network-scripts sudo systemctl enable network.service
Langkah-langkah konfigurasi
Di Hyper-V Manager, pilih VM.
Pilih Sambungkan untuk membuka jendela konsol untuk VM.
Buat atau edit file
/etc/sysconfig/network
dan tambahkan teks berikut:NETWORKING=yes HOSTNAME=localhost.localdomain
Buat atau edit file
/etc/sysconfig/network-scripts/ifcfg-eth0
dan tambahkan teks berikut:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no NM_CONTROLLED=no
Ubah aturan udev untuk menghindari pembuatan aturan statis untuk antarmuka Ethernet. Aturan ini dapat menyebabkan masalah saat Anda mengkloning VM di Azure atau Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
Jika Anda ingin menggunakan
OpenLogic
cermin yang dihosting dalam pusat data Azure, ganti file /etc/yum.repos.d/CentOS-Base.repo dengan repositori berikut. Tindakan ini juga menambahkan repositori [openlogic] yang menyertakan paket untuk agen 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
Catatan
Sisa artikel ini mengasumsikan bahwa Anda menggunakan setidaknya
[openlogic]
repositori, yang digunakan untuk menginstal agen Linux Azure.Hapus metadata yum saat ini dan instal pembaruan apa pun:
sudo yum clean all
Kecuali Anda membuat gambar untuk versi CentOS yang lebih lama, kami sarankan Anda memperbarui semua paket ke yang terbaru:
sudo yum -y update
Boot ulang mungkin diperlukan setelah Anda menjalankan perintah ini.
Ubah baris boot kernel di konfigurasi grub Anda untuk menyertakan parameter kernel lainnya untuk Azure. Untuk melakukan langkah ini, buka
/etc/default/grub
di editor teks dan editGRUB_CMDLINE_LINUX
parameter . Contohnya:GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Modifikasi ini juga memastikan bahwa semua pesan konsol dikirim ke port serial pertama, yang dapat membantu dukungan Azure dengan masalah penelusuran kesalahan. Ini juga mematikan konvensi penamaan CentOS 7 baru untuk kartu antarmuka jaringan. Kami juga menyarankan agar Anda menghapus parameter berikut:
rhgb quiet crashkernel=auto
Boot grafis dan tenang tidak berguna di lingkungan cloud tempat Anda ingin semua log dikirim ke port serial. Opsi
crashkernel
dapat dibiarkan dikonfigurasi jika Anda mau. Tetapi parameter ini mengurangi jumlah memori yang tersedia di VM sebesar 128 MB atau lebih, yang mungkin menjadi masalah untuk ukuran VM yang lebih kecil.Setelah Selesai mengedit
/etc/default/grub
, bangun kembali konfigurasi grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Catatan
Jika Anda mengunggah VM berkemampuan UEFI, perintah untuk memperbarui grub adalah
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
. Selain itu, modul kernel vfat harus diaktifkan di kernel. Jika tidak, provisi gagal.Pastikan modul udf diaktifkan. Menghapus atau menonaktifkannya akan menyebabkan kegagalan provisi atau boot. (_Cloud-init >= 21.2 menghapus persyaratan udf. Untuk informasi selengkapnya, baca bagian atas dokumen.)
Jika Anda membangun gambar dari VMware, VirtualBox, atau KVM, pastikan bahwa driver Hyper-V disertakan dalam initramf:
Edit
/etc/dracut.conf
dan tambahkan konten:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Bangun kembali initramfs:
sudo dracut -f -v
Instal agen Dan dependensi Azure Linux untuk ekstensi Azure VM:
sudo yum install python-pyasn1 WALinuxAgent sudo systemctl enable waagent
Instal
cloud-init
untuk menangani provisi:sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
- Konfigurasikan
waagent
untukcloud-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
- Konfigurasikan
Konfigurasi pertukaran:
Jangan membuat ruang swap pada disk OS.
Sebelumnya, agen Azure Linux digunakan untuk mengonfigurasi ruang pertukaran secara otomatis dengan menggunakan disk sumber daya lokal yang dilampirkan ke VM setelah VM disediakan di Azure. Namun,
cloud-init
sekarang menangani langkah ini. Anda tidak boleh menggunakan agen Linux untuk memformat disk sumber daya untuk membuat file swap. Ubah parameter/etc/waagent.conf
berikut dengan tepat: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
Jika Anda ingin memasang, memformat, dan membuat file swap, Anda dapat:
Teruskan perintah ini sebagai
cloud-init
konfigurasi setiap kali Anda membuat VM.Gunakan direktif yang
cloud-init
dipanggang ke dalam gambar untuk melakukan langkah ini setiap kali VM dibuat: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
Jalankan perintah berikut untuk mendeprovisi VM dan menyiapkannya untuk provisi di Azure.
Catatan
Jika Anda memigrasikan VM tertentu dan tidak ingin membuat gambar umum, lewati langkah deprovisi.
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
Pilih Tindakan>Matikan di Hyper-V Manager. VHD Linux Anda sekarang siap untuk diunggah ke Azure.
Konten terkait
Anda sekarang siap untuk menggunakan CentOS Linux VHD Anda untuk membuat VM baru di Azure. Jika ini pertama kalinya Anda mengunggah file .vhd ke Azure, lihat Buat komputer virtual Linux dari disk kustom.