Windows 10의 NVMe 명령어들

드디어 나온 Windows 10의 NVM Express Admin Command 명령어들에 대해서 알아보자. Windows 10에서 제공하는 IOCTL 코드는 IOCTL_STORAGE_QUERY_PROPERTY와 IOCTL_STORAGE_PROTOCOL_COMMAND 두 가지다. 그렇다면 후자를 사용하면 모든 명령어에 대한 일반적인 구현이 가능할 거라 생각할 거다. 아니다. 후자는 지정된 “Vendor specific” 명령어만 사용할 수 있다. 따라서 우리가 알고 있는 일반적인 명령어는 다음의 세 가지만 사용할 수 있는 거다. 만약 다른 명령에 […]

CrystalDiskInfo 개발자가 얘기하는 NVMe – 한국어 번역 & 해설

12월 26일에 삿포로에서 C++ 스터디가 열렸습니다. 발표자 중에 CrystalDiskInfo 개발자 분이 있어서, 실례를 무릅쓰고 번역/배포 허가를 받아서 번역해보았습니다. 따라서 본 글을 퍼가서 다른 곳에 게시하실 경우, 원작자 분께 허가를 받아야 합니다. NVMe와 관련해서 잘 나오지 않는, 소프트웨어 측면에서의 NVMe를 볼 수 있는 좋은 프리젠테이션입니다. (1페이지) 크립톤 퓨처 미디어는 삿포로시 주오구에 있습니다. 한국에는 보컬로이드를 만든 회사로 […]

물리 디스크와 통신하기 – 2. 올바른 핸들 얻어오기

지난번 글에서는 간단하게 ‘C드라이브의 부모 저장장치’, ‘운영체제의 0번 저장장치’ 정도로 표현했지만 실제로 통신을 하기 위해서는 해당 드라이버에 대한 올바른 핸들이 필요하다. 명령어 셋 유형에 따라 올바른 핸들을 구해보자. ★ 드라이브의 부모 저장장치 \\.\★: 형식으로 경로를 지정해 CreateFile로 파일을 연 뒤, IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS 컨트롤 코드로 저장장치 번호를 알아낸다. 이 뒤로는 명령어 셋을 검사해 2번이나 3번 항목에 따르면 […]

물리 디스크와 통신하기(NVM express, ATA, SAT, SCSI)

들어가기 전에 미리 이야기하지만, 리눅스에 대해서는 이미 수많은 문서가 있으므로 이 시리즈에서는 윈도에 대해서만 다룬다. 유저 레벨 프로그래밍은 당연하게도 윈도에 대한 문서가 더 많다. 그러나 특이하게도 저수준 프로그래밍으로 들어가면 윈도 방면 문서는 거의 존재가 사라지는 수준이다. 리눅스 관련해서는 굳이 이미 있는 글들과 별 차이가 없을 글을 올릴 가치가 느껴지지 않기 때문에 생략한다. 프로그래밍을 하다 보면 […]

나래온 NVMe 툴 소개

나래온 NVMe 툴은 윈도에서 NVMe 명령어 체계를 사용한 제품들의 SMART 정보를 읽어와서 확인할 수 있는 프로그램입니다. 다운로드: https://www.naraeon.net/latest-nvme-tools/ 기본 탭에서는 모델과 펌웨어 시리얼, 현재 속도 등 간단하게 확인할 때 필요한 것들만 모아두었습니다. 드라이버 탭에서는 드라이버가 정상적으로 설치되었는지 확인하기 위한 내용들이 준비되어 있습니다. 장치 관리자에서 복잡하게 들어가지 않고도 간단하게 날짜/버전/제공자 등 모든 내용을 확인할 수 있습니다. 치명적 […]

Intel 750 시리즈의 NVMe 명령어들

이번에는 Intel 750 시리즈의 NVM Express Admin Command 명령어들에 대해서 알아보자. Passthrough 지난번 글에서 한 달이 지난 2015년 12월에도 공식적으로 윈도에 구현된 NVMe Passthrough 커맨드는 없다. 따라서 Intel 750 시리즈의 경우는 Admin Command Passthrough를 nvmewin에서 지원하는 방식과 비슷한 방식으로 구현한다. nvmewin에서 사용하는 방식에 대해서는 이 문서를 참고하면 좋다. 위의 글에 따르면 \\.\scsi 주소가 필요하다. 그러므로 우리가 […]