심볼릭 링크를 사용하여 Linux VM에 연결된 디스크에 액세스


Linux OS를 사용하는 가상 머신(VM)에 디스크를 연결하면 Google Cloud에서 자동으로 디스크의 심볼릭 링크를 만듭니다. Linux VM에서 Persistent Disk 볼륨 또는 로컬 SSD 디스크에 액세스하려면 심볼릭 링크를 사용합니다. 이러한 심볼릭 링크는 예측 가능하며 재부팅 후에도 일관되게 유지됩니다. Google Cloud는 /dev/disk/by-id의 VM에 연결된 모든 디스크의 심볼릭 링크를 만듭니다.

이 문서에서는 VM에 연결된 디스크의 올바른 심볼릭 링크를 식별하는 방법을 설명합니다.

제한사항

로컬 SSD 디스크를 C3 또는 C3D VM에 연결하는 경우 추가 단계를 수행하여 로컬 SSD 디스크에 대한 심볼릭 링크를 만들어야 할 수도 있습니다. 이 단계는 Google Cloud에서 제공하는 다음 공개 이미지를 사용하는 경우에만 필요합니다.

  • SLES 15 SP4 및 SP5
  • SLES 12 SP4

이러한 추가 단계는 로컬 SSD 디스크에만 적용됩니다. Persistent Disk 볼륨에는 아무 작업도 수행할 필요가 없습니다.

이전 목록의 공개 이미지에는 /dev/disk/by-id/google-local-nvme-ssd-N 형식의 로컬 SSD 심볼릭 링크가 없습니다. 이러한 이미지에는 기기 정보(예: nvme-nvme.1ae0-6e766d655f636172642d7064-6e766d655f636172642d7064-00000001)를 사용하는 심볼릭 링크만 존재합니다.

이러한 Linux 이미지의 사용자 친화적인 심볼릭 링크를 가져오려면 udev 규칙을 업데이트하고 인스턴스에 스크립트를 추가해야 합니다.

C3 및 C3D에서 로컬 SSD 디스크의 심볼릭 링크를 지원하도록 udev 규칙을 업데이트하는 방법은 NVMe 디스크 문제 해결을 참조하세요.

심볼릭 링크를 사용하는 대신 /dev/nvme0n1과 같이 기기 이름을 사용하여 VM의 로컬 SSD 디스크에 액세스할 수 있습니다.

심볼릭 링크는 VM을 만드는 동안 또는 이후에 디스크가 VM에 연결되면 /dev/disk/by-id에 생성됩니다. 심볼릭 링크 이름은 다음과 같이 생성됩니다.

Persistent Disk 및 Google Cloud Hyperdisk

심볼릭 링크는 다음 규칙을 사용하여 생성됩니다.

  • 디스크를 만들 때 커스텀 기기 이름을 지정한 경우: google-DEVICE_NAME
  • 디스크를 만들 때 커스텀 기기 이름을 지정하지 않은 경우:
    • 부팅 디스크: google-VM_NAME
    • 비부팅 디스크: google-DISK_NAME

심볼릭 링크는 디스크 포맷 후 -partN와 함께 추가됩니다. 여기서 N은 파티션 번호입니다. 예를 들면 google-data-disk-part1입니다.

로컬 SSD 디스크

로컬 SSD 심볼릭 링크에는 디스크 인터페이스에 따라 다양한 형식을 갖습니다.

  • SCSI: 심볼릭 링크의 이름은 google-local-ssd-N이며, 여기서 N은 로컬 SSD 디스크 번호이고 0부터 시작합니다.
  • NVMe: 심볼릭 링크의 이름은 google-local-nvme-ssd-N입니다. 여기서 N은 SSD 번호이고 0부터 시작합니다.

로컬 SSD 디스크를 포맷하면 심볼릭 링크에는 -partN이 추가됩니다. 여기서 N은 파티션 번호입니다(예: google-local-nvme-ssd-0-part1).

기기 심볼릭 링크

Compute Engine은 디스크 유형 및 인터페이스를 기반으로 디렉터리에 추가 심볼릭 링크를 만듭니다(예: scsi-0Google_PersistentDisk_DEVICE_NAME). 이러한 링크는 앞서 언급한 심볼릭 링크와 동일한 기능을 수행합니다.

예시 1: 로컬 SSD가 연결된 C3 VM

다음 속성을 사용하여 VM을 만들었다고 가정해 보겠습니다.

  • VM 이름: instance-1
  • 머신 시리즈: C3
  • 디스크 인터페이스 유형: Persistent Disk와 로컬 SSD 모두를 위한 NVMe
  • 추가 디스크: 없음
  • 연결된 로컬 SSD 디스크: 2개
  • 사용된 커스텀 기기 이름: 없음

Compute Engine에서 해당 VM에 대해 다음 심볼릭 링크를 만듭니다.

ls -l /dev/disk/by-id/google-*
google-instance-1 -> ../../nvme2n1
google-instance-1-part1 -> ../../nvme2n1p1
google-instance-1-part14 -> ../../nvme2n1p14
google-instance-1-part15 -> ../../nvme2n1p15
google-local-nvme-ssd-0 -> ../../nvme0n1
google-local-nvme-ssd-1 -> ../../nvme1n1

이 예시에서 Persistent Disk 부팅 디스크 심볼릭 링크는 VM 이름을 기반으로 하는 google-instance-1입니다. 부팅 디스크가 포맷되어 운영체제가 설치되어 있습니다. 부팅 디스크에는 1개, 14부, 15부로 3개의 파티션이 있습니다. 연결된 로컬 SSD 디스크는 형식이 지정되지 않으므로 각 로컬 SSD 디스크에 대해 단일 심볼릭 링크만 생성되었습니다.

예시 2: NVMe 로컬 SSD 및 추가 Persistent Disk가 연결된 N2 VM

다음 속성을 사용하여 VM을 만들었다고 가정해 보겠습니다.

  • VM 이름: instance-2
  • 머신 시리즈: N2
  • 디스크 인터페이스 유형: Persistent Disk의 경우 SCSI, 로컬 SSD의 경우 NVMe
  • 추가 디스크: extra-scsi-disk라는 Persistent Disk 1개
  • 연결된 로컬 SSD 디스크: 2개
  • 사용된 커스텀 기기 이름: 없음

해당 VM에 대해 다음 심볼릭 링크가 생성됩니다.

ls -l /dev/disk/by-id/google-*
google-extra-scsi-disk -> ../../sdb
google-instance-2 -> ../../sda
google-instance-2-part1 -> ../../sda1
google-instance-2-part14 -> ../../sda14
google-instance-2-part15 -> ../../sda15
google-local-nvme-ssd-0 -> ../../nvme0n1
google-local-nvme-ssd-0-part1 -> ../../nvme0n1p1
google-local-nvme-ssd-1 -> ../../nvme0n2

이 예시에서 Persistent Disk 부팅 디스크 심볼릭 링크는 VM 이름을 기반으로 하는 google-instance-2입니다. 부팅 디스크가 포맷되어 있고 OS 이미지가 설치되어 있습니다. 부팅 디스크에는 1개, 14부, 15부로 3개의 파티션이 있습니다. 첫 번째 로컬 SSD 디스크도 단일 파티션으로 파티션을 나누므로 해당 디스크 파티션에 대한 추가 심볼릭 링크가 생성됩니다. VM에 추가되는 추가 Persistent Disk에는 디스크 이름을 기반으로 하는 심볼릭 링크 google-extra-scsi-disk가 있습니다. 추가 Persistent Disk와 두 번째 로컬 SSD 디스크는 포맷되지 않으므로 해당 디스크에 대해 단일 심볼릭 링크만 표시됩니다.

다음 단계