ISR
NAME
isr −
Internet Suspend/Resume client program
SYNOPSIS
isr
command [parcel] [−bcdDefFlpqvY]
[−s server] [−u
userid] [−r version]
[−m vmm] [−o
optstring] [−C compression]
[−L count]
Commands:
auth, checkin (ci), checkout (co), checkhoard, checkp,
clean, deauth, dirtometer, discard, help, hoard, ls,
lshoard, passwd, poweroff, resume, rmhoard, stat, sync,
uuid, version
DESCRIPTION
An Internet
Suspend/Resume® (ISR) system is a collection of virtual
machine parcels on a server, together with a
set of client hosts, each loaded with the isr
client program and a virtual machine monitor. A
parcel is a set of data that represents all of the state of
some virtual machine in execution, and includes a
keyring, a memory image, and a virtual
disk. The server maintains checkpointed versions of each
parcel.
Each ISR user
has a unique ISR userid and a corresponding ISR
password on the server. Distinct ISR userids own
disjoint sets of parcels. Parcels are not shared across ISR
userids. At any point in time, a parcel can be checked out
on at most one client host. A simple locking mechanism
enforces this policy.
The isr
client program provides commands to checkout
(download) parcels from the server to the client host, run
parcels on the client host, checkin (upload) parcels
from the client host back to the server, query the status of
parcels, authenticate to the ISR system, and change the ISR
password. Downloading and running a parcel is known as
resuming the parcel. Locally suspending the virtual
machine monitor and then uploading the parcel back to the
server is known as suspending the parcel.
The isr
client program also provides a command to hoard
parcel state into a persistent hoard cache on the
client host. A fully-hoarded parcel is one where the hoard
cache contains the parcel’s entire virtual disk state;
thus the parcel, once checked out, can be resumed
disconnected (without a network connection). Use the
lshoard command to view the state of the hoard cache
on your client, and the stat command to see how much
of a particular parcel is currently hoarded.
On a particular
client host, the default server is given by the
server variable in /usr/share/openisr/config,
which may be overridden in the system config file in
/etc/openisr/openisr.conf or the user config file in
~/.openisrrc. If necessary, however, the server can
be specified on the command line using the -s command
line option.
By default, the
current ISR userid is the current Unix login name.
This can be overridden by setting the userid config
option in /etc/openisr/openisr.conf or
~/.openisrrc, which in turn can be overridden by
specifying the -u option on the command line.
You can safely
attempt to interrupt any isr command at any time by
typing control-c (SIGINT). Regions of commands that should
not be interrupted will ignore these SIGINT signals.
COMMANDS
isr
auth
Authenticate to the ISR server.
You will be prompted for your ISR password. Run this command
once, at the beginning of each X session to avoid having to
keep typing your ISR password.
isr checkin(ci)
parcel [-b KBytes/s] [-C
compression]
Checkin a parcel to the
server. This command creates a new checkpointed version of
the parcel on the server, and then releases a lock on the
parcel so that it can be resumed by other client hosts. The
-b option limits the upload bandwidth to
KBytes/s. The -C option specifies the
algorithm used to compress the memory image for upload; see
OPTIONS below for supported values of
compression.
The
checkin command is idempotent, meaning that it
can be safely interrupted with ctrl-c and rerun until it
successfully completes.
isr checkout(co)
parcel [-c] [-d] [-r
oldversion]
Download a parcel from
the server without running it. This command acquires a lock
on the parcel and downloads the minimum amount of virtual
machine state needed to run the parcel on the client
host.
By default, the
checkout command downloads the most recent parcel
version. However, you can rollback to previous parcel
versions using the -r oldversion option. Let
lastversion be the most recent parcel version on the
server. Then -r oldversion causes the server
to first create a new version lastversion+1 that is
an identical copy of version oldversion. This new
version, which is now the most recent version, is then
downloaded as before.
The -d
option will additionally hoard the parcel after
downloading it, ensuring that you will be able to
resume the parcel when disconnected from the network.
The -c option, when used in conjunction with the
-d option, performs lengthy consistency checks on the
hoard cache after hoarding has completed.
The
checkout command is useful for preparing a parcel to
run disconnected, but it is normally subsumed by the
resume command when you are running connected.
Even in connected mode, it can be useful in some situations.
For example, you might want to use the stat command
(which requires the parcel to be checked out) before you
actually run the parcel.
isr checkp parcel
[-e] [-r version] [-c] [-Y]
This is a debugging command
that checks a parcel for consistency. By default,
this command performs fast sanity checks on the local cache
of a checked-out parcel. The -e option causes
the command to check a particular version of the
parcel on the server instead. By default, -e
checks the most recent version, but the -r
option can be used to specify a different version
instead. The -c option performs an additional (and
time-consuming) content consistency check on the server
version (if -e is specified) or on the local
cache (otherwise).
The -Y
option is similar to -c, but will additionally revert
any inconsistent disk chunks to their state at the most
recent checkout or sync operation. This operation will only
revert chunks whose data does not match the stored hash, as
might result from an OpenISR or client host crash; it will
not correct more exotic metadata errors. The disk image
resulting from this operation will be inconsistent from the
point of view of the guest operating system, but it may
allow the parcel to be resumed long enough to retrieve data
from the damaged disk image. (For example, if a damaged
chunk contains filesystem metadata, it might be preferable
for the guest operating system to read obsolete data than to
receive I/O errors when trying to read the chunk.) If any
chunks are reverted using this option, the local cache of
the parcel will be marked as damaged and subsequent
checkin attempts will be disallowed. The -Y option
cannot be used with -e.
isr checkhoard [-c]
[-p]
This is a maintenance command
that checks the hoard cache for consistency and repairs any
problems it finds. By default, this command performs fast
checks on the hoard cache indexes. The -c option
causes it to perform an additional (and time-consuming)
content consistency check. The -p option defragments
the hoard cache and resizes it to the smallest possible
size.
isr clean parcel
[-f]
Remove parcel from the
client host and release its server lock. This command can be
used as a faster alternative to checkin when you
don’t need to save any of the changes you have made to
parcel since the last checkout or
sync.
The -f
option forcibly releases the server lock, even if it is held
by a different client host. That client host will be unable
to checkin the parcel. This option can be useful if
you’ve forgotten to checkin the parcel and want to use
it from another client host.
isr deauth
Remove the authentication
credentials that were established by the auth
command.
isr dirtometer
parcel
Launch the dirtometer for
parcel, which must already be resumed. The dirtometer
is a visualization tool which shows virtual disk accesses by
the guest OS and the resulting parcel state.
To
automatically launch the dirtometer when a parcel is
resumed, pass -D to isr resume or set the
dirtometer option in ~/.openisrrc.
isr discard
parcel
Discard all local client
changes to parcel since the last checkout or
sync. This command is useful for
"micro-rollbacks" that allow you to recover from
mistakes during the current session. For example, if you
inadvertently type "rm -rf /bin" as root in the
guest, the discard command will allow you to rollback
to the parcel that existed at the time of the most recent
checkout or sync command.
isr help
Display a brief usage
summary.
isr hoard
parcel
Fetch the parcel’s entire
virtual disk into the hoard cache on the client. This
command fetches only the blocks that are missing on the
client. You can kill it with ctrl-c and rerun it as
many times as you wish without any ill effects.
You can hoard a
parcel anytime and anywhere, even if other isr
commands are currently running, and even if the parcel is
not currently checked out on the client host.
isr ls
[parcel] [-l|-L n]
List information about your
parcels. By default, this command displays the status of all
of the user’s parcels that are managed by the default
server. The display identifies the server, and then for each
parcel, prints a single line with the name, the current lock
status (acquired or released), the user and
client host that last changed the lock status, and the time
of that change.
If a specific
parcel is named on the command line, only information about
that parcel will be shown. The -L option requests a
long listing format, printing additional information about
the n most recent parcel versions. The -l
option is similar, printing information for some small
default number of the most recent versions.
isr lshoard [-l]
List information about the
parcels currently in the hoard cache. The -l option
causes additional information to be displayed, including
parcel UUIDs for passing to the rmhoard command.
isr passwd
Change your ISR password. This
command does NOT change the password of the Unix
login account on your client host. (Use the local
passwd command for that.)
isr poweroff
parcel [-m vmm] [-o
optstring]
Forcibly power off a suspended
parcel by deleting its memory image. When
parcel is next resumed, it will perform a cold boot.
This command can be used to reboot a misbehaving parcel or
to recover if its memory image is damaged. The -o
option will pass the optstring configuration option
to the VMM. The -m option will delete the memory
image for the specified vmm, rather than for the
parcel’s default VMM.
isr resume parcel
[-C compression] [-r
oldversion] [-m vmm] [-o
optstring] [-d] [-D] [-F]
Checkout a parcel (if
necessary) and then run it. Any additional state that the
parcel needs while it is running, beyond that downloaded by
the checkout operation, will be demand-paged from the
server.
By default, the
resume command requires a network connection.
However, if the parcel is fully hoarded then you can use the
-d option to resume disconnected. If the
parcel is not fully hoarded, the -d option will
remind you to run isr checkout -d to check out and
hoard the parcel.
The -r
option allows you to rollback to previous parcel versions,
as described in the documentation for the checkout
command. The -F option causes the parcel to be
resumed in a window rather than in full-screen mode, which
can be useful for configuring the virtual machine monitor or
for running multiple parcels at once. This option may be
unavailable if the VMM does not support it. The -D
option launches the dirtometer, which provides a visual
representation of parcel disk accesses and the resulting
parcel state. The -C option specifies the algorithm
used to compress newly-written disk chunks; see
OPTIONS below for supported values of
compression.
The -m
option allows you to resume using a virtual machine monitor
other than the default VMM for this parcel. This will fail
if the parcel includes a memory image written by an
incompatible VMM, if the VMM is not properly installed on
the client host, or if the guest OS does not support the
target VMM. The -o option will pass the
optstring configuration option to the VMM.
isr rmhoard
parcel
Remove hoarded state for
parcel from the client. If parcel is currently
checked out, it can be specified by name; otherwise, it must
be specified by its UUID. The parcel UUID can be
obtained with the lshoard -l command.
isr stat
parcel
Display information about the
local state of a parcel, such as the amount of state
demand-paged from the server, the amount of dirty state, and
the amount of state that is hoarded in the persistent hoard
cache. The parcel must be checked out in order to use
the stat command.
isr sync parcel
[-b KBytes/s] [-C
compression]
Save a new checkpointed version
of parcel on the server, without releasing the lock
or discarding any of the current local state. You can
sync as often as you like between resume
commands. The -b option limits the upload bandwidth
to KBytes/s. The -C option specifies the
algorithm used to compress the memory image for upload; see
OPTIONS below for supported values of
compression.
The sync
command is idempotent, meaning that it can be safely
interrupted with ctrl-c and rerun until it successfully
completes.
isr uuid
parcel
Display the universally unique
identifier (UUID) for the specified parcel, which
must be checked out.
isr version
Display the version of the ISR
client.
OPTIONS
Each option has
equivalent short and long forms.
-b/--bwlimit KBytes/s
Limit upload bandwidth during
checkin and sync to KBytes/s.
-c/--checkstate
Perform an additional content
consistency check during the checkp,
checkhoard, and checkout commands.
-C/--compression
compression
Override the configured
compression profile, which determines how hard the ISR
client should try to compress newly-generated disk chunks
(at runtime) and memory images (at checkin/sync). The
default is obtained from the compression option in
the configuration files (see FILES below). Recognized
values of compression are:
disabled
Do not compress at all. This is
intended for debugging purposes only; mild will
almost always perform better.
|
mild |
|
Use a very fast algorithm which compresses poorly.
Choose this option to improve runtime performance if you
have a LAN-speed connection to the server. This is the
default if no compression profile has been configured. |
moderate
Use an algorithm which is
reasonably good and reasonably fast. Choose this option for
intermediate-bandwidth connections such as fast
broadband.
painful
Attempt to compress as much as
possible, and spend a lot of time doing it. This option is
appropriate for very slow links.
Older parcels
may not be configured to support all of these compression
profiles; in this case, the closest match will be used.
-d/--disconnected
Resume disconnected
(after hoarding), or ensure that the parcel can later be
resumed disconnected.
-D/--dirtometer
Upon resume, launch the
dirtometer, a visualization tool which shows virtual disk
accesses by the guest OS and the resulting parcel state.
-e/--remote
For checkp, check the
parcel on the server rather than on the client.
-f/--force
Cause clean to release
the parcel lock on the server even if the lock is held by
another client host. This will cause that client host to be
unable to checkin the parcel.
-F/--no-fullscreen
When the parcel is resumed,
display it in a window rather than in full-screen mode.
-l/--long
Use long listing format for the
ls command, printing information about some small
default number of the most recent parcel versions. For the
lshoard command, show additional information about
the parcels being examined.
-L/--longvers
n
Use long listing format for the
ls command, printing information about the n
most recent parcel versions.
-m/--vmm vmm
For resume or
poweroff, use a virtual machine monitor other than
the parcel’s default.
-o/--vmmopt
optstring
For resume or
poweroff, pass the specified optstring to the
virtual machine monitor. optstring can contain
multiple comma-delimited options. -o can also be
specified more than once.
-p/--compact
During checkhoard,
defragment the hoard cache and truncate it to the minimum
possible size.
-q/--quiet
Run silently (except if things
go wrong).
-r/--rollback
version
Optional parcel version number
for the checkout, resume, and checkp
commands. For checkout and resume it
determines the parcel version to rollback to. For
checkp it determines the parcel version to
check for consistency if -e is specified.
-s/--server
name
Use the server name,
overriding the default. name can be a fully qualified
domain name or an IP address.
-u/--user
userid
By default, the current ISR
userid is the current Unix login name or the value of the
userid variable from the configuration files. This
option overrides both of these and sets the current ISR
userid to userid.
-v/--verbose
Increment the verbosity
level.
-Y/--splice
For checkp on a local
parcel, revert damaged chunks to their state at the most
recent checkout or sync. Disallow checkin if any chunks are
reverted.
EXAMPLES
Here is how you
might use isr during a typical day:
After arriving
at work, you login to your ISR client host. Next, you will
need to authenticate to the ISR server,
$ isr
auth
which prompts
you for your ISR password. You are now authenticated and
will not need to type this password again until you either
explicitly deauth or terminate your X session.
After listing
your available parcels,
$ isr
ls
you decide to
resume the Windows parcel called winxp in connected
mode:
$ isr
resume winxp
This downloads
parcel winxp (if necessary) and executes it inside
the virtual machine monitor (VMM).
After running
the parcel all morning, you realize you need to head out to
a lunch meeting in a conference room with poor wireless
connectivity. So you suspend the current running parcel,
which causes the VMM to return control to the Linux shell.
After making sure that it is safe to run disconnected (i.e.,
your parcel state is hoarded),
$ isr co
winxp -d
you unplug the
network cable, carry your laptop to the noon meeting, and
then run you parcel disconnected during the meeting:
$ isr
resume winxp -d
After the
meeting, you head back to the office, plug your network
cable back in, and create a checkpointed version of your
current parcel state on the server:
$ isr sync
winxp
After running
connected for the rest of the day, it’s time to head
home. So you terminate the ISR session by checking in your
parcel:
$ isr ci
winxp
Once home, you
login to your home ISR client, authenticate to the ISR
server, and then checkout the parcel that you were working
on at work:
$ isr
resume winxp
FILES
/usr/share/openisr/config
Configuration file that
specifies defaults for ISR configuration options. This file
should not be modified; changes should be made in the
system-wide or user-specific config files instead.
/etc/openisr/openisr.conf
Configuration file that
specifies system-wide settings. Options in this file
override those in /usr/share/openisr/config.
~/.openisrrc
Configuration file that
specifies user-specific settings. Options in this file
override those in /usr/share/openisr/config and
/etc/openisr/openisr.conf.
ACKNOWLEDGMENTS
ISR was
developed by Michael Kozuch and Casey Helfrich from Intel
Research Pittsburgh; David O’Hallaron, Mahadev (Satya)
Satyanarayanan, Matt Toups, and Benjamin Gilbert from
Carnegie Mellon; and Partho Nath from Penn State. Internet
Suspend/Resume and OpenISR are registered trademarks of
Carnegie Mellon University.
|