Dokumen ini berisi daftar error yang mungkin Anda alami saat menggunakan disk dengan antarmuka nonvolatil memory Express (NVMe).
Anda dapat menggunakan antarmuka NVMe untuk SSD Lokal dan persistent disk (Persistent Disk atau Google Cloud Hyperdisk). Hanya seri mesin terbaru, seperti Tau T2A, M3, C3, C3D, dan H3 yang menggunakan antarmuka NVMe untuk Persistent Disk. Confidential VMs juga menggunakan NVMe untuk Persistent Disk. Semua seri mesin Compute Engine lainnya menggunakan antarmuka disk SCSI untuk persistent disk.
Error waktu tunggu operasi I/O habis
Jika Anda mengalami error waktu tunggu I/O, latensi dapat melebihi parameter waktu tunggu default untuk operasi I/O yang dikirimkan ke perangkat NVMe.
Pesan error:
[1369407.045521] nvme nvme0: I/O 252 QID 2 timeout, aborting [1369407.050941] nvme nvme0: I/O 253 QID 2 timeout, aborting [1369407.056354] nvme nvme0: I/O 254 QID 2 timeout, aborting [1369407.061766] nvme nvme0: I/O 255 QID 2 timeout, aborting [1369407.067168] nvme nvme0: I/O 256 QID 2 timeout, aborting [1369407.072583] nvme nvme0: I/O 257 QID 2 timeout, aborting [1369407.077987] nvme nvme0: I/O 258 QID 2 timeout, aborting [1369407.083395] nvme nvme0: I/O 259 QID 2 timeout, aborting [1369407.088802] nvme nvme0: I/O 260 QID 2 timeout, aborting ...
Resolusi:
Untuk mengatasi masalah ini, tingkatkan nilai parameter waktu tunggu.
Melihat nilai parameter waktu tunggu saat ini.
- Menentukan pengontrol NVMe yang digunakan oleh persistent disk atau volume SSD Lokal.
ls -l /dev/disk/by-id
Menampilkan setelan
io_timeout
, yang ditentukan dalam detik, untuk disk. Ganti kode berikut:cat /sys/class/nvme/CONTROLLER_ID/NAMESPACE/queue/io_timeout
CONTROLLER_ID
: ID pengontrol disk NVMe, misalnya,nvme1
NAMESPACE
: namespace disk NVMe, misalnya,nvme1n1
Jika Anda hanya memiliki satu disk yang menggunakan NVMe, gunakan perintah:
cat /sys/class/nvme/nvme0/nvme0n1/queue/io_timeout
- Menentukan pengontrol NVMe yang digunakan oleh persistent disk atau volume SSD Lokal.
Jika ingin meningkatkan parameter waktu tunggu untuk operasi I/O yang dikirim ke perangkat NVMe, tambahkan baris berikut ke file
/lib/udev/rules.d/65-gce-disk-naming.rules
, lalu mulai ulang VM:KERNEL=="nvme*n*", ENV{DEVTYPE}=="disk", ATTRS{model}=="nvme_card-pd", ATTR{queue/io_timeout}="4294967295"
Disk yang dilepas masih muncul di sistem operasi instance komputasi
Pada VM yang menggunakan kernel Linux versi 6.0 hingga 6.2, operasi yang melibatkan metode Compute Engine API instances.detachDisk
atau perintah gcloud compute instances detach-disk
mungkin tidak berfungsi seperti yang diharapkan.
Konsol Google Cloud menampilkan perangkat sebagai dihapus, metadata instance komputasi
(perintah compute disks describe
) menampilkan perangkat sebagai dihapus, tetapi titik pemasangan
perangkat dan symlink apa pun yang dibuat oleh aturan udev masih terlihat di
sistem operasi tamu.
Pesan error:
Mencoba membaca dari disk yang dilepas di VM akan menyebabkan error I/O:
sudo head /dev/nvme0n3 head: error reading '/dev/nvme0n3': Input/output error
Masalah:
Image sistem operasi yang menggunakan kernel Linux 6.0-6.2, tetapi tidak menyertakan backport perbaikan NVMe, tidak dapat mengenali saat disk NVMe dilepas.
Resolusi:
Mulai ulang VM untuk menyelesaikan proses penghapusan disk.
Untuk menghindari masalah ini, gunakan sistem operasi dengan versi kernel Linux yang tidak memiliki masalah ini:
- 5.19 atau yang lebih baru
- 6.3 atau yang lebih baru
Anda dapat menggunakan perintah uname -r
di OS tamu untuk melihat versi kernel
Linux.
Symlink tidak dibuat di VM C3 dan C3D dengan SSD Lokal
Jika memasang disk SSD Lokal ke VM C3 atau C3D, Anda mungkin perlu mengambil langkah tambahan untuk membuat symlink untuk disk SSD Lokal. Langkah-langkah ini hanya diperlukan jika Anda menggunakan salah satu image publik berikut yang ditawarkan oleh Google Cloud:
- SLES 15 SP4 dan SP5
- SLES 12 SP4
Langkah-langkah tambahan ini hanya berlaku untuk disk SSD Lokal; Anda tidak perlu melakukan apa pun untuk volume Persistent Disk.
Image Linux publik yang tercantum sebelumnya tidak memiliki konfigurasi udev
yang benar untuk membuat symlink bagi perangkat SSD Lokal yang terpasang pada VM C3 dan C3D. Image kustom mungkin juga tidak menyertakan aturan udev
wajib yang diperlukan dalam membuat symlink untuk perangkat SSD Lokal yang terpasang ke VM C3 dan C3D.
Gunakan petunjuk ini untuk menambahkan aturan udev
untuk SUSE atau image kustom.
- Temukan direktori aturan udev. Nilai ini biasanya
/lib/udev/rules.d
atau/usr/lib/udev/rules.d
. Gambar Anda mungkin memiliki direktori aturanudev
yang berbeda. - Temukan file
65-gce-disk-naming.rules
di direktori aturan udev. Jika file
65-gce-disk-naming.rules
berisi baris berikut, image Anda mendukung aturan baru dan Anda dapat berhenti di sini:KERNEL=="nvme*n*", ATTRS{model}=="nvme_card[0-9]*",IMPORT{program}="google_nvme_id -d $tempnode"
Jika baris sebelumnya tidak ada, atau jika file
65-gce-disk-naming.rules
tidak ada, ganti file yang sudah ada, atau buat file baru, dengan konten file dari URL ini: https://raw.githubusercontent.com/GoogleCloudPlatform/guest-configs/20230630.00/src/lib/udev/rules.d/65-gce-disk-naming.rules. File ini berisi konten file65-gce-disk-naming.rules
yang diperbarui, termasuk baris dari langkah sebelumnya dan aturan lain yang diperlukan untuk penamaan disk Compute Engine. Contoh:sudo curl -o 65-gce-disk-naming.rules https://raw.githubusercontent.com/GoogleCloudPlatform/guest-configs/20230630.00/src/lib/udev/rules.d/65-gce-disk-naming.rules
Buka direktori
udev
.Temukan file
google_nvme_id
di direktoriudev
.Ganti konten file
google_nvme_id
yang ada, atau buat file baru, dengan konten di URL ini:sudo curl -o google_nvme_id https://raw.githubusercontent.com/GoogleCloudPlatform/guest-configs/20230630.00/src/lib/udev/google_nvme_id
Pastikan file
google_nvme_id
dapat dieksekusi.sudo chmod 755 google_nvme_id
Mulai ulang VM.
Pastikan symlink berhasil dibuat.
ls -l /dev/disk/by-id/google-local-nvme-ssd*
Output harus mencantumkan jumlah link yang sama karena terdapat SSD Lokal yang terpasang ke instance, dan setiap link harus mengarah ke jalur perangkat
/dev/nvme
yang berbeda. Contoh:lrwxrwxrwx 1 root root 13 Jul 19 22:52 /dev/disk/by-id/google-local-nvme-ssd-0 -> ../../nvme0n1 lrwxrwxrwx 1 root root 13 Jul 19 22:52 /dev/disk/by-id/google-local-nvme-ssd-1 -> ../../nvme1n1
Untuk mengetahui informasi selengkapnya tentang nama perangkat, lihat Penamaan perangkat.
Anda dapat memverifikasi bahwa jalur perangkat
/dev/nvme
adalah perangkat SSD Lokal dengan menjalankanlsblk
. Perangkat NVMe yang menampilkan ukuran375G
adalah perangkat SSD Lokal.
Apa langkah selanjutnya?
- Pelajari Persistent Disk.
- Pelajari SSD Lokal.
- Mengonfigurasi disk untuk memenuhi persyaratan performa.
- Pelajari symlink.