12장. RHEL의 이미지 모드에서 파일 시스템 관리


이미지 모드는 OSTree를 백엔드로 사용하며 기본적으로 스토리지에 대해 composefs를 활성화합니다. 즉, /opt/usr 로컬 경로가 일반 디렉터리이고 /var 에 대한 심볼릭 링크가 아니기 때문에 /opt 에 쓰는 파생 컨테이너 이미지에 타사 콘텐츠를 쉽게 설치할 수 있습니다.

주의

타사 콘텐츠를 /opt 에 설치할 때 타사 구성 요소가 런타임 중에 /opt 내의 하위 디렉터리에 쓰기를 시도할 수도 있으며 잠재적인 충돌이 발생할 수 있습니다.

12.1. /sysroot를 사용하여 물리적 및 논리 루트 이해

부트c 시스템이 완전히 부팅되면 chroot 에서 생성한 환경, 즉 운영 체제가 현재 실행 중인 프로세스 및 해당 하위 프로세스에 대해 명확한 루트 디렉토리를 변경합니다. 물리적 호스트 루트 파일 시스템은 /sysroot 에 마운트됩니다. chroot 파일 시스템을 배포 루트라고 합니다.

나머지 파일 시스템 경로는 시스템 부팅의 최종 대상으로 사용되는 배포 루트의 일부입니다. 시스템은 ostree=kernel 인수를 사용하여 배포 루트를 찾습니다.

/usr
/usr 에 모든 운영 체제 콘텐츠를 유지하는 것이 좋지만 엄격하게 필요하지는 않습니다. /bin 과 같은 디렉토리는 /usr/bin 에 대한 심볼릭 링크로 작동합니다. 이 레이아웃은 운영 체제를 분리하고 호스트 특정 리소스를 생성합니다.
참고

composefs 가 활성화되면 /usr/ 와 다릅니다. 두 디렉터리는 모두 동일한 변경 불가능한 이미지의 일부이므로 bootc 시스템으로 전체 Usr Cryostat 를 수행할 필요가 없습니다.

/usr/local
bootc 시스템을 사용하면 사용자 정의 컨테이너 이미지를 기본 진입점으로 생성할 수 있습니다. 이로 인해 기본 이미지는 /usr/local 을 일반 디렉터리(즉, 기본 디렉터리)로 구성합니다.

기본 파일 시스템 레이아웃에는 /opt/usr/local 이 모두 일반 디렉터리로 있습니다. 즉, 빌드 시 쓰기 가능하며 런타임 시 변경할 수 없습니다. 예를 들어 이러한 심볼릭 링크를 /var 에 만드는 RHEL CoreOS와 다릅니다.

/etc

/etc 디렉토리에는 기본적으로 변경 가능한 영구 상태가 포함되어 있지만 etc.transient 구성 옵션 활성화를 지원합니다. 디렉터리가 변경 가능한 영구 상태인 경우 업그레이드 간에 3방향 병합을 수행합니다.

  • 새 기본 /etc 를 기본으로 사용
  • 현재와 이전 /etc 간의 diff를 새 /etc 디렉토리에 적용
  • /etc.에 있는 동일한 배포의 기본 /usr/etc 와 다른 로컬 수정된 파일을 유지합니다.

ostree-finalize-staged.service 는 새 부트 로더 항목을 생성하기 전에 종료 시 이러한 작업을 실행합니다.

이는 Linux 시스템의 많은 구성 요소가 /etc 디렉토리에 기본 구성 파일을 제공하기 때문에 발생합니다. 기본 패키지가 제공되지 않더라도 기본적으로 소프트웨어는 /etc 의 구성 파일만 확인합니다. 별도의 버전의 /etc 가 없는 bootc 이미지 기반 업데이트 시스템은 설치 시에만 채워지며 설치 후 언제든지 변경되지 않습니다. 이로 인해 /etc 시스템 상태가 초기 이미지 버전의 영향을 받으며 변경 사항을 /etc/sudoers.conf 에 적용할 수 있으며 외부 개입이 필요할 수 있습니다. 파일 구성에 대한 자세한 내용은 RHEL bootc 이미지 빌드 및 테스트를 참조하십시오.

/var
예를 들어 /var 디렉토리는 하나만 있습니다. 기본적으로 /var 디렉터리에 배치된 파일과 데이터는 명시적으로 삭제될 때까지 지속되며 다른 세션과 시스템을 다시 시작할 때 사용할 수 있습니다. /var 파티션 또는 해당 하위 디렉터리를 임시 파일 시스템(TMPFS) 또는 네트워크 마운트 지점과 같은 마운트 지점으로 전환할 수 있습니다. /var 에 대해 별도의 파티션을 만들지 않으면 시스템은 바인드 마운트를 수행하고 /var 디렉터리에 단일 공유 및 영구 /ostree/deploy/$stateroot/var 를 생성하여 두 디렉터리가 배포 간에 동일한 데이터를 공유하도록 합니다.

기본적으로 /var 의 콘텐츠는 볼륨 역할을 합니다. 즉, 컨테이너 이미지의 콘텐츠가 초기 설치 시간 동안 복사되고 업데이트되지 않습니다.

/var/etc 디렉토리는 다릅니다. /etc 를 비교적 작은 구성 파일에 사용할 수 있으며 예상되는 구성 파일은 종종 /usr 의 운영 체제 바이너리에 바인딩됩니다. /var 디렉터리에는 시스템 로그, 데이터베이스 등 임의로 대규모 데이터가 있으며 운영 체제 상태가 롤백되지 않은 경우 기본적으로 롤백하지 않습니다.

예를 들어 dnf downgrade postgresql 과 같은 업데이트를 수행하면 /var/lib/postgres 의 물리적 데이터베이스에 영향을 미치지 않습니다. 마찬가지로 bootc 업데이트 또는 bootc 롤백 을 수행하면 이 애플리케이션 데이터에 영향을 미치지 않습니다.

또한 /var separate를 사용하면 새로운 운영 체제 업데이트를 적용하기 전에 새 운영 체제 업데이트를 스테이징합니다. 즉, 업데이트가 다운로드되고 준비되지만 재부팅에만 적용됩니다. Docker 볼륨에도 적용되므로 데이터에서 애플리케이션 코드를 분리합니다.

애플리케이션에 미리 생성된 디렉터리 구조(예: /var/lib/postgresql )가 포함되도록 하려면 이 케이스를 사용할 수 있습니다. 이를 위해 systemd tmpfiles.d 를 사용합니다. 유닛에서 StateDirectory= <directory>를 사용할 수도 있습니다.

기타 디렉터리
컨테이너 이미지에 /run,/proc 또는 기타 API 파일 시스템에 콘텐츠를 제공할 수 없습니다. 그 외에도 /usr/opt 와 같은 기타 최상위 디렉터리는 컨테이너 이미지로 라이프사이클이 지정됩니다.
/opt
bootccomposefs 를 사용하므로 /opt 디렉토리는 /usr 과 같은 다른 최상위 디렉토리와 함께 읽기 전용입니다.

소프트웨어가 /opt/exampleapp 의 자체 디렉터리에 작성해야 하는 경우 일반적인 패턴은 심볼릭 링크를 사용하여 로그 파일과 같은 작업을 위해 /var 로 리디렉션하는 것입니다.

RUN rmdir /opt/exampleapp/logs && ln -sr /var/log/exampleapp /opt/exampleapp/logs
Copy to Clipboard

선택적으로 이러한 마운트를 동적으로 수행하도록 서비스를 시작하도록 systemd 장치를 구성할 수 있습니다. 예를 들면 다음과 같습니다.

BindPaths=/var/log/exampleapp:/opt/exampleapp/logs
Copy to Clipboard
일시적인 루트 활성화
소프트웨어를 일시적으로(다음 재부팅)할 수 있도록 /usr/opt 를 포함한 모든 최상위 디렉토리에 쓰기 위해 유지되어야 하는 콘텐츠의 심볼릭 링크와 함께 임시 루트를 활성화할 수 있습니다. 기본적으로 완전히 일시적인 쓰기 가능 rootfs 를 활성화하려면 /usr/lib/ostree/prepare-root.conf 에서 다음 옵션을 설정합니다.
[root]
transient = true
Copy to Clipboard

이를 통해 소프트웨어가 유지되어야 하는 콘텐츠의 심볼릭 링크와 함께 / opt 에 일시적인 쓰기를 수행할 수 있습니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat