이 페이지의 안내에 따라 비부팅 디스크를 만들어 가상 머신 (VM)에 연결합니다.
시작하기 전에
gdcloud
명령줄 인터페이스 (CLI) 명령어를 사용하려면 gdcloud
CLI를 다운로드, 설치, 구성해야 합니다.
Distributed Cloud의 모든 명령어는 gdcloud
또는 kubectl
CLI를 사용하며 운영체제 (OS) 환경이 필요합니다.
kubeconfig 파일 경로 가져오기
관리 API 서버에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.
관리 API 서버의 kubeconfig 파일이 없는 경우 로그인 및 생성합니다.
관리 API 서버의 kubeconfig 파일 경로를 사용하여 이 안내의
MANAGEMENT_API_SERVER
를 바꿉니다.
권한 및 액세스 요청
이 페이지에 나열된 작업을 수행하려면 프로젝트 VirtualMachine 관리자 역할이 있어야 합니다. 단계를 따라 VM이 있는 프로젝트의 네임스페이스에 프로젝트 VirtualMachine 관리자 (project-vm-admin
) 역할이 있는지 확인합니다.
GDC 콘솔 또는 gdcloud CLI를 사용하는 VM 작업의 경우 프로젝트 IAM 관리자에게 프로젝트 VirtualMachine 관리자 역할과 프로젝트 뷰어 (project-viewer
) 역할을 모두 할당해 달라고 요청하세요.
VM에 디스크 연결
비부팅 디스크를 만들어 VM에 연결합니다. 각 추가 디스크는 맞춤 이미지나 빈 디스크를 지정할 수 있습니다. VM에 여러 디스크를 한 번에 추가할 수 있습니다.
콘솔
탐색 메뉴에서 가상 머신 > 인스턴스를 클릭합니다.
VM 목록에서 VM 이름을 클릭하여 세부정보를 확인합니다.
새 디스크 추가를 클릭합니다.
확인 대화상자에서 중지를 클릭하여 VM을 중지합니다.
VM이 중지될 때까지 몇 분 정도 기다립니다.
새로고침을 클릭합니다.
VM이 중지된 상태일 때 새 디스크 추가를 다시 클릭합니다.
디스크 추가 대화상자에서 새 디스크 또는 기존 디스크를 선택합니다.
새 디스크를 프로비저닝하려면 새 디스크 탭을 클릭합니다.
- 디스크 이름 필드에 프로젝트에 고유한 새 디스크 이름을 입력합니다.
- 크기 필드에 디스크 크기를 입력합니다(10~65, 536GiB). 예를 들어 10GiB입니다.
- 삭제 규칙 섹션에서 디스크 유지 또는 디스크 삭제를 클릭합니다.
기존 디스크를 선택하려면 기존 디스크 탭을 클릭합니다.
- 디스크 목록에서 디스크를 선택합니다.
- '삭제 규칙' 섹션에서 디스크 유지 또는 디스크 삭제를 클릭합니다.
저장을 클릭합니다. 디스크가 VM의 디스크 목록에 표시됩니다.
API
VirtualMachineDisk
을 만듭니다.kubectl --kubeconfig MANAGEMENT_API_SERVER apply -n PROJECT -f - <<EOF apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineDisk metadata: name: NON_BOOT_BLANK_DISK spec: size: NON_BOOT_BLANK_DISK_SIZE EOF
기존
VirtualMachine
spec.disks
에VirtualMachineDisk
를 추가합니다.kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT VM_NAME
텍스트 편집기에서 다음을 수정합니다.
... disks: - virtualMachineDiskRef: name: VM_BOOT_DISK_NAME boot: true - virtualMachineDiskRef: name: NON_BOOT_BLANK_DISK autoDelete: false ...
다음 정의를 사용하여 변수를 바꿉니다.
변수 정의 MANAGEMENT_API_SERVER
관리 API 서버 kubeconfig 파일입니다. PROJECT
VM을 만들 Google Distributed Cloud 에어 갭 (GDC) 프로젝트입니다. VM_NAME
새 VM의 이름입니다. VM_BOOT_DISK_NAME
새 VM 부팅 디스크의 이름입니다. NON_BOOT_BLANK_DISK
추가 디스크의 이름입니다. NON_BOOT_BLANK_DISK_SIZE
추가 디스크의 크기입니다(예: 20G
).
비부팅 디스크 포맷 및 마운트
디스크를 VM에 연결한 후 VM 내에서 액세스할 수 있도록 다음 필수 단계를 실행합니다.
VM에 연결
디스크 포맷
일련번호별로 인스턴스에 연결된 디스크를 나열하고 포맷하고 마운트하려는 디스크를 찾습니다.
ls -l /dev/disk/by-id/
이 예시 출력에서는 디스크 이름이 일련번호로 표시됩니다.
total 0 lrwxrwxrwx 1 root root 9 Sep 13 23:51 ata-QEMU_HARDDISK_agentSADisk -> ../../sdc lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-0ATA_QEMU_HARDDISK_agentSADisk -> ../../sdc lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot -> ../../sda lrwxrwxrwx 1 root root 10 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part1 -> ../../sda1 lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part14 -> ../../sda14 lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part15 -> ../../sda15 lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-1ATA_QEMU_HARDDISK_agentSADisk -> ../../sdc lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-SATA_QEMU_HARDDISK_agentSADisk -> ../../sdc lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot -> ../../sda lrwxrwxrwx 1 root root 10 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part1 -> ../../sda1 lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part14 -> ../../sda14 lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part15 -> ../../sda15 lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb
각 줄의 화살표(
->
) 뒤에 나오는 정보는 디스크 기기 이름을 나타냅니다. 예를 들어scsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb
에서 일련번호는scsi-SQEMU_QEMU_HARDDISK_vm-disk-data
이고 기기 이름은sdb
입니다.이 목록에서 디스크 일련번호를 확인합니다.
일련번호 목록에 영향을 줄 수 있는 중요한 상황별 기능 동작:
virtualMachineDiskRef.name
값이 20자(영문 기준)를 초과하면 처음 20자만 일련번호로 사용됩니다.- 처음 20자가 동일한 2개의 디스크가 있는 경우 첫 번째 디스크만 일련번호를 가집니다.
디스크를 포맷합니다.
sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/DISK_ID
DISK_ID
을 포맷할 디스크의 일련번호로 바꿉니다.- 이 예시에서는
scsi-SQEMU_QEMU_HARDDISK_vm-disk-data
를 지정하여 전체 디스크를 파티션 테이블 없이 포맷합니다.
디스크 성능을 극대화하려면 -E
플래그에 권장되는 포맷 옵션을 사용하세요. 보조 디스크에서 루트 볼륨용 공간을 예약할 필요가 없으므로 -m 0
을 지정하여 모든 가용 디스크 공간을 사용하세요.
디스크 마운트
새 디스크의 마운트 지점 역할을 하는 디렉터리를 만듭니다. 어떤 디렉터리든 사용할 수 있습니다. 다음 예시에서는
/mnt/disks/
에 디렉터리를 만듭니다.sudo mkdir -p /mnt/disks/MOUNT_DIR
MOUNT_DIR
을 디스크를 마운트하려는 디렉터리로 바꿉니다.디스크를 인스턴스에 마운트하고 discard 옵션을 사용 설정합니다.
sudo mount -o discard,defaults /dev/disk/by-id/DISK_ID /mnt/disks/MOUNT_DIR
다음을 바꿉니다.
DISK_ID
를 마운트할 디스크의 일련번호로 바꿉니다.MOUNT_DIR
을 디스크를 마운트할 디렉터리로 바꿉니다.
(선택사항) 디스크에 대한 읽기 및 쓰기 권한을 구성합니다. 다음 명령어는 모든 사용자에게 디스크에 대한 쓰기,
a+w
액세스 권한을 부여합니다.sudo chmod a+w /mnt/disks/MOUNT_DIR
선택사항: VM 재시작 시 자동 마운트 구성 - 범용 고유 식별자 (UUID) 또는 시작 스크립트 사용
VM 재시작 시 자동 마운트 구성 - 디스크 UUID
VM이 다시 시작될 때 디스크가 자동으로 다시 마운트되도록 /etc/fstab
파일에 디스크를 추가합니다. 운영체제 (OS)에서 기기 이름은 재부팅할 때마다 변경되지만 기기 UUID는 디스크를 시스템 간 이동하는 경우에도 항상 동일한 볼륨을 가리킵니다. 따라서 항상 기기 UUID를 사용하여 VM 재시작 시 자동 마운트를 구성하세요.
현재
/etc/fstab
파일의 백업을 만듭니다.sudo cp /etc/fstab /etc/fstab.backup
디스크의 UUID를 나열합니다.
sudo blkid /dev/DEVICE_NAME
예시 출력은 디스크의
accc19c5-d0d6-4157-9672-37d4e1d48eb5
UUID를 보여줍니다./dev/sdb: UUID="accc19c5-d0d6-4157-9672-37d4e1d48eb5" TYPE="ext4"
DEVICE_NAME
은 자동으로 마운트하려는 디스크의 기기 이름입니다. 디스크에 파티션 테이블을 만든 경우 기기 이름의 서픽스로 마운트할 파티션을 지정합니다. 예를 들어sdb
이 디스크 기기 이름이고 파티션 1을 마운트하려는 경우DEVICE_NAME
은sdb1
이 됩니다.텍스트 편집기에서
/etc/fstab
파일을 열고 UUID를 포함하는 항목을 만듭니다.UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
다음을 바꿉니다.
UUID_VALUE
(디스크UUID
포함)는 UUID 나열 명령어의 출력으로 나열됩니다.MOUNT_DIR
을 디스크가 마운트된 디렉터리로 바꿉니다.MOUNT_OPTION
(OS의MOUNT_OPTION
값 사용)는 부팅 시 디스크를 마운트할 수 없는 경우 OS가 수행하는 작업을 지정합니다.
/etc/fstab
항목이 올바른지 확인합니다.cat /etc/fstab
다음은 출력 예시를 보여줍니다.
LABEL=cloudimg-rootfs / ext4 defaults 0 1 LABEL=UEFI /boot/efi vfat umask=0077 0 1 UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
이 디스크를 분리하거나 이 VM의 부팅 디스크로 스냅샷을 만드는 경우 /etc/fstab
파일을 수정하고 이 디스크의 항목을 삭제합니다. MOUNT_OPTION
을 nofail
또는 nobootwait
로 설정한 경우에도 /etc/fstab
파일을 VM에 연결된 기기와 동기화해야 합니다. 부팅 디스크 스냅샷을 만들거나 디스크를 분리하기 전에 이 항목을 삭제합니다.
VM 재시작 시 자동 마운트 구성 - VM 시작 스크립트
디스크 마운트의 명령어를 시작 스크립트에 추가하여 재부팅할 때마다 디스크를 마운트하는 시작 스크립트를 사용할 수도 있습니다. 디스크를 마운트하는 스크립트를 추가하기 전에 디스크 포맷의 명령어를 사용하여 디스크를 포맷합니다.
시작 스크립트 보안 비밀을 만듭니다.
cat <<EOF >>mount-disk-script #!/bin/bash mkdir -p /mnt/disks/MOUNT_DIR mount -o discard,defaults /dev/disk/by-id/DISK_ID /mnt/disks/MOUNT_DIR EOF
kubectl create secret -n PROJECT generic VM_NAME-mount-script --from-file=script=mount-disk-script
rm mount-disk-script
VM에 시작 스크립트를 추가합니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT VM_NAME
보안 비밀 이름을 포함하도록
spec.startupScripts
을 수정합니다.apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachine metadata: name: VM_NAME namespace: PROJECT spec: … startupScripts: - name: mount-script scriptSecretRef: name: VM_NAME-mount-script
시작 스크립트 구성에 대한 자세한 내용은 참고하세요.