최근에 nvme ssds가 내장 된 장치에 설치된 Linux를 지원하기 시작했습니다. 장치 파일에 드라이브 번호와 파티션 번호를 식별하는 숫자 외에 추가 번호가 있음을 알았습니다. IDE / SATA / SCSI 드라이브에는 일반적으로 드라이브 문자와 파티션 번호 만 있습니다.
예를 들면 다음과 같습니다. / dev / nvme0n1p2
n1 부분이 무엇인지 궁금해하고 약간의 검색 후에 nvme ‘namespace’를 식별하는 것처럼 보입니다. “NVMe 네임 스페이스는 논리 블록으로 포맷 될 수있는 비 휘발성 메모리 (NVM)의 양입니다.”
따라서 이것은 MBR 또는 GPT 파티션 테이블이 아닌 하드웨어 컨트롤러 수준에서 정의 된 파티션처럼 작동합니까? 네임 스페이스가 여러 물리적 NVMe SSD에 걸쳐있을 수 있습니까? 예를 들어 RAID 0과 유사하게 여러 ssd의 스토리지를 단일 논리적 네임 스페이스로 풀링하는 네임 스페이스를 만들 수 있습니까?
파티션 테이블이나 LVM 또는 여러 볼륨 (ZFS, Btrfs 등)을 관리 할 수있는 파일 시스템을 사용하여 아직 달성 할 수없는 NVME 네임 스페이스로 무엇을 하시겠습니까?
또한 네임 스페이스 번호 매기기가 0 대신 1에서 시작하는 것처럼 보이는 이유는 무엇입니까? NVME가 네임 스페이스 번호를 낮은 수준으로 추적하는 방법과 관련이 있습니까 (예 : 파티션 번호 표준이 설정 되었기 때문에 파티션도 0이 아닌 1부터 시작합니다. 따라서 Linux 커널은 파티션 번호 만 사용합니다) 디스크에 저장되어 있습니다-nvme가 같은 방식으로 작동한다고 생각합니다.)
답변
NVM Express 및 관련 표준에서 컨트롤러는 하나 이상의 네임 스페이스로 분할 된 스토리지에 액세스 할 수 있습니다. 네임 스페이스 는 공간이 있거나 (기본 스토리지가 씬 프로비저닝을 지원하는 경우) 컨트롤러 를 통해 생성 및 삭제 될 수 있으며 여러 컨트롤러가 공유 네임 스페이스에 대한 액세스를 제공 할 수 있습니다. 내가 말할 수있는 한 기본 스토리지가 구성되는 방식은 표준에 의해 지정되지 않았습니다.
그러나 일반적인 NVMe SSD는 각각 PCI Express 포트에 연결된 자체 스토리지 및 컨트롤러를 제공하므로 액세스 포인트가 네임 스페이스 위의 컨트롤러이므로 네임 스페이스가 여러 컨트롤러를 그룹화 할 수 없습니다 (여러 컨트롤러 가 공유 네임 스페이스에 대한 액세스를 제공합니다). 네임 스페이스는 엔터프라이즈 스토리지 (SAN 등)에서 사용되는 SCSI LUN과 유사한 것으로 생각하는 것이 좋습니다.
네임 스페이스 번호 매기기는 1부터 시작합니다. 이것이 컨트롤러 별 네임 스페이스 식별자의 작동 방식이기 때문입니다. 네임 스페이스에는 더 긴 전역 고유 식별자가 있습니다.
nvme
명령을 사용하여 네임 스페이스를 조작 할 수 있습니다.이 명령은 다음을 포함한 저수준 NVMe 기능을 지원합니다.
- 낮은 수준의 형식을 수행하고 다양한 기능을 사용할 수있는 서식 (보안 지우기, LBA 형식 선택 …);
- 연결 및 분리-컨트롤러를 네임 스페이스에 연결하거나 분리 할 수 있습니다 (컨트롤러가 지원하고 네임 스페이스에서 허용하는 경우).
연결 및 분리는 랩탑 또는 데스크탑 NVMe 드라이브에서 볼 수있는 것이 아닙니다. Dell EMC에서 판매 한 것과 같은 NVMe 스토리지 베이와 함께 사용하면 과거의 iSCSI SAN을 대체 할 수 있습니다.
자세한 내용 은 NVM Express 표준 (상대적으로 읽기 쉬운) 과이 NVM Express 자습서 프레젠테이션 을 참조하십시오.