NILFS文件系统使用入门
来源:互联网 发布:kali sql注入检测工具 编辑:程序博客网 时间:2024/06/05 07:03
NILFS(New Implementation of a Log-structured File System )可以像版本控制软件一样做到对文件读写版本的控制,它可以以快照的方式保存某个时刻写在磁盘上的内容,并且可以在任意时刻回到以前的某个版本,虽然它的功能并没有版本控制软件那样强大,但它为那些需要在过去与现在穿梭的应用提供了一条便捷通道,另外NILFS一定程度上提升了应用程序写磁盘的效率(缩短了查找磁盘的时间),特别在SSD环境当中,真的很值得学习。
创建NILFS文件系统
NILFS 在 linux2.6.30发布时被合并入内核主线,这也意味着自2.6.30以后的每个版本 你都无需自己编译该文件系统,我们需要的仅仅是安装nilfs-tools,下面的测试在 Ubuntu 14.04.2 LTS上进行。
首先需要将NILFS加载到内核当中,Ubuntu在开机启动时会自动加载,当然你也可以手动加载
sudo modprobe nilfs2
首先,我们需要做的是安装NILFS工具集,该工具集包含创建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/sdb1mkfs.nilfs2 ver 2.0Start writing file system initial data to the device Blocksize:4096 Device:/dev/sdb1 Device Size:73402366464File system initialization succeeded !!
对于手动创建的镜像需要这样做
mkfs.nilfs2 /tmp/disk.imgmkfs.nilfs2 ver 2.0Start writing file system initial data to the device Blocksize:4096 Device:/tmp/disk.img Device Size:402653184File system initialization succeeded !!
有了自己的NILFS文件系统之后我们便可以使用mount将其挂载到系统当中了
mkdir /mnt/nilfsmount /dev/sdb1 /mnt/nilfs
对于手动创建的镜像需要这样做
losetup /dev/loop0 /tmp/disk.imgmkdir /mnt/nilfsmount -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文件系统失败的时候大多数是由该进程占用文件系统所致)。
现在可以向正常使用POSIX文件系统一样操作nilfs系统了,如使用open,write,read系统调用。可以使用lscp命令查看一下当前的检查点信息:
# lscp CNO DATE TIME MODE FLG NBLKINC ICNT 1 2015-04-21 10:41:58 cp - 11 2# cat > a.txthello 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命令的基本使用
lscp命令可以查看NILFS文件系统的检查点和快照,其中cp意为checkpoint。其基本格式为:
lscp [options] [device]
当device参数未指定时,lscp命令会从/proc/mounts当中查找可用的nilfs文件系统(注:当存在多个nilfs文件系统时未有文档定义)。
当向NILFS文件系统内写入任何信息时便产生一个检查点,该检查点包含NILFS文件系统的连续状态信息,如block占用信息。快照是特殊的检查点,当一个检查点使用mkcp命令标记为快照的时候便产生一个快照,快照不会被垃圾回收。lscp 命令默认输出的是所有检查点(包括快照)的信息,当想要只查看快照信息的时候可以使用。
lscp -s
另外lscp命令默认输出的是NBLKINC而非BLKCNT,要达到这个目的需要使用
lscp -b
其中NBLKINC和BLKCNT的区别请见lscp的帮助文档。
使用快照
创建一个快照
# echo "hello NILFS" > 1.txt# echo "hello NILFS" > 2.txt# ls1.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# ls1.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#
mount命令当中的-r表明文件系统为只读的,cp选项指定要挂载的检查点的序号,该序号指定的检查点必须为一个序号,如上面创建的快照序号为8,这里就使用8,若使用非快照的序号,则会报参数不正确错误。
到这里我们已经发现NILFS很方便的记录了我们的文件日志,这真是一个不错的功能。
本文地址
- CSDN博客
- GitHub Markdown
- NILFS文件系统使用入门
- 下一代 Linux 文件系统:NiLFS(2) 和 exofs
- Btrfs and NILFS
- inotify之文件系统事件监控使用入门
- 使用文件系统
- Solaris文件系统入门
- Ceph文件系统入门学习
- linux 文件系统入门简介
- FAT32文件系统快速入门
- FASTDFS 分布式文件系统 入门
- Node入门--文件系统读写
- 网络文件系统nfs文件系统使用
- 网络文件系统nfs文件系统使用
- proc文件系统实验---入门经典
- Linux入门基础 #4:文件系统
- Linux入门基础 #4:文件系统
- ROS入门2: ROS文件系统
- 分布式文件系统FastDFS快速入门
- SPAMS稀疏建模工具箱
- netty简介 demo
- c++ 判断字符串只包含字母、数字、汉字
- 常用免费的WebService列表
- jquery选择器 之 获取父级元素、同级元素、子元素
- NILFS文件系统使用入门
- iOS开发系列--地图与定位
- python 利用Raw Socket进行以太网帧嗅探
- Cocos2dX简单的读取XML文件+可显示中文
- RedHat 6 桌面安装
- VC环境下(非QT环境)使用Qt的配置方法
- Android工程导入中文乱码
- PowerDesigner连接mysql建立逆向工程
- 览器判断是否安装了ios/android客户端程序