tape: improve docu
This commit is contained in:
		@ -1,18 +1,19 @@
 | 
			
		||||
Tape Backup
 | 
			
		||||
===========
 | 
			
		||||
 | 
			
		||||
Our tape backup solution provides a easy way to store datastore
 | 
			
		||||
contents to a tape. This increases data safety because you get:
 | 
			
		||||
Proxmox tape backup provides an easy way to store datastore contents
 | 
			
		||||
to a magnetic tapes. This increases data safety because you get:
 | 
			
		||||
 | 
			
		||||
- an additional copy of the data
 | 
			
		||||
- to a different media type (tape)
 | 
			
		||||
- to an additional location (you can move tape offsite)
 | 
			
		||||
- to an additional location (you can move tapes offsite)
 | 
			
		||||
 | 
			
		||||
Statistics show that 95% of all restore jobs restores the last
 | 
			
		||||
backup. Restore requests further declines the older the data gets.
 | 
			
		||||
Considering that, tape backup may also help to reduce disk usage,
 | 
			
		||||
because you can safely remove data from disk once archived on tape.
 | 
			
		||||
This is especially true if you need to keep data for several years.
 | 
			
		||||
Statistics show that 95% of all restore jobs restores data from the
 | 
			
		||||
last backup. Restore requests further declines the older the data
 | 
			
		||||
gets. Considering this, tape backup may also help to reduce disk
 | 
			
		||||
usage, because you can safely remove data from disk once archived on
 | 
			
		||||
tape. This is especially true if you need to keep data for several
 | 
			
		||||
years.
 | 
			
		||||
 | 
			
		||||
Tape backups do not provide random access to the stored data. Instead,
 | 
			
		||||
you need to restore the data to disk before you can access it
 | 
			
		||||
@ -50,8 +51,7 @@ In general, LTO tapes offer the following advantages:
 | 
			
		||||
- Multiple vendors (for both media and drives)
 | 
			
		||||
 | 
			
		||||
Please note that `Proxmox Backup Server` already stores compressed
 | 
			
		||||
data, so we do not need/use the tape compression feature. Same applies
 | 
			
		||||
to encryption.
 | 
			
		||||
data, so we do not need/use the tape compression feature.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Supported Hardware
 | 
			
		||||
@ -78,9 +78,9 @@ restore jobs while the other dives are used for backups.
 | 
			
		||||
 | 
			
		||||
Also consider that you need to read data first from your datastore
 | 
			
		||||
(disk). But a single spinning disk is unable to deliver data at this
 | 
			
		||||
rate. We meassured a maximum rate about 100MB/s in practive, so it
 | 
			
		||||
takes 33 hours to read 12TB to fill up a LTO8 tape. So if you want to
 | 
			
		||||
run your tape at full speed, please make sure that the source
 | 
			
		||||
rate. We meassured a maximum rate about 60MB/s to 100MB/s in practive,
 | 
			
		||||
so it takes 33 hours to read 12TB to fill up a LTO8 tape. If you want
 | 
			
		||||
to run your tape at full speed, please make sure that the source
 | 
			
		||||
datastore is able to delive that performance (use SSDs).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -438,18 +438,33 @@ one media pool, so a job only uses tapes from that pool.
 | 
			
		||||
 | 
			
		||||
   - Never overwrite data.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. NOTE:: FIXME: Add note about global content namespace. (We do not store
 | 
			
		||||
   the source datastore, so it is impossible to distinguish
 | 
			
		||||
   store1:/vm/100 from store2:/vm/100. Please use different media
 | 
			
		||||
   pools if the source is from a different name space)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Empty Media Pool
 | 
			
		||||
^^^^^^^^^^^^^^^^
 | 
			
		||||
The following command creates a new media pool::
 | 
			
		||||
 | 
			
		||||
It is possible to label tapes with no pool assignment. Such tapes may
 | 
			
		||||
be used by any pool. Once used by a pool, media stays in that pool.
 | 
			
		||||
 // proxmox-tape pool create <name> --drive <string> [OPTIONS]
 | 
			
		||||
 | 
			
		||||
 # proxmox-tape pool create daily --drive mydrive
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Additional option can be set later using the update command::
 | 
			
		||||
 | 
			
		||||
 # proxmox-tape pool update daily --allocation daily --retention 7days
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
To list all configured pools use::
 | 
			
		||||
 | 
			
		||||
 # proxmox-tape pool list
 | 
			
		||||
 ┌───────┬──────────┬────────────┬───────────┬──────────┐
 | 
			
		||||
 │ name  │ drive    │ allocation │ retention │ template │
 | 
			
		||||
 ╞═══════╪══════════╪════════════╪═══════════╪══════════╡
 | 
			
		||||
 │ daily │ mydrive  │ daily      │ 7days     │          │
 | 
			
		||||
 └───────┴──────────┴────────────┴───────────┴──────────┘
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Tape Jobs
 | 
			
		||||
@ -495,20 +510,40 @@ software can uniquely identify the tape too.
 | 
			
		||||
For a standalone drive, manually insert the new tape cartidge into the
 | 
			
		||||
drive and run::
 | 
			
		||||
 | 
			
		||||
 # proxmox-tape label --changer-id <label-text> --drive <drive-name>
 | 
			
		||||
 # proxmox-tape label --changer-id <label-text> [--pool <pool-name>]
 | 
			
		||||
 | 
			
		||||
You may omit the ``--pool`` argument to allow the tape to be used by any pool.
 | 
			
		||||
 | 
			
		||||
.. Note:: For safety reasons, this command fails if the tape contain
 | 
			
		||||
   any data. If you want to overwrite it anways, erase the tape first.
 | 
			
		||||
 | 
			
		||||
You can verify success by reading back the label::
 | 
			
		||||
 | 
			
		||||
 # proxmox-tape read-label --drive <drive-name>
 | 
			
		||||
 # proxmox-tape read-label
 | 
			
		||||
 ┌─────────────────┬──────────────────────────────────────┐
 | 
			
		||||
 │ Name            │ Value                                │
 | 
			
		||||
 ╞═════════════════╪══════════════════════════════════════╡
 | 
			
		||||
 │ changer-id      │ vtape1                               │
 | 
			
		||||
 ├─────────────────┼──────────────────────────────────────┤
 | 
			
		||||
 │ uuid            │ 7f42c4dd-9626-4d89-9f2b-c7bc6da7d533 │
 | 
			
		||||
 ├─────────────────┼──────────────────────────────────────┤
 | 
			
		||||
 │ ctime           │ Wed Jan  6 09:07:51 2021             │
 | 
			
		||||
 ├─────────────────┼──────────────────────────────────────┤
 | 
			
		||||
 │ pool            │ daily                                │
 | 
			
		||||
 ├─────────────────┼──────────────────────────────────────┤
 | 
			
		||||
 │ media-set-uuid  │ 00000000-0000-0000-0000-000000000000 │
 | 
			
		||||
 ├─────────────────┼──────────────────────────────────────┤
 | 
			
		||||
 │ media-set-ctime │ Wed Jan  6 09:07:51 2021             │
 | 
			
		||||
 └─────────────────┴──────────────────────────────────────┘
 | 
			
		||||
 | 
			
		||||
.. NOTE:: The ``media-set-uuid`` using all zeros indicates an empty
 | 
			
		||||
   tape (not used by any media set).
 | 
			
		||||
 | 
			
		||||
If you have a tape library, apply the sticky barcode label to the tape
 | 
			
		||||
cartridges first. Then load those empty tapes into the library. You
 | 
			
		||||
can then label all unlabeled tapes with a single command::
 | 
			
		||||
 | 
			
		||||
 # proxmox-tape barcode-label --drive <drive-name>
 | 
			
		||||
 # proxmox-tape barcode-label [--pool <pool-name>]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Run Tape Backups
 | 
			
		||||
 | 
			
		||||
@ -44,7 +44,7 @@ pub const MEDIA_SET_ALLOCATION_POLICY_FORMAT: ApiStringFormat =
 | 
			
		||||
    ApiStringFormat::VerifyFn(|s| { MediaSetPolicy::from_str(s)?; Ok(()) });
 | 
			
		||||
 | 
			
		||||
pub const MEDIA_SET_ALLOCATION_POLICY_SCHEMA: Schema = StringSchema::new(
 | 
			
		||||
    "Media set allocation policy.")
 | 
			
		||||
    "Media set allocation policy ('continue', 'always', or a calendar event).")
 | 
			
		||||
    .format(&MEDIA_SET_ALLOCATION_POLICY_FORMAT)
 | 
			
		||||
    .schema();
 | 
			
		||||
 | 
			
		||||
@ -79,7 +79,7 @@ pub const MEDIA_RETENTION_POLICY_FORMAT: ApiStringFormat =
 | 
			
		||||
    ApiStringFormat::VerifyFn(|s| { RetentionPolicy::from_str(s)?; Ok(()) });
 | 
			
		||||
 | 
			
		||||
pub const MEDIA_RETENTION_POLICY_SCHEMA: Schema = StringSchema::new(
 | 
			
		||||
    "Media retention policy.")
 | 
			
		||||
    "Media retention policy ('overwrite', 'keep', or time span).")
 | 
			
		||||
    .format(&MEDIA_RETENTION_POLICY_FORMAT)
 | 
			
		||||
    .schema();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user