计划磁盘检查开启检查磁盘卡在这里不动是什么原因?

Intel又一脑残设计?主流图形化BIOS一览
来源:pconline 原创&
作者:Valest&
责任编辑:liganlin&
1说说历史和技术:BIOS是什么&  前言:对于、等大部分DIY硬件来说,性能就是一切,架构好、频率高的产品,就会是好产品。而对于来说则不是如此,实质上不搞超频的话,不同厂商的同型号主板是很难表现出明显的差距的,主板更多的是硬件和软件的结合体,只有好硬件没有好软件的主板很难说是成功的产品。  那么主板的&软件&指的是什么呢?像华硕 AI Suite II之类Windows下运行的软件固然是一类,但是更普遍的、更基础的还有一类,那就是BIOS.主板BIOS发展至今已经有30多年历史,很长时间都没有什么大变化,然而近年以来硬件发展的水平越来越高,电脑用户的层次也越来越广,老旧的传统的BIOS因性能低下、不能支持新的大容量硬盘、操作界面不友好而渐渐被市场所抛弃,到今年,一线三大主板厂商终于都换上了新型的图形化BIOS界面。  有的人称这为进化,但是Linux的作者则称这为&Intel又一脑残设计&,围绕传统BIOS和新型的图形化BIOS,我们为大家带来了这篇文章,让大家了解了解BIOS这&最熟悉的陌生人&,同时也带大家看看现在主流的图形化BIOS都是什么外观,有什么功能,事不宜迟,下面我们转入正题。BIOS是什么:双BIOS芯片  BIOS是英文&Basic Input Output System&的缩略语,中文直译即&基本输入输出系统&。硬件上来讲,它是一组固化到PC主板上ROM芯片,容量并不比一个2.5寸软盘大,软件上来说,它保存着系统设置信息,为计算机提供最底层的、最直接的硬件设置和控制,并且引导系统从外存设备(硬盘、等)启动。86之前的都是8/16位处理器  BIOS的历史可以追溯到1979年,在开始时是设计给80x86架构的IBM兼容机使用的,当时的硬件规格在现在看来简直不值一提,处理器是16位的,内存有1MB都可以说&海量&,外存上5M就是神器(当时没有硬盘)&&因此,我们完全能理解,为什么BIOS操作界面看起来那么原始和&晦涩&,毕竟它们是设置给当时那种落后的硬件使用的。  在BIOS诞生后几年,DOS操作系统诞生并流行起来,其很多功能(服务)都依赖于BIOS,因此BIOS当时还是PC相当重要的一个部分。到后来,Windows操作系统出现,操作系统功能渐渐独立化,不再完全依赖于BIOS提供,尤其是1998年CIH病毒肆虐PC平台之后,更多人意识到依赖于BIOS的实模式系统的危险性,于是到NT内核时代,Windows操作系统就变成了保护模式,BIOS和操作系统大部分功能无关,因此,BIOS的角色就不像以前那么重要了。传统BIOS能提供什么功能:开核也是BIOS一项功能  那么对于大部分用户来说,BIOS到底能实现什么功能呢?我们引用Linux系统内核的编写者Linus的话,BIOS的功能就是&just load the OS and get the hell out of there&(加载系统然后闪一边去),看起来简单得过分,不过对于大部分不超频、不折腾的用户来说,BIOS的确就是这么简单。而对于超频玩家等稍微小众一点的用户来说,BIOS还能提供系统参数设置、硬件扩展、硬件参数设置等功能。  和BIOS相关的还有两个理念,Option ROM(选项ROM)和EC BIOS ROM(嵌入式控制器BIOS),功能上来说他们其实都是BIOS。前者在SATA控制器、SCSI扩展卡、RAID卡等扩展设备上非常常见,主要是因为主板BIOS ROM空间、功能有限而设计到了扩展设备上;后者则主要出现在上,我们这里不作细说。2传统的BIOS有什么局限传统BIOS有什么局限:老旧的传统BIOS其实问题一堆  BIOS从1979年诞生用到现在,都从16位升级到了64位,BIOS还撑了足足有30多年不变,这在日新月异的IT产业看来简直不可思议。其实从2000年开始,就开始计划用EFI(Exteble Firmware Interface,可扩展固件接口)取代传统的BIOS,下面我们就来说说,BIOS到底有什么缺陷,让Intel终于不得不换掉它:1、界面不够人性化  这个用户最感同身受了,不用多说,传统BIOS界面以英文文字界面为主,颜色搭配很突兀,不能用操作,实在让习惯于操作图形化界面的用户望而生畏。2、低能的16位模式  现在的处理器已经到了64位的时代,32位都已经是过去式了,而传统的BIOS采用的还只是16位模式,&兼容性&是很好,但是寻址能力低下,只有1MB寻址空间,一次只能读取64KB磁盘,不能支持3TB大,效能表现很差。3、扩展优化较差  现在的配备的东西越来越多,高端主板尤甚,而不少高端主板用户可能都会发现,高端主板启动起来比普通主板要慢,这其实主要就是因为BIOS缺乏对大数量外围设备优化,初始化起来很低效,因此影响了系统的启动速度。4、扩展能力有限  接上,传统BIOS要添加较复杂的硬件,就需要把&驱动(Option ROM)&加载到一段地址固定,长度仅128KB的内存空间,如果用户曾经使用过RAID卡,可能都会有体验:有些主板插了RAID卡会开不了机,出现& Option ROM空间用尽&之类提示,原因就是128KB的驱动空间已经用尽,BIOS没有足够寻址空间来初始化RAID卡。5、使用晦涩的汇编语言  有多少人不看书能马上告诉我JNC、JO和JMP的区别?我相信大部分用户,包括相当一部分Java/C++程序员,还云里雾里。这就是汇编语言,而BIOS正是使用这样晦涩的汇编语言编写的,在这面向对象语言满天飞的年代,汇编已经成为非主流,找到能写出优质BIOS的高手很难,设计维护BIOS的门槛较高。6、糟糕的安全性  BIOS有问题,系统就会无法启动,然而它却只有简单的密码保护,而且密码可以轻松清除,无法用软件或远程方式监控其安全,安全措施形同虚设。3Win8的好搭档:UEFI是什么UEFI是什么? UEFI BIOS是典型  为了解决传统BIOS的问题,在2000年推出了IA64(64位)用的EFI(可扩展固件接口)标准,作为新一代BIOS的规范,而支持EFI规范的BIOS也被称为EFI BIOS。之后为了推广EFI,业界多家著名公司共同成立了统一可扩展固件接口(UEFI Forum),以制订新的国际标准UEFI规范,因此而来的BIOS就是UEFI BIOS.Windows和UEFI结合后有什么好处:  以上都是比较技术范畴的分析和解释,说了那么多理论的,我们有没有更简单、更的视角看UEFI呢?答案当然是有的,下面我们看看Windows和UEFI结合后有什么好处!下一代Win8会更好地利用UEFI的优势1、UEFI提供更大的磁盘容量  传统MBR分区最大只能支持2.2TB的硬盘和4个主分区,而UEFI规范之一,GPT分区格式,则可以支持过百TB大小的硬盘和100个主分区,对于使用Win7的用户来说尤其有用。而另一方面,在华硕、和等厂商的努力下,32位系统 + 传统MBR分区也能通过&虚拟磁盘&之类形式使用2TB以上的硬盘,但是那当然不如UEFI+GPT的原生支持省力省心。2、UEFI提供更高的效能  传统BIOS专为传统的16位处理器定制,寻址能力低下,效能表现很差;而UEFI可以适用于任何64位处理器,寻址能力强很多,效能表现优秀&&说白了就是加载更多硬件的同时更快地启动到Windows。3、64位新系统有优势  从Windows Vista SP1和Windows Server 2003开始,只要是64位的系统都能提供UEFI启动支持,而XP系统、32位新系统,则只能通过UEFI的兼容模组实现开机。4、更方便的批量安装  配备UEFI的可以通过网络进行&广播式&安装,1个镜像广播给多台机一起安装操作系统,对企业用户来说尤其方便。5、更快的开机、休眠恢复  传统BIOS使用Int 13中断读取磁盘,每次只能读64KB,非常低效,而UEFI每次可以读1MB,载入更快。此外,微软的下一代操作系统Win8,更是进一步优化了UEFI支持,据称可以实现瞬时开机。6、更安全的启动  之前有传言成,Win8利用UEFI限制Linux等系统的生存,实质上这项设计是为了防止用户运行未经授权的代码,保证更好的安全性,用户如果觉得不需要,可以选择关掉这项功能。4技术分析:好处很多,但也脑残UEFI相对BIOS有何技术优势:再强的,到了传统BIOS都是战斗力为5的16位渣渣1、更强大、更具弹性的32/64位模式  UEFI BIOS通过载入EFI Driver进行硬件的识别/控制和系统资源调控,比传统BIOS有更多、更灵活的寻址空间,轻松加载RAID卡之类扩展设备的Option ROM,不会出现Option ROM空间不足这样纠结的问题。2、灵活的扩展能力  UEFI通过加载驱程来实现硬件扩展,任何PC硬件厂商都可以参与进来,而且这些驱动都是通过模拟器来执行,能够减少硬件的冲突,提供良好的向下兼容,不必因为硬件升级换代而重新编写驱动。更重要的是,UEFI已经为大数量硬件初始而优化,启动速度比传统BIOS更快。3、编写和维护的门槛更低  UEFI支持汇编语言编写的同时,也支持C语言,能实现比汇编语言更快速、更容易理解的开发,从而降低BIOS开发和维护所需的门槛。4、更强大易用  UEFI可以做成图形化的界面,支持和,甚至能够上网,提供比传统BIOS更人性化的操作方式,比如的UEFI BIOS就是一个典型。5、可选EFI Shell系统  出问题了,我们有BootLDR模式,可以用RAPI/ADB等形式进行远程调试,而采用传统BIOS的电脑出问题了,却完全不能自理/接受调试&&UEFI可选配备UEFI Shell操作环境,可以提供BIOS更新、系统诊断、CD播放等各种功能,等于一个迷你操作系统。6、乔教主的祝福  2006年,苹果推出了第一款采用处理器的MAC电脑,其基础就是搭载EFI BIOS的。只有传统的BIOS?那么抱歉,你的机子装不上苹果系统了&&当然,你花钱买EFI-X的话,那就有话说!Intel又一脑残设计:Linux内核作者:UEFI是Intel又一脑残设计  UEFI很多方面都比传统BIOS强大,这个是无疑的,但是却并不完美,我们继续引用Linux系统内核的编写者Linus的观点,UEFI是Intel又一个脑残设计(this other Intel brain-damage).为什么他会这么说呢?1、看起来好强大,但是实际上没什么优势  对于大部分用户来说,Windows和UEFI接合后,其实主要也就实现了大容量硬盘、更快的开机、更快地休眠恢复三个优势,此外就是一堆看得到摸不着的&强大&。对于Linux用户来说,更是如此。2、比BIOS更复杂  在Linus看来,BIOS只要实现引导系统的功能,就已经够了,反正系统启动后基本上就没有BIOS的事了。而制定UEFI标准的UEFI则不这么认为,大家都向里面添加自己需要的功能,结果UEFI就变得复杂起来,门槛是低了,但是工作量却多了,想实现BIOS同等的功能就要付出更多的努力。这可以用华硕的UEFI BIOS为例,自从2011年华硕采用了UEFI BIOS以来,其BIOS更新就相对没有以前那么快速了。3、而且是多余的复杂  传统BIOS功能有限,非常有限,因此没有人想在它上面逗留太旧,因此我们才需要操作系统。而现在UEFI功能强大了,甚至可以在上面玩游戏了,问题是,有谁坐在电脑前有COD8不玩,还玩贪吃蛇的?而且既然我们已经有很多功能完善的迷你Linux系统可用,我们又何苦重新弄个比上不足比下有余的UEFI系统?更有超频玩家称,感觉主板升级UEFI BIOS后,超频稳定性不如以前传统BIOS好。  总的来说,Linus说UEFI是&Intel又一脑残设计&的意思并不是完全否定UEFI,而比较近似于&半个UEFI治天下,另外半个乱天下&。5华硕图形化中文BIOS赏析图形化中文BIOS赏析:华硕 UEFI BIOS简易模式  华硕早在2009年年底就在P5Q Deluxe上尝试过EFI图形界面,现在流行的UEFI BIOS,或者叫图形化中文BIOS,分为简易模式和高级模式两种界面。简易模式下的快捷方式  简易模式下,用户可以切换多种不同语言,可以监视硬件的运行状况,一键调节系统性能和节能间的平衡,可以改变启动顺序,还提供常用功能的快捷入口、启动菜单和载入默认设置,非常简单易用。高级模式  高级模式和传统BIOS模式近似,但是可以用操作,看起来视觉效果也更好。超频设置  华硕一直都是超频方面的领跑者,在UEFI BIOS时代也是这样,华硕不仅提供丰富的选项,还提供很完善的解说,人性化做得很好。多种工具  除了各种设置功能,华硕的图形化中文BIOS还提供BIOS刷新工具、Drvie Xpert智能RAID等工具,而且还能按F12截图保存到上。BIOS刷新工具  华硕图形化中文BIOS自带的BIOS刷新工具无需DOS引导,可以用鼠标操作,能方便地浏览磁盘,非常方便易用。6技嘉X79的3D BIOS赏析3D BIOS赏析:技嘉 3D BIOS  技嘉在新一代旗舰平台上首次推出了图形化BIOS,名为&3D BIOS&,具备3D模式和高级模式两种模式。3D模式下调整超频选项  3D 模式下,用户可以点选图案上的相关部分调整相关选项,比如点击插槽和内存插槽部分就会出现超频相关选项,界面看起来和一般BIOS明显不同。&&整合设备、扩展插槽、磁盘控制器、双UEFI BIOS  除了超频调节,我们还能在主板图案上找到整合设备、扩展插槽、磁盘控制器、双UEFI BIOS等选项。3D 供电  技嘉在主板上推出了全新的3D 供电设计,我们也能在主板上找到相关选项。高级模式  高级模式界面和传统BIOS近似,不过可以用操作。超频调节  高级模式的超频选项和3D 模式的略有不同,选项更丰富,同时也注意包装好。3D供电调节  全新的技嘉 3D供电提供了非常丰富的供电调节选项,可玩性很高。BIOS功能  技嘉的3D BIOS无疑是基于新的EFI/UEFI标准的,技嘉除了注意做好界面,还提供选项强化对传统BIOS的支持。管理  UEFI提供了完整的运行环境,因此可以实现更丰富的功能,比如技嘉的3D BIOS就可以实现定时开机关机。7微星两代ClickBIOS赏析的ClickBIOS:微星 ClickBIOS一代    微星的图形化BIOS叫做ClickBIOS,目前主要是第一代居多,部分高端产品上则是二代。微星 ClickBIOS二代  外观上,两代ClickBIOS的差距还是挺大的,从设计风格上就有不同,二代看起来更正经,并且明显强调了对微星的特色迷你系统&Winki&的整合。部分ClickBIOS一代还能玩  部分配备ClickBIOS一代的微星能在BIOS下玩游戏,看起来挺有趣,可以说微星是最热衷于探索UEFI可能性的厂商,不过恐怕这不算很成功,毕竟对于大部分用户来说,BIOS就是载入系统然后滚开的角色,在它下面玩游戏没有多大必要。大概微星也吸收了这些经验教训,把ClickBIOS二代设计得更加&正经&。上方三种模式  ClickBIOSII没有&简单模式&或&3D模式&,不过还是提供了快速的启动顺序调整和&ECO模式/标准模式/超频模式&三模快速切换设计,设置在界面上方。超频设计  细节选项设计方面,微星的ClickBIOSII和传统BIOS很近似,关键不同是可以用。节能选项  微星将节能选项和硬件监控选项整合到了一起,用户可以在节能选项调节节能,也能直接选上面的&ECO模式&解决节能需要。工具  ClickBIOSII非常强调与微星&Winki&迷你系统的整合,其提供的浏览器、HDD备份等功能都是通过载入Winki系统实现的,用户可以用微星的安装光碟把Winki安装到或上。硬盘备份  微星的HDD备份是Winki系统下备份程序,和Ghost近似,功能和效率都不错。网页浏览  Winki系统自带网络驱动和火狐浏览器,可以快速完整地浏览网页,包括Flash内容。更多功能  除此之外,Winki还能实现查看Ofe文档、即时聊天等功能,唯一让我们不满的是,微星怎么不直接送用户一个装好了Winki的小U盘,让用户自己装Winki还挺麻烦的。8华擎X79的UEFI BIOS赏析 UEFI BIOS赏析:华擎的UEFI BIOS  除了一线三大厂外,二线厂商华擎也有自己的UEFI BIOS图形界面。系统浏览器  华擎在上推出了&系统浏览器&功能,看起来和的3D BIOS有点近似,也是点击主板上的部分显示信息。提示USB2.0口上插的是双飞燕  和技嘉3D BIOS不同,华擎的系统浏览器不能修改设置,只能浏览平台的使用状况,比如看看USB2.0接口上连的是什么设备。简易超频档案  简易超频档案是华擎的一大传统特色,在UEFI时代,华擎继续发扬这种传统,提供简单易用的超频档案,轻松载入即可体验超频威力。UEFI刷新工具  华擎UEFI BIOS也提供刷新工具,可以帮助用户轻松刷新主板的BIOS.从外存启动EFI Shell  理论上所有UEFI BIOS都具备运行环境,能够运行基于UEFI的各种程序,不过实际上,各个厂商都出于市场竞争考虑,没有开放UEFI程序运行入口,华擎算是比较宽松的一个。9总结:UEFI只是轻度脑残总结:轻度脑残,有药可救只是轻度追尾,轻度脑残  &了解完传统BIOS和新的UEFI的相关信息,再看完市面主要的图形化BIOS界面后,最后我们再来总结一下,这个UEFI到底脑残不脑残:
BIOS vs UEFI对比
简陋的文字界面
可以图形化、动画化
处理器性能
局限为16位
64位,向下兼容
扩展用内存空间短缺
加载速度慢
扩展用内存空间充足
支持新标准,速度快
编写/维护工作量
低 至 中等
中高 至 高
最大2.2TB,4个主分区
最大上百TB,100个主分区
自我维护/升级
无,必须依赖操作系统
良好基础,可选功能
1、图形化界面的确更友好  毫无疑问,新型的图形化UEFI界面相对传统的BIOS界面要好看多了,不仅是外观看起来更好,其多语言支持和人性化设计也可以做得更好,尤其是的简易模式图形化中文BIOS,无论新手还是老鸟都能发现它的易用和方便。2、更好的硬件支持  新型的UEFI能够完美支持大容量硬盘,扩展使用更多的复杂设备,启动/休眠恢复更快速,这些都是UEFI实实在在,能带给用户的好处,当然不可否认。3、用BIOS的还是小众用户  对大部分用户来说,BIOS功能就启动引导选择用得最多,无论是传统BIOS还是新型的UEFI BIOS,深入BIOS设置后都有用户难以接受的复杂度,因此使用BIOS的主要还是小众用户,对于他们来说,UEFI未必比传统BIOS好用,因为他们已经习惯了传统BIOS.4、编写维护的门槛低了,但是工作量大了  从程序员角度出发,UEFI的确降低了BIOS编写的门槛,但是也伴随带来了一些不必要的复杂,在早期的UEFI图形界面上,我们曾经看到不少不流畅的画面,乱码、闪烁之类问题时有存在,以华硕为例,采用UEFI BIOS后BIOS更新频率和质量在一段时间内都明显比以前差,甚至在最新的平台上,同样是UEFI BIOS,新版本还会出现旧版本没有的汉字闪烁问题,可见UEFI BIOS的设计和维护的确更费劲。  引用大神Linus的观点,我们总结,UEFI取代传统BIOS是必然,它能更好地适应未来的硬件要求和用户习惯,但是同时它也带有一些不该有的、多余的复杂在里面,总结就是画蛇添足,轻度脑残,稍稍治理一下又是一个大好青年。
DIY硬件图赏
DIY论坛帖子排行
最新资讯离线随时看
聊天吐槽赢奖品计划利用 Carbon Copy Cloner 将 13 寸 Mac 的硬盘克隆到 15 寸 Mac 上,会有什么坑吗?
12:15:12 +08:00 · 1827 次点击
有没有朋友这么干过,会有什么问题吗?
谢谢各位!
15 回复 &| &直到
22:07:11 +08:00
& & 12:40:00 +08:00 via Android
有什么意义么...
& & 12:46:29 +08:00
驱动会不匹配吧。干嘛不用 TM
& & 12:52:16 +08:00
可能会无法启动。之前在两台同样的 13 寸 MBP 之间测试过。
& & 13:49:58 +08:00
没试过,同问,年底出新款就打算用 CCC 做迁移。
& & 13:57:47 +08:00
@ TM 能在 15 寸本上完全恢复 13 寸 MAC 的所有数据么?包括所有应用程序的配置等。
& & 13:58:28 +08:00
@ 以后就用 15 寸的本了,所以需要把所有的东西从 13 寸的本上完全一模一样地迁移到 15 寸本上。
& & 14:06:22 +08:00
这东西相对 TM 有什么优势吗?
& & 14:25:49 +08:00
@ 我没用过 TM ,不知道 TM 是否能满足我的要求。。 我需要将原 MAC 里面的所有东西一模一样地恢复到新 MAC 本上。。不知道 TM 是不是可以做到。。
& & 14:32:57 +08:00 via iPhone
@ tm 是全部数据一起复制到新硬盘上的,我推荐你使用数据迁移,这样只会将工作环境和文件全部迁移,包括应用和设置。 ccc 在最新的系统上貌似有问题。
& & 14:50:42 +08:00
第一台是 13 寸的 MB 换硬盘 直接用硬盘工具全盘复制到新硬盘 没问题
第二台是 15 寸 MBP 直接硬盘复制 没问题
第三次操作是 15 寸 MBP 换 SSD 直接硬盘复制 没问题
第三台是 12 寸 MB 没复制 全新用
我建议还是新电脑新开始 全新用吧 一定要复制 我感觉系统自己的磁盘永居拖硬盘比 CCC 靠谱
& & 14:53:03 +08:00 via iPhone
为什么不用迁移助手
& & 15:01:14 +08:00 via iPhone
没问题。
说驱动有问题的是 Windows 用多了。
& & 15:02:51 +08:00
@ 用了 6 年 macOS ,说了一句可能驱动有问题,被人背后说 Windows 用多了,我也是呵呵了。
& & 21:07:45 +08:00
如果没有记错
找根 thunderbolt 线
新电脑开机的时候选择从另外一台电脑复制就可以吧
& & 22:07:11 +08:00
用过一次,没遇到什么问题。。。
& · & 2365 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 14ms · UTC 11:00 · PVG 19:00 · LAX 04:00 · JFK 07:00? Do have faith in what you're doing.如何取消磁盘检查?自己设置计划磁盘检查重启后检查时间太长如何取消?重启也不行_百度知道
如何取消磁盘检查?自己设置计划磁盘检查重启后检查时间太长如何取消?重启也不行
我有更好的答案
1、在开始菜单中,依次执行“程序”-“附件”-“命令提示符”命令,在命令提示行状态下; 2、直接输入“CHKNTFS/T :0”命令,单击回车键后,系统就能自动将检查磁盘的等待时间修改为0了;3、下次遇到异常情况,重新启动计算机后,系统再调用磁盘扫描程序时,就不需要等待了。 通过这样的设置,系统重启后就会直接进行磁盘扫描,而不需要系统默认10秒的等待时间。 二、关闭开机磁盘检测功能 在讨论关闭磁盘扫描之前,我们先了解一下chkntfs 这个命令的作用: C:\\&chkntfs/? 在启动时显示或修改磁盘检查。 CHKNTFS volume [...] CHKNTFS /D CHKNTFS /T[:time]\\r\\nCHKNTFS /X volume [...] CHKNTFS /C volume [...] volume: 指定驱动器(后面跟一个冒号)、装入点或卷名。 /D 将计算机恢复成默认状态, 启动时检查所有驱动器,并对有问题的驱动器执行 chkdsk 命令。 /T:time 将 AUTOCHK 初始递减计数时间改成指定的时间量,单位为秒数。如果没有指定时间,则显示当前设置。 /X 排除启动时不作检查的驱动器。上次执行此命令排除的驱动器此时无效。 /C 安排启动时检查驱动器,如果驱动器有问题,运行 chkdsk。 如果没有指定命令选项,CHKNTFS 会显示每一驱动器有问题的位的状态。 从上面可以看出,输入:chkntfs /x c: 可以实现非法关机不扫描C盘。
采纳率:82%
来自团队:
为您推荐:
其他类似问题
磁盘的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。HDFS构架设计
Hadoop分布式文件系统:架构和设计
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。这个项目的地址是。
前提和设计目标
硬件错误是常态而不是异常。HDFS可能由成百上千的服务器所构成,每个服务器上存储着文件系统的部分数据。我们面对的现实是构成系统的组件数目是巨大的,而且任一组件都有可能失效,这意味着总是有一部分HDFS的组件是不工作的。因此错误检测和快速、自动的恢复是HDFS最核心的架构目标。
流式数据访问
运行在HDFS上的应用和普通的应用不同,需要流式访问它们的数据集。HDFS的设计中更多的考虑到了数据批处理,而不是用户交互处理。比之数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。POSIX标准设置的很多硬性约束对HDFS应用系统不是必需的。为了提高数据的吞吐量,在一些关键方面对POSIX的语义做了一些修改。
大规模数据集
运行在HDFS上的应用具有很大的数据集。HDFS上的一个典型文件大小一般都在G字节至T字节。因此,HDFS被调节以支持大文件存储。它应该能提供整体上高的数据传输带宽,能在一个集群里扩展到数百个节点。一个单一的HDFS实例应该能支撑数以千万计的文件。
简单的一致性模型
HDFS应用需要一个&一次写入多次读取&的文件访问模型。一个文件经过创建、写入和关闭之后就不需要改变。这一假设简化了数据一致性问题,并且使高吞吐量的数据访问成为可能。Map/Reduce应用或者网络爬虫应用都非常适合这个模型。目前还有计划在将来扩充这个模型,使之支持文件的附加写操作。
&移动计算比移动数据更划算&
一个应用请求的计算,离它操作的数据越近就越高效,在数据达到海量级别的时候更是如此。因为这样就能降低网络阻塞的影响,提高系统数据的吞吐量。将计算移动到数据附近,比之将数据移动到应用所在显然更好。HDFS为应用提供了将它们自己移动到数据附近的接口。
异构软硬件平台间的可移植性
HDFS在设计的时候就考虑到平台的可移植性。这种特性方便了HDFS作为大规模数据应用平台的推广。
Namenode 和 Datanode
HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。
Namenode和Datanode被设计成可以在普通的商用机器上运行。这些机器一般运行着GNU/Linux操作系统(OS)。HDFS采用Java语言开发,因此任何支持Java的机器都可以部署Namenode或Datanode。由于采用了可移植性极强的Java语言,使得HDFS可以部署到多种类型的机器上。一个典型的部署场景是一台机器上只运行一个Namenode实例,而集群中的其它机器分别运行一个Datanode实例。这种架构并不排斥在一台机器上运行多个Datanode,只不过这样的情况比较少见。
集群中单一Namenode的结构大大简化了系统的架构。Namenode是所有HDFS元数据的仲裁者和管理者,这样,用户数据永远不会流过Namenode。
文件系统的名字空间 (namespace)
HDFS支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、移动或重命名文件。当前,HDFS不支持用户磁盘配额和访问权限控制,也不支持硬链接和软链接。但是HDFS架构并不妨碍实现这些特性。
Namenode负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被Namenode记录下来。应用程序可以设置HDFS保存的文件的副本数目。文件副本的数目称为文件的副本系数,这个信息也是由Namenode保存的。
HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件。它将每个文件存储成一系列的数据块,除了最后一个,所有的数据块都是同样大小的。为了容错,文件的所有数据块都会有副本。每个文件的数据块大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后改变。HDFS中的文件都是一次性写入的,并且严格要求在任何时候只能有一个写入者。
Namenode全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。
副本存放: 最最开始的一步
副本的存放是HDFS可靠性和性能的关键。优化的副本存放策略是HDFS区分于其他大部分分布式文件系统的重要特性。这种特性需要做大量的调优,并需要经验的积累。HDFS采用一种称为机架感知(rack-aware)的策略来改进数据的可靠性、可用性和网络带宽的利用率。目前实现的副本存放策略只是在这个方向上的第一步。实现这个策略的短期目标是验证它在生产环境下的有效性,观察它的行为,为实现更先进的策略打下测试和研究的基础。
大型HDFS实例一般运行在跨越多个机架的计算机组成的集群上,不同机架上的两台机器之间的通讯需要经过交换机。在大多数情况下,同一个机架内的两台机器间的带宽会比不同机架的两台机器间的带宽大。
通过一个的过程,Namenode可以确定每个Datanode所属的机架id。一个简单但没有优化的策略就是将副本存放在不同的机架上。这样可以有效防止当整个机架失效时数据的丢失,并且允许读数据的时候充分利用多个机架的带宽。这种策略设置可以将副本均匀分布在集群中,有利于当组件失效情况下的负载均衡。但是,因为这种策略的一个写操作需要传输数据块到多个机架,这增加了写的代价。
在大多数情况下,副本系数是3,HDFS的存放策略是将一个副本存放在本地机架的节点上,一个副本放在同一机架的另一个节点上,最后一个副本放在不同机架的节点上。这种策略减少了机架间的数据传输,这就提高了写操作的效率。机架的错误远远比节点的错误少,所以这个策略不会影响到数据的可靠性和可用性。于此同时,因为数据块只放在两个(不是三个)不同的机架上,所以此策略减少了读取数据时需要的网络传输总带宽。在这种策略下,副本并不是均匀分布在不同的机架上。三分之一的副本在一个节点上,三分之二的副本在一个机架上,其他副本均匀分布在剩下的机架中,这一策略在不损害数据可靠性和读取性能的情况下改进了写的性能。
当前,这里介绍的默认副本存放策略正在开发的过程中。
为了降低整体的带宽消耗和读取延时,HDFS会尽量让读取程序读取离它最近的副本。如果在读取程序的同一个机架上有一个副本,那么就读取该副本。如果一个HDFS集群跨越多个数据中心,那么客户端也将首先读本地数据中心的副本。
Namenode启动后会进入一个称为安全模式的特殊状态。处于安全模式的Namenode是不会进行数据块的复制的。Namenode从所有的 Datanode接收心跳信号和块状态报告。块状态报告包括了某个Datanode所有的数据块列表。每个数据块都有一个指定的最小副本数。当Namenode检测确认某个数据块的副本数目达到这个最小值,那么该数据块就会被认为是副本安全(safely replicated)的;在一定百分比(这个参数可配置)的数据块被Namenode检测确认是安全之后(加上一个额外的30秒等待时间),Namenode将退出安全模式状态。接下来它会确定还有哪些数据块的副本没有达到指定数目,并将这些数据块复制到其他Datanode上。
文件系统元数据的持久化
Namenode上保存着HDFS的名字空间。对于任何对文件系统元数据产生修改的操作,Namenode都会使用一种称为EditLog的事务日志记录下来。例如,在HDFS中创建一个文件,Namenode就会在Editlog中插入一条记录来表示;同样地,修改文件的副本系数也将往Editlog插入一条记录。Namenode在本地操作系统的文件系统中存储这个Editlog。整个文件系统的名字空间,包括数据块到文件的映射、文件的属性等,都存储在一个称为FsImage的文件中,这个文件也是放在Namenode所在的本地文件系统上。
Namenode在内存中保存着整个文件系统的名字空间和文件数据块映射(Blockmap)的映像。这个关键的元数据结构设计得很紧凑,因而一个有4G内存的Namenode足够支撑大量的文件和目录。当Namenode启动时,它从硬盘中读取Editlog和FsImage,将所有Editlog中的事务作用在内存中的FsImage上,并将这个新版本的FsImage从内存中保存到本地磁盘上,然后删除旧的Editlog,因为这个旧的Editlog的事务都已经作用在FsImage上了。这个过程称为一个检查点(checkpoint)。在当前实现中,检查点只发生在Namenode启动时,在不久的将来将实现支持周期性的检查点。
Datanode将HDFS数据以文件的形式存储在本地的文件系统中,它并不知道有关HDFS文件的信息。它把每个HDFS数据块存储在本地文件系统的一个单独的文件中。Datanode并不在同一个目录创建所有的文件,实际上,它用试探的方法来确定每个目录的最佳文件数目,并且在适当的时候创建子目录。在同一个目录中创建所有的本地文件并不是最优的选择,这是因为本地文件系统可能无法高效地在单个目录中支持大量的文件。当一个Datanode启动时,它会扫描本地文件系统,产生一个这些本地文件对应的所有HDFS数据块的列表,然后作为报告发送到Namenode,这个报告就是块状态报告。
所有的HDFS通讯协议都是建立在TCP/IP协议之上。客户端通过一个可配置的TCP端口连接到Namenode,通过ClientProtocol协议与Namenode交互。而Datanode使用DatanodeProtocol协议与Namenode交互。一个远程过程调用(RPC)模型被抽象出来封装ClientProtocol和Datanodeprotocol协议。在设计上,Namenode不会主动发起RPC,而是响应来自客户端或 Datanode 的RPC请求。
HDFS的主要目标就是即使在出错的情况下也要保证数据存储的可靠性。常见的三种出错情况是:Namenode出错, Datanode出错和网络割裂(network partitions)。
磁盘数据错误,心跳检测和重新复制
每个Datanode节点周期性地向Namenode发送心跳信号。网络割裂可能导致一部分Datanode跟Namenode失去联系。Namenode通过心跳信号的缺失来检测这一情况,并将这些近期不再发送心跳信号Datanode标记为宕机,不会再将新的IO请求发给它们。任何存储在宕机Datanode上的数据将不再有效。Datanode的宕机可能会引起一些数据块的副本系数低于指定值,Namenode不断地检测这些需要复制的数据块,一旦发现就启动复制操作。在下列情况下,可能需要重新复制:某个Datanode节点失效,某个副本遭到损坏,Datanode上的硬盘错误,或者文件的副本系数增大。
HDFS的架构支持数据均衡策略。如果某个Datanode节点上的空闲空间低于特定的临界点,按照均衡策略系统就会自动地将数据从这个Datanode移动到其他空闲的Datanode。当对某个文件的请求突然增加,那么也可能启动一个计划创建该文件新的副本,并且同时重新平衡集群中的其他数据。这些均衡策略目前还没有实现。
数据完整性
从某个Datanode获取的数据块有可能是损坏的,损坏可能是由Datanode的存储设备错误、网络错误或者软件bug造成的。HDFS客户端软件实现了对HDFS文件内容的校验和(checksum)检查。当客户端创建一个新的HDFS文件,会计算这个文件每个数据块的校验和,并将校验和作为一个单独的隐藏文件保存在同一个HDFS名字空间下。当客户端获取文件内容后,它会检验从Datanode获取的数据跟相应的校验和文件中的校验和是否匹配,如果不匹配,客户端可以选择从其他Datanode获取该数据块的副本。
元数据磁盘错误
FsImage和Editlog是HDFS的核心数据结构。如果这些文件损坏了,整个HDFS实例都将失效。因而,Namenode可以配置成支持维护多个FsImage和Editlog的副本。任何对FsImage或者Editlog的修改,都将同步到它们的副本上。这种多副本的同步操作可能会降低Namenode每秒处理的名字空间事务数量。然而这个代价是可以接受的,因为即使HDFS的应用是数据密集的,它们也非元数据密集的。当Namenode重启的时候,它会选取最近的完整的FsImage和Editlog来使用。
Namenode是HDFS集群中的单点故障(single point of failure)所在。如果Namenode机器故障,是需要手工干预的。目前,自动重启或在另一台机器上做Namenode故障转移的功能还没实现。
快照支持某一特定时刻的数据的复制备份。利用快照,可以让HDFS在数据损坏时恢复到过去一个已知正确的时间点。HDFS目前还不支持快照功能,但计划在将来的版本进行支持。
HDFS被设计成支持大文件,适用HDFS的是那些需要处理大规模的数据集的应用。这些应用都是只写入数据一次,但却读取一次或多次,并且读取速度应能满足流式读取的需要。HDFS支持文件的&一次写入多次读取&语义。一个典型的数据块大小是64MB。因而,HDFS中的文件总是按照64M被切分成不同的块,每个块尽可能地存储于不同的Datanode中。
客户端创建文件的请求其实并没有立即发送给Namenode,事实上,在刚开始阶段HDFS客户端会先将文件数据缓存到本地的一个临时文件。应用程序的写操作被透明地重定向到这个临时文件。当这个临时文件累积的数据量超过一个数据块的大小,客户端才会联系Namenode。Namenode将文件名插入文件系统的层次结构中,并且分配一个数据块给它。然后返回Datanode的标识符和目标数据块给客户端。接着客户端将这块数据从本地临时文件上传到指定的Datanode上。当文件关闭时,在临时文件中剩余的没有上传的数据也会传输到指定的Datanode上。然后客户端告诉Namenode文件已经关闭。此时Namenode才将文件创建操作提交到日志里进行存储。如果Namenode在文件关闭前宕机了,则该文件将丢失。
上述方法是对在HDFS上运行的目标应用进行认真考虑后得到的结果。这些应用需要进行文件的流式写入。如果不采用客户端缓存,由于网络速度和网络堵塞会对吞估量造成比较大的影响。这种方法并不是没有先例的,早期的文件系统,比如AFS,就用客户端缓存来提高性能。为了达到更高的数据上传效率,已经放松了POSIX标准的要求。
流水线复制
当客户端向HDFS文件写入数据的时候,一开始是写到本地临时文件中。假设该文件的副本系数设置为3,当本地临时文件累积到一个数据块的大小时,客户端会从Namenode获取一个Datanode列表用于存放副本。然后客户端开始向第一个Datanode传输数据,第一个Datanode一小部分一小部分(4 KB)地接收数据,将每一部分写入本地仓库,并同时传输该部分到列表中第二个Datanode节点。第二个Datanode也是这样,一小部分一小部分地接收数据,写入本地仓库,并同时传给第三个Datanode。最后,第三个Datanode接收数据并存储在本地。因此,Datanode能流水线式地从前一个节点接收数据,并在同时转发给下一个节点,数据以流水线的方式从前一个Datanode复制到下一个。
HDFS给应用提供了多种访问方式。用户可以通过接口访问,也可以通过C语言的封装API访问,还可以通过浏览器的方式访问HDFS中的文件。通过WebDAV协议访问的方式正在开发中。
HDFS以文件和目录的形式组织用户数据。它提供了一个命令行的接口(DFSShell)让用户与HDFS中的数据进行交互。命令的语法和用户熟悉的其他shell(例如 bash, csh)工具类似。下面是一些动作/命令的示例:
创建一个名为 /foodir 的目录
bin/hadoop dfs -mkdir /foodir
创建一个名为 /foodir 的目录
bin/hadoop dfs -mkdir /foodir
查看名为 /foodir/myfile.txt 的文件内容
bin/hadoop dfs -cat /foodir/myfile.txt
DFSShell 可以用在那些通过脚本语言和文件系统进行交互的应用程序上。
DFSAdmin 命令用来管理HDFS集群。这些命令只有HDSF的管理员才能使用。下面是一些动作/命令的示例:
将集群置于安全模式
bin/hadoop dfsadmin -safemode enter
显示Datanode列表
bin/hadoop dfsadmin -report
使Datanode节点 datanodename退役 bin/hadoop dfsadmin -decommission datanodename
浏览器接口
一个典型的HDFS安装会在一个可配置的TCP端口开启一个Web服务器用于暴露HDFS的名字空间。用户可以用浏览器来浏览HDFS的名字空间和查看文件的内容。
存储空间回收
文件的删除和恢复
当用户或应用程序删除某个文件时,这个文件并没有立刻从HDFS中删除。实际上,HDFS会将这个文件重命名转移到/trash目录。只要文件还在/trash目录中,该文件就可以被迅速地恢复。文件在/trash中保存的时间是可配置的,当超过这个时间时,Namenode就会将该文件从名字空间中删除。删除文件会使得该文件相关的数据块被释放。注意,从用户删除文件到HDFS空闲空间的增加之间会有一定时间的延迟。
只要被删除的文件还在/trash目录中,用户就可以恢复这个文件。如果用户想恢复被删除的文件,他/她可以浏览/trash目录找回该文件。/trash目录仅仅保存被删除文件的最后副本。/trash目录与其他的目录没有什么区别,除了一点:在该目录上HDFS会应用一个特殊策略来自动删除文件。目前的默认策略是删除/trash中保留时间超过6小时的文件。将来,这个策略可以通过一个被良好定义的接口配置。
减少副本系数
当一个文件的副本系数被减小后,Namenode会选择过剩的副本删除。下次心跳检测时会将该信息传递给Datanode。Datanode遂即移除相应的数据块,集群中的空闲空间加大。同样,在调用setReplication API结束和集群中空闲空间增加间会有一定的延迟。
HDFS Java API:
HDFS 源代码:
by&Dhruba Borthakur

我要回帖

更多关于 计划磁盘检查 的文章

 

随机推荐