文档章节

SSD Win8 系统盘 4K 无损对齐历险记

大数据之路
 大数据之路
发布于 2016/05/23 00:31
字数 3131
阅读 1158
收藏 17

1、背景:为什么要 4K 对齐

簇是系统在硬盘上读写文件时的单位,是一个数据块(逻辑概念)。而扇区是硬盘划分的最小单位值,就是簇(数据块)占用的地方(物理概念)。NTFS对于大于2GB的分区,默认簇大小为8个扇区(4KB)。

绝大多数的机械硬盘默认是512字节的扇区,采用的是DRAM作为存储介质; 而机械硬盘,无论是SLC颗粒还是MLC颗粒,都属于NAND闪存存储单元。 这种硬盘的扇区是4K,这就是4K的由来。

NTFS格式有一个特性,那就是起始簇的位置! 
  NTFS分区起始位置不是从0开始,而是从LBA63开始,就是第六十三个扇区开始开始存储。 
  而且NFTS默认认为扇区是512字节大小,而不是智能调节到第六十三个扇区。 
  这样问题就来了,63个扇区×512字节=31.5K,也就是说,磁盘的前31.5K是不能被使用的。 
  使用机械硬盘就算了,使用固态硬盘,存储第一个字,也需要占用31.5K-35.5K之间的磁盘扇区。 
  最过分的是这样子排列下去,恰好每到一个扇区的4K位置,就会造成一个数据存2个扇区的情况。
  而且这样排列,只要到了那个能被4K整除的位置就100%占用了2个扇区,哪怕只写一个字。 
  固态硬盘无论是MLC还是SLC,都是有写入读取次数的,这样极大的损伤了性能和寿命。 而且,增加了读取次数。 这个时候无论簇是多大,都会造成性能和空间的浪费。 
  所以这个问题就叫做4K!

2、什么是4K对齐?


  硬盘分区的时候有一个东西叫做物理存储单元,俗称簇。分区的时候可以指定这个大小。这个簇不是硬盘的物理结构,而是使用方法。随着时代发展,硬盘容量不断扩展,使得之前定义的每个扇区512字节不再是那么的合理,于是将每个扇区512字节改为每个扇区4096 个字节,也就是现在常说的“4K扇区”。随着NTFS成为了标准的硬盘文件系统,其文件系统的默认分配单元大小(簇)也是4096字节,为了使簇与扇区相对应,即使物理硬盘分区与计算机使用的逻辑分区对齐,保证硬盘读写效率,所以,有了“4K对齐”的概念。
  传统硬盘的每个扇区固定是512字节,新标准的"4K扇区"的硬盘,硬盘厂商为了保证与操作系统兼容性,也将扇区模拟成512B扇区,这时就会有4K扇区和4K簇不对齐的情况发生。所以就要用“4K对齐"的方式,将硬盘模拟扇区对齐成“4k扇区”。“4K对齐”就是将硬盘扇区对齐到8的整数倍个模拟扇区,即512B*8=4096B,4096字节即是4K。所以只要是8的倍数都是4K对齐了。例如用win7系统对硬盘分区格式化时,默认是将硬盘扇区对齐到2048个扇区的整数倍,即512B*2048=1048576B=1024KB,即1M对齐,并满足4K对齐,该值只要是4096B的倍数就是4K对齐。

3、如何做到无损 4k 对齐?

我们平时说的硬盘4k对齐是指符合“4K扇区”定义格式化过的硬盘,并且按照“4K扇区”的规则写入数据,4k对齐可以避免在向硬盘写入最小量的数据可能占用两个"4K扇区"的情况出现(跟脚踏两只船的道理一样),这样可以大大提高硬盘的读写性能。
不光SSD硬盘(固态盘)需要4k对齐,我们现在用的普通机械硬盘也需要4k对齐,对齐的方法有很多,现在一般Win7/Win8的格式化工具进行格式化会自动对齐,DiskGenius这样的分区工具也支持4k对齐,但这些方法都是在有损的情况下进行的,也就是说会造成硬盘数据丢失。而Paragon Alignment Tool这款无损的硬盘4k对齐工具,可以用来检测并解决硬盘分区4k对齐问题,支持高级格式化驱动(AF驱动)、固态盘(SSD)以及独立磁盘冗余阵列(RAID),不会破坏原有硬盘分区的数据。

  • 无需重启进行分区对齐操作 - 未锁定的分区可以在Windows中直接进行对齐。
  • 蓝屏模式下的对齐操作 - 重启系统进入蓝屏模式,对正在使用的分区进行对齐操作。
  • 通用恢复CD(RCD) - 在未安装PAT时Windows无法检测或对齐驱动时启动您的系统。
  • 全部数据保护 - 在对齐操作忽然中断(比如电源中断)时,数据依旧能够获得保护。

4.0 功能特色:

-支持Windows 8
-更快的对齐引擎
-如没有安装MSI程序包,可以启动WinPE环境对齐分区

具体的对齐操作方法还请参考文末的链接。

4、UEFI 下系统盘如何 4K 无损对齐?

Paragon Alignment Tool 理论上是可以对 系统盘进行 4k 对齐的,因为系统盘处于锁定状态,必须重启进入 DOS 状态下对齐,但是 UEFI 下,Paragon Alignment Tool 引导会进入不了 DOS 模式,我们只能放弃 UEFI 下的 Paragon Alignment Tool 系统盘对齐操作,另辟蹊径。

具体工具:

(1)win8PE

(2)DiskGenius、Ghost 11.5

思路:

(1)先用 Ghost 备份 C 盘镜像

(2)然后再用 DiskGenius 删除 C 盘分区

(3)以 4k 对齐的方式(8扇区,4096字节)新建 C 盘分区

(4)格式化C盘,可能有提示保存分区表。点确认即可。

(5)最后再用 Ghost 恢复 C 盘镜像即可。

5、遇到的问题:winload.efi missing or corrupt

说实话 Ghost 回去以后还是满怀期待进入系统的,结果蓝屏报错了,当时真是一脸懵逼。。。

如果真的沦落到要重装系统的话估计得至少花一周的时间了,因为系统里一堆软件、各种开发环境和个性化设置。。。好在对 windows 还算了解,根据蓝屏提示,初步判定问题应该是在系统 uefi 引导这块,然后找了几个帖子还算顺利的解决了。

Recovery

Your PC needs to be repaired.

The application or operating system couldn't be loaded because a required file is missing or contains errors.

File: \windows\system32\winload.efi

Error code: 0xc0000225

You'll need to use the recovery tools on your installation media. If you don't have any installation media (like a disc or USB device), contact your system administrator or PC manufacturer.

Press Enter to try again
Press F8 for Startup Settings
Press ESC for UEFI Firmware Settings

6、如何解决 UEFI 下的 winload.efi 丢失问题?

当uefi引导文件损坏,或ghost还原64位系统到C盘,因无uefi引导还是不能启动系统。
怎么修复UEFI引导呢?

6.1 UEFI引导基本原理:

  • esp引导分区

            esp磁盘分区是gpt格式硬盘放efi引导文件的磁盘,在mbr格式硬盘中也可以由任一fat格式磁盘分区代替

  • efi文件结构

      efi\boot\bootx64.efi
      efi\microsoft\boot\bcd

  • efi启动过程

      uefi bios启动时,自动查找硬盘下esp分区的bootx64.efi,然后由bootx64.efi引导efi下的bcd文件,由bcd引导指定系统文件(一般为c:\windows\system32\winload.efi)

6.2 修复方法:


  6.2.1 用 bcbboot 自动修复


  我们建议大家启动64位8PE,用它带的 bcdboot 来修复。
  (一)指定esp分区修复
  环境为64位 win8PE,bios/uefi启动进入下都可以
  1、启动64位8PE,并用esp分区挂载器或diskgenuis挂载esp分区
  打开cmd命令行,输入以下命令并运行 

bcdboot c:\windows /s o: /f uefi /l zh-cn


  其中:c:\windows  硬盘系统目录,根据实际情况修改
  /s o:     指定esp分区所在磁盘,根据实际情况修改
  /f uefi   指定启动方式为uefi
  /l zh-cn  指定uefi启动界面语言为简体中文
  注:64位7PE不带/s参数,故7PE不支持bios启动下修复
  (二)不指定esp分区修复
  环境为64位Win7或Win8PE,只有uefi启动进入Win PE才可以(Legacy 进入 PE 不行)
  不用挂载esp分区,直接在cmd命令行下执行:
  bcdboot c:\windows /l zh-cn
  其中 c:\windows  硬盘系统目录,根据实际情况修改
  /l zh-cn  指定uefi启动界面语言为简体中文
  注:在Win8 PE中,我们也可以在uefi启动进入Win pe后,挂载esp分区用方法(一)修复

  6.2.2 用bootice手动修复


  从efi引导启动过程来看,虽然它的文件很多,但主要用到的就是两文件,我们完全可以在各Win pe下挂载esp分区,从硬盘系统中复制bootx64.efi文件,然后用用bootice制作好bcd,就完成efi引导修复。
  1、启动任一Win pe,用esp分区挂载器或diskgenuis挂载esp分区
  2、查看esp分区是否可正常读写,如不正常可重新格式化为fat16分区格式。
  3.在esp分区中建立如下空文件夹结构
  \efi\boot\   (bootx64.efi等复制)
  \efi\microsoft\boot\ (bcd等建立)
  4、复制硬盘系统中的bootmgfw.efi(一般在c:\windows\boot\efi下)到esp分区的\efi\boot\下,并重命名为bootx64.efi
  5、打开bootice软件,有esp分区的\efi\microsoft\boot\下新建立一bcd文件,
  打开并编辑bcd文件,添加“windows vista\7\8启动项,指定磁盘为硬盘系统盘在的盘,指定启动分区为硬盘系统分区(一般为c:)
  指定启动文件为:\Windows\system32\winload.efi, 是*.efi,不是*.exe,要手工改过来
  最后保存当前系统设置并退出。

  注:Winxp PE不能识别gpt格式的硬盘分区,用2003PE中的disk.sys替换xpPE内核中的相应文件,就可以让xpPE也能识别gpt磁盘格式分区
  指定启动分区不是esp分区所在分区,就是硬盘64位Win7、Win8 系统所在分区
  指定启动文件为:\Windows\system32\winload.efi, 是*.efi,不是*.exe,要手工改过来
  

  6.2.3 其它问题


  1、手工运行ghost并不会修复esp分区
  2、用老大们的一键还原,现在慢慢加上了还原后esp引导修复功能,如实测深山的一键还原就自带esp分区uefi引导修复
  3、用微软原版系统光盘安装或PE下安装,当然都会自动修复esp引导。

        6.2.4 BIOS+UEFI引导修复工具

@echo off
:1
title BIOS+UEFI引导修复工具1.1
color 03
echo *******************************************************************************               
echo *                           BIOS+UEFI引导修复工具1.1                          *
echo *                                                                             *
echo ******************************************************************************* 
echo *                                                                             *
echo *          此工具主要用于修复Windows引导,兼容BIOS启动和UEFI启动。            *
echo *          同时也可以用于修复多系统引导                                       *
echo *                                                                             *
echo *******************************************************************************
echo.
set /p A=请输入Windows所在盘符:
echo.
set /p B=请输入引导文件所在盘符:
echo.
echo Windwos所在盘符为%A%,引导文件所在盘符为%B%。确定要修复吗?
pause
if exist "%HOMEDRIVE%\Program Files (x86)" (
   goto x64
) else (
   goto x86
)

:x64
echo 正在修复引导。。。
bcdboot64 %A%:\windows /s %B%: /f all /l zh-cn
echo 已完成修复
pause
cls
goto 1

:x86
echo 正在修复引导。。。
bcdboot32 %A%:\windows /s %B%: /f all /l zh-cn
echo 已完成修复
pause
cls
goto 1

最终 SSD Win8 系统盘 4K 无损对齐效果如下:

    

Refer:

[1] 4K对齐选8,2048和4098扇区数有多大区别?实测告诉你

http://itbbs.pconline.com.cn/diy/52407606.html

[2] Paragon Alignment Tool(硬盘无损4k对齐工具) v4.0绿色版

http://www.ddooo.com/softdown/70747.htm

[3] 硬盘4k无损对齐工具Paragon Alignment Tool 4.0专业版(支持SSD及机械硬盘)

http://www.epinv.com/post/4698.html

[4] 2015最新SSD固态硬盘4K对齐分区教程(有损)

http://jingyan.baidu.com/article/363872ec3185246e4aa16f61.html

[5] 无损4K对齐教程-不损伤固态硬盘数据对齐教程

http://jingyan.baidu.com/article/851fbc3703af623e1f15ab95.html

[6] C盘(系统盘)无损4K对齐方法.开机速度提升20%+

http://tieba.baidu.com/p/1425336529

[7] winload.efi missing or corrupt: Fix for Windows 7, 8

https://neosmart.net/wiki/winload-efi-missing-corrupt/

[8] UEFI引导修复教程  

http://blog.163.com/ycy_sdfc/blog/static/196180420144183845261/

[9] I get “Your PC needs to be repaired” and “Error code: 0xc0000225” in Windows 8

http://bit.ly/1WKQNLt

© 著作权归作者所有

大数据之路
粉丝 1575
博文 516
码字总数 342746
作品 0
武汉
架构师
私信 提问
加载中

评论(2)

Loveni
Loveni

纳兰清风
纳兰清风
脉脉上那个是不也你发的[20]
那些年,我们买固态硬盘掉过的坑

  //致小编:为什么要过滤标签呢?删除线是一个很有意思的功能啊,如果可以的话请帮我把包含起来的内容加上删除线   固态硬盘(SolidState Disk、Solid State Drive,简称SSD)本身是企业...

FreeBuf
2018/06/02
0
0
150倍加速机械盘,UCloud云主机IO加速技术揭秘

现如今CPU的计算能力和磁盘的访问延迟之间的差距逐渐扩大,使得用户云主机的磁盘IO经常成为严重的性能瓶颈,云计算环境下更加明显。针对机械盘IO性能低下的问题,我们通过自研的云主机IO加速...

UCloudTech
2018/12/03
0
0
SSD装WIN7后黑屏问题

各位大侠啊,真心求助: 我前几天心血来潮,买个了浦科特m6s 256g的ssd,笔记本是华硕牌,i5-2430 cpu,2 g+2g的内存条; 然后就是各种悲剧,装完系统,更新完驱动,打完补丁,就经常出现开机...

bobdog1986
2015/02/02
4.2K
6
Oracle Online Redo Log能否放在Flash闪存卡上?

转载声明:本文为DBA+社群原创文章,转载必须连同本订阅号二维码全文转载,并注明作者名字及来源:DBA+社群(dbaplus)。 Flash 闪存卡的性能远超SAS 盘,所以在数据库中使用广泛。 但是onl...

戴明明
2015/12/09
0
0
Ubuntu在SSD上安装时怎样确保4K对齐?

今天刚到了128G的SSD,把我的有问题的500G硬盘彻底淘汰了,给SSD划分了3个分区:/、/home、swap。我在网上看到有人说Ubuntu不要给SSD分区。这难道还有什么忌讳? 还有4K对齐的问题,我在安装...

Googler
2013/08/24
5.2K
1

没有更多内容

加载失败,请刷新页面

加载更多

UserInputControls用户输入控制

enum UserInputControls { kGovernedByOrthoMode = 0x0001,//正交模式管理 kNullResponseAccepted = 0x0002,//允许输入空 kDontEchoCancelForCtrlC = 0x0004,//ctrl C 模式不能重复......

一个小妞
27分钟前
1
0
分布式系统的事务处理

当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题: 1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。 2)我们总是害怕我们的这台服务器停机,造成...

群星纪元
29分钟前
5
0
Kanban VS Scrum:哪个是最好的敏捷项目管理框架

“我们使用敏捷开发。”在与软件开发团队交流时,你会听到很多这样的说法。根据统计,2018年全球约有90%的开发人员在使用敏捷开发。Choerodon猪齿鱼团队也是其中之一。 但是,敏捷并不统一。...

Choerodon
33分钟前
2
0
vue select 慢一步

我在使用vue的select的时候,@change事件里面,写一个axios拿到数据,然后修改某个变量,按理修改变量会立即呈现在页面上面,但实际情况是,值是变更了,但是页面上的效果慢了一步,非常奇怪...

朝如青丝暮成雪
37分钟前
1
0
分布式架构 核心知识体系

1.问题 1、何为分布式何为微服务? 2、为什么需要分布式? 3、分布式核心理论基础,节点、网络、时间、顺序,一致性? 4、分布式是系统有哪些设计模式? 5、分布式有哪些类型? 6、如何实现分...

小刀爱编程
40分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部