/dev/sdxx 노드는 무엇입니까?

/dev/sdxx 노드는 무엇입니까?

TLDP의 이 이미지는 훌륭합니다. 이는 파일 시스템에 대한 실제 읽기, 쓰기, 열기 액세스가 사용자 공간에 제공되기 전에 블록이 가상 파일 시스템에 매핑됨을 나타냅니다.

여기에 이미지 설명을 입력하세요

그리고위키피디아서로 다른 계층에 3가지 버전의 파일 시스템이 있다고 가정해 보겠습니다.

따라서 표준(sd 노드)은 물리적 노드를 의미합니까, 아니면좌심실 용적매핑된 가상 파일 시스템?

아니면 단지 파티션을 참조하는 것일까요? (즉, 파티션에 직접 쓰면 파일 시스템 드라이버를 건너뛰게 되며 파일 시스템 드라이버가 없으면 파일 자체와 상호 작용할 수도 없습니다.)

그렇다면 파일 시스템 드라이버/또는 파일 시스템을 나타내는 장치는 무엇입니까? 아니면... 모르겠어요... 누군가 나를 커널 디스크 사용을 설명하는 내용으로 연결해 줄 수 있습니까?

답변1

너무 길어요.: /dev/sdaX파티션을 나타냅니다. 귀하의 근본적인 오해는 파일 시스템과 파티션의 차이라고 생각합니다. 파티셔닝은 매우 간단합니다. 기본적으로 파티션은 디스크 시작 부분의 파티션 테이블에 정의된 디스크의 일부일 뿐입니다. 그러나 파일 시스템은 더 발전된 것입니다. 파일 시스템은 본질적으로 커널(특히 파일 시스템 드라이버)이 읽고 쓸 수 있는 파일을 추적하는 데이터 구조입니다. 기술적으로 이 데이터 구조는 디스크의 어느 곳에나 배치될 수 있지만 fs 데이터 구조의 시작은 파티션의 시작과 동일할 것으로 예상됩니다.

귀하의 질문에서 LVM을 언급하셨습니다. 이것은 고급 주제이므로 지금은 잊어버리도록 하겠습니다(LVM은 마지막에 설명하겠습니다).

0만 있는 100GB 하드 드라이브가 있다고 가정해 보겠습니다. 이 경우 100GB 파일이 있고 /dev/sda(예를 들어 du특수 블록이기 때문에 길이가 0으로 보고되지만) 0만 포함합니다. /dev/sda커널이 읽기 및 쓰기를 위해 원시 장치 콘텐츠를 사용자 공간에 노출하는 방법입니다. 이것이 바로 디스크와 동일한 양의 데이터와 디스크와 동일한 콘텐츠를 갖는 이유입니다. 다섯 번째 비트 /dev/sda가 0 대신 1로 바뀌면 커널은 일치하도록 물리적 드라이브의 다섯 번째 비트를 뒤집습니다. 제공한 다이어그램에서 이 쓰기는 시스템 호출 인터페이스를 통해 커널로 이동한 다음 IDE 하드 드라이브 드라이버를 거쳐 마지막으로 하드 드라이브 자체로 이동합니다.


이제 해당 드라이브에 파일을 저장하는 등 유용한 작업을 수행하고 싶다고 가정해 보겠습니다. 이제 파일 시스템이 필요합니다. Linux 커널에는 여러 가지 파일 시스템을 사용할 수 있습니다. 각각은 디스크의 서로 다른 데이터 구조를 사용하여 파일을 추적하며 다음과 같은 다양한 방식으로 데이터 구조를 수정할 수도 있습니다.원자 쓰기보장됩니다(즉, 쓰기가 성공하거나 실패합니다. 머신이 충돌하더라도 데이터가 절반만 기록되지는 않습니다). 이것은 사람들이 "파일 시스템 드라이버"에 대해 말할 때 의미하는 것입니다. 파일 시스템 드라이버는 디스크에서 특정 파일 시스템의 데이터 구조를 읽고 쓰는 방법을 아는 코드 조각입니다. 예로는 ext4, btrfs, XFS 등이 있습니다.

그래서 파일을 저장하고 싶습니다. 파일 시스템으로 ext4를 선택했다고 가정합니다. 지금 해야 할 일은 빈 파일 시스템의 데이터 구조가 디스크에 존재하도록 디스크를 포맷하는 것입니다. 이렇게 하려면 를 사용하여 mkfs.ext4에 쓰라고 지시 /dev/sda하면 mkfs.ext4처음부터 시작하는 빈 ext4 파일 시스템에 쓰게 됩니다 /dev/sda. 그런 다음 커널은 /dev/sda이를 물리적 디스크의 시작 부분에 쓰고 적용합니다. 이제 디스크에 파일 시스템의 데이터 구조가 포함되어 있으므로 mount /dev/sda /mnt완전히 새로운 파일 시스템 마운트, 파일 시스템으로 파일 이동 등을 수행할 수 있습니다. /mnt파일에 대한 모든 쓰기는 시스템 호출 인터페이스를 거친 다음 ext4 파일 시스템 드라이버로 이동합니다(더 추상적인 "이 데이터를 이러한 파일에 기록"을 fs 데이터에 기록해야 하는 필요성으로 변환하는 방법을 알고 있음). 특정 변경 사항을 디스크에 저장한 다음 IDE 하드 드라이브, 마지막으로 드라이브 자체에 저장합니다.


위의 방법은 효과가 있지만 사람들이 일반적으로 작업을 수행하는 방식은 아닙니다. 보통 그들은 사용합니다분할운전 중. 파티션은 기본적으로 드라이브의 특정 부분입니다. 파티션을 사용하면파티션 테이블드라이브 시작 부분에 각 파티션의 물리적 위치를 명시합니다. 파티션을 사용하면 드라이브를 다양한 목적으로 사용할 수 있는 섹션으로 나눌 수 있으므로 깔끔합니다.

당신이 만들고 싶다고 가정 해 봅시다드라이브의 파일 시스템은 모두 약 50GB(즉, 각각의 절반)입니다. 먼저, 드라이브를 분할해야 합니다. 이를 위해 fdisk또는 같은 도구를 사용할 수 있습니다 gdisk. 둘 다 서로 다른 유형의 분할된 테이블을 생성하고 도구에 에 쓰도록 지시할 수 있습니다 /dev/sda. 분할이 완료되면 /dev/sda, /dev/sda1및 을 얻게 됩니다 /dev/sda2. /dev/sda1이는 /dev/sda2디스크의 다양한 파티션을 나타내는 커널의 방식입니다. 시작 부분에 쓰면 /dev/sda2다음 위치에 있는 두 번째 파티션의 시작 부분에 기록됩니다.디스크의 중간.

이것을 설명하는 또 다른 방법은 이야기되는 것입니다 /dev/sda. /dev/sda즉, 물리적 하드 드라이브의 내용을 조금씩 불러오는 것입니다. 그리고 /dev/sda1하드 드라이브 첫 번째 파티션의 비트별 내용도 있습니다. 이는 /dev/sda약간의 데이터(파티션 헤더)와 정확한 /dev/sda1콘텐츠가 있음을 의미합니다 /dev/sda2. 구성한 파티션인 디스크의 특정 영역에 매핑됩니다 /dev/sda1./dev/sda2

여기에서 다시 on을 사용하여 파티션 헤더 바로 다음에 디스크에 쓰기를 시작하는 mkfs.ext4파일 시스템을 생성 할 수 있습니다. on 을 /dev/sda1사용하면 디스크 중앙(따라서 내용 중간)에 있는 파티션의 시작 부분부터 쓰기 시작합니다.mkfs.ext4/dev/sda2/dev/sda

이제 mount /dev/sda2 /mnt예를 들어 할 수 있습니다. 이는 커널이 두 번째 파티션의 시작 부분에서 시작하는 파일 시스템 데이터를 읽고 이를 보다 유용한 형식, 즉 해당 위치의 파일 및 디렉터리로 사용자에게 공개하도록 지시합니다 /mnt. 다시 말하지만, 커널은 파일 시스템 드라이버를 사용하여 실제로 이 매핑을 수행합니다.


이제 LVM에 대해 간략하게 이야기하겠습니다. LVM은 기본적으로 파티셔닝을 추상화한 것입니다. 파티션은 디스크의 물리적 위치에 매우 직접적으로 매핑됩니다. 위의 이중 파티션 예에서 첫 번째 파티션을 삭제하고 두 번째 파티션을 새로 확보된 공간으로 확장한다고 가정해 보겠습니다. 파티션은 디스크 영역에 직접 매핑되므로 전체 50GB 파티션 데이터를 물리적으로 디스크의 시작 부분으로 이동한 다음 파티션을 끝까지 확장하는 것이 유일한 방법입니다.

LVM은 이러한 고통을 완화하는 것을 목표로 합니다. 기본적으로 LVM에 여러 개의 원시 스토리지를 제공한 다음 해당 스토리지로 무엇을 해야 할지 알려줍니다. LVM은 파티션처럼 나눌 수 있는 가상 "디스크"를 제공하지만 기본 스토리지는 할당한 원래 스토리지 풀의 어느 곳에나 있을 수 있습니다. 위의 예를 사용하여 전체 디스크를 LVM에서 사용할 수 있게 만든 다음 두 개로 분할하는 경우 LVM이 디스크를 추적할 수 있으므로 첫 번째 "파티션"을 삭제하고 두 번째 "파티션"을 확장하여 해당 공간을 즉시 채울 수 있습니다. 데이터가 엄격하게 "순서대로" 유지될 필요 없이 디스크에 데이터 위치를 지정합니다.

LVM 작동 방식에 대한 자세한 내용은 이 답변을 참조하십시오.https://unix.stackexchange.com/a/106871/29146

답변2

/dev/sda이는 전체 하드 드라이브의 인터페이스입니다. 권한이 있는 경우 드라이브 내 어디든 직접 볼 수 있습니다. /dev/sda1드라이브의 첫 번째 파티션입니다. 이 시점에서는 파일 시스템이 관련되지 않습니다. 파티션에 직접 파일 시스템이 있을 수도 있고 LVM 컨테이너일 수도 있습니다.

관련 정보