確認 HDD 錯誤是由於 USB 外殼不支援大容量驅動器造成的?

確認 HDD 錯誤是由於 USB 外殼不支援大容量驅動器造成的?

將檔案複製到外部硬碟時,我突然開始出現錯誤。有充足的可用空間:1.64TB 可用空間,其中 3.63TB 可用空間。我能夠透過執行以下兩件事之一來完成文件複製:

  1. 首先從外部硬碟刪除一些大文件
  2. 或將 HDD 放入不同的 USB 外殼中

此外,除非使用不同的 USB 外殼,否則 Windows 8 錯誤檢查工具會失敗並出現錯誤(在這種情況下刪除大型檔案沒有幫助)。 CHKDSK 命令列工具始終工作並且在磁碟上報告沒有錯誤。

如何確認 USB HDD 外殼有問題?(我想確認問題是不是與我的硬碟一起使用,可以安全地繼續使用。如何確定USB硬碟機支援的容量?


詳細資訊:

複製大文件時發生錯誤:

在此輸入影像描述

  • 代碼 0x80070057 似乎是相當通用的代碼。
  • 收到此錯誤後,我成功複製了 2GB 檔案。我嘗試再次複製相同的文件(總共 4TB)並得到相同的錯誤。
  • 在系統事件日誌中,每次副本失敗時似乎都會記錄以下內容:“由於卷 D: 上的 IO 故障,卷 D: 的捲影副本已中止。”

Windows 8錯誤檢查工具錯誤:

  • 失敗後,它會開啟 Windows 事件檢視器,並顯示一些與影集副本相關的錯誤。 (忘記記錄這個細節了)

硬體:

  • 埃納麥克斯爵士3.5USB HDD 外殼(這個會導致錯誤;它是相當舊的型號。)
  • 萊托資料克隆3.0USB HDD 底座(這個似乎沒有錯誤;更新的型號。)
  • 西部數據 4TB 綠色硬碟WD40EZRX

檔案系統:

  • GPT(2TB MBR 驅動器克隆到 4TB 驅動器,然後分區表轉換為 GPT)
  • NTFS

系統:

  • 視窗8
  • 聯想 X1 Carbon 筆記型電腦

更新:來自「卷 D: 的捲影副本已中止...」所記錄的事件的更多詳細資料:

系統
  - 提供者
   [名稱] volsnap
  - 事件ID 14
   [預選賽] 49158
   2級
   任務0
   關鍵字 0x80000000000000
  - 創建時間
   [系統時間] 2015-01-24T21:23:54.296013300Z
   事件記錄ID 1063256374
   通路系統
   電腦X1-碳
   安全
- 事件數據
   \設備\HarddiskVolumeShadowCopy6
   d:
   d:
   000000000D0003000000000000E0006C00A0000000D0000C00200000000000000000000000000000000

更新2:

使用適用於 Windows 的擴充座在 Ubuntu 中安裝 4TB 硬碟時發生錯誤:

在 /media/daniel/DeskStar 安裝 /dev/sdc1 時發生錯誤:命令列 `mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,dmask=0077,fmask=0177 " "/dev/sdc1" "/media/daniel/DeskStar"' 以非零退出狀態退出13: ntfs_attr_pread_i: ntfs_pread 失敗: 輸入/輸出錯誤
無法讀取 NTFS $Bitmap:輸入/輸出錯誤
NTFS 要不是不一致,就是有硬體故障,就是
SoftRAID/FakeRAID 硬體。在第一種情況下,在 Windows 上執行 chkdsk /f
然後重新啟動進入 Windows 兩次。 /f參數的用法非常多
重要的!如果裝置是 SoftRAID/FakeRAID,則先啟動
它並在 /dev/mapper/ 目錄下安裝不同的設備,(例如
/dev/mapper/nvidia_eahaabcc1)。請參閱“dmraid”文檔
更多細節。

該驅動器未在 中列出fdisk -l,因此無法嘗試dd...我嘗試連接回 Windows:沒問題; Windows 磁碟屬性錯誤檢查工具未報告任何錯誤。

也:

嘗試dd在(問題?)外殼上使用不同的2TB硬碟:

  • 讀取無錯誤skip=0
  • 讀取無錯誤skip=SOMEWHERE_NEAR_MIDDLE_OF_DRIVE
  • 讀取驅動器末端或接近末端的磁區時發生錯誤:
丹尼爾@計算機:〜$ sudo dd bs = 512 if = / dev / sdb1 of =測試跳過= 3907026942計數= 1
dd: '/dev/sdb1': 無法跳過: 參數無效
0+0 筆記錄
0+0記錄輸出
複製 0 位元組 (0 B),0.000210598 秒,0.0 kB/秒

答案1

如果它是 USB 驅動器,並且與大小相關,則 USB 驅動器無法正確處理扇區寫入(也可能是讀取)請求。文件大小並不重要。原因是較大的檔案有「碎片」超出了可尋址邊界。

由於磁碟碎片,很難確認或否認這個假設,但您可以嘗試使用任何顯示磁碟碎片圖的工具。這應該顯示一個大磁碟,其開頭已填滿,並且沒有什麼超過某一點。不是最後,尤其是。

在 FAT32 磁碟上,您可以嘗試用小檔案填充磁碟,每個檔案大小為 8Kb,直到「可到達」區域被填滿並且磁碟變得不可寫入。但磁碟是 NTFS,但該方法並不是非常精確或確定。

如果可能的話,我會將磁碟掛載到 Linux live 發行版上。此時,您可以嘗試一次讀取磁碟一個磁區:

fdisk -l

會告訴您外部磁碟中有多少個 512 位元組區塊。然後

dd bs=512 if=/dev/sdc of=test skip=NNNNN count=1

將請求讀取磁區 NNNNN(基於一:-))。

如果這是 NNNNN 的限制問題,您將觀察到:

N=1         it works
N=MAX_NUM   it fails
N=MAX_NUM/2 it fails

所以你可以從經典開始二分演算法並確定關鍵扇區「C」所在的位置(C 之前的任何扇區都可讀,之後的任何扇區都不可讀取)。如果存在這樣的扇區,那麼您要么遇到了極其奇怪的硬體損壞,要么得到了您正在尋找的機箱有罪的證據。

更新 - 透過二等分找到邊界:一個例子

假設磁碟大小為 4TB,即 8,000,000,000 個磁區。我們知道扇區 1 是可讀的,而扇區 80 億則不可讀。設 READABLE 為 1,UNREADABLE 為 8。

 let TESTING be (READABLE + UNREADABLE)/2
 if sector TESTING is readable then READABLE becomes equal to TESTING
 else, UNREADABLE becomes equal to TESTING.
 Lather, rinse, repeat with the new values of (UN)READABLE.
 When two consecutive values of TESTING are obtained, that's your boundary.

讓我們想像一下,由於外殼中存在一些奇怪的錯誤,邊界位於扇區 3,141,592,653。

 first pass: testing = (1 + 8000000000)/2 = 4000000000.
 4,000,000,000 is unreadable, so replace 8,000,000,000 with 4,000,000,000
 second pass: testing (1 + 4M)/2 = 2M
 sector 2M is readable, so replace 1 with 2,000,000,000
 third pass: testing (2M + 4M)/2 = 3M
 sector 3,000,000,000 is readable
 fourth pass: testing (3M + 4M)/2 = 3,500,000,000 which is UNREADABLE
 fifth: (3 + 3.5) / 2 = 3,250,000,000 UNREADABLE
 ...

因此,READABLE 和 UNREADABLE 從兩個方向越來越接近未知的邊界。當它們足夠接近時,您甚至可以去嘗試中間的所有區域。

為了定位邊界,只需要讀取log2(max - min) = log2(4TB - 0) = log2(4TB) = log2(2 40 ) = 40 (實際上我認為可能是 42)個扇區。考慮到發生讀取錯誤時外殼上有 30 英吋的重置延遲,最多應為 20 分鐘;可能要短得多。

一旦有了邊界 B,就確認它在邊界上,您可以在 B 之前順序讀取大塊(這不會花費太長時間),也許每 GB 讀取一個兆位元組左右;然後對B 以外的磁區進行隨機取樣。到相同的磁碟。

但實際上,如果您確實發現類似邊界的行為,並用另一個外殼確認這一點沒有這樣的界限——好吧,我宣布此案結案。

答案2

好吧,我想我已經明白了:

  • 檢查dmesg日誌以驗證 USB 裝置支援的可尋址記憶體。
  • 如果硬碟超出了 USB 裝置的可尋址內存,Linux 似乎會阻止其使用。 (有幾個錯誤)。
  • 即使硬碟超出了 USB 裝置的可尋址內存,Windows 也允許使用該硬碟。 (直到達到地址限制。)(那麼問題是…Windows?)

相同的驅動器、不同的機櫃會導致兩種不同的報告容量:

  • 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB)
  • 3519069872 512-byte logical blocks:(1.80 TB/1.63 TiB)

完整詳情:

1.dmesg連接帶有 4TB 硬碟的「現代」塢站時:

[93507.922275] USB 1-1.2:使用 ehci-pci 的新高速 USB 裝置編號 17
[93508.087948] USB 1-1.2:找到新的 USB 設備,idVendor=067b,idProduct=2773
[93508.087959] USB 1-1.2:新 USB 裝置字串:Mfr=1、Product=2、SerialNumber=3
[93508.087964] USB 1-1.2:產品:ATAPI-6 橋控制器
[93508.087969] USB 1-1.2:製造商:Prolific Technology Inc.
[93508.087973] USB 1-1.2:序號:0123456789000000110
[93508.088621] USB 儲存 1-1.2:1.0: 偵測到 USB 大容量儲存設備
[93508.089092] scsi24:USB 儲存 1-1.2:1.0
[93509.087318] scsi 24:0:0:0:直接訪問多產 ATAPI-6 橋 C MPAO PQ:0 ANSI:0
[93509.087836] sd 24:0:0:0:附加的 scsi 通用 sg2 類型 0
[93509.088684] sd 24:0:0:0: [sdb] 非常大的設備。嘗試使用讀取容量(16)。
[93509.089837] sd 24:0:0:0: [sdb] 7814037168 512 位元組邏輯區塊:(4.00 TB/3.63 TiB)
[93509.090945] sd 24:0:0:0: [sdb] 寫入保護已關閉
[93509.090958] sd 24:0:0:0: [sdb] 模式感知: 03 00 00 00
[93509.092819] sd 24:0:0:0: [sdb] 找不到快取模式頁面
[93509.092832] sd 24:0:0:0: [sdb] 假設磁碟機快取:直寫
[93509.094321] sd 24:0:0:0: [sdb] 非常大的設備。嘗試使用讀取容量(16)。
[93509.100539] sd 24:0:0:0: [sdb] 找不到快取模式頁面
[93509.100545] sd 24:0:0:0: [sdb] 假設磁碟機快取:直寫
[93509.170090]sdb:sdb1
[93509.171931] sd 24:0:0:0: [sdb] 非常大的設備。嘗試使用讀取容量(16)。
[93509.176059] sd 24:0:0:0: [sdb] 找不到快取模式頁面
[93509.176078] sd 24:0:0:0: [sdb] 假設磁碟機快取:直寫
[93509.176086] sd 24:0:0:0: [sdb] 連接的 SCSI 磁碟

2.dmesg將舊機箱與 4TB 硬碟連接時:

[89939.561869] USB 1-1.2:使用 ehci-pci 的新高速 USB 裝置編號 14
[89939.656581] USB 1-1.2:找到新的 USB 設備,idVendor=152d,idProduct=2338
[89939.656592] USB 1-1.2:新的 USB 裝置字串:Mfr=1、Product=2、SerialNumber=5
[89939.656598] USB 1-1.2:產品:USB 至 ATA/ATAPI 橋接器
[89939.656602] USB 1-1.2:製造商:JMicron
[89939.656606] USB 1-1.2:序號:0613316A1498
[89939.658334] USB 儲存 1-1.2:1.0: 偵測到 USB 大容量儲存設備
[89939.658805] scsi20:USB 儲存 1-1.2:1.0
[89940.659147] scsi 20:0:0:0:直接存取 HGST HMS 5C4040ALE640 A580 PQ:0 ANSI:2 CCS
[89940.659959] sd 20:0:0:0:附加的 scsi 通用 sg2 類型 0
[89940.661373] sd 20:0:0:0: [sdb] 3519069872 512 位元組邏輯區塊:(1.80 TB/1.63 TiB)
[89940.662410] sd 20:0:0:0: [sdb] 寫入保護已關閉
[89940.662424] sd 20:0:0:0: [sdb] 模式感知: 00 38 00 00
[89940.663438] sd 20:0:0:0: [sdb] 請求快取資料失敗
[89940.663446] sd 20:0:0:0: [sdb] 假設磁碟機快取:直寫
[89940.667752] sd 20:0:0:0: [sdb] 請求快取資料失敗
[89940.667761] sd 20:0:0:0: [sdb] 假設磁碟機快取:直寫
[89940.684862] sdb:未知分區表
[89940.687887] sd 20:0:0:0: [sdb] 請求快取資料失敗
[89940.687893] sd 20:0:0:0: [sdb] 假設磁碟機快取:直寫
[89940.687897] sd 20:0:0:0: [sdb] 連接的 SCSI 磁碟

答案3

有幾種方法可以測試您的硬碟,下載一個名為“HDTune”的軟體,這是一個付費程序,但有一個試用版,可以持續 30 天,具有完整的功能。您可以用它來檢查壞扇區,檢查硬碟的健康狀況。無論如何,您有壞扇區,您可以嘗試使用硬碟再生器修復它,僱員下載我個人使用的。

確保除了要測試的硬碟之外沒有插入任何硬碟。它是可啟動的,您可以將其刻錄到 CD 或 USB 驅動器中。

接下來我建議檢查你的電纜。特別是在外部驅動器上,通常這些錯誤是由於電源不足引起的,請嘗試將其插入另一台電腦或更換電纜(如果有額外的電纜),然後查看是否仍然出現故障。

答案4

奇怪的是,它在 4GB 以上的檔案中產生錯誤。由於FS是NTFS,因此排除了該限制。

我懷疑這是緩衝區不同步錯誤。

試試這個:到 regedit -->HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\System 建立一個名為 的新 DWORD 值CopyFileBufferedSynchronousIo。將其值從預設 0 更改為 1。

其他需要考慮的事項:您是否有非常大的路徑和檔案名稱(例如超過 255 個字元)?您是否在作業系統上使用其他語言或預設區域/鍵盤或時間/日期格式設定以外的其他語言? (雖然聽起來很奇怪,但這些可以破壞窗口中足夠的東西)。或者,外部硬碟的控制器可能無法尋址超過 2.0 TB。 -編輯- 您可以發布當前使用的確切空間的螢幕截圖嗎?

相關內容