인메모리 RAM 디스크 만들기


Compute Engine 인스턴스에는 애플리케이션을 실행하는 데 사용되는 고성능 엔터프라이즈급 메모리가 있습니다. 지연 시간은 매우 짧고 처리량은 많은 RAM 디스크를 만들도록 이 메모리의 일부를 할당할 수 있습니다. RAM 디스크는 애플리케이션이 파일 시스템 구조를 예상할 수 있고, 간단한 방법으로 시스템 메모리에 데이터를 저장할 수 없을 때 효과적입니다. RAM 디스크가 단독으로 스토리지 중복성이나 유연성을 제공하지는 않으므로 다른 인스턴스 저장 옵션과 함께 RAM 디스크를 사용하는 것이 가장 좋습니다.

RAM 디스크는 애플리케이션과 인스턴스 메모리를 공유합니다. 인스턴스에 RAM 디스크 및 애플리케이션을 포함할 수 있을 만큼 메모리가 충분하지 않으면 N2와 같은 highmem 머신 유형으로 인스턴스를 만들거나 기존 인스턴스를 업그레이드하여 메모리를 더 추가합니다.

시작하기 전에

  • RAM 디스크와 다른 Compute Engine 저장 옵션의 차이점에 대해 알아봅니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 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

RAM 디스크 만들기

대부분의 Linux 배포판에 기본적으로 포함된 tmpfs 파일 시스템으로 RAM 디스크를 만들 수 있습니다.

  1. 인스턴스에 사용 가능한 메모리가 충분하지 않은 경우 인스턴스 머신 유형을 메모리가 더 많은 머신 유형으로 변경할 수 있습니다.

  2. SSH를 통해 인스턴스에 연결합니다. 이 예시에서는 GCP Console에서 VM 인스턴스 페이지로 이동한 다음 RAM 디스크를 추가하려는 인스턴스 옆의 SSH 버튼을 클릭합니다.

  3. RAM 디스크의 마운트 지점을 만듭니다.

    $ sudo mkdir /mnt/ram-disk
    
  4. tmpfs RAM 디스크를 만들고 마운트합니다. 메모리를 놓고 애플리케이션과 경쟁하거나 사용 가능한 메모리를 다 소모하지 않고 스토리지 요구사항을 충족할 수 있도록 size 속성을 적절한 값으로 결정해야 합니다. 이 예시에서는 인스턴스에 208GB의 메모리를 가진 n1-highmem-32 머신 유형이 있으므로 RAM 디스크 크기로 50g가 적절합니다.

    $ sudo mount -t tmpfs -o size=50g tmpfs /mnt/ram-disk
    
  5. 인스턴스를 다시 시작하면 기기가 자동으로 다시 마운트되도록 RAM 디스크를 /etc/fstab 파일에 추가합니다.

    $ echo 'tmpfs /mnt/ram-disk tmpfs nodev,nosuid,noexec,nodiratime,size=50G 0 0' | sudo tee -a /etc/fstab
    

RAM 디스크 삭제

다른 볼륨과 마찬가지로 tmpfs RAM 디스크를 마운트 해제할 수 있습니다. 그러면 RAM 디스크와 그 안에 저장된 모든 데이터가 삭제됩니다. 이 예시에서는 /mnt/ram-disk에 마운트된 RAM 디스크를 삭제합니다.

$ sudo umount /mnt/ram-disk

인스턴스 다시 시작 사이에 자동으로 RAM 디스크 데이터 백업

인스턴스가 다시 시작될 때까지 RAM 디스크 데이터를 보존하기 위해 인스턴스가 재시작되기 전에 RAM 디스크를 백업 할 수 있습니다. 데이터를 보존하려면 영구 디스크에 데이터를 백업하세요.

  1. RAM 디스크의 백업 디스크로 사용할 영구 디스크를 만들고 마운트합니다. 디스크가 RAM 디스크의 정보를 담을 만큼 충분히 큰지 확인합니다.

  2. 백업 볼륨에 RAM 디스크 콘텐츠를 쓰는 rsync 명령어로 인스턴스에 대한 종료 스크립트를 만듭니다. 이 예시에서는 gcloud CLI를 사용하여 /mnt/ram-disk에 RAM 디스크가 마운트되고 /mnt/ram-disk-backup에 영구 디스크가 마운트된 인스턴스에 shutdown-script 메타데이터를 추가합니다.

    gcloud compute instances add-metadata example-instance --metadata shutdown-script="#! /bin/bash
    rsync -a --delete --recursive --force /mnt/ram-disk/ /mnt/ram-disk-backup/
    EOF"
    
  3. 인스턴스가 다시 시작될 때 RAM 디스크로 파일을 다시 복원하는 시작 스크립트를 만들 수도 있습니다. gcloud CLI를 사용하여 인스턴스에 startup-script 메타데이터를 추가합니다.

    gcloud compute instances add-metadata example-instance --metadata startup-script="#! /bin/bash
    rsync -a --recursive --force /mnt/ram-disk-backup/ /mnt/ram-disk/
    EOF"