[转] 我对“硬盘分区”的愚见

1.我对“分区”的认识经历

十几年前,当我把只有几G的硬盘分成多个分区,且在卷标写上系统、软件、游戏、临时数据、影音文件、重要文件、备份文件等,并对数据被我归类得如此有条理而自鸣得意,现在回过头来看,我觉得当时自己是在自做聪明,现在才知道这样分区反而是会使数据容易丢失,且不便管理,又增加硬盘损耗,并浪费存储空间。

大概十年前,当我知道德国人即使是用当时算得上大的十几GB的硬盘,也不会去分区,并几乎都是只有一个分区时,我和很多人一样,都在笑德国人是不是有点笨,后来才发现笨的是我,可以说是擅长搞技术的德国人对硬盘分区的理解有其先进之处!

我过去有一段时间对品牌机不分区或只分两个区大为不解,特别对一个几十GB的C盘(Windows下操作系统占用的分区被通俗的称作“系统分区”,习惯性的指向“C盘”)而大感郁闷,总是认为是那些品牌机的生产人员偷懒而不去分区,过后来才明白,品牌机硬盘的分区和文件的生成是批量“克隆”的,即使多分几个区也不会影响到生产进度和成本,所以不是因为省事偷懒才不分区。也就是说品牌机的设计、开发人员肯定对计算机原理和市场用户行为有充分的认识和理解才这么做的,现在我对品牌机这种分区方式表示赞同与支持!

我曾经总告诉别人,文件不要放在“我的文档”里,而要放到非系统分区,应用程序不要安装在系统盘,安装到D盘去甚至是其它盘去,且对微软在Windows中把“我的文档”设计在系统分区,并用户文件都默认放在“我的文档”中很不理解,嘲讽之为失败的设计。后来我才明白,微软的系统架构师肯定比我这个普通用户对操作系统的理解深刻的多了,如此设计肯定有其充分的理由,而是当时我因为无知才不理解其中的用意,是当时我的愚笨才不理解其中所蕴含的理念。而通过计算机原理和发展历史的学习,特别是对Unix风格的操作系统(如Linux、BSD、MAC OS X等)的学习及其使用习惯的理解,我总算明白了“操作系统”、“系统内核”、“驱动程序”、“应用程序”和“用户”的关系,以及其中做为操作系统共通的或者说是普遍性的一般规律,所以我现在安装应用程序(即使是大型游戏)都是按默认目录进行安装,也就是都在与操作系统同在一个分区,且C盘分配了高达几十上百GB的空间,如果我用的是固态硬盘,那我是不打算为此而分区了。

说到分区,人们少不了说是为了方便系统的安装和恢复,因为可用其它分区来保存系统盘镜像。我曾经和很多人一样,对GHOST之类的一键还原很是推崇,以重装系统的速度、频率而自豪,后来偶然通过对微软认证培训资料,我才了解、才明白,什么叫“系统部署”,它与“系统安装”有何不同!至少从此我便这么理解,系统安装一次能正常使用得越久越才算是高手、专家(以致我大学四年帮很多电脑GHOST过无数次系统,但我自己的电脑只重装过三次,第一是电脑城装机时工作人员做的GHOST(这便是所谓“一键还原”的发展的原动力——降低装机人力投入和后期维护的成本),为的是能尽快检测硬件,我过后重装系统,第二次是为了安装新版的MSDN光盘,第三次是防毒软件卸载失败引起的系统崩溃而不得不重装!也就是说,电脑如果好好用做正常的工作娱乐,不乱捣鼓,即使几年都可以不重装系统。其实对某些服务器来说,在其几年的服役期内,不要说分区和重装系统了,就连开机和关机都只有一次,也就是说,系统部署的这个过程是可以不去涉及备份系统盘镜像的,通过分区来保存系统盘镜像不一定是必要的,如果是,相信微软早就会内置这一功能(虽然现在Windows 7已经内置多层次的备份工具)。所以,系统安装和恢复虽是分区的充分理由,但不是必要理由!

2.分区的意义、目的和理由

2.1.不同操作系统往往不可以同时装载在同一个分区,分区解决了不同操作系统装载在同一个物理硬盘的兼容性问题

这其实是分区这一概念、功能诞生的主要原因之一,因为不太可能把Windows 7和Mac OS X 10.6安装在同一个分区,当然不是指虚拟机方式下的虚拟磁盘,其实在虚拟机层面也不是同一个分区。

但是,在硬件效能已经达到一定高度时,在“虚拟化”的背景下,“分区”用来保证操作系统的独立和兼容这一最原始的作用也将很快成为过去,关注Windows的发展的人应会注意到,从Windows XP开始,直到Vista,微软推行了用户数据与设置的虚拟化,如今的Windows 7系统,不仅可利用微软的App-V把用户数据、设置和应用程序都虚拟化,而更重要的是,Windows 7已经从最底层开始支持“操作系统虚拟化”,是通过VHD虚拟磁盘来实现的,从此,多个Windows可以存于同一个硬盘“分区”且同时运行,彼此独立,互不影响,不要说企业级应用,目前已经有许多普通用户,利用VHD,做到一人一个独立的操作系统。

2.2.机械硬盘盘片外圈读写速度相对内圈要快,分区可以把常用数据限制在读写速度较快的盘片外圈

传统机械硬盘也叫温切斯特硬盘,其诞生初期与软盘一样,盘片每圈的扇区数是相同的,当盘片转动的角速度恒定的情况下,虽然盘片外圈的线速度就比内圈要快,但是盘片内圈和外圈的读写速度是一样的。后来随着容量提升,要求提高存储单元密度和提高存储介质利用率,这使得盘片内外圈每个磁道的扇区数不再一样的,在相同密度下,盘片外圈的存储单元比内圈多,恒定转速下外圈的读写速度就比内圈要快。

即对于对于机械硬盘,从测试软件给出的读写速度曲线来看,从起始位置至20%-30%位置的这段曲线,大致平行于横座标,其斜率很小且基本没有变化,说明读写速度基本稳定且保持在外圈的较高速度上,在此之后,曲线斜率才开始慢慢变大,倾斜度也越来越明显,说明读写速度开始出现明显的下降趋势,直至内圈时读写速度最小。此时的分区的目的就是为了把那部分最需要高速访问的数据限制在硬盘外圈,从而保证其始终都能以最快的速度进行读写。如果能有其它方式,如软件上的主动优化,从而保证需要快速访问的数据都集中在硬盘外圈,那就没必要分区了。

而对于固态硬盘,其原理决定了读写的速度是固定的,它的读写速度曲线从理论上来说只是一条平行于横座标、斜率为0的直线,实际上因其它因素影响读写直线会存在一定幅度的波动,但也不会出现传统机械硬盘上内外圈极为明显的速度差,所以在固态硬盘上,通过分区来优化数据读写速度这一意义完全可以忽略。

2.3.分区会减少文件系统的文件碎片,提高磁盘子系统工作效率

对于传统机械硬盘在读写数据时,存在着磁头寻道定位数据物理位置的问题,文件碎片的越多,磁头来回跳动寻道的动作就越频繁,耗时也越多,从而影响磁盘的读写速度。通过分区,确实可以限制某些数据在磁盘的分布位置以减少文件碎片,但对现在越来越好的硬件性能和越来越先进的文件系统,文件碎片也越来越不容易产生,其对性能的影响也越来越小,特别是对于即将到来的固态硬盘时代,影响更加小,因为固态硬盘虽然存在“寻道”,但时间只有机械硬盘的寻道时间的几百分之一,而且是稳定得多!

另外,一个软件的必要运行库位于磁盘外圈的系统分区,但软件主体数据却保存在磁盘内圈的其它分区,典型例子就是一些所谓“安装到其它分区”的大型软件或游戏,如果运行这个软件游戏,那么分区反而导致磁头来回大幅度跳动寻道,减慢了读写的速度。从这个角度讲,分区并不会一定会提高磁盘子系统工作效率,甚至会减慢,这也是我认为“软件装到D盘”会影响性能的理由,也就是我推荐像品牌机那样“大系统分区”且把软件装到“系统盘”的原因。

2.4.方便文件分类管理,提高磁盘空间的使用效率

文件夹不是也有相同的功能嘛,如果考虑到“库”的理念和“桌面搜索”技术,那么文件归类和管理大可不必用到硬盘分区!特别是面对多重属性和类型的文件,树状目录方式的文件夹管理方式可谓是捉襟见肘,或者说是先天不足。随着Windows 7的“库”概念的引入,文件管理将发生大的变革,而云存储时代,所有文件在逻辑上都是同一级的,访问文件是靠搜索来确定位置的。

退一步讲,即使现在的文件系统里,管理文件时,你会发现,在两个目录间移动文件,如果这两个目录是在同一个分区,无论文件多大,几乎都是瞬间完成,如果这两个目录不在同一个分区,那么,文件越大,所耗时间就越长。也就是同一个分区里面文件移动的速度要远快于不同分区间文件的移动,原因是同一个分区里移动文件,只是改变文件在文件分配表里所处目录,不用修改文件本身占用的扇区,而不同分区间移动文件,就要先把文件整体重新写入到目标分区并擦除原来的,此时,文件体积越大,占用时间越长,所以从这个角度讲,分区反而给文件移动带来不便。

相信有不少人的硬盘用了几年,有些分区并不会装满,的在划分分区时预留的空间几乎没怎么读写过,特别是为系统分区所预留的那部分空间,这不仅不能充分利用这部分预留的在空间,其它存储位置还因此而过分频繁的读写,也就是说存储介质利用次数方面分布不平均,这对机械硬盘来说问题不算太大,但对于固态硬盘这可是一个严重影响使用寿命的问题,还好现在固态硬盘都有底层的平衡分布算法。很明显,分区还不一定会提高磁盘空间的使用效率,反而是引起存储空间的浪费的原因之一。其实在服务器领域这个问题更为严峻,加上固态硬盘时代的到来,前面提到的VHD虚拟化磁盘一个重要的作用就是解决这种情况,VHD虚拟化磁盘里的操作系统并不会要求一定要保存在哪个物理存储介质哪个位置,加上VHD差分盘功能,可以多个独立的操作系统对应一个差分母盘,结果可以大量节省存储空间,也就是说,你不用为安装两个Windows 7而去各准备两个20G的分区,而只要一个VHD差分母盘,并为两个系统各生成对应的差分子盘即可,差不多可以省去原来一半的空间,而且要多少空间就用多少空间,不会再因为原来分区规划的太小了,装个软件而导致分区空间不足,存储介质无论哪里都有相同的使用概率;如果C:盘是“动态卷”,如当前硬盘不够用了,只要再接上一个新的硬盘立即用,对于VHD中的操作系统是不知道看似完整且只有一个的C:盘,其实横跨了几个物理驱动器甚至分布在几台相隔几千公里的服务器上。可见,操作系统虚拟化时代,传统概念的硬盘“分区”反而是对存储空间的束缚,是在浪费空间!

2.5.分区可提高数据的安全性,防止数据丢失

防止数据丢失的核心、关键是养成备份数据的习惯而不是靠单纯的分区这种手段(最好不要在同一个物理设备上做备份)!因为即使是上TB的分区,也会因为分区表、文件分配表等几KB数据的出错、丢失而大受影响甚至“全军覆没”(我们目前常见的链式分区表,特别扩展分区和逻辑分区这种模式,一个分区如果丢失,有可能后面全部分区跟着一起丢失),这也是有些高手推荐到只用主分区的原因!所以链式分区这种模式恰恰说明分区的个数越多,存储的数据越多,整体风险就越大。所以,随着硬盘容量越来越大,存储数据越来越多是没法避免的,这也是发展进步的必然,至于分区的个数嘛,是我们可以很好控制的,尽量减少分区的个数反而更能保证数据的安全!当然,形成数据同步和备份的使用习惯,才是保证数据安全的最好办法!推荐另备一个移动硬盘或大容量U盘闪存卡用来同步备份你的重要数据,如果网络条件好的,网盘也是数据同步和备份的不错的选择!

另外,分区防止数据丢失也存在另一理由,即“借助分区,你可以把软件游戏安装到非系统分区,这样重装系统后就不用重新安装那些软件了”,事实是这样的吗?确实,这样做某些比较“绿色”软件还是可以运行,但随着时代的发展,软件越来越与系统结合紧密,实际上这样做很多软件不仅能运行,即使免强能运行,要么丢失修复卸载功能,要么丢失版权注册信息,至少快捷方式你得重新手动建立,所以,从这一角度来说,加上前面我说到的“系统部署”理念,软件装到非系统分区不见得是件好事,分区也防止不了软件的某些关键功能、数据的丢失。

还有,相信你碰到过前面分区的空间不够用,而后面分区却可用空间一大片的这种情况,那这时很多人会使用分区魔术师这类无损动态调整分区的软件,看你分区中数据的多少,无损动态调整分区过程少则几十秒,多则十几小时甚至几天,这一过程,不说对硬盘的寿命有影响,更重要的是极易造成数据出错和丢失,可见,这是硬盘分区带来的麻烦。

3.要不要分区

3.1.根据不同的需求决定要不要分区

我的建议是,如果你不安装多操作系统,或是多个操作系统在不同物理硬盘上,或只是作日常使用的普通的用户,或者不是有点偏执心态的测试狂,或者不是对性能有极端纠结的发烧玩家……那么没必要分区!

当然,目前如果你用的是机械硬盘,即使安装多操作系统,我还是推荐你把硬盘前部30%的空间划出来做为操作系统和应用程序的使用分区,其余的空间则作为一个分区,存储与操作系统无关的数据。如果你已经在使用固态硬盘了,那其实也没多大必要分区,只要你把你的数据放在我的文档里面,且有良好的数据备份习惯就行!

3.2.既然还是要分区,那应注意下面几点

3.2.1.分区方案因需要而不同

这个是一个辩证的说法,尊重客观的需要。没有说一定或强制要这么个分法,你觉得有必要你就分区,没必要就不要去分区,例如你要做多系统布置或实验,那我推荐你还是使用多主分区或者另备一个存储器得了,一般就不要把系统安装到逻辑分区!

要知道对于现在的硬件条件下,特别是使用新一代的MAC OS X和LINUX系统时,是没有多少普通用户会去考虑分区这件事,除非服务器应用的特殊需要(通过分区对经常更改、变化大的文件进行隔离或定位以提高性能、延长存储介质寿命)或为IT管理的方便(常见于笔记本电脑的硬盘分区,在工厂层面为备份预系统而做的隐藏分区,在用户层面是不可见或不可修改的),其实分区更多的只是DOS类系统给我们造成的惯性思维!

3.2.2.“分区”的最高境界就是不分区

这个原则可谓是“无为无所不为”的道家哲学理念的具体阐述——上面已经提到,因为从文件分类管理的角度来看,分区和文件夹都具有文件归类的功能,不分区,所以每个文件夹都可以成为“分区”,且文件在同一个分区不同文件夹的移动肯定要比不同分区的移动要快,因为那只更改了文件分配表,而不用具体的去改变整个文件所占用的磁盘存储单元,节省时间的同时,更保护了存储介质,特别是对固态硬盘来说,减少擦写就是在延长寿命,正所谓不“分区”就是为了更好的“分区”。

或是从更深远的角度来说,软件和硬件的进步,使我们可以不必过多考虑硬盘分区这概念,如“库”、“卷”、“固态硬盘”、“廋客户端”之类的概念的出现,“云”时代更是如此!相信在未来,分区这个概念会被淡化甚至消失,当“分区”进化到一定程度,那就不再“分区”了。

3.2.3.即使要分区也要根据“人”与“机”这两方面去规划

各厂家其实早已经推出了3TB的硬盘,如果你电脑BIOS和操作系统支持GPT分区表,且在使用超过2TB的硬盘时,相信你已经会选择使用GPT模式的分区了!但目前硬盘主流容量还没超出2TB的情况下,大多数电脑硬盘使用的是MBR规范的分区表,传统的MBR分区表最多只能保存4个主分区,而且占用的是硬盘的0柱面0磁头1扇区中的512字节,这个扇区会受到硬件、操作系统和防毒软件的重点保护,在用户层面也是不可见的,所以不容易被改写或破坏,加上容量小,备份也更是方便快捷,如果你都是用主分区,那么只要备份好这个512字节的扇区,4个主分区的位置你就很好的备份或还原!即使某一个主分区或MBR出现问题,也只要恢复这512字节的扇区,往往能保证其它主分区不会丢失!原因在前面已经提过,就不赘述了。

4.后记

不可否认,“固态硬盘”、“虚拟化”和“云”时代背景下很多观念要重新审视,因为但凡事物都在不断变化发展;而事物本身更是有好必有坏,也应辩证对待。上面某些观点可能比较偏执,或钻牛角尖,或待商榷,错漏更难免,加上表达能力一般,文笔也不好,所以就称之为我的“愚见”吧,权当算是我经验的总结吧,难得码了之么多字,欢迎讨论和指正。