创建Stratis快照,还原Stratis文件系统等(CentOS/RHEL 8)
在本文中,我将通过使用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