郭窦盼
http://gdp.cublog.cn
转载请注明出处。
OpenSolaris使用了一种全新的文件系统zfs,zfs文件系统可以创建快照,对当前文件系统的状态进行记录,从创建快照的时间起,对文件系统中的内容进行的修改将完全被记录,如删除了一个文件,会在snapshot中保存该文件的一个备份,以备rollback时用。具体操作如下:
1.查看一下当前有哪些文件系统和snapshot:
dguo@opensolaris:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 2.62G 4.70G 55K /rpool
rpool@install 16K - 55K -
rpool/ROOT 2.46G 4.70G 18K /rpool/ROOT
rpool/ROOT@install 15K - 18K -
rpool/ROOT/opensolaris 2.46G 4.70G 2.40G legacy
rpool/ROOT/opensolaris@install 61.6M - 2.22G -
rpool/ROOT/opensolaris/opt 3.64M 4.70G 3.60M /opt
rpool/ROOT/opensolaris/opt@install 31K - 3.60M -
rpool/export 162M 4.70G 19K /export
rpool/export@install 15K - 19K -
rpool/export/home 162M 4.70G 162M /export/home
rpool/export/home@install 19K - 21K -
由于我没有手动创建过文件系统和pool,所以只有一个pool:rpool,在rpool中,系统自动创建了一些文件系统,并创建了相应的snapshot,如rpool/export/home@install,意思是在rpool中创建了一个export/home的文件系统,zfs文件系统的特点是创建之后会自动mount,@install的意思是给该文件系统创建了一个snapshot,下面,我们来看一下如何创建自己的snapshot:
2.创建一个snapshot:
dguo@opensolaris:~# ls
core Desktop test zfs_note
将文件系统rpool/export/home创建了一个snapshot,名为july11。
dguo@opensolaris:~# zfs snapshot -r rpool/export/home@july11
dguo@opensolaris:~# ls
core Desktop test zfs_note
将export/home文件夹下的test目录和zfs_note文件删除
dguo@opensolaris:~# rm -r test/ zfs_note
可以看见相应文件已经没有了。
dguo@opensolaris:~# ls
core Desktop
3.从一个snapshot中恢复:
dguo@opensolaris:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 2.62G 4.70G 55K /rpool
……………………………………………………
rpool/export/home@july11 134K - 162M -
可以看出现在多了一个134K的rpool/export/home@july11,该项在删除操作之前的大小为0K,
从该snapshot中恢复:
dguo@opensolaris:~# zfs rollback -r rpool/export/home@july11
可以看出删除的文件都回来了。
dguo@opensolaris:~# ls -l
total 145011
-rw------- 1 dguo staff 148260388 2008-08-06 14:21 core
drwxr-xr-x 2 dguo staff 4 2008-08-09 15:57 Desktop
drwxr-xr-x 2 root root 5 2008-08-01 16:51 test
-rw-r--r-- 1 dguo staff 160 2008-08-11 14:49 zfs_note
4。如果对一个文件系统创建多个snapshot,则恢复到较前的snapshot时,较后的snapshot会丢失,如:
dguo@opensolaris:~# zfs snapshot -r rpool/export/home@july12
dguo@opensolaris:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 2.62G 4.70G 55K /
……………………………………………………………………………………………………………
rpool/export/home@july11 92.5K - 162M -
rpool/export/home@july12 0 - 162M -
dguo@opensolaris:~# zfs rollback -r rpool/export/home@july11
dguo@opensolaris:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 2.62G 4.70G 55K /rpool
………………………………………………………………………………………………………
rpool/export/home@july11 0 - 162M -
结论:zfs号称是一个全新的文件系统,与以往的所有文件系统都不同,没有了卷(volume)的概念,所有物理的磁盘组成一个pool,采用类似内存管理中malloc和free的方法来分配空间,文件系统的大小不必是固定的,而是可以动态增长的。这样可以方便的增加物理磁盘,在服务器上还是很有用的。而snapshot给普通用户也提供了一个方便的备份系统的工具,看来还真是有些用处的。
阅读(2243) | 评论(0) | 转发(0) |