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

时间:2022-04-28
本文章向大家介绍SSD Win8 系统盘 4K 无损对齐历险记,主要内容包括1、背景:为什么要 4K 对齐、2、什么是4K对齐?、3、如何做到无损 4k 对齐?、4、UEFI 下系统盘如何 4K 无损对齐?、5、遇到的问题:winload.efi missing or corrupt、6、如何解决 UEFI 下的 winload.efi 丢失问题?、6.2 修复方法:、Refer:、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

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: windowssystem32winload.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文件结构

      efibootbootx64.efi       efimicrosoftbootbcd

  • efi启动过程

      uefi bios启动时,自动查找硬盘下esp分区的bootx64.efi,然后由bootx64.efi引导efi下的bcd文件,由bcd引导指定系统文件(一般为c:windowssystem32winload.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分区中建立如下空文件夹结构   efiboot   (bootx64.efi等复制)   efimicrosoftboot (bcd等建立)   4、复制硬盘系统中的bootmgfw.efi(一般在c:windowsbootefi下)到esp分区的efiboot下,并重命名为bootx64.efi   5、打开bootice软件,有esp分区的efimicrosoftboot下新建立一bcd文件,   打开并编辑bcd文件,添加“windows vista78启动项,指定磁盘为硬盘系统盘在的盘,指定启动分区为硬盘系统分区(一般为c:)   指定启动文件为:Windowssystem32winload.efi, 是*.efi,不是*.exe,要手工改过来   最后保存当前系统设置并退出。

  注:Winxp PE不能识别gpt格式的硬盘分区,用2003PE中的disk.sys替换xpPE内核中的相应文件,就可以让xpPE也能识别gpt磁盘格式分区   指定启动分区不是esp分区所在分区,就是硬盘64位Win7、Win8 系统所在分区   指定启动文件为:Windowssystem32winload.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