지금까지 cat /sys/block/<devicename>/queue/rotational
내 드라이브가 SSD인지 HDD인지 알려줄 것입니다. SMR(Singled Magnetic Recording)을 사용하는지 알아내는 것과 비슷한 것이 있습니까?
답변1
확신할 수 있는 유일한 방법은 충분한 임의 쓰기 액세스가 가능한 드라이브를 벤치마킹하는 것입니다. "드라이브 관리형" SMR은 호스트 컴퓨터에 완전히 투명해야 하며 때로는 제조업체가 SMR을 언급하지 않는 경우도 있습니다. 그러나 "투명"은 성능(또는 대기 시간)이 아닌 논리적 동작에 관한 것입니다.
나는 다음을 제안하고 싶습니다. fio
다음과 같이 실행합니다 ( cd
다음은 현재 작업 디렉터리에 벤치마크 테스트 파일을 생성하므로 먼저 테스트할 디스크의 디렉터리로 이동).
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randwrite --size=500g --io_size=1500g --blocksize=10m --ioengine=libaio --iodepth=1 --direct=1 --numjobs=1 --runtime=3600 --group_reporting
이 예에서는 의사 난수 데이터로 채워진 500GB 파일을 생성한 다음 그 안에서 임의의 위치를 선택하고 10MB의 의사 난수 데이터를 파일에 씁니다. 그런 다음 최대 1시간 동안 또는 1.5TB가 기록될 때까지 임의 위치 선택 및 쓰기를 반복합니다. 다음과 같은 ETA 줄을 확인하세요.
Jobs: 1 (f=1): [w(1)] [20.0% done] [0KB/40960KB/0KB /s] [0/4/0 iops] [eta 00m:28s]
위 명령은 5초마다 새로운 ETA 줄을 내보냅니다. 위의 슬래시( 40960KB
및 4
) 사이에 있는 현재 처리량과 IOPS를 살펴보세요. SMR 드라이브의 경우 먼저 좋은 값(100MB+/s 및 10+ IOPS)을 얻어야 하지만 테스트가 진행되고 SMR 드라이브의 내부 캐시가 가득 차면(보통 약 20GB) 성능이 전반적으로 향상됩니다. 때로는 시작 속도에 가까울 때도 있고, 때로는 0MB/s 및 0-1 IOPS 정도의 오랜 시간이 걸릴 수도 있습니다. 하지만 오류가 있어서는 안 됩니다.
SMR 드라이브를 사용하거나 벤치마킹하면 속도가 느려질 수 있다는 점에 유의하세요! 일부 드라이브는 TRIM 명령을 지원하며 fstrim
드라이브 속도를 원래대로 되돌리는 데 도움이 될 수 있습니다.
TRIM이 없더라도 잘 작동하는 "드라이브 관리형" SMR은 충분히 오랫동안 공회전 상태를 유지하면 원래 속도를 얻습니다. 내부 캐시가 SMR 영역으로 완전히 플러시되기 전에 디스크가 절전 모드로 전환되면 디스크 회전 감소(전원 관리)를 비활성화해야 할 수도 있습니다. 대안으로 가끔씩 조금씩 글을 쓰는 룩을 설정할 수도 있습니다. 다음과 같은 단일 라이너라도
while true; do date >> timestamps.txt; sleep 5m; done
테스트할 장치에 저장된 디렉터리에서는 문제가 없으며 완료되면 Ctrl+C를 눌러 끝내면 됩니다. 제가 사용한 Seagate SMR 드라이브의 경우 캐시를 완전히 플러시하는 데 약 30분 정도 걸리는 것 같습니다. 이 시간 동안 컴퓨터에서 드라이브에 아무 것도 쓰지 않았는데도 드라이브에서 데이터를 쓰는 것처럼 들립니다. 안타깝게도 드라이브에서 플러시 상태를 쿼리하는 방법을 모르겠습니다. 운전 소리를 듣거나 충분히 오래 기다리십시오.
예: Seagate SMR 드라이브는 SMR 플러시 도중에 기꺼이 절전 모드로 전환하고(아마도 사용자에게 완전히 투명한 척) 나중에 다시 깨어나면 플러시를 계속하는 것 같습니다. 이는 전원이 차단되더라도 데이터 손상이 발생하지 않는다는 점에서 투명합니다. 그러나 때때로 큰 버스트를 기록하고 나중에 즉시 드라이브를 절전 모드로 전환하면 성능이 매우 저하됩니다(예: 이러한 드라이브를 백업이 논리적으로 완료된 후 즉시 마운트 해제되고 연결이 끊어지는 백업 드라이브로 사용). 다음에 다른 백업을 수행하면 새 백업이 이전 백업의 SMR 플러시와 경쟁하게 되어 성능이 매우 저하됩니다. 이러한 드라이브에 항상 전원을 공급하고 한 번에 최대 10GB만 쓸 경우 일반 PMR HDD 드라이브만큼 빠르거나 빠릅니다.
답변2
현대 버전sg3_utils드라이브를 조사하고 SMR 구성에 대해 묻는 sg_rep_zones 명령이 있습니다. 배포판에 최신 버전이 없으면 수동으로 빌드해야 할 수도 있습니다.
드라이브가 있는지 확실하게 알 수 있습니다.~이다SMR.
그러나 명령이 를 보고하더라도 Report zones command not supported
드라이브가그렇지 않다SMR. 일부 SMR 드라이브는 "드라이브 관리형" SMR을 사용합니다. 즉, 드라이브가 모든 것을 마술처럼 처리하므로 걱정할 필요가 없습니다. 이 경우 반드시 보고 영역 명령을 지원하지는 않습니다.
시도해 볼 또 다른 방법 - 드라이브가 "unmap" 또는 "trim" 명령(sg3_utils의 일부인 sg_unmap)을 지원하는지 확인하십시오. SMR이 아닌 드라이브는 해당 명령을 지원하지 않을 것입니다(그러나 모든 SMR 드라이브가 이를 지원하는 것은 아닙니다).