已提供可改善 Windows 7 和 Windows Server 2008 R2 與進階格式磁碟之相容性的更新

結論

本文說明可改善 Windows 7 和 Windows Server 2008 R2,與具有 4 KB 實體磁區大小之進階格式磁碟之相容性的更新。這個 Hotfix 只適用於將本身報告為具有 4 KB 實體磁區大小、並模擬 512 位元組邏輯地址設定介面的進階格式磁碟。

注意進階格式磁碟引進了更大的實體磁區 (4 KB)。不過,為增進初始版本與目前電腦系統的相容性,進階格式磁碟維持 512 位元組的邏輯地址設定介面。因此,進階格式磁碟被稱為「512 位元組模擬磁碟」,或簡稱「512e」。如需有關進階格式磁碟的詳細資訊,請造訪本文結尾所列的「國際磁碟機設備和材料協會」(IDEMA) 網站。

簡介

硬碟機傳統上都是以 512 位元組磁區為基礎,而對實體媒體的所有存取都是根據這個單位來處理的。最近,硬碟供應商開始轉換成具有 4096 位元組 (4 KB) 磁區大小的新磁碟。這就是一般人熟知的「進階格式磁碟」。因為磁碟只能在實體磁區 (本案例為 4 KB) 的粒度執行實體媒體更新,因此導向磁碟的 512 位元組寫入會需要一些額外的作業才能完成。這項作業的執行會犠牲效能與可靠性,而犠牲的程度則會因工作負載及硬體實作而有所不同。如果要避免這項額外的作業,應用程式必須更新至以 4 KB 磁區粒度為基礎的原始支援寫入。

本知識庫文章介紹可支援儲存裝置實體磁區大小查詢的全新儲存基礎架構。此外,本知識庫文章也介紹特定關鍵系統元件對這類磁碟的支援,以改善效能、可靠性和一般互通性。

至於開發人員必須特別考量的更詳細技術說明,則不在本知識庫文章的範圍內,將在 MSDN 的指南文件中詳細說明。

此 Hotfix 彙總套件修正的問題

此 Hotfix 彙總套件可解決下列問題,而這些問題之前並未記載於「Microsoft 知識庫」文件:當您使用進階格式磁碟時,可能會遇到下列任何問題。

問題 1:當您按一下 Windows Update 網站上的 [檢查更新] 按鈕時,收到錯誤訊息:

按一下這裡可檢視或隱藏詳細資訊



可延伸儲存引擎 API (ESENT) 是高效能的桌面資料庫引擎,包括 Windows Update 在內的多種應用程式都會使用這個引擎。特定存放驅動程式有不同類型的支援,以查詢硬碟機的硬碟實體磁區大小,當該驅動程式升級時,所報告的硬碟實體磁區大小可能會變更。因為 ESENT 的記錄結構所致,當所報告的實體磁區大小在作業系統工作階段之間變更時,建立在 ESENT 之上的應用程式會收到錯誤訊息並停止回應。

注意建立在 ESENT 之上的應用程式包括 Windows Update、Active Directory、Windows Desktop Search、憑證授權 (CA)、WINS、DHCP 以及 Windows Live Mail。

當您按一下 Windows Update 網站上的 [檢查更新] 按鈕時,收到下列錯誤訊息:

Windows Update 目前無法檢查更新,因為服務並未執行。您可能需要重新啟動電腦。



此外,應用程式記錄檔會記錄下列錯誤:


本 Hotfix 包含已更新的 Esent.sys 二進位,這個檔案能減輕所報告之磁區大小的改變所造成的影響。

注意 Esent.sys 不支援 512 位元組和 4 KB 以外的實體磁區大小。

資料庫修復

如果要修復資料庫,請依照下列步驟執行:

  1. 在命令提示字元中,輸入下列命令。輸入每個命令之後按下 ENTER。

    • net stop "windows update"

    • cd /d %windir%\SoftwareDistribution\DataStore\Logs

    • esentutl /mh ..\DataStore.edb | findstr /i /c:"State:"

    注意 如果命令列中顯示「狀態:正常關機」,請進行步驟 5。

  2. 建立暫存資料夾 (例如,使用 mkdir c:\fixedfiles 命令建立名為「Fixedfiles」的資料夾)。

    注意 請在下列步驟中,以您在這個步驟所建立的資料夾取代「c:\fixedfiles」。

  3. 從安裝了此 hotfix 的電腦上取得 %windir%\system32\esent.dll 檔案複本,然後將該檔案複製到 c:\fixedfiles。

  4. 在命令提示字元中,輸入下列命令。輸入每個命令之後按下 ENTER。

    • copy %windir%\system32\esentutl.exe c:\fixedfiles\

    • c:\fixedfiles\esentutl.exe /r edb

    • esentutl /mh ..\datastore.edb | findstr /i /c:"State:"

    注意事項

    • 如果命令列中顯示「狀態:正常關機」,請進行步驟 5。

    • 如果這個步驟失敗,或者「狀態:正常關機」沒有顯示在命令列中,請參閱本文的<破壞性修復方法>一節。

  5. 建立暫存資料夾 (例如,使用 mkdir c:\backuplogs 命令建立名為「Backuplogs」的資料夾)。

    注意 請在下列步驟中,以您在這個步驟中所建立的資料夾取代「c:\backuplog」。

  6. 在命令提示字元中,輸入下列命令。輸入每個命令之後按下 ENTER。

    • move * c:\backuplogs

    • net start "windows update"

  7. 執行 Windows Update。

破壞性修復方法

重要 如果您使用此方法,Windows Update 的記錄將會遺失。所以除非您無法修復資料庫,否則我們不建議您使用此方法。如果要使用破壞性修復方法,請依照下列步驟執行:

  1. 在命令提示字元中,輸入下列命令。輸入每個命令之後按下 ENTER。

    • net stop "windows update"

    • cd /d windir%\SoftwareDistribution\DataStore

    • rmdir /s/q Logs

    • del DataStore.mdb

    • net start "windows update"

  2. 執行 Windows Update。

問題 2:執行多次小規模寫入之後,發生問題

按一下這裡可檢視或隱藏詳細資訊



在進階格式磁碟可以使用之前,NTFS 假設由磁碟介面所公開的邏輯磁區大小,等於磁碟的實體磁區大小。雖然 NTFS 的原始設計在理論上是要支援較大的磁區大小,然而 NTFS 假設這兩個磁區大小是相等的。當 NTFS 在 Windows 7 和 Windows Server 2008 R2 中,於檔案結尾執行緩衝寫入時,NTFS 會將寫入作業覆蓋至磁碟介面所公開之磁區大小 (邏輯磁區大小) 的尾端。這個動作能保證磁區對齊。不過,因為 512e 磁碟機的邏輯磁區大小是 512 位元組,緩衝寫入並不會對齊磁碟機硬碟的實體磁區大小。這會造成進階格式磁碟在其 4 KB 實體磁區內,進行 512 位元組邏輯磁區的內部更新,因而導致效能和可靠性的問題。

此 Hotfix 介紹對 NTFS 所採取的動作,此動作可確保在檔案尾端所進行的緩衝寫入,會覆蓋至所報告的磁碟實體磁區大小。

此問題會在進階格式磁碟上的日常應用程式顯現出來。然而,此問題最常在您執行多次小規模寫入之後發生,例如在 Windows 7 或 Windows Server 2008 R2 中使用 ImageX 命令列工具,將 Microsoft Windows 影像 (.wim 檔案) 套用到進階格式磁碟。如果沒有 Hotfix,ImageX 完成作業所需要的時間,將大幅超過將相同的作業套用至傳統硬碟機。

注意這個修正程式依賴儲存驅動程式和磁碟回報正確的實體磁區大小來運作。NTFS 不支援所報告的實體磁區大小是 512 位元組或 4 KB 的磁碟,或是邏輯磁區大小非 512 位元組的磁碟。

問題 3:應用程式無法查詢外接式存放裝置的實體磁區大小

按一下這裡可檢視或隱藏詳細資訊



USBStor 是 Microsoft USB 儲存連接埠驅動程式,此驅動程式會針對符合 USB 大型儲存類別的裝置自動載入。Windows 7 隨附的 USBStor 驅動程式不支援具有 STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR 結構的 IOCTL_STORAGE_QUERY_PROPERTY 要求,而要求的內容是擷取所連接磁碟的儲存存取對齊描述元資料。這個結構包含實體和邏輯磁區大小資訊,如果沒有這項資訊,NTFS 和其他應用程式就無法對 USB 儲存裝置執行對齊寫入,這會對效能和可靠性造成不良影響。

如果沒有這個 Hotfix,應用程式就不能查詢外接式儲存裝置的實體磁區大小。

本 Hotfix 包含已更新的 USBStor 驅動程式 (Usbstor.sys),此驅動程式支援 IOCTL_STORAGE_QUERY_PROPERTY 要求以及 STORAGE_ACCESS_ALGINMENT_DESCRIPTOR 結構。

注意此 IOCTL_STORAGE_QUERY_PROPERTY 要求會導致轉譯成 SCSI SBC3 READ_CAPACITY(16) 命令。連接的 USB 裝置必須透過 SBC3 READ_CAPACITY(16) 命令,正確報告磁區大小資訊。所連接的 USB 裝置也必須保證所傳回的版本描述元是 0x04C0 (SBC3 沒有指定的版本),以作為對初次 INQUIRY 命令的回應。

如需有關 IOCTL_STORAGE_QUERY_PROPERTY 控制碼的詳細資訊,請造訪下列 Microsoft 網站:

如需有關 STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR 結構的詳細資訊,請造訪下列 Microsoft 網站:

問題 4:應用程式無法查詢存放裝置的實體磁區大小

按一下這裡可檢視或隱藏詳細資訊



Storport 是許多儲存控制器製造商所使用的儲存驅動程式模型。其包含在 Windows 7 和 Windows Server 2008 R2 中。Storport 不支援具有 STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR 結構的 IOCTL_STORAGE_QUERY_PROPERTY 要求,而要求的內容是擷取所連接磁碟的儲存存取對齊描述元資料。這個結構包含實體和邏輯磁區大小資訊。如果沒有這項資訊,NTFS 和其他應用程式就無法對磁碟執行對齊寫入。這可能會影響效能和可靠性。

如果沒有這個 Hotfix,應用程式就不能查詢儲存裝置的實體磁區大小。

本 Hotfix 包含已更新的 Storport 驅動程式 (Storport .sys),此驅動程式支援 IOCTL_STORAGE_QUERY_PROPERTY 要求以及 STORAGE_ACCESS_ALGINMENT_DESCRIPTOR 結構。

注意 此 IOCTL_STORAGE_QUERY_PROPERTY 要求會導致轉譯成 SCSI SBC3 READ_CAPACITY(16) 命令。可插入 Storport 驅動程式模型的迷你連接埠驅動程式,必須支援 SBC3 READ_CAPACITY(16) 命令。此外,磁碟必須透過 SBC3 READ_CAPACITY(16) 命令,正確報告磁區大小資訊。

如需有關 IOCTL_STORAGE_QUERY_PROPERTY 控制碼的詳細資訊,請造訪下列 Microsoft 網站:

如需有關 STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR 結構的詳細資訊,請造訪下列 Microsoft 網站:

問題 5:存放裝置驅動程式無法支援進階格式磁碟的正確磁區大小報告功能

按一下這裡可檢視或隱藏詳細資訊



許多存放驅動程式不支援進階格式磁碟的正確磁區大小報告功能。此 Hotfix 包含下列驅動程式的更新:

  • IaStorV.sys

  • Amdsata.sys

  • Nvraid.sys

  • Nvsata.sys

注意其他協力廠商的儲存驅動程式可能不會為了支援這些新的 SBC3 命令而更新。如需詳細資訊,請連絡您的儲存控制器廠商。

此外,此 Hotfix 彙總套件包含下列「 Microsoft 知識庫」 文件所記載的修正程式:

您在執行 Windows 7 或 Windows Server 2008 R2 的電腦上傳輸多個小型檔案時效能變差

問題 6:Fsutil.exe 工具問題

按一下這裡可檢視或隱藏詳細資訊



此更新也會更新 Fsutil.exe 工具。已更新的工具會在輸出中產生新的「Bytes Per Physical Sector」(每個實體磁區的位元組) 文字。例如,當您執行 fsutil fsinfo ntfsinfo C:命令以取得有關磁碟機 C 的資訊時,您會收到和類似下列內容的輸出:

NTFS Volume Serial Number :0xfe6e5dcc6e5d7e79 Version :3.1 Number Sectors :0x000000001d1927ff Total Clusters :0x0000000003a324ff Free Clusters  :0x0000000001f8bae8 Total Reserved :0x00000000000007f0 Bytes Per Sector  :512 Bytes Per Physical Sector :4096 Bytes Per Cluster :4096 Bytes Per FileRecord Segment    :1024 Clusters Per FileRecord Segment :0 Mft Valid Data Length :0x0000000020980000 Mft Start Lcn  :0x00000000000c0000 Mft2 Start Lcn :0x0000000000000002 Mft Zone Start :0x000000000109c060 Mft Zone End   :0x00000000010a8880 RM Identifier:974AD058-3B3D-11DE-9300-000FFEE93BEF 

注意「bytes per physical sector」(每個實體磁區的值) 可以是下列其中一項:

  • 512 – 適用於舊版 512 原始磁碟機

  • 4096 – 適用於進階格式磁碟機

  • <不支援> - 如果硬體或驅動程式不支援 IOCTL_STORAGE_QUERY_PROPERTY 控制碼

解決方案

更新資訊

如何取得此更新

如果您不確定安裝的是哪一版 Windows,請依照下列步驟執行:

  1. 按一下 [開始],在 [開始搜尋] 或在 [搜尋程式及檔案] 中,輸入 msinfo32,然後按下 ENTER。

  2. 找到 [OS 名稱] 列旁的作業系統以及 [系統類型] 列旁的架構類型。



您可以從「Microsoft 下載中心」下載下列檔案:

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×