Linux VM에서 비부팅 디스크 포맷 및 마운트


새로운 빈 디스크를 VM에 연결한 경우 이를 사용하려면 먼저 디스크를 포맷하고 마운트해야 합니다. 이미 데이터가 포함된 디스크를 연결한 경우 디스크를 사용하려면 먼저 마운트해야 합니다.

시작하기 전에

  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    콘솔

    Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스할 때는 인증을 설정할 필요가 없습니다.

    gcloud

    1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init
    2. 기본 리전 및 영역을 설정합니다.

    REST

    로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

      Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init

VM에 연결

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 새 디스크가 연결된 인스턴스 옆에 있는 SSH 버튼을 클릭합니다. 브라우저에서 해당 VM으로의 터미널 연결이 열립니다.

Linux VM에서 비부팅 디스크 포맷

  1. 터미널에서 연결된 디스크용으로 만든 심볼릭 링크를 사용하여 포맷할 기기를 결정합니다.

     ls -l /dev/disk/by-id/google-*
    

    포맷되지 않은 디스크에는 이름에 -partN이 포함된 추가 심볼릭 링크가 없습니다.

     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-1 -> ../../nvme0n2
    

    이 예시에서는 extra-scsi-disk 이름으로 새 영구 디스크가 생성되었습니다. 새 디스크의 기기 이름은 sdb입니다.

  2. mkfs 도구를 사용하여 디스크 기기를 포맷합니다. 이 명령어는 지정된 디스크의 모든 데이터를 삭제하므로 디스크 기기를 올바르게 지정해야 합니다.

    필요한 모든 파일 형식을 사용할 수 있지만 파티션 테이블이 없는 단일 ext4 파일 시스템을 권장합니다. 나중에 디스크 파티션을 수정할 필요 없이 디스크 크기를 늘릴 수 있습니다.

    디스크 성능을 극대화하려면 -E 플래그와 함께 권장되는 포맷 옵션을 사용하세요. 이 보조 디스크에서는 루트 볼륨 공간을 예약할 필요가 없으므로 -m 0을 지정하여 모든 가용 디스크 공간을 사용하세요.

     $ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/DEVICE_NAME
     

    DEVICE_NAME을 포맷할 디스크의 기기 이름으로 바꿉니다. 예를 들어 첫 번째 단계의 출력 예시를 사용하여 기기 이름으로 sdb를 사용합니다.

    이 명령어는 전체 디스크를 파티션 테이블 없이 포맷합니다.

디스크 마운트

  1. VM에서 새 디스크의 마운트 지점 역할을 하는 디렉터리를 만듭니다. 어떤 디렉터리든 사용할 수 있습니다. 다음 예시에서는 /mnt/disks/ 아래에 디렉터리를 만듭니다.

    $ sudo mkdir -p /mnt/disks/MOUNT_DIR
    

    MOUNT_DIR을 디스크를 마운트할 디렉터리로 바꿉니다.

  2. 마운트 도구를 사용하여 디스크를 인스턴스에 마운트하고 discard 옵션을 사용 설정합니다.

    $ sudo mount -o discard,defaults /dev/DEVICE_NAME /mnt/disks/MOUNT_DIR
    

    다음을 바꿉니다.

    • DEVICE_NAME: 마운트할 디스크의 기기 이름입니다.
    • MOUNT_DIR: 디스크를 마운트할 디렉터리입니다.
  3. 디스크에 대한 읽기 및 쓰기 권한을 구성합니다. 이 예시에서는 모든 사용자에게 디스크에 대한 쓰기 액세스 권한을 부여합니다.

    $ sudo chmod a+w /mnt/disks/MOUNT_DIR
    

    MOUNT_DIR을 디스크가 마운트된 디렉터리로 바꿉니다.

VM 재시작 시 자동 마운트 구성

VM이 다시 시작될 때 디스크가 자동으로 다시 마운트되도록 /etc/fstab 파일에 디스크를 추가합니다. Linux 운영체제에서는 재부팅할 때마다 기기 이름이 변경될 수 있지만 기기 UUID는 디스크를 시스템 간 이동하는 경우에도 항상 동일한 볼륨을 가리킵니다. 이러한 이유로 VM 이름 대신 기기 UUID를 사용하여 VM 재시작 시 자동 마운트를 구성하는 것이 좋습니다.

  1. 현재 /etc/fstab 파일의 백업을 만듭니다.

    $ sudo cp /etc/fstab /etc/fstab.backup
    
  2. blkid 명령어를 사용하여 디스크의 UUID를 나열합니다.

    $ sudo blkid /dev/DEVICE_NAME
    
    /dev/DEVICE_NAME: UUID="a9e1c14b-f06a-47eb-adb7-622226fee060" BLOCK_SIZE="4096"
    TYPE="ext4" PARTUUID="593b3b75-108f-bd41-823d-b7e87d2a04d1"
    

    다음을 바꿉니다.

    • DEVICE_NAME: 자동 마운트하려는 디스크의 기기 이름입니다. 디스크에 파티션 테이블을 만든 경우 기기 이름에 추가된 서픽스를 추가하여 마운트할 파티션을 지정합니다. 예를 들어 sdb가 디스크의 기기 이름인 경우 sdb1은 파티션의 이름일 수 있습니다.
  3. 텍스트 편집기에서 /etc/fstab 파일을 열고 UUID를 포함하는 항목을 만듭니다. 예를 들면 다음과 같습니다.

    UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
    

    다음을 바꿉니다.

    • UUID_VALUE: 이전 단계의 출력에 나열된 디스크의 UUID입니다.
    • MOUNT_DIR: 디스크를 마운트한 디렉터리입니다.
    • MOUNT_OPTION: 부팅 시 영역 영구 디스크를 마운트할 수 없을 경우 운영체제가 수행할 작업을 지정합니다. 유효한 값은 Linux fstab 문서네 번째 필드를 참조하세요. 디스크를 사용할 수 없는 경우에도 시스템을 부팅하려면 nofail 옵션을 사용합니다.
  4. cat 명령어를 사용하여 /etc/fstab 항목이 올바른지 확인합니다.

    $ cat /etc/fstab
    
    UUID=6B33-A686 /boot/efi vfat defaults 0 0
    UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
    
    

항상 /etc/fstab 파일을 VM에 연결된 기기와 동기화를 유지합니다. 디스크를 분리하거나 VM의 부팅 디스크에서 스냅샷을 만들려면 /etc/fstab 파일을 수정하고 디스크 항목을 삭제합니다. MOUNT_OPTIONnofail 또는 nobootwait로 설정하더라도 부팅 디스크 스냅샷을 생성하거나 디스크를 분리하기 전에 항목을 삭제해야 합니다.

다음 단계