Proxmox 매뉴얼 : 06. Proxmox Cluster File System (pmxcfs)

Proxmox VE 매뉴얼을 Google Translate로 기계번역하고, 살짝 교정했습니다.
https://pve.proxmox.com/pve-docs/pve-admin-guide.html
version 8.1.4, Wed Mar 6 18:21:39 CET 2024

Proxmox Cluster File System(“pmxcfs”)은 구성 파일을 저장하기 위한 데이터베이스 기반 파일 시스템으로, corosync를 사용하여 모든 클러스터 노드에 실시간으로 복제됩니다. 이를 사용하여 모든 Proxmox VE 관련 구성 파일을 저장합니다.
파일 시스템은 디스크의 영구 데이터베이스 내부에 모든 데이터를 저장하지만 데이터 복사본은 RAM에 있습니다. 이로 인해 현재 128MiB인 최대 크기가 제한됩니다. 이는 수천 개의 가상 머신 구성을 저장하기에 충분합니다.
이 시스템은 다음과 같은 이점을 제공합니다.

  • 모든 구성을 모든 노드에 실시간으로 원활하게 복제
  • 중복된 VM ID를 방지하기 위해 강력한 일관성 검사를 제공합니다.
  • 노드가 쿼럼을 잃으면 읽기 전용
  • 모든 노드에 대한 corosync 클러스터 구성 자동 업데이트
  • 분산 잠금 메커니즘 포함

6.1. POSIX 호환성

파일 시스템은 FUSE를 기반으로 하므로 동작은 POSIX와 유사합니다. 그러나 일부 기능은 필요하지 않기 때문에 구현되지 않습니다.

  • 일반 파일과 디렉토리만 생성할 수 있지만 심볼릭 링크는 없습니다.
  • 비어 있지 않은 디렉터리의 이름은 바꿀 수 없습니다. 이렇게 하면 VMID의 고유성을 더 쉽게 보장할 수 있기 때문입니다.
  • 파일 권한을 변경할 수 없습니다(권한은 경로를 기반으로 함).
  • O_EXCL 생성은 원자적이지 않았습니다(예: 이전 NFS).
  • O_TRUNC 생성은 원자적이지 않습니다(FUSE 제한).

6.2. 파일 접근 권한

모든 파일과 디렉터리는 루트 사용자가 소유하며 www-data 그룹을 갖습니다. 루트에만 쓰기 권한이 있지만 www-data 그룹은 대부분의 파일을 읽을 수 있습니다. 다음 경로 아래의 파일은 루트에서만 액세스할 수 있습니다.

/etc/pve/priv/
/etc/pve/nodes/${NAME}/priv/

6.3. 기술

클러스터 통신에는 Corosync Cluster Engine을 사용하고 데이터베이스 파일에는 SQLite를 사용합니다. 파일 시스템은 FUSE를 사용하여 사용자 공간에 구현됩니다.

6.4. 파일 시스템 레이아웃

파일 시스템은 다음 위치에 마운트됩니다.

/etc/pve

6.4.1. 파일

  • authkey.pub : 티켓 시스템에서 사용되는 공개 키
  • ceph.conf : Ceph 구성 파일(참고: /etc/ceph/ceph.conf는 이에 대한 심볼릭 링크입니다)
  • corosync.conf : Corosync 클러스터 구성 파일(Proxmox VE 4.x 이전에는 이 파일을 Cluster.conf라고 함)
  • datacenter.cfg : Proxmox VE 데이터 센터 전체 구성(키보드 레이아웃, 프록시 등)
  • domains.cfg : Proxmox VE 인증 도메인
  • firewall/cluster.fw : 모든 노드에 방화벽 구성 적용
  • firewall/.fw : 개별 노드에 대한 방화벽 구성
  • firewall/.fw : VM 및 컨테이너에 대한 방화벽 구성
  • ha/crm_commands : 현재 CRM에서 수행 중인 HA 작업을 표시합니다.
  • ha/manager_status : 클러스터의 HA 서비스에 대한 JSON 형식의 정보
  • ha/resources.cfg : 고가용성으로 관리되는 리소스와 현재 상태
  • nodes//config : 노드별 구성
  • nodes//lxc/.conf : LXC 컨테이너의 VM 구성 데이터
  • nodes//openvz/ : Proxmox VE 4.0 이전에는 컨테이너 구성 데이터에 사용됨(더 이상 사용되지 않음, 곧 제거됨)
  • nodes//pve-ssl.key : pve-ssl.pem용 개인 SSL 키
  • nodes//pve-ssl.pem : 웹 서버용 공개 SSL 인증서(클러스터 CA에서 서명함)
  • nodes//pveproxy-ssl.key : pveproxy-ssl.pem용 개인 SSL 키(선택 사항)
  • nodes//pveproxy-ssl.pem : 웹 서버용 공개 SSL 인증서(체인)(pve-ssl.pem에 대한 선택적 재정의)
  • nodes//qemu-server/.conf : KVM VM에 대한 VM 구성 데이터
  • priv/authkey.key : 티켓 시스템에서 사용되는 개인 키
  • priv/authorized_keys : 인증을 위한 클러스터 멤버의 SSH 키
  • priv/ceph* : Ceph 인증 키 및 관련 기능
  • priv/known_hosts : 확인을 위한 클러스터 멤버의 SSH 키
  • priv/lock/* : 안전한 클러스터 전체 작업을 보장하기 위해 다양한 서비스에서 사용되는 잠금 파일
  • priv/pve-root-ca.key : 클러스터 CA의 개인 키
  • priv/shadow.cfg : PVE Realm 사용자를 위한 섀도우 비밀번호 파일
  • priv/storage/<스토리지 ID>.pw : 일반 텍스트로 된 저장소의 비밀번호를 포함합니다.
  • priv/tfa.cfg : Base64로 인코딩된 2단계 인증 구성
  • priv/token.cfg : 모든 토큰의 API 토큰 비밀
  • pve-root-ca.pem : 클러스터 CA의 공용 인증서
  • pve-www.key : CSRF 토큰 생성에 사용되는 개인 키
  • SDN/* : SDN(소프트웨어 정의 네트워킹)용 공유 구성 파일
  • status.cfg : Proxmox VE 외부 메트릭 서버 구성
  • storage.cfg : Proxmox VE 스토리지 구성
  • user.cfg : Proxmox VE 액세스 제어 구성(사용자/그룹/…)
  • virtual-guest/cpu-models.conf : 사용자 정의 CPU 모델 저장용
  • vzdump.cron : 클러스터 전체 vzdump 백업 작업 일정

6.4.2. 심볼릭 링크

클러스터 파일 시스템 내의 특정 디렉터리는 노드의 자체 구성 파일을 가리키기 위해 기호 링크를 사용합니다. 따라서 아래 표에서 가리키는 파일은 클러스터의 각 노드에 있는 서로 다른 파일을 참조합니다.

localnodes/
lxcnodes//lxc/
openvznodes//openvz/ (더 이상 사용되지 않음, 곧 제거 예정)
qemu-servernodes//qemu-server/

6.4.3. 디버깅을 위한 특수 상태 파일(JSON)

.version파일 버전(파일 수정을 감지하기 위해)
.members클러스터 구성원에 대한 정보
.vmlist모든 VM 목록
.clusterlog클러스터 로그(최근 50개 항목)
.rrdRRD 데이터 (가장 최근 항목)

6.4.4. 디버깅 활성화/비활성화

다음을 사용하여 자세한 syslog 메시지를 활성화할 수 있습니다.

echo "1" >/etc/pve/.debug

그리고 다음을 사용하여 자세한 syslog 메시지를 비활성화합니다.

echo "0" >/etc/pve/.debug

6.5. 복구

하드웨어 문제 등 Proxmox VE 호스트에 심각한 문제가 있는 경우 pmxcfs 데이터베이스 파일 /var/lib/pve-cluster/config.db를 복사하여 새 Proxmox VE 호스트로 이동하는 것이 도움이 될 수 있습니다. 아무것도 실행되지 않는 새 호스트에서 pve-cluster 서비스를 중지하고 config.db 파일을 교체해야 합니다(필수 권한 0600). 그런 다음 손실된 Proxmox VE 호스트에 따라 /etc/hostname 및 /etc/hosts를 조정한 다음 재부팅하고 확인합니다(VM/CT 데이터도 잊지 마세요).

6.5.1. 클러스터 구성 제거

권장되는 방법은 클러스터에서 노드를 제거한 후 노드를 다시 설치하는 것입니다. 이렇게 하면 모든 비밀 cluster/ssh 키와 공유 구성 데이터가 삭제됩니다.
경우에 따라 다시 설치하지 않고 노드를 다시 로컬 모드로 전환하는 것을 선호할 수 있습니다. 이에 대한 설명은 다시 설치하지 않고 노드 분리에 설명되어 있습니다.

6.5.2. 실패한 노드에서 게스트 복구/이동

nodes//qemu-server/(VM) 및 nodes//lxc/(컨테이너)의 게스트 구성 파일의 경우 Proxmox VE는 포함 노드 을 해당 게스트의 소유자로 간주합니다. 이 개념을 사용하면 동시 게스트 구성 변경을 방지하기 위해 값비싼 클러스터 전체 잠금 대신 로컬 잠금을 사용할 수 있습니다.

결과적으로 게스트의 소유 노드에 장애가 발생하는 경우(예: 정전, 펜싱 이벤트 등으로 인해) 정기적인 마이그레이션이 불가능합니다(모든 디스크가 공유 스토리지에 있더라도). (오프라인) 소유 노드에 대한 로컬 잠금을 얻을 수 없습니다. Proxmox VE의 고가용성 스택에는 울타리 노드에서 게스트를 정확하고 자동으로 복구하는 데 필요한(클러스터 전체) 잠금 및 감시 기능이 포함되어 있으므로 HA 관리 게스트에는 문제가 되지 않습니다.

비-HA 관리 게스트에 공유 디스크만 있는 경우(장애가 발생한 노드에서만 사용할 수 있는 다른 로컬 리소스는 없는 경우), /etc/pve의 장애가 발생한 노드 디렉터리에서 게스트 구성 파일을 이동하기만 하면 수동 복구가 가능합니다. /를 온라인 노드의 디렉터리로 보냅니다(게스트의 논리적 소유자 또는 위치를 변경함).

예를 들어 오프라인 node1에서 다른 노드 node2로 ID 100의 VM을 복구하려면 클러스터의 구성원 노드에서 루트로 다음 명령을 실행하면 됩니다.

mv /etc/pve/nodes/node1/qemu-server/100.conf /etc/pve/nodes/node2/qemu-server/

경고: 이와 같은 게스트를 수동으로 복구하기 전에 실패한 소스 노드의 전원이 실제로 꺼졌거나 차단되었는지 반드시 확인하십시오. 그렇지 않으면 Proxmox VE의 잠금 원칙이 mv 명령에 의해 위반되어 예상치 못한 결과가 발생할 수 있습니다.

경고: 로컬 디스크(또는 오프라인 노드에서만 사용할 수 있는 기타 로컬 리소스)가 있는 게스트는 이와 같이 복구할 수 없습니다. 실패한 노드가 클러스터에 다시 합류할 때까지 기다리거나 백업에서 해당 게스트를 복원하십시오.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like
Read More

03.10 BTRFS

Proxmox VE 8.1.3 매뉴얼을 DeepL를 이용해서 기계번역하고, 살짝 교정했습니다.https://pve.proxmox.com/pve-docs/pve-admin-guide.html 경고: BTRFS 통합은 현재 Proxmox VE의 기술 미리보기입니다. BTRFS는…