이 문서에서는 Linux VM에서 영구 기기 이름 지정을 사용하는 방법을 설명합니다.
Linux 운영체제를 사용하는 VM의 경우 다음과 같은 절차를 수행하면 /dev/sda
와 같이 기기 이름을 변경할 수 있습니다.
- VM 시작 및 중지
- 디스크 분리 및 재연결
- 머신 유형 변경
이러한 기기 이름 변경은 VM이 시작되거나 장치가 연결되면 사용 가능한 범위에서 기기 이름이 할당되기 때문에 발생합니다. 기기를 분리하거나 VM을 중지하면 기기 이름이 확보됩니다. 기기가 다시 연결되거나 VM이 다시 시작되면 사용 가능한 범위에서 새 기기 이름이 할당됩니다. Linux 커널은 재부팅 시 기기 순서를 보장하지 않습니다.
기기 이름을 변경하면 원래 기기 이름을 사용하는 애플리케이션이나 스크립트가 제대로 작동하지 않거나 VM을 다시 시작한 후에 부팅되지 않을 수 있습니다.
Linux VM의 디스크와 파티션을 참조할 때 이 문제를 방지하려면 영구 기기 이름 지정을 사용하는 것이 좋습니다. symlink를 사용할 수도 있습니다.
시작하기 전에
- Linux 운영체제의 기기 관리를 검토합니다.
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다.
로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음 옵션 중 하나를 선택하여 Compute Engine에 인증하면 됩니다.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
nvme0n1
- Persistent Disknvme0n1p1
nvme0n1p2
nvme0n2
- 하이퍼디스크nvme0n2p1
nvme0n2p2
nvme1n1
- 첫 번째 로컬 SSDnvme2n1
- 두 번째 로컬 SSD- 라벨을 사용합니다. 이 옵션을 사용하려면 파일 시스템에서 라벨을 지원하고 디스크 파티션에 라벨을 추가해야 합니다.
- 파티션 또는 디스크 UUID 사용. UUID는 파티션 테이블이 있는 디스크를 만들 때 생성되고 UUID는 파티션별로 고유합니다.
- Persistent Disk 또는 Google Cloud Hyperdisk에 영구 디스크 ID(
/dev/disk/by-id
)를 사용하거나 디스크 리소스 이름을 기반으로 하는 심볼릭 링크를 사용합니다. - VM에 연결합니다.
디스크의 기기 이름을 모르는 경우 심볼릭 링크를 사용하여 디스크 기기 이름을 찾을 수 있습니다.
ls -l /dev/disk/by-id/google-*
출력은 다음과 비슷합니다.
lrwxrwxrwx 1 root root 9 Oct 23 15:58 /dev/disk/by-id/google-my-vm -> ../../sda lrwxrwxrwx 1 root root 10 Oct 23 15:58 /dev/disk/by-id/google-my-vm-part1 -> ../../sda1 lrwxrwxrwx 1 root root 11 Oct 23 15:58 /dev/disk/by-id/google-my-vm-part15 -> ../../sda15 lrwxrwxrwx 1 root root 9 Oct 23 15:58 /dev/disk/by-id/google-my-vm-app-data -> ../../nvme0n1
다음 명령어 중 하나를 실행하여 디스크의 파티션 UUID를 검색합니다.
blkid
sudo blkid -s UUID
출력은 다음과 비슷합니다.
/dev/sda1: UUID="4f570f2d-fffe-4c7d-8d8f-af347af7612a" /dev/sda15: UUID="E0B2-DFAF" /dev/nvme0n1: UUID="9e617251-6a92-45ff-ba40-700a9bdeb03e"
ls -l
sudo ls -l /dev/disk/by-uuid/
출력은 다음과 비슷합니다.
lrwxrwxrwx 1 root root 10 Sep 22 18:12 4f570f2d-fffe-4c7d-8d8f-af347af7612a -> ../../sda1 lrwxrwxrwx 1 root root 13 Sep 22 18:15 9e617251-6a92-45ff-ba40-700a9bdeb03e -> ../../nvme0n1 lrwxrwxrwx 1 root root 11 Sep 22 18:12 E0B2-DFAF -> ../../sda15
/etc/fstab
파일에 기기의 UUID 항목을 추가합니다.UUID=9e617251-6a92-45ff-ba40-700a9bdeb03e /data ext4 defaults 0 0
이 예시에서
/data
는 마운트 지점이고ext4
는 파일 시스템 유형입니다.mount -av
를 실행하여 기기가 올바르게 마운트되었는지 확인합니다.sudo mount -av
기기가 성공적으로 마운트되면 출력은 다음과 비슷합니다.
/ : ignored /boot/efi : already mounted mount: /data does not contain SELinux labels. You just mounted an file system that supports labels which does not contain labels, onto an SELinux box. It is likely that confine applications will generate AVC messages and not be allowed access to this filesystem. For more details see restorecon(8) and mount(8). /data : successfully mounted
- VM에 연결합니다.
다음 명령어를 실행하여 디스크의 ID를 가져옵니다.
sudo ls -lh /dev/disk/by-id/google-*
출력은 다음과 비슷합니다.
lrwxrwxrwx. 1 root root 9 May 16 17:34 google-disk-2 -> ../../sdb lrwxrwxrwx. 1 root root 9 May 16 09:09 google-persistent-disk-0 -> ../../sda lrwxrwxrwx. 1 root root 10 May 16 09:09 google-persistent-disk-0-part1 -> ../../sda1 lrwxrwxrwx. 1 root root 10 May 16 09:09 google-persistent-disk-0-part2 -> ../../sda2
NVME
디스크의 경우 출력은 다음과 비슷합니다.lrwxrwxrwx 1 root root 13 Jun 1 10:27 google-disk-3 -> ../../nvme0n2 lrwxrwxrwx 1 root root 13 Jun 1 10:25 google-t2a -> ../../nvme0n1 lrwxrwxrwx 1 root root 15 Jun 1 10:25 google-t2a-part1 -> ../../nvme0n1p1 lrwxrwxrwx 1 root root 16 Jun 1 10:25 google-t2a-part15 -> ../../nvme0n1p15
심볼릭 링크를
/etc/fstab
파일에 추가합니다./dev/disk/by-id/google-disk-2 /data ext4 defaults 0 0
mount -av
를 실행하여 기기가 올바르게 마운트되었는지 확인합니다.sudo mount -av
기기가 성공적으로 마운트되면 출력은 다음과 비슷합니다.
/ : ignored /boot/efi : already mounted mount: /data does not contain SELinux labels. You just mounted an file system that supports labels which does not contain labels, onto an SELinux box. It is likely that confine applications will generate AVC messages and not be allowed access to this file system. For more details see restorecon(8) and mount(8). /data : successfully mounted
Linux VM에서 기기 이름 지정
VM에 연결된 디스크의 Linux 기기 이름은 디스크를 만들 때 선택한 인터페이스에 따라 달라집니다.
lsblk
운영체제 명령어를 사용하여 디스크 기기를 볼 때는 NVMe 인터페이스에 연결된 디스크의 프리픽스가nvme
로 표시되고 SCSI 인터페이스에 연결된 디스크의 프리픽스는sd
로 표시됩니다.디스크 번호 또는 NVMe 컨트롤러의 순서는 VM 다시 시작 시 예측할 수 없으며 일관되지 않습니다. 처음 부팅할 때 영구 디스크는
nvme0n1
(또는 SCSI의 경우sda
)일 수 있습니다. 두 번째로 부팅할 때 같은 영구 디스크의 기기 이름은nvme2n1
또는nvme0n3
(또는 SCSI의 경우sdc
)일 수 있습니다.연결된 디스크에 액세스할 때는
/dev/disk/by-id/
에서 만든 심볼릭 링크를 대신 사용해야 합니다. 이러한 이름은 재부팅 후에도 지속됩니다. 심볼릭 링크에 대한 자세한 내용은 VM에 연결된 디스크의 심볼릭 링크를 참조하세요.SCSI 기기 이름
SCSI 연결 디스크 기기의 형식은 첫 번째 연결된 디스크의 경우
sda
입니다. 디스크 파티션은sda1
로 표시됩니다. 각 추가 디스크에는sdb
및sdc
와 같은 순차 문자가 사용됩니다.sdz
에 도달하면 다음으로 추가되는 디스크는sdaa
,sdab
,sdac
와 같은 이름이 최대sddx
까지 지정됩니다.NVMe 기기 이름
Linux 운영체제의 NVMe 연결 디스크 기기 형식은
nvmenumbernnamespace
입니다.number
는 NVMe 디스크 컨트롤러 번호를 나타내고 namespace는 NVMe 디스크 컨트롤러에서 할당한 NVMe 네임스페이스 ID입니다. 파티션의 경우 pn은 기기 이름에 추가됩니다. 여기서 n은 1로 시작하는 숫자로, n번째 파티션을 나타냅니다.컨트롤러 번호는
0
부터 시작합니다. 컴퓨팅 인스턴스에 연결된 단일 NVMe 디스크의 기기 이름은nvme0n1
입니다. 대부분의 머신 유형에서는 단일 NVMe 디스크 컨트롤러를 사용합니다. NVMe 기기 이름은nvme0n1
,nvme0n2
,nvme0n3
등으로 지정됩니다.3세대 머신 시리즈 이상 인스턴스에 연결된 로컬 SSD 디스크에는 디스크마다 별도의 NVMe 컨트롤러가 있습니다. 이러한 VM에서 로컬 SSD NVMe 연결 기기 이름은
nvme0n1
,nvme1n1
,nvme2n1
과 유사합니다. 연결된 로컬 SSD 디스크 수는 VM 머신 유형에 따라 다릅니다.3세대 머신 시리즈 이상을 기반으로 하는 컴퓨팅 인스턴스는 Persistent Disk, Google Cloud Hyperdisk, 로컬 SSD 디스크 모두에 NVMe를 사용합니다. VM마다 Persistent Disk 및 하이퍼디스크용으로 NVMe 컨트롤러 1개와 각 로컬 SSD 디스크용으로 NVMe 컨트롤러 1개가 있습니다. Persistent Disk 및 하이퍼디스크 NVMe 컨트롤러에는 연결된 모든 디스크에 대한 단일 NVMe 네임스페이스가 있습니다. 따라서 Persistent Disk 1개와 하이퍼디스크 1개(각각 파티션 2개), 포맷되지 않은 로컬 SSD 디스크 2개가 있는 3세대 머신 시리즈 인스턴스는 다음 기기 이름을 사용합니다.
영구 기기 이름 지정 사용
영구 기기 이름을 구성하려면
fstab
파일에 디스크 기기의 마운트 지점 이름을 할당합니다. 영구 기기 이름을 구성하는 방법에는 세 가지가 있습니다.Linux VM에는 파티션 UUID 또는 심볼릭 링크를 사용하는 것이 좋습니다.
파티션 UUID
디스크의 UUID를 찾으려면 다음 단계를 수행합니다.
영구 디스크 ID
영구 디스크 ID 또는 심볼릭 링크를 사용하여 디스크 기기 이름을 찾으려면 다음 단계를 완료하세요.
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-12-22(UTC)
-