디스크 및 파일 시스템

이 페이지에서는 Google 파일 시스템의 Container-Optimized OS를 간략히 설명하고, 디스크를 마운트하고 포맷하는 방법을 설명합니다.

파일 시스템

루트 파일 시스템은 시스템 무결성을 보호하기 위해 읽기 전용으로 마운트됩니다. 그러나 홈 디렉터리 및 /mnt/stateful_partition은 영구적이며 쓰기가 가능합니다.

다음은 컨테이너 최적화 OS 노드 이미지 파일 시스템의 경로 목록과 그 속성 및 권장 용도를 보여줍니다.

경로 속성 목적
/
  • 읽기 전용
  • 실행 가능
루트 파일 시스템이 무결성 유지를 위해 읽기 전용으로 마운트됩니다. 커널이 부팅 중 무결성 루트 파일 시스템을 확인하고, 오류 발생 시 부팅을 거절합니다.
/home
/var
  • 쓰기 가능
  • 실행 불가능
  • 스테이트풀(Stateful)
이러한 경로는 부팅 디스크의 수명 동안 지속되는 데이터를 저장하기 위한 용도로 사용됩니다. 이러한 경로는 /mnt/stateful_partition에서 마운트됩니다.
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • 쓰기 가능
  • 실행 가능
  • 스테이트풀(Stateful)
이러한 경로는 각각 Compute Engine 패키지(예: 계정 관리자 서비스), Docker, 도구 상자의 작업 디렉터리입니다.
/var/lib/cloud
  • 쓰기 가능
  • 실행 가능
  • 스테이트리스(Stateless)
  • tmpfs
이 경로는 cloud-init 패키지의 작업 디렉터리입니다.
/etc
  • 쓰기 가능
  • 실행 불가능
  • 스테이트리스(Stateless)
  • tmpfs
/etc에는 일반적으로 구성이 저장됩니다(예: cloud-init를 통해 정의된 systemd서비스). 인스턴스를 다시 시작할 때는 물론 인스턴스를 새로 생성할 때에도 cloud-init가 적용되므로 cloud-init에서 인스턴스의 원하는 상태를 캡처하는 것이 좋습니다.
/tmp
  • 쓰기 가능
  • 실행 불가능
  • 스테이트리스(Stateless)
  • tmpfs
/tmp는 일반적으로 스크래치 공간으로 사용되며, 영구 데이터 저장을 위해 사용되지 않습니다.
/mnt/disks
  • 쓰기 가능
  • 실행 가능
  • 스테이트리스(Stateless)
  • tmpfs
/mnt/disks 아래의 디렉토리에 영구 디스크를 마운트할 수 있습니다.

디스크 마운트 및 포맷

Google의 Container-Optimized OS를 사용할 경우 영구 디스크를 연결하거나 로컬 SSD로 인스턴스를 만들 수 있습니다. 적절한 사용 사례에 맞게 영구 디스크 포맷 및 마운트 또는 로컬 SSD 기기 포맷 및 마운트의 안내를 따르세요.

/mnt/disks 디렉터리 아래에 하위 디렉터리를 만들어 디스크를 마운트할 수 있습니다. /etc/은 Google의 Container-Optimized OS에서 스테이트리스(Stateless)이므로 부팅 시 디스크 fsck(파일 시스템 일관성 검사)를 수행하거나 디스크를 마운트하는 데 /etc/fstab을 사용할 수 없습니다. 그러나 cloud-configbootcmd 섹션에서 이러한 작업을 수행하여 동일한 결과를 얻을 수 있습니다. 예:

#cloud-config

bootcmd:
- fsck.ext4 -tvy /dev/[DEVICE_ID]
- mkdir -p /mnt/disks/[MNT_DIR]
- mount -t ext4 -O ... /dev/[DEVICE_ID] /mnt/disks/[MNT_DIR]

각 항목의 의미는 다음과 같습니다.

  • [DEVICE_ID]는 포맷하고 마운트하려는 디스크의 기기 ID입니다.
  • [MNT_DIR]은 디스크를 마운트할 디렉터리입니다.

fsck.ext4mount 명령어로 지원하는 전체 옵션 세트는 Linux 문서를 참조하세요.

기존 인스턴스의 경우 --metadata-from-file 플래그를 사용하여 다음 cloud-init 메타데이터를 업데이트합니다.

gcloud compute instances add-metadata instance-name \
    --metadata-from-file user-data=filename

다음을 바꿉니다.

  • instance-name: VM 인스턴스의 이름입니다.
  • filename: 메타데이터 파일의 이름입니다.