기본 하드웨어 정보:
문제의 하드 드라이브는 Seagate BarraCuda 4TB(모델 번호: ST4000DM004)입니다. 자세한 내용은 hdparm -I
마지막 부록 중 의 출력을 참조하세요 .
문제 및 테스트에 대한 설명:
표면적으로 문제는 쓰기 속도가 그보다 느린데 디스크에 쓸 데이터를 캐싱하는 것과 비슷해 보입니다. 그러나 이번 경우에는 상황이 그리 간단해 보이지 않습니다.
파일 복사(NTFS 파일 시스템):
적당히 많은 양의 데이터를 쓸 때 드라이브 성능이 갑자기 급격하게 떨어집니다. 다시 말하지만 일반적으로 이는 RAM에 파일을 캐싱한 다음 잠시 후에 디스크가 작동하는 것처럼 간단합니다. 그러나 여기에서 /proc/meminfo
(Ubuntu에서) 파일을 모니터링할 때 관찰된 동작은 이를 지원하지 않는 것 같습니다. 심지어~ 후에데이터(큰 파일 또는 여러 개의 작은 파일)를 쓰고 를 호출하면 sync
"더티" 메모리의 양이 잠시 동안 계속 감소한 다음 거의 완전히 정지됩니다. 계속 줄어들거에요매우천천히, 때로는 결국 속도가 빨라질 때까지. 남은 데이터 양에 따라 이 작업이 반복될 수 있습니다. 쓰기 속도가 감소하면 장치 읽기도 매우 느려지며, sync
"느린 모드"에서 완료한 후에도 한동안 계속 느려집니다 .
이러한 초기 테스트는 Ubuntu 21.10과 Windows 10 모두에서 유사한 동작으로 수행되었습니다.
Windows에 대한 추가 설명:
복사 작업을 완료한 후에도 디스크 속도가 느려지고 디스크에서 파일을 읽으려고 하면(예: 계속 지연되는 비디오 재생) 리소스 모니터와 작업 관리자 모두 장치의 디스크 사용량이 높은 비율(100% 또는 거의) 표시된 실제 속도는 1MB/s 미만이었습니다. (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는 다음을 사용합니다.SMR디스크 표면에 데이터를 기록합니다. 즉, 단일 바이트를 쓰려면 여러 바이트를 다시 써야 할 수도 있습니다.기가바이트.
"일반적인 사용 패턴"(사용자가 아닌 HDD 공급업체가 지정한 대로)에서는 이는 큰 문제를 일으키지 않습니다.CMR디스크 바깥쪽 가장자리에 캐시가 있습니다. 나중에 디스크 사용량이 줄어들면 펌웨어는 날짜를 SMR 밴드의 최종 위치로 이동합니다.
한 번에 더 많은 양의 데이터를 쓸 때 이 CMR 캐시는 고갈되고 SMR 대역에 대한 I/O 프로세스가 대신해야 합니다. 이는 수십 배로 느려집니다.
참고 사항: 이것은 RAM 캐시가 아닙니다. 이는 디스크 표면의 작은 부분으로, 사용자가 SMR 공포를 덜 볼 수 있도록 CMR(즉, 겹치는 트랙 없이)에 기록됩니다.
답변2
하드 드라이브는 트랙의 섹터에 데이터를 기록하지만, 서로 간섭하지 않고 트랙을 얼마나 가깝게 배치할 수 있는지에는 제한이 있습니다.
하드 드라이브 공급업체는 기존의 무작위 쓰기 액세스 모델을 포기하고 대규모 데이터 영역을 순차적으로 쓰면 인접한 트랙이 서로 간섭하는 문제를 완화할 수 있다는 것을 깨달았습니다. 작성된 각 트랙은 마지막 트랙과 약간 겹칩니다. 이는 플래터당 더 많은 데이터를 의미하며 이는 더 높은 용량 및/또는 더 낮은 비용을 의미합니다. 이것은 "슁글드 자기 녹음"(Singled Magnetic Recording)으로 알려져 있습니다.SMR), 지붕 널판이 겹치는 방식과 유사합니다.
물론, OS에 큰 변화가 필요한 하드 드라이브는 잘 팔리지 않을 것입니다. 그래서 그들은 번역 펌웨어와CMRSMR 드라이브가 OS에 일반 드라이브처럼 보이도록 캐시 영역입니다. 이는 SSD 공급업체가 이미 수행하는 작업과 크게 다르지 않습니다.
차이점은 플래시가 빠르기 때문에 변환 레이어를 사용해도 SSD가 HDD보다 훨씬 빠르다는 것입니다. 반면 SMR HDD는 CMR 캐시 영역이 부족해지면 벼랑에서 떨어지는 성능을 가지고 있으며 드라이브는 슁글을 다시 쓰는 느린 프로세스에서 새로운 쓰기 작업을 차단해야 합니다.
불행하게도 나머지 HDD 공급업체 세 곳 모두 이 기술을 사람들에게 알리지 않고 제품 라인업에 포함시키는 방식으로 이 기술을 출시하기로 결정했습니다. 따라서 사람들은 스토리지 단위당 비용을 약간 낮추는 대가로 성능 절벽을 받아들일지 여부를 의식적으로 선택할 수 있는 대신 자신도 모르게 이러한 드라이브를 받았습니다. 언론의 압력을 받아 결국 어떤 드라이브 모델이 SMR인지에 대한 정보를 공개했지만 여전히 고객에게 명확하게 알려지지 않았습니다.
이런 일을 한 것이 주요 HDD 공급업체 세 곳 모두였기 때문에 범인만 보이콧할 수는 없으므로 앞으로 구입하는 모든 하드 드라이브를 주의 깊게 확인하는 것이 유일한 선택인 것 같습니다.
흥미롭게도 SMR의 원래 동기가 용량임에도 불구하고 가장 큰 드라이브는 여전히 CMR인 경우가 많으며 SMR은 주로 낮은 한 자릿수 테라바이트의 드라이브에서 볼 수 있습니다.