fsfreeze
저는 최근에 VMware를 사용하여 가상 머신의 스냅샷을 찍고 정적을 사용하여 일관된 디스크 상태를 얻는다는 소식을 듣고 매우 관심을 갖고 있습니다. 내 모든 파일 시스템은 LVM 볼륨이며 man fsfreeze
다음과 같이 언급됩니다.
장치 매퍼 장치에는 fsfreeze가 필요하지 않습니다. 장치 매퍼(및 LVM)는 스냅샷이 요청되면 장치의 파일 시스템을 자동으로 고정합니다. 자세한 내용은 dmsetup(8) 매뉴얼 페이지를 참조하십시오.
fsfreeze
하지만 스냅샷 크기를 추정해야 하는 복잡한 LVM 도구보다 사용하기가 더 쉽다는 것을 알았습니다 .
질문
- 차이점이 있나요?
- LVM 볼륨에 이 명령을 계속 사용할 수 있습니까? 아니면 물리적 LVM 볼륨일까요?
- 아니면 강제로 이 명령을 사용해야 합니까
lvm
?
현상금에 대한 추가 질문
mysql/oracle/postgrSQL DB를 백업하는 데 사용되는 경우 fsfreeze 또는 lvm 스냅샷을 사용하여 스냅샷의 일관성을 보장할 수 있습니까?
추가 정보
여기에 나온 예는 간단하지만 모든 개념을 이해해야 합니다.
VMWare는 가상 머신의 스냅샷을 매우 빠르게(5초 미만) 촬영하고 스냅샷 전후에 스크립트를 실행하여 가상 머신 상태를 안정화하고 일관된 가상 머신 스냅샷을 얻을 수 있습니다. lvm 스냅샷을 읽기 전용으로 마운트할 수 있는지 여부에는 관심이 없으며 디스크 크기 등에 의해 제한되기 때문에 그렇게 하고 싶지 않습니다. 내가 원하는 것은 fsfreeze
파일 시스템과 가상 머신의 스냅샷을 찍고 잠금을 해제하는 것입니다.
이 경우 fsfreeze
대신 lvm snapshot을 사용할 수 있습니까? (더 복잡하고 디스크 공간과 관련이 있습니다.
답변1
에서 man fsfreeze
:
-f, --freeze
This option requests the specified a filesystem to be frozen from new
modifications. When this is selected, all ongoing transactions in the filesystem
are allowed to complete, new write system calls are halted, other calls which
modify the filesystem are halted, and all dirty data, metadata, and log information
are written to disk. Any process attempting to write to the frozen filesystem will
block waiting for the filesystem to be unfrozen.
백업의 경우 마운트된 파일 시스템에서 무작위로 수정하고 백업 중에 I/O를 정지하는 것은 작업의 일부일 뿐입니다. 이는 파일 시스템이 매우 작거나 매우 빠른 백업 장치가 없으면 백업 기간 동안 전체 파일 시스템을 동결할 수 없기 때문입니다.
그래서 fsfreeze
아마도 당신이 하고 싶은 일을 하는 것만으로는 충분하지 않을 것입니다. 반면, LVM 스냅샷은 작업에 꼭 필요한 것입니다. "백업 만들기"는 단 몇 초밖에 걸리지 않으며, 다음과 같이 실제로 해당 백업(스냅샷)을 일부 느린 백업 장치에 복사하는 데 시간이 걸릴 수 있습니다. LVM은 다음 작업을 수행합니다. 스냅샷은 이 긴 백업 프로세스 동안 변경된 파일 시스템 블록을 관리합니다. 유일하게 fsfreeze
필요한 부분은 스냅샷 생성 부분인데, 그 부분은 이미 LVM 자체에서 투명하게 처리되고 있으므로 전반적으로 주의해야 할 부분은 LVM 스냅샷뿐입니다.
성능이 우수한 RDBMS(예: Oracle 및 해당 유사)의 경우 유사한 파일 시스템 고정 또는 블록 장치 스냅샷 기능을 사용하는 백업은 충분히 일관성이 있는 것으로 간주됩니다. 그러나 모든 데이터베이스 파일이 동시에 고정/스냅샷되는지 확인해야 합니다. 여러 파일 시스템/LVM 볼륨이 영향을 받는 경우 RDBMS의 도움이 필요할 수 있습니다. 예를 들어 Oracle은 BACKUP MODE
Freeze와 유사 fsfreeze
하지만 데이터베이스 수준에서 기능을 구현하는 기능을 제공합니다.
답변2
@Laszlo가 지적했듯이 정지는 백업 프로세스의 일부일뿐입니다. 먼저 파일 시스템을 정지하여 디스크에 기록될 버퍼링된 모든 정보를 강제로 플러시합니다. 파일 시스템이 고정되면 백업 프로세스 중에 파일 시스템의 데이터가 변경되지 않습니다. 파일 시스템을 정지한 후 tar, dd, dump 또는 기타 수단을 사용하여 백업을 계속할 수 있습니다(저는 백업 솔루션 전문가가 아닙니다). 또한 파일 시스템을 동결하는 대신 백업하기 전에 읽기 전용으로 다시 마운트합니다(가능한 경우).
LVM 스냅샷을 생성할 때 장치 매퍼가 이를 처리하기 위해 파일 시스템을 고정할 필요가 없습니다. 스냅샷을 만드는 것은 그리 어렵지 않습니다. /dev/mapper/centos-root LVM 논리 볼륨의 2GB 스냅샷을 생성하는 명령은 다음과 같습니다:
lvcreate -L 2G -n root-snapshot -s /dev/mapper/centos-root
스냅샷에서 복원하는 명령은 다음과 같습니다.
lvconvert --merge /dev/mapper/centos-root-snapshot
스냅샷을 다시 원래 볼륨에 병합할 때 원래 볼륨이 활성 상태이면 다음 재부팅 시 병합이 발생합니다. 병합 후에는 스냅샷이 더 이상 존재하지 않습니다.
이제 몇 마디 경고합니다. 파일 시스템의 LVM 스냅샷 복사본은 파일 시스템의 실제 미디어 백업이 아닌 가상 복사본입니다. LVM 스냅샷은 원본 볼륨의 변경되지 않은 데이터에 의존하기 때문에 백업 프로세스를 대체할 수 없습니다.
LVM 스냅샷은 COW(기록 중 복사) 정책을 사용합니다. 생성한 초기 스냅샷에는 실제 데이터 inode에 대한 하드 링크만 포함되어 있습니다. 데이터가 변경되지 않은 한 스냅샷에는 데이터 자체가 아닌 inode 포인터만 포함됩니다. 스냅샷이 가리키는 파일이나 디렉터리를 수정할 때마다 LVM은 데이터, 스냅샷이 참조하는 이전 복사본, 활성 시스템이 참조하는 새 복사본을 자동으로 복제합니다.
(스냅샷 대신) LVM 논리 볼륨의 백업을 생성하려는 경우여기에서 구현하는 몇 가지 방법을 확인하세요..
또한 LVM 스냅샷이 가득 차면 원래 볼륨의 변경 사항을 더 이상 추적할 수 없기 때문에 스냅샷이 무효화됩니다. 따라서 스냅샷 크기를 정기적으로 모니터링하고 스냅샷 볼륨의 크기를 늘려야 합니다(스냅샷은 완전히 크기 조정 가능). 또는 스냅샷 볼륨이 필요한 것보다 크다고 판단되면 크기를 줄일 수 있습니다. 공간을 확보하세요.
답변3
fs를 동결해야 합니까? ESXi에서 Linux 정지 스냅샷 문제에 대해 들어본 적이 없습니다. 그리고 vm-tools를 사용하면 fsfreeze가 아닌 Linux VM을 적절하게 정지할 수 있다고 들었습니다. 하지만 제 생각엔 아주 짧은 일시 정지에 가깝다고 생각합니다. 작업.
나 자신은 ESXi에서 실행되는 정적 라이브 Linux VM에서 스냅샷 문제를 겪을 필요가 없습니다. 우리는 EMC(3par를 강제로 사용)를 사용하고 있으며, ESXi5에서 둘 다 스냅샷이 우리가 기대했던 것과 다르다(당시 머신의 좋은 이미지)는 팀이나 고객으로부터 어떤 제안도 듣지 못했습니다. 걱정해야 할까요? 당신은해야합니까?