标签:
NILFS(new implementation of a log-structured file system )可以像版本控制软件一样做到对文件读写版本的控制,它可以以快照的方式保存某个时刻写在磁盘上的内容,并且可以在任意时刻回到以前的某个版本,虽然它的功能并没有版本控制软件那样强大,但是它一定程度的提升了应用程序写磁盘的效率(缩短了查找磁盘的时间),并且每一次读写都有记录,这样即使在系统宕机时也可以很快恢复系统宕机前的数据,很值得学习。
sudo modprobe nilfs2首先,我们需要做的是安装NILFS工具集,见https://github.com/nilfs-dev/nilfs-utils,该工具集包含创建NILFS文件系统的工具,查看nilfs文件系统快照等信息的工具。
sudo apt-get install nilfs-tools添加一个新的磁盘并格式化,这在vmware当中很容易做到
fdisk /dev/sdb若不在vmware环境下,可以创建一个镜像
dd if=/dev/zero of=/tmp/disk.img bs=512M count=1将准备好的磁盘格式化成NILFS文件系统
mkfs -t nilfs2 /dev/sdb1 mkfs.nilfs2 ver 2.0 Start writing file system initial data to the device Blocksize:4096 Device:/dev/sdb1 Device Size:73402366464 File system initialization succeeded !!或者
mkfs.nilfs2 /tmp/disk.img mkfs.nilfs2 ver 2.0 Start writing file system initial data to the device Blocksize:4096 Device:/tmp/disk.img Device Size:402653184 File system initialization succeeded !!有了自己的NILFS文件系统之后我们便可以使用mount将其挂载到系统当中了
mkdir /mnt/nilfs mount /dev/sdb1 /mnt/nilfs或者
losetup /dev/loop0 /tmp/disk.img mkdir /mnt/nilfs mount -t nilfs2 /dev/loop0 /mnt/nilfs/ mount.nilfs2: WARNING! - The NILFS on-disk format may change at any time. mount.nilfs2: WARNING! - Do not place critical data on a NILFS filesystem.mount的时候会自动启动nilfs_cleanerd进程,该进程为NILFS在用户层实现的垃圾回收服务进程(注:umount nilfs文件系统失败的时候大多数是由该进程占用文件系统所致)。
# lscp CNO DATE TIME MODE FLG NBLKINC ICNT 1 2015-04-21 10:41:58 cp - 11 2 # cat > a.txt hello nilfs # lscp CNO DATE TIME MODE FLG NBLKINC ICNT 1 2015-04-21 10:41:58 cp - 11 2 2 2015-04-21 10:56:42 cp - 14 3 #
lscp [options] [device]
lscp -s另外lscp命令默认输出的是NBLKINC而非BLKCNT,要达到这个目的需要使用
lscp -b其中NBLKINC和BLKCNT的区别请见lscp的帮助文档。
# echo "hello NILFS" > 1.txt # echo "hello NILFS" > 2.txt # ls 1.txt 2.txt # lscp CNO DATE TIME MODE FLG NBLKINC ICNT 1 2015-04-21 10:41:58 cp - 11 2 5 2015-04-21 11:00:15 cp - 13 2 6 2015-04-21 11:00:40 cp - 14 3 7 2015-04-21 11:06:12 cp - 14 4 8 2015-04-21 11:06:24 cp - 15 4 # mkcp -s # lscp CNO DATE TIME MODE FLG NBLKINC ICNT 1 2015-04-21 10:41:58 cp - 11 2 5 2015-04-21 11:00:15 cp - 13 2 6 2015-04-21 11:00:40 cp - 14 3 7 2015-04-21 11:06:12 cp - 14 4 8 2015-04-21 11:06:24 ss - 15 4 #其中MODE列当中cp表示检查点(checkpoint),ss表示快照(snapshot)。下面的命令会使我们回到一个快照版本
##确保当前文件系统内容与刚创建的快照内容有偏差。 # cp 2.txt 3.txt # ls 1.txt 2.txt 3.txt # lscp CNO DATE TIME MODE FLG NBLKINC ICNT 1 2015-04-21 10:41:58 cp - 11 2 5 2015-04-21 11:00:15 cp - 13 2 6 2015-04-21 11:00:40 cp - 14 3 7 2015-04-21 11:06:12 cp - 14 4 8 2015-04-21 11:06:24 ss - 15 4 10 2015-04-21 11:08:44 cp - 14 5 # mkdir /mnt/nilfs-ss8 # mount -t nilfs2 -r -o cp=8 /dev/sdb1 /mnt/nilfs-ss8 # ls /mnt/nilfs-ss8/ 1.txt 2.txt #
标签:
原文地址:http://blog.csdn.net/p569354158/article/details/45170131