基本的なハードウェア情報:
問題のハードドライブは、Seagate BarraCuda 4TB (モデル番号: ST4000DM004) です。詳細については、hdparm -I
末尾の付録の出力を参照してください。
問題とテストの説明:
表面的には、書き込み速度がそれよりも遅いのに、ディスクに書き込むデータをキャッシュしているだけの問題のように見えます。しかし、この場合、事態はそれほど単純ではないようです。
ファイルのコピー (NTFS ファイル システム上):
かなり大量のデータを書き込むと、ドライブのパフォーマンスが突然急激に低下します。これも通常、ファイルをRAMにキャッシュするだけで、その後しばらくディスクが動作します。ただし、ここでは、ファイルを監視しているときに/proc/meminfo
(Ubuntuで)、観察された動作はこれをサポートしていないようです。後データ(大きなファイルまたは複数の小さなファイル)を書き込み、を呼び出すとsync
、「ダーティ」メモリの量はしばらく減少し続け、その後ほぼ完全に停止します。とても書き込み速度が遅くなり、最終的には速度が上がることもあります。残っているデータの量に応じて、この動作が繰り返されることがあります。書き込み速度が低下すると、デバイスの読み取りも非常に遅くなり、sync
「低速モード」で書き込みが完了した後も、しばらくはその状態が続きます。
これらの初期テストは、Ubuntu 21.10 と Windows 10 の両方から実行され、同様の動作が見られました。
Windows に関する追加情報:
コピー操作の完了後もディスクが遅いままで、ディスクからファイルを読み取ろうとすると (たとえば、遅延が続くビデオの再生)、リソース モニターとタスク マネージャーの両方で、デバイスのディスク使用率が高い (100% またはそれに近い) と表示されましたが、実際に表示される速度は 1 MB/秒未満でした (OS も、ある時点で完全にフリーズしましたが、これは厳密には関連しているかどうかはわかりません)。
ディスクベンチマーク:
これがファイル システムによるものか、ハードウェア自体によるものかを調べるために、ユーティリティを使用してデバイスのベンチマークを実行しましたgnome-disks
。ここで示すベンチマークの結果は、上で説明した内容の典型例です。読み取り速度と書き込み速度は、ある時点以降、急激に低下してほとんど存在しなくなり、その後回復します (青と赤は、ディスクの外側から内側に向かって合計 1000 か所で取得した各サンプルでの読み取り速度と書き込み速度です。緑の点と線は、他の点とは別のアクセス時間ベンチマークに対応しています)。
私の理解では、ベンチマーク ツールは書き込みキャッシュなどの要素を排除することに注意してください。さらに、/proc/meminfo
低速期間中にキャッシュに保持されている書き込み待ちのデータがほとんどまたはまったくないことが示されました。その完全な内容は付録で確認できます。
ベンチマークで書き込みを無効にすると、そのような現象は発生しませんが、ディスクの内部セクションでは異常な突然の速度低下が発生するようです。
(減少箇所はない(経過時間に依存するのではなく、実際にはディスク上の物理的な場所に依存します。これは、異なるサンプル番号を持つ他のベンチマークで同じ場所でカットオフが発生することで示されます。)
システム内の他の、おそらく正常なハードディスクで同等のベンチマークを実行すると、次のような予想どおりの通常の結果が得られます。
結論 / 質問:
このことから、この問題はおそらくハードウェアまたはファームウェアの障害によって発生したものと思われますが、私が見落としている点がいくつもあるかもしれません。
提示された現象の原因は何が考えられますか? 問題をさらに診断するには、次にどのような手順を踏む必要がありますか? ご協力いただければ幸いです。
付録:
詳細なハードウェア情報( の出力によるhdparm -I
):
/dev/sdb:
ATA device, with non-removable media
Model Number: ST4000DM004-2CV104
Serial Number: ZFN3J8RH
Firmware Revision: 0001
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Used: unknown (minor revision code 0x006d)
Supported: 10 9 8 7 6 5
Likely used: 10
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 7814037168
Logical Sector size: 512 bytes
Physical Sector size: 4096 bytes
Logical Sector-0 offset: 0 bytes
device size with M = 1024*1024: 3815447 MBytes
device size with M = 1000*1000: 4000787 MBytes (4000 GB)
cache/buffer size = unknown
Form Factor: 3.5 inch
Nominal Media Rotation Rate: 5425
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
Standby timer values: spec'd by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = 16
Recommended acoustic management value: 208, current value: 208
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* DOWNLOAD_MICROCODE
Power-Up In Standby feature set
* SET_FEATURES required to spinup after power up
SET_MAX security extension
* 48-bit Address feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* SMART error logging
* SMART self-test
* General Purpose Logging feature set
* WRITE_{DMA|MULTIPLE}_FUA_EXT
* 64-bit World wide name
Write-Read-Verify feature set
* WRITE_UNCORRECTABLE_EXT command
* {READ,WRITE}_DMA_EXT_GPL commands
* Segmented DOWNLOAD_MICROCODE
* unknown 119[6]
* unknown 119[7]
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Gen3 signaling speed (6.0Gb/s)
* Native Command Queueing (NCQ)
* Host-initiated interface power management
* Phy event counters
* READ_LOG_DMA_EXT equivalent to READ_LOG_EXT
* DMA Setup Auto-Activate optimization
Device-initiated interface power management
* Software settings preservation
unknown 78[7]
* SMART Command Transport (SCT) feature set
* SCT Write Same (AC2)
* SCT Data Tables (AC5)
unknown 206[7]
unknown 206[12] (vendor specific)
unknown 206[13] (vendor specific)
* DOWNLOAD MICROCODE DMA command
Security:
Master password revision code = 65534
supported
not enabled
not locked
frozen
not expired: security count
supported: enhanced erase
490min for SECURITY ERASE UNIT. 490min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5000c500c6a79fae
NAA : 5
IEEE OUI : 000c50
Unique ID : 0c6a79fae
Checksum: correct
/proc/meminfo
最初のベンチマーク中、読み取り/書き込み速度が遅いとき:
MemTotal: 16323712 kB
MemFree: 9894056 kB
MemAvailable: 12815716 kB
Buffers: 138380 kB
Cached: 3038420 kB
SwapCached: 0 kB
Active: 1533040 kB
Inactive: 4396560 kB
Active(anon): 2960 kB
Inactive(anon): 2817480 kB
Active(file): 1530080 kB
Inactive(file): 1579080 kB
Unevictable: 32 kB
Mlocked: 32 kB
SwapTotal: 17577980 kB
SwapFree: 17577980 kB
Dirty: 176 kB
Writeback: 0 kB
AnonPages: 2752844 kB
Mapped: 694816 kB
Shmem: 73200 kB
KReclaimable: 137092 kB
Slab: 260112 kB
SReclaimable: 137092 kB
SUnreclaim: 123020 kB
KernelStack: 13872 kB
PageTables: 33292 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 25739836 kB
Committed_AS: 9749696 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 76616 kB
VmallocChunk: 0 kB
Percpu: 8128 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
FileHugePages: 0 kB
FilePmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 512904 kB
DirectMap2M: 7813120 kB
DirectMap1G: 8388608 kB
答え1
Seagate ST4000DM004はスマーレディスク表面にデータを書き込むのに時間がかかります。つまり、1バイトを書き込むために、複数のバイトを書き換える必要があるかもしれません。ギガバイト。
「通常の使用パターン」(HDDベンダーが定義したもので、ユーザーによる定義ではありません)では、これはあまり問題にはなりません。データはCMディスクの外側の縁にキャッシュします。その後、ディスクの使用量が減ると、ファームウェアは日付を SMR バンドの最終位置に移動します。
一度に大量のデータを書き込む場合、この CMR キャッシュが使い果たされ、SMR バンドへの I/O プロセスを引き継ぐ必要があります。これは桁違いに遅くなります。
注意: これは RAM キャッシュではありません。これはディスク サーフェスの小さな部分であり、CMR (つまり、重複トラックなし) で書き込まれ、SMR の脅威がユーザーに目立たないようにします。
答え2
ハード ドライブはトラック上のセクターにデータを書き込みますが、互いに干渉せずにトラックをどれだけ近づけて配置できるかには限界があります。
ハードドライブベンダーは、従来のランダム書き込みアクセスモデルを放棄し、大きなデータ領域を順番に書き込むことで、隣接するトラックが互いに干渉する問題を軽減できることに気付きました。書き込まれた各トラックは、前のトラックとわずかに重なります。つまり、プラッターあたりのデータ量が増え、容量が増加し、コストが削減されます。これは「シングル磁気記録」として知られています(スマーレ(屋根板の重なり方に類似)
もちろん、OSに大きな変更が必要なハードドライブは売れ行きがよくないだろう。そこで、翻訳ファームウェアとCMキャッシュ領域をなくし、SMR ドライブが OS にとって通常のドライブのように見えるようにします。これは、SSD ベンダーが既に行っていることとそれほど変わりません。
ただし、違いはフラッシュが高速であるため、変換レイヤーがあっても、SSD は HDD よりもはるかに高速であるということです。一方、SMR HDD は、CMR キャッシュ領域が不足し、シングルの書き換えの低速プロセスでドライブが新しい書き込み操作をブロックしなければならないときにパフォーマンスが急激に低下します。
残念ながら、残りの HDD ベンダー 3 社は、この技術をリリースする方法として、人々に知らせずに製品ラインナップに組み込むことを決定しました。そのため、ストレージ ユニットあたりのコストがわずかに下がる代わりにパフォーマンスの低下を受け入れるかどうかを意識的に選択できるのではなく、人々は知らないうちにこれらのドライブを受け取ってしまいました。メディアからの圧力を受けて、最終的にどのドライブ モデルが SMR であるかに関する情報はリリースされましたが、顧客にはまだ明らかにされていません。
これを実行したのは大手 HDD ベンダー 3 社すべてであるため、犯人をボイコットするわけにはいかないので、今後購入するすべてのハード ドライブを注意深くチェックするしか選択肢はないようです。
興味深いことに、SMR の元々の目的は容量であったにもかかわらず、最大のドライブは依然として CMR であることが多く、SMR は主に 1 桁台前半のテラバイトのドライブで見られるようです。