日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
CentOS7中利用Snapper快照進(jìn)行系統(tǒng)備份與恢復(fù)

為什么要使用Snapper快照?

我們可以想像以下場景:
1. 場景一:系統(tǒng)發(fā)生意外宕機(jī),工程師無法快速定位問題,業(yè)務(wù)受到中斷,客戶十分不滿意。
2. 場景二:項(xiàng)目會(huì)議上,就是否升級某軟件到最新版本,A和B爭執(zhí)不斷,A認(rèn)為為了保持與其他軟件的兼容性不能輕易升級,B認(rèn)為升級能充分利用軟件包的最新功能以及享受到新版本性能的提升
3. 場景三:數(shù)據(jù)庫突然無法訪問了,導(dǎo)致業(yè)務(wù)中斷,工程師A和B因?yàn)樽肪控?zé)任爭得不可開交,A說是B修改了某項(xiàng)配置導(dǎo)致的,B反駁說我的配置都是正確的,不可能出錯(cuò)。

但是Snapper可以輕松幫你解決以上煩惱:
1. 使用Snapper定期做系統(tǒng)備份,系統(tǒng)發(fā)生意外宕機(jī)可以快速回溯到之前的正常狀態(tài)。
2. 可以使用Snapper來安裝/升級軟件,在安裝/升級前后做快照,如果安裝/升級失敗,就可以快速的恢復(fù)系統(tǒng)到正常狀態(tài)
3. 大型軟件項(xiàng)目的部署配置,Snapper可以幫助快速定位哪些配置文件做了改動(dòng),幫助定位錯(cuò)誤,并快速撤銷配置文件的修改。

關(guān)于Snapper,Linux User & Developer Magazine中如是說:”感謝Snapper,我們才可以肆無忌憚的折騰系統(tǒng)配置以及安裝/更新軟件,從舊的備份中恢復(fù)成為了過去式,也不用再為會(huì)丟失文件而提心吊膽,你只需要利用快照就可以從壞點(diǎn)恢復(fù)到好點(diǎn)。

快照工具Snapper

快照是對卷在某一點(diǎn)上進(jìn)行拷貝,提供了一種恢復(fù)文件系統(tǒng)到之前狀態(tài)的一種方法。Snapper是一個(gè)用來創(chuàng)建和維護(hù)快照的命令行工具,提供了基本的快照工具:創(chuàng)建、刪除快照;對比快照之間的變化,以及撤銷快照之間的操作。

目前Snapper可以為以下文件系統(tǒng)類型創(chuàng)建快照:

  • btrfs
  • 在thinly-provisioned LVM之上創(chuàng)建的ext3、ext4、xfs文件系統(tǒng)

SUSE快照方案為:
- YaST/Zypper + Snapper + btrfs或thin-provisioning LVM
通過提供了YaST/Zypper界面化操作和Snapper命令行;

CentOS快照方案為:
- Snapper + btrfs或thin-provisioning LVM
提供Snapper命令行操作,用戶可以體驗(yàn)一下如何使用開源的Snapper GUI作為上層界面,但功能尚不完善。

為Btrfs文件系統(tǒng)創(chuàng)建快照

創(chuàng)建Btrfs分區(qū)

首先,我們以btrfs文件系統(tǒng)為例,來利用Snapper創(chuàng)建快照;
如果想為普通的btrfs文件系統(tǒng)創(chuàng)建快照,需要先創(chuàng)建并掛載btrfs文件系統(tǒng):

  1. 創(chuàng)建btrfs文件系統(tǒng)

    # mkfs.btrfs /dev/sdb
    
  2. 掛載btrfs文件系統(tǒng)

    # mount /dev/sdb /mnt
    

如果想利用快照保護(hù)根分區(qū),需要在安裝時(shí)選擇btrfs作為根分區(qū),因?yàn)镃entOS 7 根分區(qū)默認(rèn)是xfs文件系統(tǒng),所以在安裝過程選擇btrfs作為根分區(qū)默認(rèn)文件系統(tǒng)即可。

創(chuàng)建快照時(shí),快照與原始點(diǎn)都會(huì)指向文件系統(tǒng)中的同一個(gè)塊。因此一開始時(shí)快照并不占用額外的磁盤空間。但如果修改了原始文件系統(tǒng)中的數(shù)據(jù),則會(huì)復(fù)制已更改的數(shù)據(jù)塊,同時(shí)將舊的數(shù)據(jù)塊作為快照保留。因此,快照就將占用與已修改數(shù)據(jù)相同的空間。所以久而久之,分配給快照的空間便會(huì)不斷增長。因此,包含快照的分區(qū)需要比常規(guī)分區(qū)大才行。確切的空間大小主要取決于要保留的快照數(shù)量以及數(shù)據(jù)更改量。一般來說,應(yīng)考慮使用兩倍于常規(guī)使用磁盤空間的空間大小。

安裝snapper

執(zhí)行以下命令安裝snapper:

# yum install snapper

安裝完成以后檢查一下,確保安裝成功

# rpm -qa | grep snapper

創(chuàng)建配置文件 ###

接下來一步步創(chuàng)建快照,Snapper需要為每一個(gè)卷創(chuàng)建一個(gè)配置文件,配置文件定義了快照的創(chuàng)建和維護(hù)規(guī)則,執(zhí)行以下命令為我們的根文件系統(tǒng)創(chuàng)建一個(gè)名為btrfs_config的配置文件:

// snapper -c config_name create-config -f btrfs /mount-point
# snapper -c btrfs_config create-config -f btrfs /

創(chuàng)建的配置文件一般是從/etc/snapper/config-templates/default拷貝,并在/etc/snapper/configs/文件夾下生成,我們可以看到新生成的配置文件如下,目前配置文件先采用默認(rèn)設(shè)置,暫不修改其內(nèi)容:

# ls /etc/snapper/configs/
btrfs_config

創(chuàng)建快照

快照類型

盡管不同的快照本身并無區(qū)別,但根據(jù)生成快照的不同情形將它們分成以下三類:
- pre
修改前的文件系統(tǒng)快照。每一張前快照都有一個(gè)對應(yīng)的post快照。

  • post
    修改后的文件系統(tǒng)快照。每一張后快照都有一個(gè)對應(yīng)的pre快照。

  • single
    獨(dú)立的快照。目的之一就是為了自動(dòng)創(chuàng)建每小時(shí)快照。此為創(chuàng)建快照時(shí)的默認(rèn)類型。

創(chuàng)建pre或者post快照

可以單獨(dú)創(chuàng)建pre和post快照,比如我們先創(chuàng)建一個(gè)pre快照, -p的含義是創(chuàng)建快照的同時(shí),打印出快照編號(hào):

# snapper -c btrfs_config create -t pre -p
1

# snapper -c btrfs_config list
Type   | # | Pre # | Date                            | User | Cleanup  | Description | Userdata
-------+---+-------+---------------------------------+------+----------+-------------+---------
single | 0 |       |                                 | root |          | current     |         
pre    | 1 |       | Wed 08 Jun 2016 11:28:09 AM EDT | root |          |             | 

之后我們可能會(huì)執(zhí)行一些系統(tǒng)操作,比如我們安裝了一個(gè)軟件包,根分區(qū)文件系統(tǒng)內(nèi)容會(huì)有一些變化

yum install net-tools

我們可以在創(chuàng)建一個(gè)post快照:

# snapper -c btrfs_config create -t post --pre-num 1 -p
2

# snapper -c btrfs_config list
Type   | # | Pre # | Date                            | User | Cleanup  | Description | Userdata
-------+---+-------+---------------------------------+------+----------+-------------+---------
single | 0 |       |                                 | root |          | current     |         
pre    | 1 |       | Wed 08 Jun 2016 11:28:09 AM EDT | root |          |             |         
post   | 2 | 1     | Wed 08 Jun 2016 12:26:19 PM EDT | root |          |             |  

編號(hào)為1和2的快照就組成了一個(gè)快照對,記錄了在安裝net-tools前后的根分區(qū)變化,通過以下命令查看這些變化:

# snapper -c btrfs_config status 1..2
+..... /usr/bin/netstat
+..... /usr/lib/systemd/system/arp-ethers.service
+..... /usr/sbin/arp
+..... /usr/sbin/ether-wake
+..... /usr/sbin/ifconfig
+..... /usr/sbin/ipmaddr
+..... /usr/sbin/iptunnel
+..... /usr/sbin/mii-diag
+..... /usr/sbin/mii-tool
+..... /usr/sbin/nameif
+..... /usr/sbin/plipconfig
+..... /usr/sbin/route
+..... /usr/sbin/slattach
+..... /usr/share/doc/net-tools-2.0
+..... /usr/share/doc/net-tools-2.0/COPYING
(略...)
+..... /usr/share/man/pt/man8/route.8.gz
c..... /var/cache/yum/x86_64/7/timedhosts
c..... /var/lib/rpm/Basenames
c..... /var/lib/rpm/Dirnames
(略...)
+..... /var/lib/yum/yumdb/n/6a2a1ded37167c106d2be6dbec20003079f37cf6-net-tools-2.0-0.17.20131004git.el7-x86_64/var_infra
+..... /var/lib/yum/yumdb/n/6a2a1ded37167c106d2be6dbec20003079f37cf6-net-tools-2.0-0.17.20131004git.el7-x86_64/var_uuid
c..... /var/log/audit/audit.log
c..... /var/log/cron
c..... /var/log/messages
c..... /var/log/snapper.log
c..... /var/log/yum.log

“+”號(hào)代表新增文件,“-”代表刪除文件,“c”代表修改了文件,與diff語法相同。

為快照添加描述和用戶數(shù)據(jù)

創(chuàng)建pre類型的快照并打印快照編號(hào),該快照標(biāo)記為important,且為其添加描述以方便以后查詢:

# snapper create --type pre --print-number --description "Before install net-tools"--userdata "important=yes"

創(chuàng)建post類型的快照,其對應(yīng)的pre快照編號(hào)為1,該快照標(biāo)記為important,且為其添加描述以方便以后查詢:

# snapper create --type post --pre-number 1 --description "After install net-tools" --userdata "important=yes"

以上操作也可以合并成一個(gè)命令:

# snapper -c btrfs_config create --command "yum install net-tools"

查看快照 ###

由于默認(rèn)配置中,啟動(dòng)了自動(dòng)快照功能,自動(dòng)記錄整點(diǎn)的快照,也即類型為single的timeline快照,我們可以看到Snapper自動(dòng)生成了一個(gè)標(biāo)號(hào)為3的快照(注:如果每小時(shí)生成一個(gè)快照,過不了多久我們的系統(tǒng)就會(huì)被快照占滿,就會(huì)因存儲(chǔ)空間不足而崩潰,所以不可能無限制的生成快照,這就是配置文件中快照清理規(guī)則的作用了,僅會(huì)保留有限個(gè)數(shù)的當(dāng)年、當(dāng)月、當(dāng)日快照,后面會(huì)詳細(xì)講解,這里僅做預(yù)覽。)

# snapper -c btrfs_config list
Type   | #  | Pre # | Date                            | User | Cleanup  | Description | Userdata
-------+----+-------+---------------------------------+------+----------+-------------+---------
single | 0  |       |                                 | root |          | current     |         
pre    | 1  |       | Wed 08 Jun 2016 01:15:16 PM EDT | root |          |             |         
post   | 2  | 1     | Wed 08 Jun 2016 01:15:21 PM EDT | root |          |             |         
single | 3  |       | Wed 08 Jun 2016 02:01:01 PM EDT | root | timeline | timeline    |         

快照元數(shù)據(jù)

通過以上快照列表可以看到,每一張快照均由快照本身以及一些元數(shù)據(jù)組成。創(chuàng)建快照時(shí),需要指定元數(shù)據(jù)。修改快照意味著只能更改其元數(shù)據(jù),快照內(nèi)容是無法更改的。每一張快照使用的元數(shù)據(jù)如下:

Type:          快照類型,有關(guān)詳細(xì)信息請參見快照類型,不能更改;
#:             快照的唯一編號(hào),不能更改;
Pre #:         指定相應(yīng)前快照的編號(hào),僅適用于post,不能更改;
Date:          創(chuàng)建快照的時(shí)間戳
User:          創(chuàng)建快照的用戶
Cleanup:       清理規(guī)則
Description:   快照的說明。
Userdata:      擴(kuò)展的說明??墒褂枚禾?hào)分隔的“鍵=值”列表格式指定自定義數(shù)據(jù)“reason=testing, project=foo”,此字段也可用于將快照標(biāo)記為重要 (important=yes) 以及列出創(chuàng)建快照的用戶 (user=tux)。

查看文件的改動(dòng)

顯示指定快照中發(fā)生更改的一系列文件,例如,運(yùn)行以下命令列出文件/var/log/yum.log的標(biāo)號(hào)為0的當(dāng)前版本與標(biāo)號(hào)為2的快照中文件版本的差異,如果不指定文件名,則會(huì)顯示所有文件的差異:

# snapper -c btrfs_config diff 1..0 /var/log/yum.log
--- /.snapshots/1/snapshot/var/log/yum.log  2016-06-08 13:01:51.977879395 -0400
+++ /var/log/yum.log    2016-06-08 13:47:50.520081926 -0400
@@ -3,3 +3,12 @@
 Jun 08 08:15:18 Installed: snapper-libs-0.1.7-10.el7.x86_64
 Jun 08 08:15:18 Installed: boost-serialization-1.53.0-25.el7.x86_64
 Jun 08 08:15:19 Installed: snapper-0.1.7-10.el7.x86_64
+Jun 08 13:15:21 Installed: net-tools-2.0-0.17.20131004git.el7.x86_64
+Jun 08 13:47:47 Updated: 7:device-mapper-1.02.107-5.el7_2.2.x86_64
+Jun 08 13:47:47 Updated: 7:device-mapper-libs-1.02.107-5.el7_2.2.x86_64
+Jun 08 13:47:47 Installed: 7:device-mapper-event-libs-1.02.107-5.el7_2.2.x86_64
+Jun 08 13:47:48 Installed: 7:device-mapper-event-1.02.107-5.el7_2.2.x86_64
+Jun 08 13:47:48 Installed: 7:lvm2-libs-2.02.130-5.el7_2.2.x86_64
+Jun 08 13:47:48 Installed: libaio-0.3.109-13.el7.x86_64
+Jun 08 13:47:48 Installed: device-mapper-persistent-data-0.5.5-1.el7.x86_64
+Jun 08 13:47:50 Installed: 7:lvm2-2.02.130-5.el7_2.2.x86_64

如果是新增文件,則僅會(huì)顯示:

# snapper -c btrfs_config diff 1..0 /usr/bin/netstat
Binary files /.snapshots/1/snapshot/usr/bin/netstat and /usr/bin/netstat differ

運(yùn)行以下命令列出文件/var/log/yum.log在標(biāo)號(hào)為1和2的快照中文件版本的差異:

# snapper -c btrfs_config diff 1..2 /var/log/yum.log
(略...)

通過以上命令可以看到,Snapper 的快照存儲(chǔ)在當(dāng)前子卷根目錄的 .snapshots 隱藏文件夾中。比如當(dāng)前子卷是 /,那么就是 /.snapshots,如果是 /mnt/vol1,那就是 /mnt/vol1/.snapshots??煺帐冀K存放在創(chuàng)建快照的那個(gè)分區(qū)或子卷中,無法將快照存儲(chǔ)到其他分區(qū)或子卷。

恢復(fù)文件

要恢復(fù)一個(gè)或多個(gè)文件,請運(yùn)行

# snapper -c CONFIG -v undochange
  SNAPSHOT_ID..0 FILENAME1 FILENAME2

如果沒有指定文件名,則會(huì)恢復(fù)所有已更改的文件,可以通過以下命令撤銷以上操作,恢復(fù)系統(tǒng)狀態(tài)到快照1:

# snapper -c btrfs_config undochange 1..2

刪除快照

可以通過以下命令刪除快照:

# snapper -c btrfs_config delete 1 2

# snapper -c btrfs_config list
Type   | # | Pre # | Date | User | Cleanup | Description | Userdata
-------+---+-------+------+------+---------+-------------+---------
single | 0 |       |      | root |         | current     |  

提示: 舊快照占用的磁盤空間更多?。?!
如果您要?jiǎng)h除快照以釋放硬盤上的空間,請務(wù)必先刪除舊快照??煺丈傻臅r(shí)間越長,其占用的空間就越大。通過配置文件設(shè)置自動(dòng)刪除快照。有關(guān)詳細(xì)信息,請參見清理算法。

在精簡LVM卷上創(chuàng)建快照

除了在 Btrfs 文件系統(tǒng)上生成快照之外,快照程序還支持在 XFS、Ext4 或 Ext3 格式的精簡LVM 卷(不支持在常規(guī) LVM 卷上生成快照)上生成快照。

創(chuàng)建精簡LVM

以系統(tǒng)上的/dev/sdb、/dev/sdc為例,首先分別創(chuàng)建分區(qū)/dev/sdb1、/dev/sdc1:

# fdisk /dev/sdb 
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x962bc2ec.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
Partition number (1-4, default 1): 
First sector (2048-10485759, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): 
Using default value 10485759
Partition 1 of type Linux and of size 5 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

查看創(chuàng)建好的分區(qū)如下:

# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0      2:0    1    4K  0 disk 
sda      8:0    0   30G  0 disk 
+-sda1   8:1    0  500M  0 part /boot
+-sda2   8:2    0    2G  0 part [SWAP]
+-sda3   8:3    0 27.5G  0 part /home
sdb      8:16   0    5G  0 disk 
+-sdb1   8:17   0    5G  0 part 
sdc      8:32   0    5G  0 disk 
+-sdc1   8:33   0    5G  0 part 
sr0     11:0    1 1024M  0 rom  

創(chuàng)建PV:

# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created

創(chuàng)建VG:

# vgcreate vg_thin /dev/sdb1 /dev/sdc1 
  Volume group "vg_thin" successfully created

創(chuàng)建精簡池:

# lvcreate -L 5G --thinpool thin_pool vg_thin
  Logical volume "thin_pool" created.

查看精簡LVM,可以看到Allocated pool data為0,說明thin_pool尚未實(shí)際占用磁盤空間:

# lvdisplay /dev/vg_thin/thin_pool 
  --- Logical volume ---
  LV Name                thin_pool
  VG Name                vg_thin
  LV UUID                3811nd-ltYk-XWqO-mxog-Gq82-38do-BywBfY
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2016-06-08 14:05:58 -0400
  LV Pool metadata       thin_pool_tmeta
  LV Pool data           thin_pool_tdata
  LV Status              available
  # open                 0
  LV Size                5.00 GiB
  Allocated pool data    0.00%
  Allocated metadata     0.68%
  Current LE             1280
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
# lvcreate -V 2G --thin -n thin_vol1 vg_thin/thin_pool
  Logical volume "thin_vol1" created.

# lvcreate -V 2G --thin -n thin_vol2 vg_thin/thin_pool
  Logical volume "thin_vol2" created.

# lvcreate -V 2G --thin -n thin_vol3 vg_thin/thin_pool
6 GiB)!
  For thin pool auto extension activation/thin_pool_autoextend_threshold should be below 100.
  Logical volume "thin_vol3" created.

創(chuàng)建文件系統(tǒng):

# mkfs.ext4 /dev/vg_thin/thin_vol1

掛載文件系統(tǒng):

# mkdir /mnt/vol1
# mount /dev/vg_thin/thin_vol1 /mnt/vol1

創(chuàng)建快照配置文件

為了在精簡 LVM 卷上使用快照程序,首先為其創(chuàng)建快照配置文件。在 LVM 上要使用 –fstype=lvm(filesystem) 指定文件系統(tǒng)。文件系統(tǒng)的有效值為 ext3、etx4 或 xfs。如下:

# snapper -c lvm_config create-config -f "lvm(ext4)" /mnt/vol1/

# ls /etc/snapper/configs/
btrfs_config  lvm_config  

# snapper -c lvm_config list
Type   | # | Pre # | Date | User | Cleanup | Description | Userdata
-------+---+-------+------+------+---------+-------------+---------
single | 0 |       |      | root |         | current     |  

創(chuàng)建一組pre/post快照對

# snapper -c lvm_config create --command "echo Hello > /mnt/vol1/hello_file"

# snapper -c lvm_config list
Type   | # | Pre # | Date                            | User | Cleanup | Description | Userdata
-------+---+-------+---------------------------------+------+---------+-------------+---------
single | 0 |       |                                 | root |         | current     |         
pre    | 1 |       | Wed 08 Jun 2016 02:41:07 PM EDT | root |         |             |         
post   | 2 | 1     | Wed 08 Jun 2016 02:41:07 PM EDT | root |         |             |   

查看快照1和2之間的變化

# snapper -c lvm_config diff 1..2
--- /mnt/vol1/.snapshots/1/snapshot/hello_file  1969-12-31 19:00:00.000000000 -0500
+++ /mnt/vol1/.snapshots/2/snapshot/hello_file  2016-06-08 14:41:07.860147086 -0400
@@ -0,0 +1 @@
+Hello

以普通用戶身份使用快照

默認(rèn)情況下,快照程序只能由 root 用戶使用。但在特定情況下,某些組或用戶也需要?jiǎng)?chuàng)建快照或通過還原至快照來撤銷更改:

為 ALLOW_USERS 和(或)ALLOW_GROUPS 設(shè)置值,分別為用戶和(或)組授予權(quán)限。多個(gè)條目需要使用空格 分隔。例如,要為用戶 thin_user 和 thin_group 授予權(quán)限,可運(yùn)行:

# snapper -c web_data set-config "ALLOW_USERS=thin_user" "ALLOW_GROUPS=thin_group"

也可以通過直接修改配置文件實(shí)現(xiàn),此時(shí),指定的用戶和(或)組便可以使用指定的快照程序配置。您可以使用 list 命令對其進(jìn)行測試,例如:

# thin_user:~ > snapper -c lvm_config list

基本操作的講解到此結(jié)束,下面講一下一些高級配置:

自定義設(shè)置

以上我們都是采用Snapper自帶的默認(rèn)設(shè)置/etc/snapper/config-templates/default創(chuàng)建配置文件,該默認(rèn)配置文件經(jīng)過了多方面的考慮,適合多數(shù)使用情況。用戶也可以根據(jù)自己的需要對如何創(chuàng)建自動(dòng)快照以及如何保留快照進(jìn)行自定義配置。

每個(gè)配置都包含一系列選項(xiàng),這些選項(xiàng)可以通過命令行進(jìn)行修改:

# snapper -c btrfs_config set-config "TIMELINE_CREATE=yes"
  • FSTYPE
    分區(qū)的文件系統(tǒng)類型:btrfs、lvm(ext3)、lvm(ext4)、lvm(xfs),快照類型不可更改。

  • SUBVOLUME
    分區(qū)或子卷生成快照的安裝點(diǎn)。不可更改。

  • BACKGROUND_COMPARISON
    定義在創(chuàng)建前后快照后是否要在后臺(tái)對他們進(jìn)行比較。默認(rèn)值為 “yes”。

禁用/啟用timeline快照

時(shí)間線快照默認(rèn)會(huì)啟用,可以直接修改配置文件里的TIMELINE_CREATE為yes/no,也可以通過以下命令啟停:
- 啟用

    # snapper -c btrfs_config set-config "TIMELINE_CREATE=yes"
  • 禁用

    # snapper -c btrfs_config set-config "TIMELINE_CREATE=no"
    

控制快照存檔間隔(清理規(guī)則)

快照會(huì)占用磁盤空間。為了防止磁盤空間不足進(jìn)而導(dǎo)致系統(tǒng)中斷,舊的快照會(huì)自動(dòng)刪除:

清理算法

Snapper提供有三種清理舊快照的算法。這些算法以每天計(jì)劃作業(yè)方式執(zhí)行。您可以定義要在 Snapper 配置中保留的不同類型的快照數(shù):

  • number
    當(dāng)達(dá)到某一快照計(jì)數(shù)時(shí)將刪除舊快照。

  • timeline
    將刪除超過一定時(shí)限的舊快照,但保留一定量的每小時(shí)、每天、每月和每年快照。

  • empty-pre-post
    將刪除無差異的前后快照對。

Snapper通過以下配置選項(xiàng)控制快照的清理規(guī)則:

  • TIMELINE_CLEANUP
    定義當(dāng)快照數(shù)量超出 TIMELINE_LIMIT_* 選項(xiàng)指定的數(shù)值同時(shí)快照超出 TIMELINE_MIN_AGE 中指定的時(shí)限時(shí)是否自動(dòng)刪除舊快照。有效值:yes、no,默認(rèn)值為 “yes”。

  • TIMELINE_CREATE
    如果設(shè)置為 yes,便會(huì)每小時(shí)創(chuàng)建一個(gè)快照。這是目前唯一一種可以自動(dòng)創(chuàng)建快照的方式,因此強(qiáng)烈建議將其設(shè)置為 yes。有效值:yes、no,默認(rèn)值為 “yes”。

  • TIMELINE_MIN_AGE
    定義快照在自動(dòng)刪除前必須保留的最小時(shí)限(以秒為單位)。
    默認(rèn)值為 “1800”。

  • TIMELINE_LIMIT_DAILY、TIMELINE_LIMIT_HOURLY、TIMELINE_LIMIT_MONTHLY、 TIMELINE_LIMIT_YEARLY
    按小時(shí)、天、月、年保留的快照數(shù)量。每一項(xiàng)的默認(rèn)值均為 “10”。

    TIMELINE_CLEANUP=”yes”
    TIMELINE_CREATE=”yes”
    TIMELINE_LIMIT_DAILY=”10”
    TIMELINE_LIMIT_HOURLY=”10”
    TIMELINE_LIMIT_MONTHLY=”10”
    TIMELINE_LIMIT_YEARLY=”10”
    TIMELINE_MIN_AGE=”1800”

每小時(shí):最近創(chuàng)建的十張快照。
每天:保留最近十天內(nèi)每天創(chuàng)建的首張快照。
每月:保留最近十個(gè)月內(nèi)每月的最后一天創(chuàng)建的首張快照。
每年:保留最后十年內(nèi)每年的最后一天創(chuàng)建的首張快照。

此示例配置能夠?qū)崿F(xiàn)按小時(shí)生成將自動(dòng)清理的快照。TIMELINE_MIN_AGE和 TIMELINE_LIMIT_* 始終會(huì)同時(shí)進(jìn)行評估。在本示例中,快照刪除前的最小保留時(shí)限設(shè)置為 30 分鐘(1800 秒)。因?yàn)槲覀儠?huì)每小時(shí)創(chuàng)建一次快照,所以確保了只會(huì)保留最近的快照。如果 TIMELINE_LIMIT_DAILY 設(shè)置為非零值,則表示還會(huì)保留當(dāng)天的首張快照。

  • NUMBER_CLEANUP
    定義當(dāng)快照總數(shù)超出 NUMBER_LIMIT 中指定的數(shù)值,同時(shí)快照超出 NUMBER_MIN_AGE 中指定的時(shí)限時(shí),是否自動(dòng)刪除舊的快照。有效值:yes、no,默認(rèn)值為 “yes”。

  • NUMBER_LIMIT
    在 NUMBER_CLEANUP 設(shè)置為 yes 時(shí),定義要保留的沒有標(biāo)記為重要的安裝快照對和管理快照對的數(shù)量。所保留的會(huì)是最新的那些快照。默認(rèn)值為 “50”。

  • NUMBER_LIMIT_IMPORTANT
    在 NUMBER_CLEANUP 設(shè)置為 yes 時(shí),定義要保留的標(biāo)記為重要的快照對數(shù)。所保留的會(huì)是最新的那些快照。默認(rèn)值為 “10”。

  • NUMBER_MIN_AGE
    定義快照對在自動(dòng)刪除前必須保留的最小時(shí)限(以秒為單位)。默認(rèn)值為 “1800”,即30分鐘。

注: 限制和時(shí)限
NUMBER_LIMIT、NUMBER_LIMIT_IMPORTANT 和 NUMBER_MIN_AGE 始終都會(huì)評估。只有同時(shí)符合全部條件才會(huì)刪除快照。如果想不考慮時(shí)限而始終保留一定數(shù)量的快照,則可將 NUMBER_MIN_AGE 設(shè)置為 0。另外,如果快照超過一定時(shí)限之后不想再保留,可以將 NUMBER_LIMIT 和 NUMBER_LIMIT_IMPORTANT 設(shè)置為 0。

空快照的處理

EMPTY_PRE_POST_CLEANUP
如果設(shè)置為 yes,系統(tǒng)會(huì)刪除前后快照相同的快照對。默認(rèn)值為 “yes”。

EMPTY_PRE_POST_MIN_AGE
定義前后快照相同的快照對在自動(dòng)刪除之前必須保留的最短時(shí)限(以秒為單位)。默認(rèn)值為 “1800”。

管理現(xiàn)有配置

snapper 有多個(gè)子命令可用于管理現(xiàn)有的配置。您可以列出、顯示這些配置,也可以對它們進(jìn)行刪除和修改:

列出配置

使用以下命令顯示所有現(xiàn)有的配置:

# snapper list-configs
Config       | Subvolume
-------------+----------
btrfs_config | /        
lvm_config   | /mnt/vol1

查看配置

使用 snapper -c CONFIG get-config 子命令可以顯示指定的配置。CONFIG 應(yīng)替換為執(zhí)行 snapper list-configs 命令后所顯示的某個(gè)配置名稱。請參見配置數(shù)據(jù)以了解有關(guān)配置選項(xiàng)的更多信息。

刪除配置

使用以下命令可以刪除配置。CONFIG 應(yīng)替換為執(zhí)行 snapper list-configs 命令后所顯示的某個(gè)配置名稱:

# snapper -c CONFIG delete-config

修改配置

使用以下命令可以修改指定配置中的選項(xiàng)。CONFIG 應(yīng)替換為執(zhí)行 snapper list-configs 命令后所顯示的某個(gè)配置名稱。OPTION 和 VALUE 的可能值可參見配置數(shù)據(jù):

# snapper -c CONFIG set-config OPTION=VALUE

關(guān)于數(shù)據(jù)一致性

在創(chuàng)建快照時(shí)并沒有能確保數(shù)據(jù)一致性的機(jī)制。如果在創(chuàng)建快照的同時(shí)寫入某個(gè)文件(例如數(shù)據(jù)庫),將導(dǎo)致文件損壞或?qū)懭氩煌暾??;謴?fù)此類文件會(huì)產(chǎn)生問題。而且,有些系統(tǒng)文件(例如/etc/mtab)甚至永遠(yuǎn)都無法恢復(fù)。因此==強(qiáng)烈建議==您要始終仔細(xì)查看已更改文件及其差異的列表。只恢復(fù)您要還原的操作真正包含的文件。

修改快照元數(shù)據(jù)

用戶可以使用快照程序修改說明、清理算法以及快照的用戶數(shù)據(jù),其他元數(shù)據(jù)均無法更改。

使用snapper list 查看所有快照及其編號(hào)

# snapper -c btrfs_config list 

修改 btrfs_cconfig 配置的第 10 張快照的元數(shù)據(jù),將清理算法設(shè)置為 timeline:

# snapper -c btrfs_config modify --cleanup-algorithm "timeline" 10

修改名為 btrfs_cconfig 配置的第 12 張快照的元數(shù)據(jù),設(shè)置新的說明,并取消設(shè)置清理算法:

# snapper --config btrfs_config modify --description "daily backup" -cleanup-algorithm "timeline" 120

設(shè)置過濾規(guī)則

一些文件主要用來保存系統(tǒng)信息,例如/etc/mtab,這類文件不希望被快照操作影響到,Snapper允許通過/etc/snapper/filters/*.txt 指定過濾項(xiàng),并在快照操作中忽略指定文件或文件夾的變化。
例如我們的btrfs中我們不希望快照跟蹤/var、/tmp等,可以添加到filters,這樣在以后創(chuàng)建的快照中就看到不到關(guān)于/var、/tmp的快照跟蹤了。

其他


分享文章:CentOS7中利用Snapper快照進(jìn)行系統(tǒng)備份與恢復(fù)
本文網(wǎng)址:http://www.dlmjj.cn/article/cdjgejj.html