Rich Freeman on 12 Jul 2012 10:32:01 -0700


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] SteadyState/DriveShield for Ubuntu?


On Thu, Jul 12, 2012 at 11:32 AM, Jack Hill <jackhill@jackhill.us> wrote:
> But you don’t need to. Suppose you have the LV home on VG vg0. When
> a user logs in you
>
> lvcreate -n home-temp -s home -L some-reasonable-size
> mount /dev/vg0/home-temp /home
>
> All the change the user makes get copy-on-written by disk block changed
> to home-temp. When the user logs out simply
>
> lvremove /dev/vg0/home-temp.

I'm pretty sure you have that backwards.  When you have an LVM
snapshot for a volume, and you write to that volume, the change gets
written to the original volume, and the original value of those blocks
are written to the snapshot.  When you delete the snapshot you're
deleting the ORIGINAL content of the volume, and not the changes.

This is the opposite of something like VMWare where the snapshot
contains the changes.  That's why deleting a snapshot in LVM takes
almost no time, but removing it in VMWare takes a long time (since the
changes have to be merged in to the original).

With Btrfs every block on the disk is COW, so a snapshot just means
that anytime a block is modified you end up with two copies of it, and
a completely intact inode tree that points to each one (one tree looks
like a drive in the current state, and one tree looks like the drive
in the original state).  When you remove a snapshot it just wipes out
the root of the tree and anything whose reference count drops to zero
(like unlinking a file on EFS), so removing either the snapshot or the
original is fast, and both are equivalent operations (other than maybe
one tree having a numeric ID of 1 all the snapshots and the original
root are equivalent in btrfs).

The btrfs/ZFS model is conceptually pretty similar to git if you know
how that works.  But, git doesn't really make provisions for deleting
history (think of git like a filesystem that snapshots anytime you
change anything and the snapshots never go away, but form a linked
list).

>
> A more robust solution might be to run user sessions in a
> VM.

Assuming Ubuntu doesn't already have a clean solution for this, Google
has a few.  The simplest is to just keep a copy of the home directory
and wipe it every time X11 exits.  Just make a shell script that wipes
the user directory and makes a fresh copy, drops privs, starts X11,
and then terminates.  Then just stuck it in inittab.

Rich
___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug