[buildd-tools-devel] Btrfs snapshots!
Roger Leigh
rleigh at codelibre.net
Sun Jun 13 22:40:04 UTC 2010
Hi folks,
An exciting new feature added to schroot this weekend is the ability
to use a new chroot type, "btrfs-snapshot". This is akin to the
existing LVM snapshot functionality, but using snapshots of Btrfs
subvolumes instead. This promises to be faster and more reliable
than LVM snapshotting if Btrfs lives up to its expectations.
An example of it in action follows at the end of the mail. The
manual pages document the new options, mainly in schroot.conf(5).
I'm very interested in feedback about this, so would appreciate
any comments and suggestions from anyone who would like to try
it out. It's currently on schroot.git (master branch). I think
it's mostly complete, some minor details needing attention are:
1) --info output doesn't skip reporting unset properties
2) --info output doesn't include btrfs properties in cloned
sessions
3) we currently use a single mounted btrfs filesystem for source
subvolume and snapshots; would it be better to mount the
subvolume directly with "-o subvol" rather than bind mounting,
or is this more inflexible and fragile?
Once it's tested and any kinks are ironed out, this should be OK
to backport to the 1.4 branch for squeeze.
Regards,
Roger
[bsnap]
type=btrfs-snapshot
description=Debian sid btrfs snapshot
btrfs-source-subvolume=/srv/chroot/btrsnap/sid-snap
btrfs-snapshot-directory=/srv/chroot/btrsnap/snapshots
priority=3
groups=root,sbuild
root-groups=root,sbuild
source-groups=root,sbuild
source-root-groups=root,sbuild
ravenclaw% schroot -i -c bsnap
─── Chroot ───
Name bsnap
Description Debian sid btrfs snapshot
Type btrfs-snapshot
Priority 3
Users
Groups root sbuild
Root Users
Root Groups root sbuild
Aliases
Environment Filter ^(BASH_ENV|CDPATH|ENV|HOSTALIASES|IFS|KRB5_CONFIG|KRBCONFDIR|KRBTKFILE|KRB_CONF|LD_.*|LOCALDOMAIN|NLSPATH|PATH_LOCALE|RES_OPTIONS|TERMINFO|TERMINFO_DIRS|TERMPATH)$
Run Setup Scripts true
Script Configuration default/config
Session Managed true
Session Cloned true
Session Purged false
Btrfs Source Subvolume /srv/chroot/btrsnap/sid-snap
Btrfs Snapshot Directory /srv/chroot/btrsnap/snapshots
Btrfs Snapshot Name
Personality undefined
Source Users
Source Groups root sbuild
Source Root Users
Source Root Groups root sbuild
ravenclaw% schroot -i -c bsnap-source
─── Chroot ───
Name bsnap-source
Description Debian sid btrfs snapshot (source chroot)
Type directory
Priority 3
Users
Groups root sbuild
Root Users
Root Groups root sbuild
Aliases
Environment Filter ^(BASH_ENV|CDPATH|ENV|HOSTALIASES|IFS|KRB5_CONFIG|KRBCONFDIR|KRBTKFILE|KRB_CONF|LD_.*|LOCALDOMAIN|NLSPATH|PATH_LOCALE|RES_OPTIONS|TERMINFO|TERMINFO_DIRS|TERMPATH)$
Run Setup Scripts true
Script Configuration default/config
Session Managed true
Session Cloned false
Session Purged false
Directory /srv/chroot/btrsnap/sid-snap
Personality undefined
Filesystem union type none
ravenclaw% schroot -v -c bsnap
I: Executing ‘00check setup-start ok’
I: 00check: AUTH_USER=rleigh
I: 00check: AUTH_RUSER=rleigh
I: 00check: AUTH_RGROUP=rleigh
I: 00check: AUTH_UID=1000
I: 00check: AUTH_GID=1000
I: 00check: AUTH_RUID=1000
I: 00check: AUTH_RGID=1000
I: 00check: AUTH_HOME=/home/rleigh
I: 00check: AUTH_SHELL=/usr/bin/zsh
I: 00check: AUTH_VERBOSITY=verbose
I: 00check: MOUNT_DIR=/var/lib/schroot/mount
I: 00check: LIBEXEC_DIR=/usr/lib/schroot
I: 00check: PID=27185
I: 00check: HOST=x86_64-pc-linux-gnu
I: 00check: HOST_OS=linux-gnu
I: 00check: HOST_VENDOR=pc
I: 00check: HOST_CPU=x86_64
I: 00check: PLATFORM=linux
I: 00check: SESSION_ID=bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: 00check: CHROOT_TYPE=btrfs-snapshot
I: 00check: CHROOT_NAME=bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: 00check: CHROOT_DESCRIPTION=Debian sid btrfs snapshot (session chroot)
I: 00check: CHROOT_SCRIPT_CONFIG=/etc/schroot/default/config
I: 00check: CHROOT_MOUNT_LOCATION=/var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: 00check: CHROOT_LOCATION=
I: 00check: CHROOT_PATH=/var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: 00check: CHROOT_BTRFS_SOURCE_SUBVOLUME=/srv/chroot/btrsnap/sid-snap
I: 00check: CHROOT_BTRFS_SNAPSHOT_DIRECTORY=%CHROOT_BTRFS_SNAPSHOT_DIRECTORY
I: 00check: CHROOT_BTRFS_SNAPSHOT_NAME=/srv/chroot/btrsnap/snapshots/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: 00check: CHROOT_SESSION_CREATE=false
I: 00check: CHROOT_SESSION_CLONE=false
I: 00check: CHROOT_SESSION_PURGE=true
I: 00check: FSTAB=/etc/schroot/default/fstab
I: 00check: NSSDATABASES=/etc/schroot/default/nssdatabases
I: Executing ‘05btrfs setup-start ok’
I: 05btrfs: Creating snapshot /srv/chroot/btrsnap/snapshots/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e from subvolume /srv/chroot/btrsnap/sid-snap
I: 05btrfs: Create a snapshot of '/srv/chroot/btrsnap/sid-snap' in '/srv/chroot/btrsnap/snapshots/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e'
I: Executing ‘05file setup-start ok’
I: Executing ‘05lvm setup-start ok’
I: Executing ‘05union setup-start ok’
I: Executing ‘10mount setup-start ok’
I: 10mount: Mounting /srv/chroot/btrsnap/snapshots/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e on /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: 10mount: /srv/chroot/btrsnap/snapshots/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e on /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e type none (rw,bind)
I: 10mount: proc on /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/proc type proc (rw)
I: 10mount: /dev/pts on /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/dev/pts type none (rw,bind)
I: 10mount: /dev/shm on /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/dev/shm type none (rw,bind)
I: 10mount: /home on /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/home type none (rw,bind)
I: 10mount: /tmp on /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/tmp type none (rw,bind)
I: Executing ‘15killprocs setup-start ok’
I: Executing ‘20copyfiles setup-start ok’
I: 20copyfiles: `/etc/resolv.conf' -> `/var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/etc/resolv.conf'
I: Executing ‘20nssdatabases setup-start ok’
I: 20nssdatabases: Copying passwd database to /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/etc/passwd
I: 20nssdatabases: Copying shadow database to /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/etc/shadow
I: 20nssdatabases: Copying group database to /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/etc/group
I: 20nssdatabases: Copying services database to /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/etc/services
I: 20nssdatabases: Copying protocols database to /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/etc/protocols
I: 20nssdatabases: Copying networks database to /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/etc/networks
I: 20nssdatabases: Copying hosts database to /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/etc/hosts
I: Executing ‘25nssdatabases setup-start ok’
I: Executing ‘50chrootname setup-start ok’
I: 50chrootname: Setting chroot name to bsnap
I: Executing ‘99builddsourceslist setup-start ok’
I: Executing ‘99check setup-start ok’
W: Shell ‘/usr/bin/zsh’ not available: /usr/bin/zsh: Failed to stat file: No such file or directory
W: Falling back to shell ‘/bin/sh’
I: [bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e chroot] Running login shell: ‘/bin/sh’
$ ls
dchroot-dsa_1.5.0-1_amd64.deb schroot-dbg_1.5.0-1_amd64.deb
dchroot_1.5.0-1_amd64.deb schroot_1.5.0-1.debian.tar.gz
libsbuild-dev_1.5.0-1_amd64.deb schroot_1.5.0-1.dsc
libsbuild-doc_1.5.0-1_all.deb schroot_1.5.0-1_amd64.changes
schroot-1.5.0 schroot_1.5.0-1_amd64.deb
schroot-common_1.5.0-1_all.deb schroot_1.5.0.orig.tar.bz2
$
I: Executing ‘99check setup-stop ok’
I: 99check: AUTH_USER=rleigh
I: 99check: AUTH_RUSER=rleigh
I: 99check: AUTH_RGROUP=rleigh
I: 99check: AUTH_UID=1000
I: 99check: AUTH_GID=1000
I: 99check: AUTH_RUID=1000
I: 99check: AUTH_RGID=1000
I: 99check: AUTH_HOME=/home/rleigh
I: 99check: AUTH_SHELL=/usr/bin/zsh
I: 99check: AUTH_VERBOSITY=verbose
I: 99check: MOUNT_DIR=/var/lib/schroot/mount
I: 99check: LIBEXEC_DIR=/usr/lib/schroot
I: 99check: PID=27185
I: 99check: HOST=x86_64-pc-linux-gnu
I: 99check: HOST_OS=linux-gnu
I: 99check: HOST_VENDOR=pc
I: 99check: HOST_CPU=x86_64
I: 99check: PLATFORM=linux
I: 99check: SESSION_ID=bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: 99check: CHROOT_TYPE=btrfs-snapshot
I: 99check: CHROOT_NAME=bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: 99check: CHROOT_DESCRIPTION=Debian sid btrfs snapshot (session chroot)
I: 99check: CHROOT_SCRIPT_CONFIG=/etc/schroot/default/config
I: 99check: CHROOT_MOUNT_LOCATION=/var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: 99check: CHROOT_LOCATION=
I: 99check: CHROOT_PATH=/var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: 99check: CHROOT_BTRFS_SOURCE_SUBVOLUME=/srv/chroot/btrsnap/sid-snap
I: 99check: CHROOT_BTRFS_SNAPSHOT_DIRECTORY=%CHROOT_BTRFS_SNAPSHOT_DIRECTORY
I: 99check: CHROOT_BTRFS_SNAPSHOT_NAME=/srv/chroot/btrsnap/snapshots/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: 99check: CHROOT_SESSION_CREATE=false
I: 99check: CHROOT_SESSION_CLONE=false
I: 99check: CHROOT_SESSION_PURGE=true
I: 99check: FSTAB=/etc/schroot/default/fstab
I: 99check: NSSDATABASES=/etc/schroot/default/nssdatabases
I: Executing ‘99builddsourceslist setup-stop ok’
I: Executing ‘50chrootname setup-stop ok’
I: Executing ‘25nssdatabases setup-stop ok’
I: Executing ‘20nssdatabases setup-stop ok’
I: Executing ‘20copyfiles setup-stop ok’
I: Executing ‘15killprocs setup-stop ok’
I: 15killprocs: Killing processes run inside /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: Executing ‘10mount setup-stop ok’
I: 10mount: Unmounting /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/tmp
I: 10mount: Unmounting /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/home
I: 10mount: Unmounting /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/dev/shm
I: 10mount: Unmounting /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/dev/pts
I: 10mount: Unmounting /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e/proc
I: 10mount: Unmounting /var/lib/schroot/mount/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: Executing ‘05union setup-stop ok’
I: Executing ‘05lvm setup-stop ok’
I: Executing ‘05file setup-stop ok’
I: Executing ‘05btrfs setup-stop ok’
I: 05btrfs: Deleting snapshot /srv/chroot/btrsnap/snapshots/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e
I: 05btrfs: Delete subvolume '/srv/chroot/btrsnap/snapshots/bsnap-bc44cfcf-6d4a-4ee3-8a1d-eec3e2cf056e'
I: Executing ‘00check setup-stop ok’
--
.''`. Roger Leigh
: :' : Debian GNU/Linux http://people.debian.org/~rleigh/
`. `' Printing on GNU/Linux? http://gutenprint.sourceforge.net/
`- GPG Public Key: 0x25BFB848 Please GPG sign your mail.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/buildd-tools-devel/attachments/20100613/50acf950/attachment.pgp>
More information about the Buildd-tools-devel
mailing list