创建Stratis快照,还原Stratis文件系统等(CentOS/RHEL 8)

时间:2020-01-09 10:37:54  来源:igfitidea点击:

在本文中,我将通过使用RHEL 8 Linux主机的示例,共享创建分层快照,还原分层文件系统,删除分层快照以及更多相关命令的步骤。

创建Stratis快照

我们可以创建Stratis快照并还原Stratis文件系统。
使用create Stratis快照,我们可以在任意时间捕获文件系统状态,并在将来还原stratis文件系统。

在Stratis中,快照是作为另一个Stratis文件系统的副本创建的常规Stratis文件系统。
快照最初包含与原始文件系统相同的文件内容,但是可以在修改快照时更改。
我们对快照所做的任何更改都不会反映在原始文件系统中。

Stratis当前的快照实现具有以下特点:

  • 文件系统的快照是另一个文件系统。

  • 快照及其来源在生存期内未链接。
    快照文件系统可以比其创建时所使用的文件系统更长寿。

  • 不必挂载文件系统即可从该文件系统创建快照。

  • 每个快照使用大约一半的实际备份存储,这是XFS日志所需的。

在创建stratis快照之前,让我们将一些虚拟数据放入stratis文件系统挂载点。

[root@node4 ~]# cd /test-fs1/

其中我将创建一个虚拟的" 1 GB"文件,以及一个包含某些内容的文本文件。

[root@node4 test-fs1]# dd if=/dev/zero of=test1G bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 4.1357 s, 260 MB/s
[root@node4 test-fs1]# echo "This is an important file." > importantfile
[root@node4 test-fs1]# ls -al
total 1048584
drwxr-xr-x   2 root root         41 Jun 17 12:11 .
dr-xr-xr-x. 20 root root       4096 Jun 17 12:06 ..
-rw-r--r--   1 root root         27 Jun 17 12:11 importantfile
-rw-r--r--   1 root root 1073741824 Jun 17 12:10 test1G

接下来,验证池的大小。
如果我们注意到文件大小为空时,"已用大小"部分现在显示的是" 2.12 GB",而不是前面显示的" 1.12 GB"。

[root@node4 test-fs1]# stratis pool
Name       Total Physical Size  Total Physical Used
my-pool                  6 GiB             2.12 GiB

同样,检查文件系统大小,因为我们的数据在此文件系统下,因此它将反映出test-fs1新的大小。

[root@node4 test-fs1]# stratis fs list
Pool Name  Name      Used      Created            Device
my-pool    test-fs1  1.53 GiB  Jun 17 2019 12:05  /dev/stratis/my-pool/test-fs1
my-pool    test-fs2  546 MiB   Jun 17 2019 12:06  /dev/stratis/my-pool/test-fs2

要创建Stratis快照,请使用:

[root@node4 test-fs1]# stratis filesystem snapshot my-pool test-fs1 test-fs1-snapshot

其中

my-pool -> The pool name in which the file system exists
test-fs1 -> The file system name for which you wish to create snapshot
test-fs1-snapshot -> The snapshot name

现在,我们的create stratis snapshot命令已成功执行,请验证可用文件系统列表。
我们将观察到,现在我们为快照提供了一个新的文件系统。

[root@node4 test-fs1]# stratis fs list
Pool Name  Name               Used      Created            Device
my-pool    test-fs1           1.53 GiB  Jun 17 2019 12:05  /dev/stratis/my-pool/test-fs1
my-pool    test-fs2           546 MiB   Jun 17 2019 12:06  /dev/stratis/my-pool/test-fs2
my-pool    test-fs1-snapshot  1.53 GiB  Jun 17 2019 12:12  /dev/stratis/my-pool/test-fs1-snapshot

访问Stratis快照的内容

创建Stratis快照后,使用此过程,我们将装载Stratis文件系统的快照以使其可用于读取和写入操作。

[root@node4 ~]# mkdir /test-fs1-snapshot
[root@node4 ~]# mount /dev/stratis/my-pool/test-fs1-snapshot /test-fs1-snapshot

接下来,使用已挂载文件系统的列表验证df输出。
如我们所见,我们的stratis快照文件系统已成功安装在/test-fs1-snapshot上。

[root@node4 ~]# df -h
Filesystem                                                                                       Size  Used Avail Use% Mounted on
devtmpfs                                                                                         1.9G     0  1.9G   0% /dev
tmpfs                                                                                            1.9G     0  1.9G   0% /dev/shm
tmpfs                                                                                            1.9G  8.5M  1.9G   1% /run
tmpfs                                                                                            1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/rhel-root                                                                            6.4G  1.4G  4.8G  23% /
/dev/sda1                                                                                        488M  124M  329M  28% /boot
tmpfs                                                                                            379M     0  379M   0% /run/user/0
/dev/mapper/stratis-1-a35d85c5802c49b59bb8c81104d43bb4-thin-fs-a4df0ba34ecf427296fed4bc8c4e7570  1.0T  8.2G 1016G   1% /test-fs1
/dev/mapper/stratis-1-a35d85c5802c49b59bb8c81104d43bb4-thin-fs-0f6d34239dcb4955803a1054c3a65972  1.0T  7.2G 1017G   1% /test-fs2
/dev/mapper/stratis-1-a35d85c5802c49b59bb8c81104d43bb4-thin-fs-4e39ac444ca343da9968a4b68999ecc0  1.0T  8.2G 1016G   1% /test-fs1-snapshot

接下来验证" test-fs1-snapshot"的内容

[root@node4 ~]# cd /test-fs1-snapshot

不出所料,由于在创建快照时我们有两个文件,因此该快照中也存在两个文件。

[root@node4 test-fs1-snapshot]# ls -al
total 1048584
drwxr-xr-x   2 root root         41 Jun 17 12:11 .
dr-xr-xr-x. 21 root root       4096 Jun 17 12:12 ..
-rw-r--r--   1 root root         27 Jun 17 12:11 importantfile
-rw-r--r--   1 root root 1073741824 Jun 17 12:10 test1G

验证文件内容

[root@node4 test-fs1-snapshot]# cat importantfile
This is an important file.

将Stratis文件系统还原到以前的快照

此过程将Stratis文件系统还原或者恢复到Stratis快照中捕获的状态。
让我们删除" test-fs1"文件系统下的文件之一,以确保使用快照还原的还原策略文件系统正在运行:

[root@node4 test-fs1]# rm importantfile
rm: remove regular file 'importantfile'? y
[root@node4 test-fs1]# ls -al
total 1048580
drwxr-xr-x   2 root root         20 Jun 17 12:13 .
dr-xr-xr-x. 21 root root       4096 Jun 17 12:12 ..
-rw-r--r--   1 root root 1073741824 Jun 17 12:10 test1G

接下来卸载test-fs1文件系统,因为在尝试使用快照还原stratis文件系统之前,文件系统必须处于未装载状态:

[root@node4 test-fs1]# cd
[root@node4 ~]# umount /test-fs1

删除原始的Stratis文件系统

[root@node4 ~]# stratis filesystem destroy my-pool test-fs1

在原始文件系统的名称下创建快照的副本:

[root@node4 ~]# stratis filesystem snapshot my-pool test-fs1-snapshot test-fs1

验证可用文件系统列表

[root@node4 ~]# stratis fs list
Pool Name  Name               Used      Created            Device
my-pool    test-fs2           546 MiB   Jun 17 2019 12:06  /dev/stratis/my-pool/test-fs2
my-pool    test-fs1-snapshot  1.53 GiB  Jun 17 2019 12:12  /dev/stratis/my-pool/test-fs1-snapshot
my-pool    test-fs1           1.53 GiB  Jun 17 2019 12:14  /dev/stratis/my-pool/test-fs1

装入快照,现在可以使用与原始文件系统相同的名称访问快照:

[root@node4 ~]# mount /dev/stratis/my-pool/test-fs1 /test-fs1

现在,名为" test-fs1"的文件系统的内容与快照" test-fs1-snapshot"相同。

[root@node4 ~]# ls -al /test-fs1
total 1048584
drwxr-xr-x   2 root root         41 Jun 17 12:11 .
dr-xr-xr-x. 21 root root       4096 Jun 17 12:12 ..
-rw-r--r--   1 root root         27 Jun 17 12:11 importantfile
-rw-r--r--   1 root root 1073741824 Jun 17 12:10 test1G

删除Stratis快照

此过程从池中删除Stratis快照。
快照上的数据将丢失。
卸载快照文件系统(如果已安装):

[root@node4 ~]# umount /test-fs1-snapshot

销毁快照:

[root@node4 ~]# stratis filesystem destroy my-pool test-fs1-snapshot

验证可用的文件系统:

[root@node4 ~]# stratis fs list
Pool Name  Name      Used      Created            Device
my-pool    test-fs2  546 MiB   Jun 17 2019 12:06  /dev/stratis/my-pool/test-fs2
my-pool    test-fs1  1.53 GiB  Jun 17 2019 12:14  /dev/stratis/my-pool/test-fs1

删除Stratis文件系统

此过程将删除现有的Stratis文件系统。
存储在其上的数据将丢失。

卸载要删除的文件系统(如果处于挂载状态),并从/etc/fstab中清除与相应文件系统相关的所有内容,以使内核不会在引导阶段尝试挂载不可用的文件系统:

[root@node4 ~]# umount /test-fs2/

销毁文件系统:

[root@node4 ~]# stratis filesystem destroy my-pool test-fs2

验证系统上可用文件系统,池和阻止设备的列表:

[root@node4 ~]# stratis filesystem list my-pool
Pool Name  Name      Used      Created            Device
my-pool    test-fs1  1.53 GiB  Jun 17 2019 12:14  /dev/stratis/my-pool/test-fs1
[root@node4 ~]# stratis pool list
Name       Total Physical Size  Total Physical Used
my-pool                  6 GiB             1.59 GiB
[root@node4 ~]# stratis blockdev list
Pool Name  Device Node    Physical Size       State  Tier
my-pool    /dev/sdb               2 GiB      In-use  Data
my-pool    /dev/sdc               2 GiB      In-use  Data
my-pool    /dev/sdd               2 GiB  Not-in-use  Data

删除Stratis池

此过程将删除现有的Stratis池。
存储在其上的数据将丢失。

列出要删除的各个池的可用文件系统部分

[root@node4 ~]# stratis filesystem list my-pool
Pool Name  Name      Used      Created            Device
my-pool    test-fs1  1.53 GiB  Jun 17 2019 12:14  /dev/stratis/my-pool/test-fs1

接下来卸载要删除的文件系统(如果处于挂载状态),并从/etc/fstab清除与相应文件系统相关的所有内容,以使内核不会在引导阶段尝试挂载不可用的文件系统:

[root@node4 ~]# umount /test-fs1

销毁文件系统:

[root@node4 ~]# stratis filesystem destroy my-pool test-fs1

验证my-pool中的可用文件系统列表

[root@node4 ~]# stratis filesystem list my-pool
Pool Name  Name  Used  Created  Device

接下来销毁各自的水池

[root@node4 ~]# stratis pool destroy my-pool

验证可用策略池列表

[root@node4 ~]# stratis pool list
Name    Total Physical Size  Total Physical Used