지금까지 나는 이것이 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 드라이브를 사용하거나 벤치마킹하면 속도가 느려집니다! 일부 드라이브는 fstrim
드라이브 속도를 원래 속도로 복원하는 데 도움이 될 수 있는 TRIM 명령을 지원합니다 .
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 드라이브가 이를 지원하는 것은 아닙니다).