특정 순간에 시스템이 변경되고 있는지 어떻게 감지할 수 있나요?

특정 순간에 시스템이 변경되고 있는지 어떻게 감지할 수 있나요?

BTRFS를 사용하여 전체 파일 시스템의 스냅샷을 주기적으로 생성합니다. 애플리케이션 설치 또는 전체 시스템 업그레이드 등 시스템이 일관되지 않은 상태에 있을 때 스크립트가 스냅샷을 찍지 못하도록 해야 합니다.

  1. 이러한 동작을 어떻게 안정적으로 감지할 수 있습니까?

여러 인스턴스를 호출할 수 없는 것처럼 스냅샷 작업이 완료되도록(또는 다른 패키지 관리 소프트웨어) 잠금을 생성 apt하고 싶습니다 apt install(디스크 IO에 따라 몇 초 정도 걸릴 수 있음).

  1. 패키지 관리 응용 프로그램의 실행을 일시적으로 방지하는 방법은 무엇입니까?

답변1

이러한 동작을 어떻게 안정적으로 감지할 수 있습니까?

/var/lib/dpkg/lockapt 작업이 진행 중인지 여부를 감지할 수 있는 apt 잠금 파일입니다.

if (( $(sudo lsof -t /var/lib/dpkg/lock | wc -w) > 0 )) ; then
    echo "dpkg is running."
fi

패키지 관리 응용 프로그램의 실행을 일시적으로 방지하는 방법은 무엇입니까?

잠긴 파일이 열리지 않도록 방지합니다. 변경할 수 없는 속성을 설정합니다.

sudo chattr +i /var/lib/dpkg/lock  # "chattr -i" to release

또는 솔직히 말해서 스냅샷을 실행하는 순간 그 안에 무엇이 있는지 정의된다는 사실을 깨달으십시오. 스냅샷을 생성하는 동안 스토리지 성능이 저하될 수 있지만 시작 후 변경된 내용은 스냅샷 자체에 영향을 미치지 않습니다.

실제로 스냅샷은 상당히 가벼운 것입니다. "이 데이터 또는 메타데이터 블록을 수정하는 경우 복사본을 만들고 현재 유효한 것으로 표시하고 유효한 것으로 표시"하는 것뿐입니다. 유효한 것의 스냅샷을 찍습니다. 그리고 그것을 보존하라."이는 기록 중 복사 파일 시스템의 완전히 정상적인 작동 모드입니다.. 차이점은 스냅샷의 일부가 아닌 데이터를 가져오는 경우 복사(및 복사본 수정) 후 원본 데이터가 여유 익스텐트/메타데이터 블록 풀로 반환된다는 것입니다.

관련 정보