Linux에서 연결된 블록 장치를 얻는 방법

Linux에서 연결된 블록 장치를 얻는 방법

이를 위해 어떤 API/인터페이스를 사용할 수 있나요? 나는 sysfs를 원한다고 생각하지만, 상황에 따라커널 문서가 존재합니다, 인터페이스는 "구현 세부 사항을 사용할 수 없습니다."로 요약될 수 있으며, 사용할 수 있는 내용은 완전히 문서화되어 있지 않습니다.

특히 연결된 것을 찾고 싶습니다.막힌장치(분명히 구현 세부 사항으로 그 존재를 알 수는 없나요?), 블록 장치에 어떤 속성이 있는지(버전 전반에 걸쳐 기존 속성을 사용할 수 있는지) 및 그 내용을 알고 싶습니다.

정말 도움이 되는 일이에요사용sysfs이지만 완전히 문서화되지 않았습니다.

답변1

이 질문에 아무도 답변하지 않았지만 저는 해결책을 찾았습니다. 답변하자면 다음과 같습니다.

/sys/class/block/*사용 가능한 블록 장치(심볼릭 링크)가 포함된 을 사용하는 것이 가장 올바른 방법이라고 생각합니다 .

또한 무시해야 하며 partition파일 존재로 식별할 수 있는 자체 파티션도 있습니다. 이 파일은 문서화되지 않았으므로 YMMV입니다.

나중에 필요한 경우 partition파일이 있는 디렉터리를 찾아 특정 장치 파티션을 얻을 수 있습니다. 예를 들어 /sys/devices/**/sda/*/partition. 파일에는 파티션도 포함되어 있습니다.숫자. 이렇게 하면 장치/파티션 커널 명명 체계에 대해 아무것도 알 필요가 없으므로 권장합니다.

적어도 /sys/block내 시스템에는 파티션이 없지만 이에 의존해서는 안 됩니다.

블록 장치를 사용할 수 있게 되면 이를 얻기 위해 무언가를 할 수 있습니다.장치 파일major:minor문서화되지 않은 파일을 읽고 일치 dev하는 장치를 간단히 검색할 수 있습니다 /dev.

크기를 원할 경우 항상 512를 size포함하는 문서화되지 않은 파일을 사용할 수 있습니다 device size / 512. 파티션에도 이런 기능이 있습니다. 파티션에는 On Disk start라는 하나의 필드 도 있습니다 . partition start / 512이것들은 "기록"되어 있습니다.이것잊혀진 패치는 이 파일이 약 20년 동안 안정적이고 문서화되지 않았음을 의미합니다. 그래서..

관련 정보