最早接触EWF,实现c盘的覆盖保护(重启后一切复原)。当然最吸引我的是,所有对c盘的写操作都是在内存中进行。对于内存很大的机子,那就意味着上网所有网页、多媒体都是在内存中(没有硬盘碎片、内存速度>硬盘)缓冲。使用P2P技术(不停下载、不停上传的下载方式,如迅雷、电骡、所有网络电视,如: PPS、QVOD……)的软件,特别是电影一类没有保存价值的数据,从此不再伤害硬盘了(P2P以前曾称之为“硬盘终结者”,因为频繁读写操作会提前结束硬盘寿命)。所有这些数据是不写入硬盘的,也就是说你复制、删除十万次文件,对硬盘也没损伤。FBWF是微软在Windows XP Embedded FP2007及以后版本的XPE开发工具中推出的最新写保护技术。在FBWF开启的状态下,如果有写入操作,FBWF将重定向写操作到内存上的一个区域中,我们通常称之为覆盖层。覆盖层类似于原始磁盘的一个投影,对原始磁盘做的任何写操作都将映射到覆盖层中,而我们看到的最终文件内容则是原始磁盘和覆盖层的总和。当覆盖层被删除的时候,例如重新启动计算机,原始磁盘上的数据将保持不变。
FBWF和EWF技术都是以写入过滤为目的的磁盘和文件保护技术。所不同的是EWF保护的是某一个或者某几个磁盘分区,它可操作的最小单位是磁盘分区。而 FBWF保护的最小单位则是文件,也就是说我们可以设置一个磁盘分区上的某一个或者某几个文件夹可以写入,而该磁盘分区上的其他文件夹则是只读状态。在大多数情况下,FBWF由于其灵活性,是更好的选择。然而,只有EWF能够完全的支持NTFS文件格式
但是EWF有内存泄露的问题(随操作内存无法释放,最终导致内存耗尽--死机)
警告:FBWF在多台机器测试。结果有可能出现“无法读取……”,数据缓冲错误等。估计可能是bug,对内存管理依然有问题。或者是作者编译问题,网络上的都来源于同一作者。如果您的机子出现类似问题,请卸载该软件。因为EWF是基于扇区的,把写入扇区的数据写入内存。但文件系统的写入是有一定的随机性的,也就是说,两次写入的数据不一定是在同一个扇区。比较直观的就是,把一个100M的文件拷进来,那么EWF的覆盖内存就会占用掉100M。当你把这个文删掉,覆盖内存还是占用100M。当再把这个文拷一次的话,覆盖内存占用就会变成200。(晕)而基于文件的FBWF,拷进去的时候是100,删了之后就变成0了,再拷进去,还是100.
所以,选择了Linux因为其内存管理机制很好。
所有调用到内存的数据直到内存不足才开始释放,可以高效的利用内存。比如启动firefox第一次很慢,因为要从硬盘读取。可是以后再次启动firefox时,由于内存还保存有数据,直接使用,速度快得多了。(PS:微软据说没法很好的回收内存,所以程序结束,内存马上释放。再次启动软件依然慢如蜗牛。所以它的服务器卖的很不好,你想,服务器平均每小时可能同一个程序被开启关闭N次,微软的硬盘要多坚强才能应付)
微软为了弥补软件启动特慢(特别是与linux比),在vista系统中开发了内存预读表存于SD卡。我试过,除了会缩短SD卡寿命,效果不大。
今日偶然发现 FBWF,使我想提问题。为什么ubuntu没有开发 覆盖层,或者影子系统。让我们能全面保护自己的系统。
虽然linux安全机制很好,linux病毒很少。可是linux菜鸟很多,很多涉及sudo ;sudu su的操作时刻危及系统。
如我为了了解内存使用时间参数,重做了两次系统(系统莫名不稳定)。如果有保护机制,那我不仅可以随意测试系统,也可随意测试软件(有些软件好安不好卸,比如wine的附加库文件)。
对于视频缓冲、下载数据缓冲还是用内存好一点。
还好firefox可以只使用内存来上网(关闭硬盘缓冲),要不真想回xp了
ubuntu9.04已经使用上这个文件系统了。
代码:
df -h
您会看到
引用:
tmpfs 1.9G 696K 1.9G 1% /dev/shm
类似的信息,说明 /dev/shm 已经被虚拟到内存中。对这个文件夹的所有操作都是在内存中进行,换句话:对这个文件夹的所有操作将不会真实的写到硬盘中去。对于没有价值的缓冲文件(比如pps的缓冲)、下载缓冲,如果全扔到内存中去,那岂不是可以高枕无忧了。
哇哈哈!!来,跟我一起来。很简单的
引用:
介绍 tmpfs
如果我必须一下子说清楚 tmpfs,我会说 tmpfs 就象虚拟磁盘(ramdisk),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。总而言之,这让 tmpfs 成为我有机会遇到的最好的基于 RAM 的文件系统。
tmpfs 和 VM
让我们来看看 tmpfs 更有趣的一些特性吧。正如我前面提到的一样,tmpfs 既可以使用 RAM,也可以使用交换分区。刚开始这看起来可能有点武断,但请记住 tmpfs 也是我们知道的“虚拟内存文件系统”。而且,您可能也知道,Linux 内核的虚拟内存资源同时来源于您的 RAM 和交换分区。内核中的 VM 子系统将这些资源分配到系统中的其它部分,并负责在后台管理这些资源,通常是透明地将 RAM 页移动到交换分区或从交换分区到 RAM 页。
tmpfs 文件系统需要 VM 子系统的页面来存储文件。tmpfs 自己并不知道这些页面是在交换分区还是在 RAM 中;做这种决定是 VM 子系统的工作。tmpfs 文件系统所知道的就是它正在使用某种形式的虚拟内存。
不是块设备
这里是 tmpfs 文件系统另一个有趣的特性。不同于大多数“标准的”文件系统,如 ext3、ext2、XFS、JFS、ReiserFS 和其它一些系统,tmpfs 并不是存在于一个底层块设备上面。因为 tmpfs 是直接建立在 VM 之上的,您用一个简单的 mount 命令就可以创建 tmpfs 文件系统了。
代码:
mount tmpfs /mnt/tmpfs -t tmpfs
执行这个命令之后,一个新的 tmpfs 文件系统就安装在 /mnt/tmpfs,随时可以使用。注意,不需运行 mkfs.tmpfs ;事实上,那是不可能的,因为没有这样的命令存在。在 mount 命令执行之后,文件系统立即就被安装并且可以使用了,类型是 tmpfs 。这和 Linux 虚拟磁盘如何使用大相径庭;标准的 Linux 虚拟磁盘是块设备,所以在使用它们之前必须用您选择的文件系统将其格式化。相反,tmpfs 是一个文件系统。所以,您可以简单地安装它就可以使用了。
Tmpfs 的优势
动态文件系统的大小
您可能想知道我们前面在 /mnt/tmpfs 安装的 tmpfs 文件系统有多大。这个问题的答案有点意外,特别是在和基于磁盘的文件系统比较的时候。/mnt/tmpfs 最初会只有很小的空间,但随着文件的复制和创建,tmpfs 文件系统驱动程序会分配更多的 VM,并按照需求动态地增加文件系统的空间。而且,当 /mnt/tmpfs 中的文件被删除时,tmpfs 文件系统驱动程序会动态地减小文件系统并释放 VM 资源,这样做可以将 VM 返回到循环当中以供系统中其它部分按需要使用。因为 VM 是宝贵的资源,所以您一定不希望任何东西浪费超出它实际所需的 VM,tmpfs 的好处之一就在于这些都是自动处理的。 请参阅 参考资料。
速度
tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。即使用了一些交换分区,性能仍然是卓越的,当更多空闲的 VM 资源可以使用时,这部分 tmpfs 文件系统会被移动到 RAM 中去。让 VM 子系统自动地移动部分 tmpfs 文件系统到交换分区实际上对性能上是 好的,因为这样做可以让 VM 子系统为需要 RAM 的进程释放空间。这一点连同它动态调整大小的能力,比选择使用传统的 RAM 磁盘可以让操作系统有好得多的整体性能和灵活性。
没有持久性
这看起来可能不象是个积极因素,tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。我想您可能猜到了 tmpfs 被称为“tmpfs”的一个原因,不是吗?然而,这实际上可以是一件好事。它让 tmpfs 成为一个保存您不需保留的数据(如临时文件,可以在 /tmp 中找到,还有 /var 文件系统树的某些部分)的卓越的文件系统。
使用 tmpfs
为了使用 tmpfs,您所需要的就是启用了“Virtual memory file system support(以前是 shm fs)”选项的 2.4 系列内核;这个选项在内核配置选项的“File systems”部分。一旦您有了一个启用了 tmpfs 的内核,您就可以开始安装 tmpfs 文件系统了。其实,在您所有的 2.4 内核中都打开 tmpfs 选项是个好主意,不管您是否计划使用 tmpfs。这是因为您需要内核 tmpfs 支持来使用 POSIX 共享的内存。然而, System V共享的内存不需要内核中有 tmpfs 就 可以工作。注意,您 不需要为了让 POSIX 共享的内存工作而安装 tmpfs 文件系统;您只需要在内核中支持 tmpfs 就可以了。POSIX 共享的内存现在使用得不太多,但这种情况可能会随着时间而改变。
差点忘了说:在ubuntu9.04中,tmpfs的最大分配量被限制了,最大只有实际内存的1/2。这么做是为了防止内存被耗尽引起系统崩溃。所以你尽情使用吧。
使用举例:
对于PPS的缓冲你就可以这么做:
代码:
sudo mount tmpfs /tmp/pps -t tmpfs
内存想被释放,要么把pps文件夹彻底删除,要么卸载
代码:
sudo umount tmpfs /tmp/pps -t tmpfs
让p2p狂读你的缓冲文件吧,一点不伤硬盘噢!!
程序运行产生的临时文件,我觉得tmpfs天生就是为tmp目录设计的=.=| ,如果是用在服务器上更是前途无量,比如squid,网站,之类
那么可以在这些应用的临时目录挂载tmpfs系统
但是服务器级别的应用本菜一窍不通,这里面向desktop用户,说说如何加速/tmp/的读写
(tmp是个特殊的目录,用于存放临时文件。linux会周期性的清空这个文件夹,所以不能存放重要文件)
在2.4以上内核中(汗,现在ubuntu9.04发布时都2.6.28了)您可以使用这样一条命令,但不推荐:),一会再说为什么不推荐
mount tmpfs /tmp -t tmpfs
#之所以不推荐这样做,是因为mount之后/tmp会被立即替换(即:空无一物,直到卸载),如果你有程序有在/tmp中打开的文件(比如socket),会出错,而且每次都要手动挂载,多麻烦=.=
#基于以上原因,最好还是编辑/etc/fstab文件来让系统启动时帮你搞定
推荐方法如下:
sudo gedit /etc/fstab
在最后添加如下内容:
# mount tmpfs in /tmp/ (注释)
tmpfs /tmp tmpfs defaults 0 0
保存,关闭,然后在下次启动时你就用上tmpfs了:)
/tmp分区是我最常拿来解压,编译的目录(不用清理,方便),用tmpfs在这里折腾,就不用看着硬盘灯狂闪了