从 NILFS2 看 Log-Structure 文件系统(2)
 
- UID
- 1066743
|

从 NILFS2 看 Log-Structure 文件系统(2)
NILFS2 的使用从 2.6.30 开始,NILFS2 已经合并入内核。假如您希望在较老的内核下尝试 NILFS2 也非常简单。NILFS2 是一个内核模块,您只需编译后加载模块文件就可以使用它了,无需对内核进行 patch 和重新编译。可以使用下面的命令创建一个 NILFS2 文件系统。
1
2
3
| insmod nilfs2.ko
mkfs – t nilfs2 /dev/sda8
mount – t nilfs2 /nilfs /dev/sda8
|
NILFS2 的命令很精简,我不想浪费读者的阅读时间,您可以查阅 NILFS2 源码自带的 README 文件,写得很好。
但我在想,您或许还从来不曾见过一个能够不间断地生成快照的文件系统吧,没准儿还不知道这个特性到底意味着什么。因此我还是打算做一个演示,也许能加深您对所谓 continuously snapshot 的印象。
将下面的内容输入文件 /nilfs/poem:
1
2
3
| Shoot for the moon.
Even if you miss,
You'll land among the stars.
|
然后我犯了一次错误,将 nilfs 目录删除了。突然想起有重要的东西保存在那里,于是觉得很后悔。如何弥补呢?假如是 EXT2,或者 btrfs,基本上无计可施。但对于 NILFS2,这就不算什么大事儿。
1
2
3
4
5
6
7
8
| [root@localhost nilfs]# lscp
CNO DATE TIME MODE FLG NBLKINC ICNT
1 2009-09-27 12:27:13 cp - 11 3
2 2009-09-27 12:28:16 cp - 14 4
3 2009-09-27 12:28:31 cp - 14 5
4 2009-09-27 12:28:36 cp - 12 5
5 2009-09-27 12:28:41 cp - 14 3
[root@localhost nilfs]# chcp ss 3
|
假设我在 12:28:31 左右保存了 poem 文件,然后在 12:28:41 删除了该文件。则需将 12 点 28 分 31 秒的 checkpoint 变成 snapshot,然后 mount 该 snapshot:
1
2
3
4
5
6
| #mount – t nilfs2 – r – o cp=2 /dev/sda8 /recover
#cd /recover
#cat nilfs/test1
Shoot for the moon.
Even if you miss,
You ’ ll land among the stars.
|
文件 poem 又恢复了。 |
|
|
|
|
|