SLES Btrfs Snapper 업데이트 실패 후 롤백: 안전한 복구 가이드

SLES 업데이트 실패가 항상 서버를 재설치해야 하는 것은 아닙니다. 루트 파일 시스템으로 Btrfs를 사용하고 Snapper가 활성화된 표준 SUSE Linux Enterprise Server 설치 환경에서는 업데이트 전 스냅샷으로 부팅하여 현재 시스템을 변경하지 않고 테스트한 다음, 정상 작동하는 상태를 새로운 쓰기 가능한 루트 디렉터리로 만들 수 있습니다.

중요한 결정은 단순히 "어떤 스냅샷이 가장 최신인가?"가 아니라 "어느 정도까지 롤백해야 하는가?"입니다. 전체 Snapper 시스템 롤백은 업데이트로 인해 여러 패키지, 라이브러리, 서비스 또는 구성 파일이 변경되어 시스템이 더 이상 안정적으로 작동하지 않을 때 적절합니다. 구성 파일 하나만 잘못된 경우 해당 파일만 복원하는 것이 일반적으로 시스템 중단이 적습니다. 이 가이드에서는 두 가지 선택 사항을 모두 설명하고 SUSE에서 2026년 10월에 제공될 예정인 SLES 15 SP7 복구 모델을 따릅니다.

설정을 변경하기 전에 복구 방법을 선택하세요.

상황최적의 시작 옵션주요 절충점
업데이트 후 서버가 정상적으로 부팅되지 않습니다.GRUB에서 읽기 전용 Btrfs 스냅샷을 부팅하고 테스트한 다음 실행하세요.snapper rollback광범위한 복구가 가능하지만, 스냅샷으로 저장된 루트 콘텐츠만 복원됩니다.
서버는 부팅되지만 여러 패키지 또는 서비스가 동시에 오류를 일으켰습니다.동일한 부팅 및 테스트 롤백 워크플로를 사용하십시오.재부팅이 필요하지만, 어떤 개별 파일이 문제를 일으켰는지 추측할 필요가 없습니다.
알려진 파일 중 하나가 /etc손상되었습니다.snapper status/ 를 사용하여 검사한 diff다음 undochange해당 파일에 대해 를 사용하십시오.환경에 미치는 영향은 적지만, 대형 택배 배송에는 적합하지 않습니다.
서비스 팩 마이그레이션이 실패했습니다.마이그레이션 전 스냅샷을 사용한 다음 저장소 및 제품 등록을 확인하십시오.복구 후 저장소 상태가 중요합니다
루트 디렉터리가 Btrfs가 아니거나, Snapper가 비활성화되었거나, 지원되는 루트 디렉터리 레이아웃이 변경되었습니다.백업, 복구 미디어, 패키지 복구 또는 다른 복구 계획을 사용하십시오.표준 SLES 스냅샷 롤백 워크플로는 적용되지 않습니다.

SUSE는 변경 사항 되돌리기 와 시스템 롤백을 구분합니다 . 변경 사항 되돌리기는 스냅샷을 비교하여 선택한 파일 변경 사항을 되돌립니다. 롤백은 스냅샷 상태를 기반으로 새로운 쓰기 가능한 루트를 생성합니다. SUSE는 루트 파일 시스템 롤백을 수행할 때 대상 스냅샷으로 먼저 부팅하는 것을 권장합니다. 이렇게 하면 롤백을 적용하기 전에 후보 스냅샷을 검증할 수 있기 때문입니다. 자세한 내용은 SLES 15 SP7 관리 가이드를 참조하십시오 .

1단계: 이 서버가 표준 Snapper 롤백 경로를 지원하는지 확인합니다.

스냅샷을 선택하기 전에 다음 세 가지 사항을 확인하십시오. 루트 파일 시스템이 Btrfs인지, Snapper에 라는 이름의 구성이 있는지 root, 그리고 Btrfs 루트가 단일 장치에 있는지 확인하십시오. SUSE는 기본 루트 서브볼륨 레이아웃에 대한 부팅 가능한 롤백 지원을 문서화하고 있으며 루트 Btrfs 파일 시스템이 단일 장치로 보고되어야 한다고 명시하고 있습니다.

findmnt /
sudo snapper list-configs
sudo /sbin/btrfs filesystem show /
SLES 터미널에서 Btrfs 루트 파일 시스템, Snapper 루트 구성 및 단일 장치 Btrfs 레이아웃을 확인합니다.
먼저 루트 파일 시스템과 Snapper 구성을 확인하십시오. 지원되는 기본 SLES 레이아웃은 /에 Btrfs 파일 시스템을 사용하고, Snapper 구성 이름은 root이며, 루트 파일 시스템은 단일 장치로 구성됩니다.

XFS 또는 Ext4와 같은 파일 시스템을 보고하는 경우 findmnt /중지하십시오. 해당 루트에서는 Btrfs 스냅샷 부팅 워크플로를 사용할 수 없습니다. 항목이 snapper list-configs없는 경우 root자동 루트 스냅샷이 활성화되지 않았을 수 있습니다. 또한 btrfs filesystem show /두 개 이상의 장치를 보고하는 경우에도 중지하십시오. SLES 15 SP7 설명서에는 부팅 가능한 루트 롤백에 대해 해당 레이아웃이 지원되지 않는다고 명시되어 있습니다.

2단계: 업데이트 실패 직전의 스냅샷을 찾습니다.

스냅샷 목록을 확인하고 날짜, 유형, 스냅샷 이전 관계 및 설명을 살펴보세요.

sudo snapper list
SLES Snapper 스냅샷 목록은 Zypper 업데이트 전후의 스냅샷을 보여줍니다.
Snapper 목록에는 Zypper 트랜잭션을 중심으로 생성된 사전/사후 스냅샷 쌍이 표시될 수 있습니다. 사전 스냅샷은 일반적으로 업데이트 자체로 인해 오류가 발생했을 때 생성된 첫 번째 스냅샷입니다.

기본 SLES 설정에서 YaST 및 Zypper 작업은 스냅샷 쌍을 생성할 수 있습니다 pre. post스냅 pre샷은 트랜잭션 이전의 파일 시스템 상태를 나타내고, 해당 스냅샷과 일치하는 post스냅샷은 트랜잭션 이후의 상태를 나타냅니다. 단순히 오류 발생 시점보다 오래된 스냅샷을 선택하지 마십시오. 스냅샷의 타임스탬프와 설명을 업데이트 기간과 일치시켜야 합니다.

실패한 변경 사항이 서비스 팩 마이그레이션인 경우, SUSE의 SLES 15 SP7 업그레이드 가이드에서는 관리자에게 마이그레이션 직전에 생성된 스냅샷을 찾도록 명시적으로 안내하고 있으며, 해당 스냅샷은 중요로 표시되어 있습니다.

3단계: 후보 스냅샷이 실제로 무엇을 변경할지 검토합니다.

현재 시스템이 여전히 부팅된다면, 재부팅하기 전에 후보 스냅샷을 현재 상태와 비교해 보세요. 이렇게 하면 업데이트가 하나의 구성 파일만 변경했는지 아니면 광범위한 시스템 파일을 변경했는지 확인할 수 있습니다.

sudo snapper status SNAPSHOT_ID..0
sudo snapper diff SNAPSHOT_ID..0 /etc/some-file.conf
SLES 터미널에서 업데이트 전 스냅샷에 대한 Snapper 상태 및 Snapper diff 출력 결과를 보여줍니다.
Snapper의 상태 및 차이점 비교 기능을 사용하여 업데이트 범위를 파악하십시오. 광범위한 패키지 및 구성 변경 사항이 있는 경우 전체 롤백이 적합하며, 특정 파일 하나만 변경된 경우에는 선택적 복원이 적합할 수 있습니다.

선택적 복원이 더 나은 선택인 경우

알려진 파일 하나에 오류가 있고 업데이트된 시스템의 나머지 부분이 정상인 경우, 해당 파일만 복원하면 관련 없는 시스템 변경 사항을 되돌리는 것을 방지할 수 있습니다. SUSE는 이 형식을 문서화했습니다.

sudo snapper -c root -v undochange SNAPSHOT_ID..0 /etc/some-file.conf

파일 이름을 함부로 생략하지 마십시오. 파일 이름이 없으면 undochange두 상태 간에 변경된 모든 파일을 되돌릴 수 있습니다. SUSE는 파일 복원을 사용하여 전체 루트 롤백을 모방하는 것은 권장되지 않는 방법이라고 경고합니다. 패키지 트랜잭션은 서로 의존적인 여러 파일을 변경할 수 있으므로 업데이트 실패가 시스템적인 문제인 경우 완벽하게 테스트된 롤백을 수행하는 것이 일반적으로 더 효율적입니다.

4단계: GRUB에서 후보 스냅샷을 부팅합니다.

시스템을 재부팅하십시오. SLES GRUB 2 메뉴에서 읽기 전용 스냅샷에서 부트로더를 시작하는 옵션을 선택한 다음 업데이트 이전 상태와 일치하는 스냅샷을 선택하십시오. 정확한 화면 레이아웃은 펌웨어 및 부팅 구성에 따라 다를 수 있지만, SLES 15 SP7에서는 해당 항목을 " 읽기 전용 스냅샷에서 부트로더 시작" 으로 설명합니다 .

SLES GRUB 메뉴는 읽기 전용 스냅샷 부팅 옵션과 선택된 업데이트 전 스냅샷을 보여줍니다.
롤백을 즉시 적용하기 전에 업데이트 이전 스냅샷으로 먼저 부팅하십시오. 이렇게 하면 루트 서브볼륨이 변경되기 전에 위험 부담이 적은 유효성 검사 단계를 수행할 수 있습니다.

이 SLES 메커니즘을 통해 부팅할 수 있는 스냅샷은 기본 Snapper root구성에서 생성된 스냅샷뿐입니다. 스냅샷 메뉴가 보이지 않으면 부팅 항목을 생성하지 마십시오. Snapper가 활성화되어 있는지, 루트 레이아웃이 여전히 기본 지원 구조인지, 설치된 부트 로더가 정상적으로 작동하는지 다시 확인하십시오.

5단계: 루트 디렉터리가 읽기 전용인 상태에서 스냅샷을 테스트합니다.

스냅샷이 부팅된 후, 실제로 해당 스냅샷에서 실행 중인지, 그리고 루트 파일 시스템이 읽기 전용인지 확인하십시오.

findmnt /
mount | grep ' on / '
SLES 터미널 화면에 루트 파일 시스템으로 읽기 전용으로 마운트된 Btrfs 스냅샷이 표시됩니다.
스냅샷 부팅은 스냅샷된 루트 콘텐츠에 대해 의도적으로 읽기 전용입니다. 롤백을 적용하기 전에 이전 시스템 상태가 업데이트 실패 증상을 해결하는지 테스트하려면 이 상태를 사용하십시오.

이제 업데이트 후 실패한 항목들을 테스트하십시오. 서비스 시작, 네트워크 구성, 인증, 애플리케이션 실행, 커널 종속 동작 또는 기타 관련 검사를 수행하십시오. 읽기 전용 스냅샷을 일반적인 운영 환경 부팅처럼 취급하지 마십시오. 일부 작업은 루트 파일 시스템의 스냅샷 영역에 쓰기 권한이 없기 때문에 실패할 수 있습니다.

스냅샷이 올바르지 않으면 시스템을 재부팅하고 다른 스냅샷을 시도하십시오. 롤백 명령을 실행하기 전까지는 해당 스냅샷이 새로운 쓰기 가능한 시스템 루트로 변환된 것이 아닙니다.

6단계: 스냅샷이 검사를 통과한 후에만 롤백을 커밋하십시오.

부팅된 스냅샷이 예상대로 작동하면 영구 저장하십시오.

sudo snapper rollback

나중에 생성된 스냅샷을 더 쉽게 식별할 수 있도록 설명을 추가할 수 있습니다.

sudo snapper rollback -d "Rollback after failed update"
SLES 터미널에서 스내퍼 롤백 명령과 설명적인 롤백 레이블을 보여주는 그림입니다.
부팅된 스냅샷이 유효성 검사를 통과한 후에만 snapper rollback을 실행하십시오. 간단한 설명을 추가하면 나중에 복구 지점을 더 쉽게 식별할 수 있습니다.

SLES 관리 문서에 따르면 Snapper는 롤백 이전 상태의 스냅샷을 생성하고, 이 스냅샷을 기본 루트로 사용하는 새로운 쓰기 가능한 스냅샷을 생성합니다. 이는 중요한 안전 장치입니다. 즉, 롤백 시 기존 루트가 단순히 덮어쓰기되는 것이 아닙니다.

명령 실행이 완료되면 재부팅하십시오.

sudo reboot

다음 부팅 시에는 이전의 읽기 전용 스냅샷으로 다시 부팅하는 대신 일반적인 기본 SLES 항목을 선택하십시오.

7단계: 복원된 루트 디렉터리에 쓰기 권한이 있는지, 그리고 이제 기본 디렉터리로 설정되었는지 확인합니다.

정상 부팅 후 루트 마운트 및 스냅샷 목록을 확인하십시오.

findmnt /
sudo snapper list
롤백 후 쓰기 가능한 Btrfs 루트와 Snapper 스냅샷을 보여주는 SLES 터미널 화면
정상 부팅 후 / 디렉터리에 쓰기 권한이 있는지 확인하고 새로 생성된 롤백 관련 스냅샷을 검토하십시오. 이제 새로운 루트 디렉터리가 활성 시스템 상태가 되어야 합니다.

처음에 실패했던 기능 검사를 다시 수행하십시오. 그래도 애플리케이션이 실패하는 경우, 해당 애플리케이션의 일부가 루트 스냅샷에 포함되지 않은 디렉터리에 있는지 확인하십시오.

8단계: 저장소를 새로 고치고 패키지 상태를 확인합니다.

일반적인 패키지 업데이트의 경우, 다음 업데이트를 시도하기 전에 저장소를 새로 고치고 패키지 종속성을 확인하십시오. 서비스 팩 롤백의 경우, 저장소 및 제품 등록 검사가 특히 중요합니다. 저장소 세트가 일치하지 않으면 시스템이 즉시 불안정한 상태로 되돌아갈 수 있기 때문입니다.

sudo zypper ref -fs
sudo zypper lr -u
sudo zypper verify
SLES 터미널에서 Zypper 저장소를 새로 고치고, 저장소 URL 목록을 표시하고, 설치된 패키지를 확인하는 모습입니다.
마지막으로 저장소 구성 및 패키지 일관성을 확인하십시오. 서비스 팩 롤백 후에는 제품 등록이 복원된 SLES 상태와 일치하는지 확인하십시오.

서비스 팩 복구를 위해서는 공식 SLES 업그레이드 가이드 에 나와 있는 확인 절차를 따르십시오 . 해당 가이드에서는 롤백 후 저장소 구성 및 제품 등록을 확인하도록 명시적으로 안내하고 있습니다.

Snapper 루트 롤백으로 복원되지 않는 항목

이는 운영 서버에서 롤백을 사용하기 전에 이해해야 할 가장 중요한 제한 사항입니다. 기본 SLES 루트 스냅샷은 휘발성 데이터와 사용자 또는 애플리케이션 데이터가 예기치 않게 되돌려지지 않도록 여러 하위 볼륨을 제외합니다. 제품별 목록에는 /home, /opt, /usr/local, /srv, /tmp, /var, /run, 및 아키텍처별 부트 로더 경로가 포함될 수 있습니다. 현재 목록 및 근거에 대한 자세한 내용은 SUSE의 Snapper 기본 개념 문서를 참조하십시오.

해당 설계는 데이터를 보호하지만, 시스템 코드가 이전 버전으로 되돌아가는 반면 제외된 하위 볼륨의 데이터는 최신 상태를 유지하는 절충안이 존재합니다. SUSE는 이로 인해 발생할 수 있는 여러 가지 문제점을 지적합니다. 예를 들어 타사 소프트웨어와의 /opt호환성 문제, 권한 변경, 스냅샷 생성 이후에 기록된 데이터 형식을 애플리케이션이 더 이상 이해하지 못하는 경우 등이 있습니다.

이는 특히 데이터베이스 및 서버 애플리케이션에 중요합니다. 업데이트에 스키마 마이그레이션이 포함되었거나 /var또는 아래의 애플리케이션 데이터가 변경된 경우 /srv, 루트 롤백으로 해당 데이터 변경 사항을 되돌릴 수 없을 수도 있습니다. 시스템 스냅샷만으로 충분하다고 생각하기 전에 애플리케이션 자체의 다운그레이드 또는 복원 절차를 확인하십시오.

흔히 저지르는 실수들을 피하는 방법

  • 스냅샷을 테스트하기 전에 롤백합니다. 읽기 전용 스냅샷을 먼저 부팅하는 것이 대상 상태를 확인할 수 있으므로 더 안전한 SLES 워크플로입니다.
  • 실수로 업데이트 후 스냅샷을 선택하는 경우, 스냅샷 번호에만 의존하지 말고 유형, 날짜, 설명 및 업데이트 전후 관계를 확인하세요.
  • undochange전체 패키지 거래에 사용됩니다 . 특정 파일에 대해서는 유용하지만, SUSE는 완전한 루트 복구를 위해서는 부팅 후 롤백 방식을 권장합니다.
  • /var루트 디렉토리로 이동 하거나 루트 디렉토리에서 뒤로 이동하는 것을 예상합니다 /home. 기본 서브볼륨 제외는 의도적인 것입니다.
  • 단일 장치 요구 사항을 무시하면, SLES 15 SP7 문서에서는 단일 장치 Btrfs 루트에 대한 부팅 가능한 루트 롤백 지원을 설명합니다.
  • 업데이트를 즉시 다시 시도하십시오. 먼저 업데이트 실패 원인을 파악하고, 저장소를 확인하고, 실패 원인이 패키지 결함, 호환되지 않는 타사 소프트웨어, 디스크 공간 부족 또는 로컬 구성 문제인지 확인하십시오.

시스템이 트랜잭션 업데이트를 사용하는 경우

SLES는 트랜잭션 서버 역할로도 설치할 수 있습니다. 이 경우 운영 모델이 달라지는데, 업데이트는 스냅샷에 적용되고 재부팅 시 활성화됩니다. 이러한 시스템에서는 SUSE에서 스냅샷을 기본 루트로 설정하는 기능을 제공합니다 . 시스템 역할을 먼저 확인하지 않고는 일반적인 읽기/쓰기 SLES 설치에 트랜잭션 서버 복구 방식을 적용하지 마십시오. 공식적인 동작 방식은 SLES 15 SP7 트랜잭션 업데이트 설명서를transactional-update rollback 참조하십시오 .

복구 체크리스트

  • /파일 시스템 이 Btrfs인지, rootSnapper 구성이 존재하는지, 그리고 루트 Btrfs 파일 시스템이 하나의 장치에 있는지 확인하십시오 .
  • 업데이트 실패 직전의 스냅샷을 찾으세요.
  • snapper status필요할 때 , 그리고 snapper diff변경 사항의 범위를 이해할 필요가 있을 때 사용하십시오 .
  • undochange명확하게 분리된 파일에 대해서만 선택적 접근을 선호하십시오 .
  • 시스템 업데이트 실패 시, GRUB에서 후보 스냅샷을 부팅하고 읽기 전용으로 테스트하십시오.
  • snapper rollback후보 물질이 올바르게 동작한 후에만 실행하십시오 .
  • 기본 항목을 재부팅하고 복원된 루트에 쓰기 권한이 있는지 확인하십시오.
  • 서비스 팩 복구 후 저장소를 새로 고치고, 패키지 상태를 확인하고, 등록 상태를 점검합니다.
  • 복구가 완료되었다고 선언하기 전에 제외된 하위 볼륨에 대해 애플리케이션 또는 데이터 형식 불일치가 있는지 검토하십시오.

핵심적인 절충점은 정확성과 일관성 사이의 균형입니다. 선택적 파일 복원은 변경 사항이 적지만, 정확히 어떤 부분이 손상되었는지 알아야 합니다. 검증된 시스템 롤백은 변경 사항이 더 많지만, 일관성 있는 스냅샷 기반 루트 상태를 복원하며 여러 구성 요소에 영향을 미친 업데이트 실패에 더 적합합니다. SLES에서 가장 안전한 워크플로는 후보를 검증하기 전에 롤백을 되돌릴 수 없게 만드는 대신, 읽기 전용 스냅샷 부팅을 결정 시점으로 사용하는 것입니다.

댓글 남기기

SLES 15에서 DM-Multipath를 구성하는 방법: 실용적인 가이드

SLES 15에서 DM-Multipath를 구성하는 방법: 실용적인 가이드

안전한 검색, 서비스 설정, 최소한의 multipath.conf 변경, initramfs 업데이트 및 경로 상태 확인을 통해 SLES 15에서 DM-Multipath를 구성합니다.

SLES Btrfs Snapper 업데이트 실패 후 롤백: 안전한 복구 가이드

SLES Btrfs Snapper 업데이트 실패 후 롤백: 안전한 복구 가이드

Btrfs 및 Snapper를 사용하여 업데이트 실패 후 SLES를 복구하세요. 롤백 옵션을 비교하고, 스냅샷을 안전하게 테스트하고, 시스템을 복원하고, 저장소를 검증하세요.

Pardus 클라이언트 전체에 사용자 지정 배경 화면 및 정책을 배포하는 방법

Pardus 클라이언트 전체에 사용자 지정 배경 화면 및 정책을 배포하는 방법

Liderahenk와 Ahenk를 사용하여 사용자 지정 Pardus GNOME 배경화면을 설정하고, dconf로 선택한 설정을 잠그고, 테스트를 거친 파일럿 환경을 통해 다른 클라이언트 정책을 배포하세요.

우분투 서버 비상 모드 부팅: 단계별 복구 가이드

우분투 서버 비상 모드 부팅: 단계별 복구 가이드

우분투 서버가 비상 모드로 진입한 이유를 진단하고, 일반적인 /etc/fstab 및 마운트 문제를 안전하게 복구하고, 파일 시스템을 검사하고, 정상적인 재부팅을 확인합니다.

Ubuntu 24.04에서 Flatpak 앱이 GTK 테마를 제대로 적용하지 않는 문제 해결

Ubuntu 24.04에서 Flatpak 앱이 GTK 테마를 제대로 적용하지 않는 문제 해결

Ubuntu 24.04에서 GTK 테마를 무시하는 Flatpak 앱 문제를 해결하세요. 테마 확장 프로그램, GTK 포털, 밝은/어두운 설정, 앱 툴킷 제한 사항을 확인하십시오.

Pardus 엔터프라이즈 관리 소프트웨어(LIDER AHENK) 구성 방법

Pardus 엔터프라이즈 관리 소프트웨어(LIDER AHENK) 구성 방법

Pardus에서 LIDER AHENK를 품질 중심 설정으로 구성하십시오. 필수 조건을 확인하고, Lider를 배포하고, Ahenk 클라이언트를 등록하고, 관리를 검증하십시오.

Pardus 23 워크스테이션에서 NVIDIA 드라이버를 활성화하는 방법

Pardus 23 워크스테이션에서 NVIDIA 드라이버를 활성화하는 방법

Pardus NVIDIA 드라이버 설치 프로그램을 사용하여 Pardus 23에서 NVIDIA 드라이버를 활성화하세요. GPU 호환성을 확인하고, 안전하게 재부팅하고, 드라이버를 검증하고, 일반적인 문제를 해결할 수 있습니다.

우분투 서버 24.04 최소 설치 vs. 표준 설치: 성능 벤치마크 결과 비교

우분투 서버 24.04 최소 설치 vs. 표준 설치: 성능 벤치마크 결과 비교

재현 가능한 벤치마크 방법을 사용하여 Ubuntu Server 24.04 최소 설치와 표준 설치의 디스크 사용량, 메모리, 부팅 시간, 서비스 및 실제 워크로드 성능을 비교합니다.

SUSE Linux Enterprise에서 "Zypper가 다른 프로세스에 의해 잠겼습니다" 오류 해결 방법

SUSE Linux Enterprise에서 "Zypper가 다른 프로세스에 의해 잠겼습니다" 오류 해결 방법

SLES에서 Zypper 잠금 오류를 안전하게 해결합니다. 프로세스를 식별하고, 대기할지 중지할지 선택하며, 트랜잭션 잠금과 패키지 잠금을 구분합니다.

Pardus Linux에서 원격 데스크톱 액세스를 설정하는 방법

Pardus Linux에서 원격 데스크톱 액세스를 설정하는 방법

RustDesk를 사용하여 Pardus Linux에 안전한 원격 데스크톱 액세스를 설정하세요. Debian 패키지를 설치하고, 일회성 지원을 위해 연결하고, 무인 액세스를 안전하게 구성할 수 있습니다.