您的位置:程序门 -> windows专区 -> windows nt/2000/xp/2003



有没有把一个文件虚拟成一个驱动器,关机时把里面的文件又虚拟回一个文件?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


有没有把一个文件虚拟成一个驱动器,关机时把里面的文件又虚拟回一个文件?[已结贴,结贴人:kowloons]
发表于:2007-04-13 16:09:13 楼主
有些安装程序个头不大,文件数量真多,有上万个!!!!为了防止在硬盘中产生更多的碎片,我需要有这样一个软件:

把硬盘上的一个文件虚拟成一个驱动器,并且能对这个盘符进行读写操作,当关机时,又能把里面的所有文件又虚拟回一个文件?这样如何做到?
发表于:2007-04-13 16:27:471楼 得分:0
想法很有创意
帮顶
发表于:2007-04-13 19:11:102楼 得分:0
vsubst可把文件夹虚拟为驱动器,你可以试试。
发表于:2007-04-13 19:49:023楼 得分:0
楼上的兄弟,subst完全违背我的题意!
发表于:2007-04-13 22:03:154楼 得分:5
虚拟机的磁盘文件和ghost的镜像文件就是这样的,只是需要把它那些镜像文件浏览器整合进资源管理器。
发表于:2007-04-13 22:58:415楼 得分:5
acronis   true   image也有将分区镜像虚拟为驱动器的功能,然后就可以在xp下操作镜像文件可以像操作一个分区一样,往里面添加/删除文件,也能往里面安装/卸载软件,很方便的,同样能避免产生大量磁盘碎片。
发表于:2007-04-13 23:07:376楼 得分:5
如果文件足够小, <768bytes,ntfs文件的mft本身可以解决碎片问题,小文件或小目录是直接塞在一条mft   recorder里面的(1kb大小)。

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

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

如果大量文件是极小文件( <100bytes),说明编软件的人是个笨蛋,这时不应该用一个文件记录一个条目,而应该自己维护一个数据库,或使用现成的库接口。
发表于:2007-04-14 08:25:307楼 得分:0
你把它做成一个光盘不就行了,再用虚拟光驱运行。它就成了一个文件了。
像金山虚拟光驱就能办到
发表于:2007-04-14 12:18:088楼 得分:0
首先排除的是“虚拟光驱”,它只能读取文件,不能直接对文件进行更改和写入!

to:gernal_dn()  
如果能映像成一个文件,从一定程序上来讲,肯定能减少碎片!我现在就是想把浏览器的临时缓冲转移到这个虚拟的分区,因为它有太多的碎文件,而ramdisk也有这个功能,不过它重新启动后,会全部消失,也不符合我的要求,我在华军上看到这个:

winmount   1.4.1   简体中文版
http://www.newhua.com/soft/55438.htm

看看它最下面的新版预告,我要的就是这个功能   ^-^
发表于:2007-04-14 12:20:019楼 得分:0
新功能预告:我们已经完成一个新功能,即日即可加入软件中。    
你可以创建一个img文件,把它mount为一个盘。一个选项是,你可以设定这个盘有多
大,那么它就是一个未格式化过的盘。   如果默认,就是一个格式化好的2gb的空盘。然后,你往mount出来的虚拟盘里写的任何东西,都将后台被写到img文件中,   下次mount时会体现这个更新。   还有一个选项,就是mount这个img时,设定nowriteback=true,则新mount出来的盘符是可写的,   但所有写入的内容,都不会被写回img文件。下次mount时,还是原来的内容。   你应该可以想象这个功能有什么用。   当我们安装好一个软件后,一般并不需要再修改它目录下的任何东西。用这个方式,可永保它安全,无毒。   因为windows并没有很好的安全机制,你并不能设定任何病毒都不要改我这个目录下的东西。我们的这个功能,   实际上是加强了windows的安全性。  
发表于:2007-04-14 12:24:5910楼 得分:0
to:   i770880()   (   )   信誉:100         blog       加为好友     2007-4-13   22:03:16     得分:   0    
   
虚拟机的磁盘文件和ghost的镜像文件就是这样的,只是需要把它那些镜像文件浏览器整合进资源管理器。

--------------------------------------
我想起来vmware是有这个一个软件,现在它是最符合我的要求了!

g:\vm> vmware-mount   /?
vmware-mount   [driveletter:]   [path-to-virtual-disk]   [options]
vmware   diskmount   utility   version   3.1.0   build-9089
copyright   (c)   1998-2003   vmware,   inc.   all   rights   reserved.

this   utility   mounts   vmware   virtual   disks   under   microsoft   windows.
use   "vmware-mount "   without   arguments   to   list   the   currently-mounted   volumes.
   
 
发表于:2007-04-14 21:48:1911楼 得分:5
to   kowloons(0分帖先锋)   :
如果能映像成一个文件,从一定程序上来讲,肯定能减少碎片!
======================
这种想法只是你的想当然!
如果你用过linux/unix,应该知道,它们是能够直接mount一个文件作为一个挂入点的,但目的是处于备份或安全性的原因,与碎片无关。
实际上,我甚至自己编过包含类似功能的程序,调试结果表明,如果不采用压缩算法,除非插手接管操作系统的文件系统维护策略,否则无法减少碎片,前者降低效率,只适合于在内存中虚拟(内存速度大大超过硬盘),后者是个极为庞大的工程,相当于重写操作系统了。最后的方法还是建立数据库,用b-tree维护了事。
如果只是想处理一下浏览器的临时缓冲转,方法很简单的,单独建立一个分区,大小在4g以下,将程序设置改一下,缓冲设到这个分区即可,另外,系统及用户的环境变量temp、tmp也可以指向这里。简而言之,把这个分区当垃圾堆使用即可。
发表于:2007-04-15 12:06:5712楼 得分:0
除非插手接管操作系统的文件系统维护策略,否则无法减少碎片
---------------------
这个我倒没仔细研究过,越说越深奥了!那你的意思就是说:一些mount单个文件为分区的软件,它只是在硬盘划一个区块,如2g分配给这个文件,当在这个虚拟分区上安装相当多的小文件,仍旧会产生很多碎片,文件的指针头应该是记录在硬盘的mft中,而是   保存在那个虚拟的单个文件中了吧?
发表于:2007-04-16 09:21:4913楼 得分:0
有个软件叫虚拟硬盘的!可试下


快速检索

热门点击