Jika Anda berencana menggunakan citra kustom untuk menerapkan layanan pada Instance ECS dan ingin meningkatkan performa penyimpanan dengan protokol Non-Volatile Memory Express (NVMe), ikuti langkah-langkah dalam topik ini untuk menginstal driver NVMe untuk citra kustom tersebut.
Non-Volatile Memory Express (NVMe) adalah protokol antarmuka kecepatan tinggi yang dirancang untuk penyimpanan solid-state, seperti SSD berbasis flash. Protokol ini memberikan waktu respons yang lebih cepat dan bandwidth yang lebih tinggi dibandingkan protokol penyimpanan tradisional seperti SCSI dan virtio-blk.
Skenario
Anda mungkin perlu menginstal driver NVMe seperti yang dijelaskan dalam topik ini jika citra kustom Anda tidak memiliki driver yang terinstal dalam skenario berikut:
-
Saat Anda mengimpor citra kustom ke Alibaba Cloud, fitur Pemeriksaan Citra mendeteksi bahwa driver NVMe belum diinstal pada citra tersebut.
-
Saat Anda membuat Instance ECS dari tipe instans yang mendukung protokol NVMe, Anda tidak dapat memilih citra kustom Anda. Hal ini mungkin disebabkan karena atribut NVMe dari citra tidak sesuai dengan tipe instans tersebut.
Catatan-
Untuk informasi lebih lanjut tentang keluarga instans yang mendukung protokol NVMe, lihat Keluarga Instans. Untuk menentukan apakah suatu keluarga instans mendukung NVMe, Anda juga dapat menggunakan parameter
NvmeSupportdari operasi API DescribeInstanceTypes. -
Anda dapat menggunakan parameter
NvmeSupportdari operasi API DescribeImages untuk memastikan apakah sebuah citra mendukung NVMe. -
Untuk informasi lebih lanjut, lihat Mengapa saya tidak dapat menemukan citra tertentu saat membuat Instance ECS?.
-
Prosedur
-
Buat Instance ECS dari citra kustom yang ada. Instance ini berfungsi sebagai lingkungan perantara. Kemudian, sambungkan secara remote ke instance tersebut.
PentingAnda akan dikenakan biaya untuk instans perantara yang Anda buat. Setelah citra kustom baru dibuat, kami sarankan Anda segera merilis instans tersebut untuk menghindari biaya berkelanjutan.
-
Periksa keberadaan driver NVMe dan instal berdasarkan sistem operasi dari instans tersebut.
Konfigurasi Otomatis menggunakan Asisten Cloud
Asisten Cloud menyediakan plugin
ecs_nvme_configuntuk membantu Anda dengan cepat mengonfigurasi drive NVMe. Namun, plugin ini memiliki batasan sistem operasi.-
Jalankan perintah berikut untuk memeriksa apakah Agen Asisten Cloud telah diinstal pada instans dan apakah plugin
ecs_nvme_configtersedia di klien.acs-plugin-manager --list
-
Jika tidak ada informasi Asisten Cloud yang dikembalikan, Anda harus terlebih dahulu menginstal Agen Asisten Cloud pada instans.
-
Jika daftar plugin Asisten Cloud dikembalikan dan mencakup plugin
ecs_nvme_config, lanjutkan ke langkah berikutnya.
-
-
Gunakan plugin
ecs_nvme_configuntuk menyelesaikan konfigurasi NVMe.-
Jalankan perintah berikut untuk menggunakan plugin
ecs_nvme_configguna memeriksa apakah modul NVMe ada pada instans saat ini dan apakah dapat dikonfigurasi.sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --check-
Jika pesan berikut dikembalikan, driver NVMe sudah diinstal pada instans. Anda tidak perlu melakukan konfigurasi terkait NVMe dan dapat langsung membuat citra kustom.
[SUCCESS] Summary: Your image can run on an NVMe instance. -
Jika hasilnya berisi pesan serupa dengan
[ERROR]berikut, Anda perlu melanjutkan ke langkah berikutnya.[ERROR] 1.nvme module missing from initrd/initramfs, please run acs-plugin-manager --exec --plugin ecs_nvme_config --params -f/--fix to enable nvme;
-
-
Berdasarkan pesan dalam hasil pemeriksaan, konfigurasikan driver NVMe dan parameter terkait.
sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --fix -
Setelah konfigurasi selesai, jalankan perintah berikut untuk me-restart instans.
sudo reboot -
Setelah me-restart instans, periksa apakah modul NVMe berhasil dikonfigurasi.
sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --checkBerikut adalah contoh tanggapan sukses:
[OK] 1.initrd/initramfs already contains the nvme module; [OK] 2.fstab file looks fine and does not contain any device names; [OK] 3.The nvme parameters are already included. [SUCCESS] Summary: Your image can run on an nvme instance
-
Konfigurasi Manual (CentOS/Alibaba Cloud Linux)
-
Jalankan perintah berikut untuk memeriksa apakah kernel sistem telah memuat driver NVMe.
cat /boot/config-`uname -r` | grep -i nvme | grep -v "^#"
-
Jika hasilnya adalah
CONFIG_BLK_DEV_NVME=y, sistem operasi dapat booting langsung pada keluarga instans yang mendukung protokol NVMe. Anda kemudian dapat melanjutkan ke konfigurasi otomatis menggunakan Asisten Cloud. -
Jika hasilnya adalah
CONFIG_BLK_DEV_NVMe=m, lakukan langkah-langkah berikut.
-
-
Jalankan perintah berikut untuk memeriksa apakah initial RAM file system (initramfs) berisi driver NVMe.
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'
-
Jika hasil serupa dengan gambar dikembalikan, sistem operasi dapat mulai pada instans dari keluarga instans yang mendukung protokol NVMe. Anda dapat langsung melanjutkan ke langkah d.
-
Jika tidak ada hasil yang dikembalikan, lanjutkan ke langkah berikutnya (langkah c).
-
-
Jalankan perintah berikut untuk menambahkan dukungan driver NVMe ke initramfs.
mkdir -p /etc/dracut.conf.d echo 'add_drivers+=" nvme nvme-core "' | sudo tee /etc/dracut.conf.d/nvme.conf > /dev/null sudo dracut -v -fCatatanJika alat dracut belum diinstal pada sistem operasi Anda, jalankan sudo yum -y install dracut untuk menginstal alat tersebut.
-
Tambahkan parameter
io_timeoutterkait NVMe ke GRand Unified Bootloader (GRUB).CatatanMenambahkan parameter
io_timeoutke GRand Unified Bootloader (GRUB) membantu mencegah kesalahan timeout terkait perangkat NVMe di Linux. Mengatur parameter ini ke nilai maksimum mencegah sistem gagal saat memproses permintaan I/O untuk perangkat NVMe.Pada sebagian besar distribusi Linux, parameter
io_timeoutdiatur ke 30 detik secara default. Sebelum mengatur parameterio_timeout, Anda perlu menjalankan perintahecho 4294967295 > /sys/module/nvme_core/parameters/io_timeoutatauecho 4294967295 > /sys/module/nvme/parameters/io_timeoutuntuk memverifikasi apakah parameterio_timeoutdapat diatur ke nilai maksimum 4.294.967.295 detik. Jika perintah mengembalikan-bash: echo: write error: Invalid argument, ini menunjukkan bahwa versi Linux Anda saat ini hanya mendukung nilai maksimum 255 detik.Metode 1: Gunakan perintah grubby
-
Periksa apakah sistem mendukung perintah
grubby.which grubby-
Jika output menampilkan jalur untuk
grubby(seperti/usr/sbin/grubby), sistem mendukunggrubby. Lanjutkan ke langkah berikutnya. -
Jika tidak ada output yang dikembalikan, sistem tidak mendukung
grubby. Untuk menambahkan parameter, lihat Metode 2.
-
-
Gunakan perintah
grubbyuntuk menambahkan parameter kernel.sudo grubby --update-kernel=ALL --args="nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295"
Metode 2: Modifikasi file konfigurasi GRUB
-
Jalankan perintah berikut untuk membuka file grub.
sudo vi /etc/default/grub -
Tekan tombol i untuk masuk ke mode edit. Pada baris
GRUB_CMDLINE_LINUX=, tambahkan parameternvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295.Setelah menambahkan parameter, isi file akan terlihat mirip dengan berikut:
CatatanJika file konfigurasi sudah berisi parameter ini, Anda tidak perlu menambahkannya lagi.
-
Tekan tombol Esc untuk keluar dari mode edit, masukkan
:wq, dan tekan tombol Enter untuk menyimpan dan keluar dari file. -
Jalankan perintah berikut untuk menerapkan konfigurasi GRUB.
Bergantung pada mode startup instans dari Instance ECS, jalankan perintah yang sesuai:
-
Mode boot Legacy BIOS
sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
Mode boot UEFI
-
Lihat file konfigurasi grub.
cat /boot/efi/EFI/centos/grub.cfg -
Jalankan perintah yang sesuai berdasarkan isi file konfigurasi grub.
-
Jika file konfigurasi menentukan jalur lain untuk configfile, seperti
/boot/grub/grub.cfgyang ditunjukkan pada gambar berikut, jalankan perintah berikut untuk menerapkan konfigurasi.
sudo grub2-mkconfig -o /boot/grub2/grub.cfg Jika tidak, jalankan perintah berikut untuk menerapkan konfigurasi:
sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
-
-
-
-
Jalankan perintah berikut kembali untuk memverifikasi bahwa driver NVMe telah disertakan dalam initramfs.
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'Jika hasil yang serupa dengan gambar berikut ditampilkan, konfigurasi telah selesai. Sistem operasi kini dapat dijalankan pada instans dari keluarga instans yang mendukung protokol NVMe.

Konfigurasi Manual (Ubuntu/Debian)
(Opsional) Jalankan perintah berikut untuk melihat driver NVMe yang termuat dalam initrd.
lsinitramfs /boot/initrd.img-`uname -r` | grep -i nvmeOutput berikut menunjukkan bahwa driver NVMe dimuat secara default dalam initrd untuk sistem operasi Ubuntu.

Tambahkan parameter
io_timeoutterkait NVMe ke GRUB.CatatanTujuan utama menambahkan parameter
io_timeoutterkait NVMe ke GRand Unified Bootloader (GRUB) adalah untuk mencegah kesalahan timeout terkait perangkat NVMe di Linux. Mengatur nilai timeout ke maksimum mencegah sistem operasi gagal karena timeout saat memproses permintaan I/O dari perangkat NVMe.Pada sebagian besar distribusi Linux, parameter
io_timeoutdiatur ke 30 detik secara default. Sebelum mengatur parameterio_timeout, jalankan perintahecho 4294967295 > /sys/module/nvme_core/parameters/io_timeoutatauecho 4294967295 > /sys/module/nvme/parameters/io_timeoutuntuk memverifikasi apakah parameterio_timeoutdapat diatur ke nilai maksimum 4.294.967.295 detik. Jika perintah mengembalikan-bash: echo: write error: Invalid argument, ini menunjukkan bahwa versi Linux Anda saat ini hanya mendukung nilai maksimum 255 detik.Jalankan perintah berikut untuk membuka file /etc/default/grub.
sudo vi /etc/default/grubTekan tombol i untuk masuk ke mode edit. Pada baris
GRUB_CMDLINE_LINUX=, tambahkan parameternvme_core.multipath=n nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295.Setelah menambahkan parameter, isi file akan terlihat seperti berikut:
CatatanJika file konfigurasi sudah berisi parameter ini, Anda tidak perlu menambahkannya lagi.
Tekan Esc untuk keluar dari mode edit, masukkan
:wq, dan tekan Enter untuk menyimpan dan keluar dari file.
Jalankan perintah berikut untuk menerapkan konfigurasi GRUB.
Bergantung pada mode boot instans dari Instance ECS Anda, jalankan salah satu perintah berikut:
Mode boot apa pun (Perintah ini hanya berlaku untuk sistem Ubuntu/Debian)
sudo update-grub2Mode boot Legacy BIOS
sudo grub-mkconfig -o /boot/grub/grub.cfgMode boot UEFI
sudo grub-mkconfig -o /boot/efi/EFI/debian/grub.cfg
-
-
Setelah Anda menginstal driver pada instans, buat citra kustom baru dari instans tersebut. Kemudian, modifikasi properti citra kustom baru dan atur properti NVMe Driver menjadi Supported.
Jika Anda tidak mengatur properti NVMe menjadi Didukung, Anda tidak dapat menggunakan citra kustom ini untuk membuat instans dari tipe instans yang memerlukan fitur NVMe.
-
(Opsional) Terapkan ulang layanan Anda dengan membuat instans dari citra kustom baru yang mendukung NVMe, seperti yang dijelaskan dalam Buat instans menggunakan citra kustom. Saat membuat Instance ECS, pilih tipe instans yang mendukung NVMe.
Setelah penyebaran layanan selesai, kami sarankan Anda segera menghapus citra kustom lama untuk menghindari biaya untuk sumber daya yang tidak digunakan.
Referensi
-
Anda hanya dapat menyambungkan SSD Perusahaan (ESSD) dan ESSD AutoPL disk ke tipe instans ECS berbasis NVMe. Anda dapat mengaktifkan fitur Multi-attach untuk cloud disk pada disk ini untuk berbagi data dengan menyambungkannya ke beberapa Instance ECS.
-
Jika parameter
io_timeoutdari disk NVMe pada Instance ECS dikonfigurasi secara tidak tepat, disk tersebut mungkin menjadi tidak tersedia. Untuk informasi lebih lanjut tentang cara menyelesaikan masalah ini, lihat Apa yang harus saya lakukan jika disk NVMe pada Instance ECS Linux tidak tersedia karena parameter timeout I/O yang dikonfigurasi secara tidak tepat?