디스크 및 파일 시스템 개요

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

파일 시스템

Container-Optimized OS 노드 이미지 파일 시스템 레이아웃은 노드 보안을 향상시키도록 최적화되어 있습니다. 부팅 디스크 공간은 세 가지 유형의 파티션으로 나뉩니다.

  • 루트 파티션 - 읽기 전용으로 마운트됩니다.
  • 스테이트풀(Stateful) 파티션 - 쓰기 가능하고 스테이트풀(Stateful) 특성을 갖습니다.
  • 스테이트리스(Stateless) 파티션 - 쓰기 가능하지만, 재부팅할 때 콘텐츠가 지속되지 않습니다.

Container-Optimized OS를 사용할 때는 컨테이너 외부의 파일 시스템 레이아웃에 대해 특정 요구 사항이 있는 고유 서비스를 실행할 경우 파티션 나누기에 주의해야 합니다.

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

컨테이너 최적화 OS 파일 시스템 작업

다음은 컨테이너 최적화 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
일반적으로 구성이 저장됩니다(예: cloud-init를 통해 정의된 systemd서비스). 인스턴스를 다시 시작할 때는 물론 인스턴스를 새로 생성할 때에도 cloud-init가 적용되므로 cloud-init에서 인스턴스의 원하는 상태를 캡처하는 것이 좋습니다.
/tmp
  • 쓰기 가능
  • 실행 불가능
  • 스테이트리스(Stateless)
  • tmpfs
일반적으로 스크래치 공간으로 사용되며, 영구 데이터 저장을 위해 사용되지 않습니다.
/mnt/disks
  • 쓰기 가능
  • 실행 가능
  • 스테이트리스(Stateless)
  • tmpfs
/mnt/disks 아래의 디렉터리에 영구 디스크를 마운트할 수 있습니다.

디스크 마운트 및 포맷

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

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

다음 예시에서는 /mnt/disks 디렉터리 아래에 DEVICE_ID 디스크를 마운트합니다.

  1. 다음 콘텐츠를 사용하여 스크립트 파일을 만듭니다.

    #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 문서를 참조하세요.

  2. --metadata-from-file 플래그를 사용하여 스크립트 파일을 포함하도록 VM 메타데이터를 업데이트합니다.

    VM을 만들려면 다음 명령어를 사용하세요.

    gcloud compute instances create INSTANCE_NAME \
        --metadata-from-file user-data=SCRIPT_FILE_NAME
    

    기존 인스턴스를 업데이트하려면 다음 명령어를 사용합니다.

    gcloud compute instances add-metadata INSTANCE_NAME \
        --metadata-from-file user-data=SCRIPT_FILE_NAME
    

    다음을 바꿉니다.

    • INSTANCE_NAME: VM 인스턴스의 이름입니다.
    • SCRIPT_FILE_NAME: 메타데이터 스크립트 파일의 이름입니다.