日期:2014-05-17  浏览次数:20739 次

有没有把一个文件虚拟成一个驱动器,关机时把里面的文件又虚拟回一个文件?
有些安装程序个头不大,文件数量真多,有上万个!!!!为了防止在硬盘中产生更多的碎片,我需要有这样一个软件:

把硬盘上的一个文件虚拟成一个驱动器,并且能对这个盘符进行读写操作,当关机时,又能把里面的所有文件又虚拟回一个文件?这样如何做到?

------解决方案--------------------
虚拟机的磁盘文件和ghost的镜像文件就是这样的,只是需要把它那些镜像文件浏览器整合进资源管理器。
------解决方案--------------------
acronis true image也有将分区镜像虚拟为驱动器的功能,然后就可以在XP下操作镜像文件可以像操作一个分区一样,往里面添加/删除文件,也能往里面安装/卸载软件,很方便的,同样能避免产生大量磁盘碎片。
------解决方案--------------------
如果文件足够小, <768bytes,NTFS文件的MFT本身可以解决碎片问题,小文件或小目录是直接塞在一条MFT Recorder里面的(1KB大小)。

对于4KB的文件(一个簇的大小)用你猜想的方法是不能解决碎片问题的,除非打包的同时进行压缩,但这样将导致性能急剧下降,是不可取的。

如果大量文件介于1K~4K之间,可以建立小分区( <512M的分区),簇大小为512byte。

如果大量文件是极小文件( <100bytes),说明编软件的人是个笨蛋,这时不应该用一个文件记录一个条目,而应该自己维护一个数据库,或使用现成的库接口。

------解决方案--------------------
to kowloons(0分帖先锋) :
如果能映像成一个文件,从一定程序上来讲,肯定能减少碎片!
======================
这种想法只是你的想当然!
如果你用过Linux/Unix,应该知道,它们是能够直接mount一个文件作为一个挂入点的,但目的是处于备份或安全性的原因,与碎片无关。
实际上,我甚至自己编过包含类似功能的程序,调试结果表明,如果不采用压缩算法,除非插手接管操作系统的文件系统维护策略,否则无法减少碎片,前者降低效率,只适合于在内存中虚拟(内存速度大大超过硬盘),后者是个极为庞大的工程,相当于重写操作系统了。最后的方法还是建立数据库,用B-Tree维护了事。
如果只是想处理一下浏览器的临时缓冲转,方法很简单的,单独建立一个分区,大小在4G以下,将程序设置改一下,缓冲设到这个分区即可,另外,系统及用户的环境变量TEMP、TMP也可以指向这里。简而言之,把这个分区当垃圾堆使用即可。