SlideShare a Scribd company logo
Full System Rollback 
using 
Btrfs and Snapper 
Matthias G. Eckermann 
Senior Product Manager 
mge@suse.com 
LinuxCon Europe 2014 
2014-10-05 12:00 UTC
Why?
3 
RAS 
System 
Rollback 
High Availability Live Kernel 
Patching 
Increase Uptime
4 
RAS 
High Availability Live Kernel 
Patching 
Increase Uptime 
System 
Rollback
5 
System Rollback 
Reduce Operational Downtime 
Goal 
Go back to well-known system state 
Peace of mind for 
• System administrative tasks 
• Package and patch installation 
• System upgrades
Introducing “snapper”
7 
http://www.snapper.io/
8 
Demonstration #1 
Using Snapshots with YaST2 snapper 
# Description Tools 
1 Track and visualize YaST 
activities with snapper 
Start YaST2 
Create a new user (yast users) 
Start YaST snapper 
View the changes 
2 Undo some of the changes Start YaST snapper 
Select the snapshot pair created 
by the “yast users” module 
3 Install a new package by either 
using YaST2 and visualize the 
result using YaST2 snapper 
YaST2
9 
Snapper Functionality 
• Manage snapshots 
‒ Automatically create snapshots 
‒ Display differences between snapshots 
‒ Roll-back 
• Integration into system / systems management stack 
‒ ZYpp, YUM, (apt?) 
‒ LinuxPAM 
• User Interfaces 
‒ CLI 
‒ DBUS 
‒ Graphical (YaST) 
‒ GUI integration (in development / GSoC)
10 
Introducing “Snapper” – CLI example 
Snapper headers: 
– Type : [ Pre | Post | Single ] 
– # : Nr of snapshot 
– Pre # : if type is “Post” the matching Pre nr. 
– Date : timestamp 
– Cleanup : cleanup algorithm for this snapshot 
– Description : A fitting description of the snapshot (free 
text) 
– Userdata : key=value pairs to record all sorts of useful 
information about the snapshot in an easily 
parsable format
11 
Demonstration#3 
Snapper Command Line 
# Description Tools 
1 List the currently available snapshots “snapper list ...” 
2 Show differensce in the snapshot 
pair created by “yast users” 
“snapper status ...” 
3 Show the difference only in 
/etc/shadow in the snapshot pair 
created by “yast users” 
“snapper diff ...” 
4 Undo a change remove unnecessary files in the user's home dir; 
then execute “snapper undochange ...” 
5 Create your own snapshot and 
modify its description 
“snapper create … -d <description>” 
“snapper modify … <num>” 
6 Add key-value pair to existing 
snapshot 
“snapper modify … --userdata … <num>” 
7 Create your own snapshot pair “snapper create –print-number --type pre ...” 
“snapper create --type post --pre-number <n1>...” 
8 Change description and user data “snapper modify … <num>” 
9 Rollback the full system “snapper rollback … <num> | current”
12 
Special Use case: Snapper and ITIL 
# @Begin of implementation Change: 
snapper create  
--type pre  
--description "ChgMgt Work order: Upgrade syslog 
configuration to forward log entries to central log 
server"  
--userdata  
"WorkOrder=201201253030000012-1, 
State=InProgress,Agent=jdoe@example.com" 
# @End of implementation Change: 
snapper create  
--type post --pre-number 240  
--description "Done: ChgMgt Work order: Upgrade syslog 
configuration to forward log entries to central log 
server"  
--userdata "WorkOrder=201201253030000012-1, 
State=Closed, Agent=jdoe@example.com"
Rollback
14 
File based Rollback 
How it works 
• The system uses the same instance of a subvolume: 
“working instance” 
• single files are copied from the snapshot to the “working 
instance” – using CoW 
Benefits 
• Subvolumes are treated as read-only 
• Subvolumes can be used for Backup 
• Supports Pick and Choose 
Disadvantages 
• rollback not “atomic” 
→ Implemented in Snapper as “undochange”
15 
Rollback per Subvolume 
How it works 
• Instead of the original subvolume, the snapshot is mounted 
with the options “subvol=<name>” 
‒ Remember: snapshots are subvolumes 
• “btrfs subvolume set-default ...” for permanent assignments 
Benefits 
• “atomic” operation 
• Very fast 
Disadvantages 
• Additional complexity 
‒ Require explicit mounting of subvolumes 
• No “rollback” per single file → “Full System Rollback” 
→ Implemented in Snapper as “rollback”
16 
Snapshot/Rollback – Overview 
Past & Present Present & Future 
• “snapper undochange” 
• Selective Rollback for 
‒ Package updates 
‒ Administrative changes 
• No rollback of 
‒ Kernel / initrd 
‒ Bootloader 
‒ System data, e.g. /var/log 
• “snapper rollback” 
• Full Rollback for 
‒ Package updates 
‒ Administrative changes 
‒ Kernel / initrd (initramfs) 
• No rollback of 
‒ Bootloader 
‒ Customer data: “/home”, if 
on own partition (default) 
‒ System data, e.g. /var/log 
High Demand
17 
Snapshotting “/” – Challenges 
• Kernel and initrd / initramfs = “/boot” 
‒ Grub2 booting from a snapshot = subvolume 
‒ Mark snapshots with /boot relevance as such 
• System integrity and Compliance 
‒ Don't allow to roll back certain log-files etc. 
‒ Solution: subvolumes instead of directories for 
/tmp 
/opt 
/srv 
/var/spool 
/var/log 
/var/run 
/var/tmp 
...
18 
Btrfs integration with ... 
• Installer 
‒ Btrfs as root fs 
‒ Recommendation for subvolume layout 
‒ Check size of root partition 
‒ Automated snapper configuration 
• Partitioner 
‒ Create Btrfs 
‒ Create subvolumes 
• Bootloader 
‒ Find existing subvolumes (snapshots) 
‒ Read existing subvolumes and boot from
Full System Rollback
20 
Full System Rollback – Use Cases 
• “I have changed something, the system is still 
working, but now some functionality is missing / 
performance is bad / ...” 
→ reset the system, reboot, enjoy! 
→ “Reboot later mode” 
• “Something changed, and the system is not booting 
anymore” (worst case scenario) 
→ need immediate reboot 
→ “Reboot now mode”
21 
Snapshot / Rollback 
Reboot Later Mode 
• Administrator is in a current read-write filesystem, 
but wants to rollback 
• “snapper list” to view and select a snapshot 
• Call 
“snapper rollback <number>” 
this will 
● Create a new read-only snapshot of the currently running system 
● Create a new read-write snapshot of the snapshot <number>, 
lineary after the just recently created read-only snapshot 
● “setdefault” to the new read-write snapshot 
and reboot
22 
Snapshot / Rollback 
Reboot Now Mode 
• Boot into an existing read-only snapshot 
• The system should work, as all variable data are on 
writable subvolumes anyways. 
• To continue to work in this snapshot, the admin 
should call 
“snapper rollback” 
– this will 
● Create a new read-only snapshot of the old read-write one, linearly 
after the last existing one 
● Create a new read-write snapshot of the snapshot you are currently 
in in read-only mode, lineary after the just recently created read-only 
snapshot 
● “setdefault” to the new read-write snapshot 
and reboot
User view on Snapshot History
24 
Snapshot / Rollback 
User view on Snapshot History (1) 
ro ro ro ro curr. 
rw
25 
Snapshot / Rollback 
User view on Snapshot History (2) 
ro ro ro ro 
curr. 
rw ro 
1 
ro-Clone
26 
Snapshot / Rollback 
User view on Snapshot History (3) 
btrfs subvol 
set-default 
2 3 
old 
rw ro 
ro ro ro new 
ro rw 
1 
ro-Clone 
rw-Clone = Rollback
27 
Snapshot / Rollback 
User view on Snapshot History (4) 
New Snapshots 
ro ro ro 3 new 
ro 4 rw old 
rw ro 5 4 
Diffs are possible 
ro 6
28 
Snapshot / Rollback 
User view on Snapshot History (5) 
Condensed view What happens, 
if we rollback again? 
ro 3 ro 4 ro 5 ro 6 
rw 
Caveat: this does not reflect 1:1 what happens technically.
29 
Demonstration#4 
Full System Rollback 
# Description Tools 
1 List the currently available snapshots “snapper list” 
2 Install a new kernel “zypper in ...” 
3 List the currently available snapshots “snapper list” 
4 Show the current kernel version and reboot “uname -a ; reboot” 
5 List the currently available snapshots “snapper list” 
6 Rollback to the former version and reboot “snapper rollback <num> ; reboot” 
7 List the currently available snapshots “snapper list” 
8 Show the current kernel version “uname -a”
Summary
31 
“Snapper” availability ... 
http://software.opensuse.org/download/package?project=filesystems:snapper&package=snapper
32 
System Rollback 
Reduce Operational Downtime 
Goal 
Go back to well-known system state 
Peace of mind for 
• System administrative tasks 
• Package and patch installation 
• System upgrades
Thank you. 
33 
Go ahead, try btrfs and snapper 
today! 
Your questions!?
Appendix
Demo “scripts”
36 
Demonstration#2 
btrfs subvols and snapshots 
# Description Tools 
1 List the currently available 
subvolumes 
“btrfs subvol ...” 
2 List the currently available 
subvolumes – display details about 
the “parents” of the subvolumes 
“btrfs subvol … -p ...” 
3 Create your own subvolume 
“/mydata” 
“btrfs subvol ...”
37 
Demonstration#5 
Migrating from ext3 to btrfs 
# Description Tools 
1 Create a logical volume or partition or loop 
device. Name it “toconvert” or the like. 
2 Create an ext3 filesystem on this “toconvert” and 
mount it to “/toconvert” 
“mkfs.ext3 -b 4096 ...” 
“mkdir”, “mount” 
3 Create some directories and files on “/toconvert”. 
Optional: create md5 checksums 
“mkdir”, “vi” 
Optional: “md5sum” 
4 Perform the conversion and mount the filesystem 
again 
“umount /toconvert” 
“btrfs-convert ... 
“mount ...” 
5 Control, if your data are all there and check the 
optional md5sums 
“find”, “md5sum”, ... 
6 Understand, how btrfs saves the old ext3 
filesystem metadata. 
“/toconvert/ext2_saved/image” 
“mount -o loop ...”
38 
Demonstration#6 
Using snapper for /home/$USER 
Requirements 
• /home/$USER is a btrfs subvolume 
• “snapper” with DBUS interface (SLES 11 SP3, 
openSUSE 12.3, ...) 
• Create a snapper configuration for the user allowing 
him/her to do snapshots 
Additional Option 
• Automated snapshotting on login/logout 
• Requires small changes to the configuration of Linux 
PAM (Pluggable Configuration Modules)
Corporate Headquarters 
Maxfeldstrasse 5 
90409 Nuremberg 
Germany 
+49 911 740 53 0 (Worldwide) 
www.suse.com 
Join us on: 
www.opensuse.org 
39
Unpublished Work of SUSE. All Rights Reserved. 
This work is an unpublished work and contains confidential, proprietary and trade secret information of SUSE. 
Access to this work is restricted to SUSE employees who have a need to know to perform tasks within the scope of 
their assignments. No part of this work may be practiced, performed, copied, distributed, revised, modified, translated, 
abridged, condensed, expanded, collected, or adapted without the prior written consent of SUSE. 
Any use or exploitation of this work without authorization could subject the perpetrator to criminal and civil liability. 
General Disclaimer 
This document is not to be construed as a promise by any participating company to develop, deliver, or market a 
product. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making 
purchasing decisions. SUSE makes no representations or warranties with respect to the contents of this document, 
and specifically disclaims any express or implied warranties of merchantability or fitness for any particular purpose. The 
development, release, and timing of features or functionality described for SUSE products remains at the sole 
discretion of SUSE. Further, SUSE reserves the right to revise this document and to make changes to its content, at 
any time, without obligation to notify any person or entity of such revisions or changes. All SUSE marks referenced in 
this presentation are trademarks or registered trademarks of Novell, Inc. in the United States and other countries. All 
third-party trademarks are the property of their respective owners.

More Related Content

PDF
Linux con europe_2014_f
PDF
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
PDF
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-CRUI
PDF
제2회난공불락 오픈소스 세미나 커널튜닝
PDF
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-Asible
PPTX
First steps on CentOs7
PDF
Your first dive into systemd!
PDF
Containers with systemd-nspawn
Linux con europe_2014_f
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-CRUI
제2회난공불락 오픈소스 세미나 커널튜닝
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-Asible
First steps on CentOs7
Your first dive into systemd!
Containers with systemd-nspawn

What's hot (20)

PDF
Effective service and resource management with systemd
PDF
PDF
Full system roll-back and systemd in SUSE Linux Enterprise 12
PDF
[발표자료] 오픈소스 Pacemaker 활용한 zabbix 이중화 방안(w/ Zabbix Korea Community)
PPTX
Rhel6 vs rhel7
PDF
Cgroup resource mgmt_v1
PDF
Xen in Linux 3.x (or PVOPS)
PDF
제3회난공불락 오픈소스 인프라세미나 - MySQL
PDF
Building a Two Node SLES 11 SP2 Linux Cluster with VMware
PDF
PostgreSQL Extensions: A deeper look
PDF
제3회난공불락 오픈소스 인프라세미나 - lustre
PPTX
RHCE Training
PPTX
Linux Kernel Init Process
PDF
Kdump-FUDcon-2015-Session
PDF
Virtualization overheads
PDF
Kdump and the kernel crash dump analysis
PDF
Enterprise manager cloud control 12c(12.1) &agent安装图文指南
PDF
Pdf c1t tlawaxb
PDF
PGConf.ASIA 2019 Bali - Mission Critical Production High Availability Postgre...
PDF
MySQL Audit using Percona audit plugin and ELK
Effective service and resource management with systemd
Full system roll-back and systemd in SUSE Linux Enterprise 12
[발표자료] 오픈소스 Pacemaker 활용한 zabbix 이중화 방안(w/ Zabbix Korea Community)
Rhel6 vs rhel7
Cgroup resource mgmt_v1
Xen in Linux 3.x (or PVOPS)
제3회난공불락 오픈소스 인프라세미나 - MySQL
Building a Two Node SLES 11 SP2 Linux Cluster with VMware
PostgreSQL Extensions: A deeper look
제3회난공불락 오픈소스 인프라세미나 - lustre
RHCE Training
Linux Kernel Init Process
Kdump-FUDcon-2015-Session
Virtualization overheads
Kdump and the kernel crash dump analysis
Enterprise manager cloud control 12c(12.1) &agent安装图文指南
Pdf c1t tlawaxb
PGConf.ASIA 2019 Bali - Mission Critical Production High Availability Postgre...
MySQL Audit using Percona audit plugin and ELK
Ad

Viewers also liked (16)

PPTX
Web vulnerability seminar2
PPT
GoldenGate for MySQL 설치 시 필요한 사항
PDF
MySQL 5.7: Core Server Changes
PDF
MySQL NoSQL APIs
PDF
Optimizing MySQL
PDF
My sql 5.7-upcoming-changes-v2
PPTX
Mechanical workshop and LATHE machine
PDF
MySQL 5.6 - Operations and Diagnostics Improvements
PDF
MySQL For Linux Sysadmins
PDF
PERFORMANCE_SCHEMA and sys schema
PDF
MySQL 인덱스의 기초
PDF
The InnoDB Storage Engine for MySQL
PDF
Introduction to MySQL
PPT
MySQL Atchitecture and Concepts
PPTX
Lathe machine
PPT
MySql slides (ppt)
Web vulnerability seminar2
GoldenGate for MySQL 설치 시 필요한 사항
MySQL 5.7: Core Server Changes
MySQL NoSQL APIs
Optimizing MySQL
My sql 5.7-upcoming-changes-v2
Mechanical workshop and LATHE machine
MySQL 5.6 - Operations and Diagnostics Improvements
MySQL For Linux Sysadmins
PERFORMANCE_SCHEMA and sys schema
MySQL 인덱스의 기초
The InnoDB Storage Engine for MySQL
Introduction to MySQL
MySQL Atchitecture and Concepts
Lathe machine
MySql slides (ppt)
Ad

Similar to Linux con europe_2014_full_system_rollback_btrfs_snapper_0 (20)

ODP
Monitoring at/with SUSE 2015
PPTX
hacking-embedded-devices.pptx
PDF
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!
PDF
Python Control library
PDF
Linux Kernel Live Patching
PDF
Training Slides: 203 - Backup & Recovery
PPTX
SnapVault SE presentation
PDF
Linux Foundation Mentorship Sessions - Kernel Livepatch: An Introduction
PDF
Bews command line_en
PDF
systemd @ Facebook -- a year later
PDF
kubernetes - minikube - getting started
PDF
Kubernetes Walk Through from Technical View
PDF
OpenNebulaConf 2016 - Storage Hands-on Workshop by Javier Fontán, OpenNebula
PDF
Kernel Recipes 2015 - Kernel dump analysis
PDF
Training Slides: Basics 102: Introduction to Tungsten Clustering
PPTX
Monitoring_with_Prometheus_Grafana_Tutorial
PDF
Linux Server Deep Dives (DrupalCon Amsterdam)
PDF
Docker 原理與實作
PDF
Docker, Monitoring and SLURM Specific Visualisations
PDF
Introduction to Apache Kafka
Monitoring at/with SUSE 2015
hacking-embedded-devices.pptx
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!
Python Control library
Linux Kernel Live Patching
Training Slides: 203 - Backup & Recovery
SnapVault SE presentation
Linux Foundation Mentorship Sessions - Kernel Livepatch: An Introduction
Bews command line_en
systemd @ Facebook -- a year later
kubernetes - minikube - getting started
Kubernetes Walk Through from Technical View
OpenNebulaConf 2016 - Storage Hands-on Workshop by Javier Fontán, OpenNebula
Kernel Recipes 2015 - Kernel dump analysis
Training Slides: Basics 102: Introduction to Tungsten Clustering
Monitoring_with_Prometheus_Grafana_Tutorial
Linux Server Deep Dives (DrupalCon Amsterdam)
Docker 原理與實作
Docker, Monitoring and SLURM Specific Visualisations
Introduction to Apache Kafka

More from sprdd (20)

PDF
Openstack v4 0
PDF
Hardware accelerated virtio networking for nfv linux con
PDF
난공불락세미나 Ldap
PDF
Lkda facebook seminar_140419
PDF
Glusterfs 소개 v1.0_난공불락세미나
PDF
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
PDF
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0
PDF
오픈소스컨설팅 클러스터제안 V1.0
PDF
HP NMI WATCHDOG
PDF
H2890 emc-clariion-asymm-active-wp
PDF
Cluster pitfalls recommand
PDF
Wheeler w 0450_linux_file_systems1
PDF
Wheeler w 0450_linux_file_systems1
PDF
2013fooscoverpageimage 130417105210-phpapp01
PDF
Openstackinsideoutv10 140222065532-phpapp01
PDF
Rhel cluster gfs_improveperformance
PDF
Doldoggi bisiri
PDF
유닉스 리눅스 마이그레이션_이호성_v1.0
PDF
세미나설문
PDF
5231 140-hellwig
Openstack v4 0
Hardware accelerated virtio networking for nfv linux con
난공불락세미나 Ldap
Lkda facebook seminar_140419
Glusterfs 소개 v1.0_난공불락세미나
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0
오픈소스컨설팅 클러스터제안 V1.0
HP NMI WATCHDOG
H2890 emc-clariion-asymm-active-wp
Cluster pitfalls recommand
Wheeler w 0450_linux_file_systems1
Wheeler w 0450_linux_file_systems1
2013fooscoverpageimage 130417105210-phpapp01
Openstackinsideoutv10 140222065532-phpapp01
Rhel cluster gfs_improveperformance
Doldoggi bisiri
유닉스 리눅스 마이그레이션_이호성_v1.0
세미나설문
5231 140-hellwig

Recently uploaded (20)

PPTX
Machine Learning_overview_presentation.pptx
PPTX
MYSQL Presentation for SQL database connectivity
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Getting Started with Data Integration: FME Form 101
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPT
Teaching material agriculture food technology
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
Tartificialntelligence_presentation.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Spectroscopy.pptx food analysis technology
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
1. Introduction to Computer Programming.pptx
Machine Learning_overview_presentation.pptx
MYSQL Presentation for SQL database connectivity
A comparative analysis of optical character recognition models for extracting...
Getting Started with Data Integration: FME Form 101
NewMind AI Weekly Chronicles - August'25-Week II
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Teaching material agriculture food technology
Group 1 Presentation -Planning and Decision Making .pptx
Digital-Transformation-Roadmap-for-Companies.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
20250228 LYD VKU AI Blended-Learning.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Tartificialntelligence_presentation.pptx
Spectral efficient network and resource selection model in 5G networks
Spectroscopy.pptx food analysis technology
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Per capita expenditure prediction using model stacking based on satellite ima...
1. Introduction to Computer Programming.pptx

Linux con europe_2014_full_system_rollback_btrfs_snapper_0

  • 1. Full System Rollback using Btrfs and Snapper Matthias G. Eckermann Senior Product Manager mge@suse.com LinuxCon Europe 2014 2014-10-05 12:00 UTC
  • 3. 3 RAS System Rollback High Availability Live Kernel Patching Increase Uptime
  • 4. 4 RAS High Availability Live Kernel Patching Increase Uptime System Rollback
  • 5. 5 System Rollback Reduce Operational Downtime Goal Go back to well-known system state Peace of mind for • System administrative tasks • Package and patch installation • System upgrades
  • 8. 8 Demonstration #1 Using Snapshots with YaST2 snapper # Description Tools 1 Track and visualize YaST activities with snapper Start YaST2 Create a new user (yast users) Start YaST snapper View the changes 2 Undo some of the changes Start YaST snapper Select the snapshot pair created by the “yast users” module 3 Install a new package by either using YaST2 and visualize the result using YaST2 snapper YaST2
  • 9. 9 Snapper Functionality • Manage snapshots ‒ Automatically create snapshots ‒ Display differences between snapshots ‒ Roll-back • Integration into system / systems management stack ‒ ZYpp, YUM, (apt?) ‒ LinuxPAM • User Interfaces ‒ CLI ‒ DBUS ‒ Graphical (YaST) ‒ GUI integration (in development / GSoC)
  • 10. 10 Introducing “Snapper” – CLI example Snapper headers: – Type : [ Pre | Post | Single ] – # : Nr of snapshot – Pre # : if type is “Post” the matching Pre nr. – Date : timestamp – Cleanup : cleanup algorithm for this snapshot – Description : A fitting description of the snapshot (free text) – Userdata : key=value pairs to record all sorts of useful information about the snapshot in an easily parsable format
  • 11. 11 Demonstration#3 Snapper Command Line # Description Tools 1 List the currently available snapshots “snapper list ...” 2 Show differensce in the snapshot pair created by “yast users” “snapper status ...” 3 Show the difference only in /etc/shadow in the snapshot pair created by “yast users” “snapper diff ...” 4 Undo a change remove unnecessary files in the user's home dir; then execute “snapper undochange ...” 5 Create your own snapshot and modify its description “snapper create … -d <description>” “snapper modify … <num>” 6 Add key-value pair to existing snapshot “snapper modify … --userdata … <num>” 7 Create your own snapshot pair “snapper create –print-number --type pre ...” “snapper create --type post --pre-number <n1>...” 8 Change description and user data “snapper modify … <num>” 9 Rollback the full system “snapper rollback … <num> | current”
  • 12. 12 Special Use case: Snapper and ITIL # @Begin of implementation Change: snapper create --type pre --description "ChgMgt Work order: Upgrade syslog configuration to forward log entries to central log server" --userdata "WorkOrder=201201253030000012-1, State=InProgress,Agent=jdoe@example.com" # @End of implementation Change: snapper create --type post --pre-number 240 --description "Done: ChgMgt Work order: Upgrade syslog configuration to forward log entries to central log server" --userdata "WorkOrder=201201253030000012-1, State=Closed, Agent=jdoe@example.com"
  • 14. 14 File based Rollback How it works • The system uses the same instance of a subvolume: “working instance” • single files are copied from the snapshot to the “working instance” – using CoW Benefits • Subvolumes are treated as read-only • Subvolumes can be used for Backup • Supports Pick and Choose Disadvantages • rollback not “atomic” → Implemented in Snapper as “undochange”
  • 15. 15 Rollback per Subvolume How it works • Instead of the original subvolume, the snapshot is mounted with the options “subvol=<name>” ‒ Remember: snapshots are subvolumes • “btrfs subvolume set-default ...” for permanent assignments Benefits • “atomic” operation • Very fast Disadvantages • Additional complexity ‒ Require explicit mounting of subvolumes • No “rollback” per single file → “Full System Rollback” → Implemented in Snapper as “rollback”
  • 16. 16 Snapshot/Rollback – Overview Past & Present Present & Future • “snapper undochange” • Selective Rollback for ‒ Package updates ‒ Administrative changes • No rollback of ‒ Kernel / initrd ‒ Bootloader ‒ System data, e.g. /var/log • “snapper rollback” • Full Rollback for ‒ Package updates ‒ Administrative changes ‒ Kernel / initrd (initramfs) • No rollback of ‒ Bootloader ‒ Customer data: “/home”, if on own partition (default) ‒ System data, e.g. /var/log High Demand
  • 17. 17 Snapshotting “/” – Challenges • Kernel and initrd / initramfs = “/boot” ‒ Grub2 booting from a snapshot = subvolume ‒ Mark snapshots with /boot relevance as such • System integrity and Compliance ‒ Don't allow to roll back certain log-files etc. ‒ Solution: subvolumes instead of directories for /tmp /opt /srv /var/spool /var/log /var/run /var/tmp ...
  • 18. 18 Btrfs integration with ... • Installer ‒ Btrfs as root fs ‒ Recommendation for subvolume layout ‒ Check size of root partition ‒ Automated snapper configuration • Partitioner ‒ Create Btrfs ‒ Create subvolumes • Bootloader ‒ Find existing subvolumes (snapshots) ‒ Read existing subvolumes and boot from
  • 20. 20 Full System Rollback – Use Cases • “I have changed something, the system is still working, but now some functionality is missing / performance is bad / ...” → reset the system, reboot, enjoy! → “Reboot later mode” • “Something changed, and the system is not booting anymore” (worst case scenario) → need immediate reboot → “Reboot now mode”
  • 21. 21 Snapshot / Rollback Reboot Later Mode • Administrator is in a current read-write filesystem, but wants to rollback • “snapper list” to view and select a snapshot • Call “snapper rollback <number>” this will ● Create a new read-only snapshot of the currently running system ● Create a new read-write snapshot of the snapshot <number>, lineary after the just recently created read-only snapshot ● “setdefault” to the new read-write snapshot and reboot
  • 22. 22 Snapshot / Rollback Reboot Now Mode • Boot into an existing read-only snapshot • The system should work, as all variable data are on writable subvolumes anyways. • To continue to work in this snapshot, the admin should call “snapper rollback” – this will ● Create a new read-only snapshot of the old read-write one, linearly after the last existing one ● Create a new read-write snapshot of the snapshot you are currently in in read-only mode, lineary after the just recently created read-only snapshot ● “setdefault” to the new read-write snapshot and reboot
  • 23. User view on Snapshot History
  • 24. 24 Snapshot / Rollback User view on Snapshot History (1) ro ro ro ro curr. rw
  • 25. 25 Snapshot / Rollback User view on Snapshot History (2) ro ro ro ro curr. rw ro 1 ro-Clone
  • 26. 26 Snapshot / Rollback User view on Snapshot History (3) btrfs subvol set-default 2 3 old rw ro ro ro ro new ro rw 1 ro-Clone rw-Clone = Rollback
  • 27. 27 Snapshot / Rollback User view on Snapshot History (4) New Snapshots ro ro ro 3 new ro 4 rw old rw ro 5 4 Diffs are possible ro 6
  • 28. 28 Snapshot / Rollback User view on Snapshot History (5) Condensed view What happens, if we rollback again? ro 3 ro 4 ro 5 ro 6 rw Caveat: this does not reflect 1:1 what happens technically.
  • 29. 29 Demonstration#4 Full System Rollback # Description Tools 1 List the currently available snapshots “snapper list” 2 Install a new kernel “zypper in ...” 3 List the currently available snapshots “snapper list” 4 Show the current kernel version and reboot “uname -a ; reboot” 5 List the currently available snapshots “snapper list” 6 Rollback to the former version and reboot “snapper rollback <num> ; reboot” 7 List the currently available snapshots “snapper list” 8 Show the current kernel version “uname -a”
  • 31. 31 “Snapper” availability ... http://software.opensuse.org/download/package?project=filesystems:snapper&package=snapper
  • 32. 32 System Rollback Reduce Operational Downtime Goal Go back to well-known system state Peace of mind for • System administrative tasks • Package and patch installation • System upgrades
  • 33. Thank you. 33 Go ahead, try btrfs and snapper today! Your questions!?
  • 36. 36 Demonstration#2 btrfs subvols and snapshots # Description Tools 1 List the currently available subvolumes “btrfs subvol ...” 2 List the currently available subvolumes – display details about the “parents” of the subvolumes “btrfs subvol … -p ...” 3 Create your own subvolume “/mydata” “btrfs subvol ...”
  • 37. 37 Demonstration#5 Migrating from ext3 to btrfs # Description Tools 1 Create a logical volume or partition or loop device. Name it “toconvert” or the like. 2 Create an ext3 filesystem on this “toconvert” and mount it to “/toconvert” “mkfs.ext3 -b 4096 ...” “mkdir”, “mount” 3 Create some directories and files on “/toconvert”. Optional: create md5 checksums “mkdir”, “vi” Optional: “md5sum” 4 Perform the conversion and mount the filesystem again “umount /toconvert” “btrfs-convert ... “mount ...” 5 Control, if your data are all there and check the optional md5sums “find”, “md5sum”, ... 6 Understand, how btrfs saves the old ext3 filesystem metadata. “/toconvert/ext2_saved/image” “mount -o loop ...”
  • 38. 38 Demonstration#6 Using snapper for /home/$USER Requirements • /home/$USER is a btrfs subvolume • “snapper” with DBUS interface (SLES 11 SP3, openSUSE 12.3, ...) • Create a snapper configuration for the user allowing him/her to do snapshots Additional Option • Automated snapshotting on login/logout • Requires small changes to the configuration of Linux PAM (Pluggable Configuration Modules)
  • 39. Corporate Headquarters Maxfeldstrasse 5 90409 Nuremberg Germany +49 911 740 53 0 (Worldwide) www.suse.com Join us on: www.opensuse.org 39
  • 40. Unpublished Work of SUSE. All Rights Reserved. This work is an unpublished work and contains confidential, proprietary and trade secret information of SUSE. Access to this work is restricted to SUSE employees who have a need to know to perform tasks within the scope of their assignments. No part of this work may be practiced, performed, copied, distributed, revised, modified, translated, abridged, condensed, expanded, collected, or adapted without the prior written consent of SUSE. Any use or exploitation of this work without authorization could subject the perpetrator to criminal and civil liability. General Disclaimer This document is not to be construed as a promise by any participating company to develop, deliver, or market a product. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. SUSE makes no representations or warranties with respect to the contents of this document, and specifically disclaims any express or implied warranties of merchantability or fitness for any particular purpose. The development, release, and timing of features or functionality described for SUSE products remains at the sole discretion of SUSE. Further, SUSE reserves the right to revise this document and to make changes to its content, at any time, without obligation to notify any person or entity of such revisions or changes. All SUSE marks referenced in this presentation are trademarks or registered trademarks of Novell, Inc. in the United States and other countries. All third-party trademarks are the property of their respective owners.