/ dev / sda는 원시 장치이고 / dev / sda1은 파티션 또는 가상 장치라는 것을 알고 있습니다.
그러나 왜 sda #가 일부 시간 또는 특정 시스템에서만 나타나는지에 대해서는 약간 혼란 스럽습니다. 이 문제가 발생하는 원인은 무엇입니까? 아마도 sda # 드라이브가 나타나지 않는 시간은 파티션되지 않은 시간입니까? 아니면 하드웨어에서 동일하지 않습니까?
왜 둘 다 마운트 할 수 있습니까? (때때로) 파티션이 마운트 가능한 파티션이 아니어야합니까?
당신이 줄 수있는 모든 자원이나 색상은 크게 감사하겠습니다. 미리 감사드립니다.
답변
최신 시스템에서 파티션 장치는 파티션이 실제로 존재하는 경우에만 나타납니다.
MBR 파티션 테이블이있는 디스크에서 파티션 번호 1-4는 파티션 테이블의 “기본”파티션이라고하는 4 개의 슬롯에 해당합니다. 그것들은 순차적으로 채워질 필요가 없으므로, 예를 들어, sda2는 있지만 sda1은 없을 수 있습니다. 파티션 번호 5 이상은 확장 파티션의 “논리 드라이브”에 해당하며 항상 순차적으로 번호가 매겨 지므로 sda5가 없어도 sda6을 가질 수 없습니다.
GPT 파티션 테이블이있는 디스크에는 더 많은 (일반적으로 최대 128 개) 파티션이있을 수 있으며 모두 “기본”입니다. 예를 들어 파티션이 sda9 인 디스크를 가질 수 있습니다.
디스크에 파티션 테이블이 없으면 물론 파티션 장치가 없습니다.
udev에서 관리하는 시스템이 아닌 정적 / dev를 사용하는 이전 시스템은 일반적으로 파티션의 실제 존재 여부에 관계없이 가능한 모든 파티션 번호에 대한 장치 노드를 갖습니다. 물론 존재하지 않는 파티션에 대한 장치 파일을 열려고하면 실패합니다.
파티셔닝을 포기하고 파일 시스템을 디스크에 직접 넣을 수 있습니다. 블록 장치를 마운트 할 때 파일 시스템 드라이버는 일반적으로 장치의 시작 부분으로부터 미리 결정된 오프셋에서 수퍼 블록을 찾고, 파티션의 시작이 디스크 자체의 시작이 아니기 때문에 파티션에있는 파일 시스템의 수퍼 블록 “전체 디스크”장치에서 생성 된 파일 시스템의 수퍼 블록과 다른 위치에 있습니다.
따라서 디스크에 파일 시스템 만 있으면서 파티션을 나누고 파일 시스템을 파티션에 만든 경우 이전 수퍼 블록이 여전히있을 수 있습니다 (예 : 첫 번째 파티션이 시작되기 전의 작은 간격). 따라서 디스크는 여전히 원시 디스크 장치와 파티션 장치 모두에 파일 시스템을 가지고있는 것으로 보입니다. 마운트하려는 파일 시스템 드라이버가 수퍼 블록을 찾을 때 파일 시스템을 찾을 수 있기 때문입니다.
그러나 두 파일 시스템이 디스크에서 겹치므로 실제로 마운트하여 사용하는 것이 안전하지 않습니다. 하나는 다른 사람들이 여유 공간이라고 생각하는 것에 중요한 부기 데이터를 가지고있을 수 있습니다. 그렇기 때문에 원시 디스크를 파티션 된 디스크로 변경하거나 그 반대로 또는 파티션에서 사용되는 파일 시스템 유형 등을 변경하려는 경우 블록 장치의 시작을 0으로 설정하고 원하지 않는 수퍼 블록을 제거하는 것이 좋습니다. .
답변
내가 아는 한 커널 /dev
이 전체 디스크 자체에 노드를 추가하는 것 외에도 scsi와 같은 (sata 포함) 버스에서 새 블록 장치를 감지 /dev/sda
하면 파티션 테이블이 있는지 확인하려고 시도합니다. . 읽을 수있는 파티션이있는 경우 물리적 파티션인지 논리적 파티션인지에 따라 번호가 지정된 파티션 노드를 만듭니다 (논리 파티션은 # 5에서 시작한다고 생각합니다).
디스크 노드는 있지만 파티션 노드는없는 경우 파티션이 감지되지 않았 음을 의미합니다. 물리적 장치를 마운트 할 수있는 인스턴스는 알지 못합니다. 파티션 테이블없이 물리적 장치에 직접 작성된 파일 시스템이 있음을 의미합니다. 단일 패리티 mount
가있는 경우 mount /dev/sda
명령을 의미로 해석 할 수 /dev/sda1
는 있지만 테스트 한 적이 없습니다.
답변
/ dev / sda-원시 장치
/ dev / sda1-파티션과 같은 ‘가상’장치.
한 가지 흥미로운 차이점은 장치에 파티션이있는 경우 (MBR 데이터 또는 sth가 같음) MBR 데이터가 장치의 파티션 외부에 있으므로 가상 장치에서 MBR 데이터를 읽을 수 없다는 것입니다. MBR은 장치의 첫 번째 섹터 (CHS : 0 0 1)에 있습니다. 장치 시작 후 1MiB에 첫 번째 파티션을 작성하는 것이 좋습니다.
MBR 데이터를 읽으려면 원시 장치 (/ dev / sda)를 사용해야합니다.
dd if=/dev/sda of=mbr.bin bs=512 count=1
답변
아, 파티션 테이블과 장치 이름. 그들과 혼동 할 준비를하십시오.
Compaq RAID 컨트롤러가있는 HP 서버가 있습니까? / dev / sda가 없습니다. / dev / ccsis에게 인사하십시오.
오래된 IDE 인터페이스를 가진 오래된 데스크탑 컴퓨터가 있습니까? / dev / sda가 없습니다. / dev / hda에게 인사하십시오.
최신 서버에 / dev / sda라고 표시되어 있지만 설치 후에는 거의 볼 수 없습니까? LVM에게 인사드립니다. OS 설치로 인해 / dev / sda가 LVM 물리 볼륨으로 만들어지고 그 안에 볼륨 그룹이 만들어지고 그 안에 논리 볼륨이 만들어집니다.
따라서 … / dev / sda1과 같은 것이 보이지 않으면 LVM 또는 이와 유사한 것을 사용하여 자체 “파티션”을 생성 한 것일 수 있습니다.
이 질문에 대답 했습니까?