이 문서에는 비휘발성 메모리 표현식(NVMe) 인터페이스가 있는 디스크를 사용할 때 발생할 수 있는 오류가 나와 있습니다.
로컬 SSD 및 영구 디스크(영구 디스크 또는 Google Cloud Hyperdisk)에 대해 NVMe 인터페이스를 사용할 수 있습니다. Tau T2A, M3, C3, C3D, H3과 같은 최신 머신 시리즈만 Persistent Disk용 NVMe 인터페이스를 사용합니다. 또한 컨피덴셜 VM은 Persistent Disk용 NVMe를 사용합니다. 다른 모든 Compute Engine 머신 시리즈는 영구 디스크에 대해 SCSI 디스크 인터페이스를 사용합니다.
I/O 작업 시간 초과 오류
I/O 시간 초과 오류가 발생하는 경우 NVMe 기기에 제출된 I/O 작업에 대해 지연 시간이 기본 시간 초과 매개변수를 초과할 수 있습니다.
Linux 커널 버전 6.0~6.2를 사용하는 VM에서 Compute Engine API 메서드 instances.detachDisk 또는 gcloud compute instances detach-disk 명령어와 관련된 작업이 예상대로 작동하지 않을 수 있습니다.
Google Cloud 콘솔에서는 기기가 삭제된 것으로 표시하고 컴퓨팅 인스턴스 메타데이터(compute disks describe 명령어)에서는 기기가 삭제된 것으로 표시하지만 기기 마운트 지점 및 udev 규칙에 의해 생성된 모든 심볼릭 링크는 게스트 운영체제에 계속 표시됩니다.
오류 메시지:
VM의 분리된 디스크에서 읽기를 시도하면 I/O 오류가 발생합니다.
sudo head /dev/nvme0n3
head: error reading '/dev/nvme0n3': Input/output error
문제:
Linux 6.0~6.2 커널을 사용하지만 NVMe 수정 백포트가 포함되지 않는 운영체제 이미지는 NVMe 디스크가 분리된 시기를 인식할 수 없습니다.
해결 방법:
VM을 재부팅하여 디스크 삭제 프로세스를 완료합니다.
이 문제를 방지하려면 이 문제가 없는 Linux 커널 버전의 운영체제를 사용합니다.
5.19 이전
6.3 이상
게스트 OS에서 uname -r 명령어를 사용하여 Linux 커널 버전을 볼 수 있습니다.
로컬 SSD를 사용하는 C3 및 C3D VM에서 심볼릭 링크가 생성되지 않음
로컬 SSD 디스크를 C3 또는 C3D VM에 연결하는 경우 추가 단계를 수행하여 로컬 SSD 디스크에 대한 심볼릭 링크를 만들어야 할 수도 있습니다. 이 단계는Google Cloud에서 제공하는 다음 공개 이미지 중 하나를 사용하는 경우에만 필요합니다.
SLES 15 SP4 및 SP5
SLES 12 SP4
이러한 추가 단계는 로컬 SSD 디스크에만 적용됩니다. Persistent Disk 볼륨에는 아무 작업도 수행할 필요가 없습니다.
이전에 나열된 공개 Linux 이미지에는 C3 및 C3D VM에 연결된 로컬 SSD 기기에 대한 심볼릭 링크를 만들 수 있는 올바른 udev 구성이 없습니다. 커스텀 이미지에도 C3 및 C3D VM에 연결된 로컬 SSD 기기의 심볼릭 링크를 만드는 데 필요한 필수 udev 규칙이 포함되지 않을 수 있습니다.
다음 안내에 따라 SUSE 또는 커스텀 이미지의 udev 규칙을 추가합니다.
udev 규칙 디렉터리를 찾습니다. 일반적으로 /lib/udev/rules.d 또는 /usr/lib/udev/rules.d입니다. 이미지에 다른 udev 규칙 디렉터리가 있을 수 있습니다.
udev 규칙 디렉터리에서 65-gce-disk-naming.rules 파일을 찾습니다.
65-gce-disk-naming.rules 파일에 다음 줄이 포함되어 있으면 이미지에서 새 규칙을 지원하고 개발자가 여기서 중지할 수 있습니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-04-21(UTC)"],[[["\u003cp\u003eThis document details common errors encountered when using disks with the NVMe interface, including I/O timeout errors, detached disk visibility issues, and symlink creation failures.\u003c/p\u003e\n"],["\u003cp\u003eI/O timeout errors on NVMe devices can be resolved by increasing the timeout parameter, typically by modifying the \u003ccode\u003e/lib/udev/rules.d/65-gce-disk-naming.rules\u003c/code\u003e file, although most Google-provided OS images already have this change implemented.\u003c/p\u003e\n"],["\u003cp\u003eDetached NVMe disks might remain visible in the guest OS on VMs using Linux kernel versions 6.0 to 6.2 without a specific NVMe fix; rebooting the VM is required to fully detach the disk, and using kernel versions 5.19 or older, or 6.3 or newer, avoids this issue.\u003c/p\u003e\n"],["\u003cp\u003eC3 and C3D VMs with Local SSDs and certain public SUSE images or custom images might require manual configuration of \u003ccode\u003eudev\u003c/code\u003e rules to create the necessary symlinks for Local SSD devices, which involves updating or creating the \u003ccode\u003e65-gce-disk-naming.rules\u003c/code\u003e and \u003ccode\u003egoogle_nvme_id\u003c/code\u003e files.\u003c/p\u003e\n"]]],[],null,["# Troubleshooting NVMe disks\n\n*** ** * ** ***\n\nThis document lists errors that you might encounter when using disks with the\nnonvolatile memory express (NVMe) interface.\n\nYou can use the NVMe interface for Local SSDs and persistent disks (Persistent Disk\nor Google Cloud Hyperdisk). Only the\nmost recent machine series, such as Tau T2A, M3, C3, C3D, and H3 use the\n[NVMe](http://wikipedia.org/wiki/NVM_Express) interface for\nPersistent Disk. Confidential VMs also use NVMe for Persistent Disk. All other\nCompute Engine machine series use the\n[SCSI](http://wikipedia.org/wiki/SCSI) disk interface for\npersistent disks.\n\nI/O operation timeout error\n---------------------------\n\nIf you are encountering I/O timeout errors, latency could be exceeding the\ndefault timeout parameter for I/O operations submitted to NVMe devices.\n\n**Error message**: \n\n```\n[1369407.045521] nvme nvme0: I/O 252 QID 2 timeout, aborting\n[1369407.050941] nvme nvme0: I/O 253 QID 2 timeout, aborting\n[1369407.056354] nvme nvme0: I/O 254 QID 2 timeout, aborting\n[1369407.061766] nvme nvme0: I/O 255 QID 2 timeout, aborting\n[1369407.067168] nvme nvme0: I/O 256 QID 2 timeout, aborting\n[1369407.072583] nvme nvme0: I/O 257 QID 2 timeout, aborting\n[1369407.077987] nvme nvme0: I/O 258 QID 2 timeout, aborting\n[1369407.083395] nvme nvme0: I/O 259 QID 2 timeout, aborting\n[1369407.088802] nvme nvme0: I/O 260 QID 2 timeout, aborting\n...\n```\n\n\u003cbr /\u003e\n\n**Resolution**:\n\nTo resolve this issue, increase the value of the timeout parameter.\n| **Note:** Most of the operating system images provided by Google already include this change.\n\n1. View the current value of the timeout parameter.\n\n 1. Determine which NVMe controller is used by the persistent disk or Local SSD volume. \n\n ```\n ls -l /dev/disk/by-id\n ```\n 2. Display the `io_timeout` setting, specified in seconds, for the disk.\n\n ```\n cat /sys/class/nvme/CONTROLLER_ID/NAMESPACE/queue/io_timeout\n ```\n Replace the following:\n\n \u003cbr /\u003e\n\n - \u003cvar translate=\"no\"\u003eCONTROLLER_ID\u003c/var\u003e: the ID of the NVMe disk controller, for example, `nvme1`\n - \u003cvar translate=\"no\"\u003eNAMESPACE\u003c/var\u003e: the namespace of the NVMe disk, for example, `nvme1n1`\n\n If you only have a single disk that uses NVMe, then use the command: \n\n ```\n cat /sys/class/nvme/nvme0/nvme0n1/queue/io_timeout\n ```\n\n \u003cbr /\u003e\n\n2. To increase the timeout parameter for I/O operations submitted to NVMe\n devices, add the following line to the\n `/lib/udev/rules.d/65-gce-disk-naming.rules` file, and then restart the VM:\n\n ```\n KERNEL==\"nvme*n*\", ENV{DEVTYPE}==\"disk\", ATTRS{model}==\"nvme_card-pd\", ATTR{queue/io_timeout}=\"4294967295\"\n ```\n\nDetached disks still appear in the operating system of a compute instance\n-------------------------------------------------------------------------\n\nOn VMs that use Linux kernel version 6.0 to 6.2, operations\ninvolving the Compute Engine API method `instances.detachDisk` or the\n`gcloud compute instances detach-disk` command might not work as expected.\nThe Google Cloud console shows the device as removed, the compute instance metadata\n(`compute disks describe` command) shows the device as removed, but the device\nmount point and any symlinks created by udev rules are still visible in the\nguest operating system.\n\n**Error message**:\n\nAttempting to read from the detached disk on the VM results in I/O errors: \n\n```\nsudo head /dev/nvme0n3\n\nhead: error reading '/dev/nvme0n3': Input/output error\n```\n\n**Issue**:\n\nOperating system images that use a Linux 6.0-6.2 kernel but don't include\na backport of a [NVMe fix](https://github.com/torvalds/linux/commit/0dd6fff2aad4e35633fef1ea72838bec5b47559a)\nfail to recognize when an NVMe disk is detached.\n\n**Resolution**:\n\nReboot the VM to complete the process of removing the disk.\n\nTo avoid this issue, use an operating system with a\nLinux kernel version that doesn't have this problem:\n\n- 5.19 or older\n- 6.3 or newer\n\nYou can use the `uname -r` command in the guest OS to view the Linux kernel\nversion.\n\nWhat's next?\n------------\n\n- Learn about [Persistent Disk](/compute/docs/disks/persistent-disks).\n- Learn about [Local SSDs](/compute/docs/disks/local-ssd).\n- [Configure disks to meet performance requirements](/compute/docs/disks/performance).\n- Learn about [symlinks](/compute/docs/disks/disk-symlinks)."]]