파일 시스템이 저장 장치를 (매우 큰) 바이트 배열로 "인식"합니까?


12

파일 시스템이 저장 장치에 쓰고 읽는 방법을 알고 싶습니다.

이것이 작동하는 방식이라고 생각합니다.

파일 시스템은 저장 장치에 직접 액세스하지 않지만 저장 장치는 (저장 장치의 장치 드라이버에 의해) 파일 시스템에 (매우 큰) 바이트 배열로 제공됩니다.

예를 들어 파일 시스템이 하드 디스크에 액세스하려는 경우 하드 디스크를 나타내는 바이트 배열에 액세스하기 만하면됩니다.

이렇게하면 파일 시스템이 모든 유형의 저장 장치 (일반 하드 디스크, SSD, USB 플래시 드라이브 등)와 작동 할 수 있으며 저장 장치의 장치 드라이버 만 변경됩니다.

이 이미지는 내가 방금 설명한 것을 보여줍니다.

여기에 이미지 설명을 입력하십시오

이해가 정확합니까?

답변:


15

리눅스 (및 1980 시대 유닉스), 기억 장치 (자주 A의 디스크 파티션 일부에 하드 디스크 , 또는 일부에 SSD ) 블록 인 디바이스 (참조 이것을 ) 때문에 [서브] 서열 인 블록 (어느 것이 인 물리적 I / O 의 기본 단위 ). 물리적 블록 크기는 하드웨어 (오래된 IDE 디스크의 블록 크기는 512 바이트, 새로운 대형 SATA 디스크의 블록 크기는 4KB, 고급 형식 위키 페이지 읽기 ) 및 파일 시스템을 만들 때 (예 : mke2fsmkfs 참조)에 따라 다릅니다. (8)) 물리적 블록 크기의 배수 (종종 1을 포함하여 2의 작은 거듭 제곱) 인 논리적 블록 크기를 지정할 수 있습니다. 논리 블록 주소 지정에 대해서도 읽으십시오 .

과거 (1990 년대의 Sun3 워크 스테이션을 생각할 때) 디스크는 섹터를 구성하고 ( CHS 위키 페이지 읽기 ) 섹터가 블록을 포함하는 실린더로 만들어졌습니다 . 오늘날에도 여전히 남아 있지만 하드 디스크 컨트롤러 (디스크 자체의 회로)에서 제공하는 인공 인공물입니다. 일부 OS에서 블록 장치 드라이버는 디스크 헤드 이동 및 회전 대기 시간 을 최소화하기 위해 IO 요청을 다시 예약하고 순서를 변경했습니다 .

이렇게하면 파일 시스템이 모든 유형의 저장 장치 (일반 하드 디스크, SSD, USB 플래시 드라이브 등)와 작동 할 수 있으며 저장 장치의 장치 드라이버 만 변경됩니다.

그렇습니다. 그러나 악한 내용은 세부 사항에 있습니다 (예 : SSD에 대한 TRIMWrite Amplification 에 대해 읽어보십시오 ). 그리고 세부 사항이 중요하므로 실제 구현은 그림보다 간단하지 않습니다. 파일 시스템 에 대해 자세히 알아보십시오 ( SMBNFS를 포함한 클러스터 및 원격 파일 시스템을 생각 하십시오 . 또한 Logical Volume Manager에 대해서도 읽으십시오 ).

읽기 운영 체제 : 세 가지 쉬운 조각 (및 그 지속성 부분).

통지 블록 장치가 FreeBSD의에 사라 (실제로는 문자와 블록 장치에 대한 공통의 추상화를 제공한다). Windows에서도 OS가 파티션, 블록 크기 등에 대해 알고 있다고 생각하지만 확인해야합니다.


Windows는 디스크의 파티션도 처리하며 각 파티션은 다른 파일 시스템 (아마도 FAT-32, 다른 하나는 NTFS)을 사용할 수 있습니다. 파일 시스템은 블록 레벨에서 파티션에 액세스하거나 블록을 "클러스터"로 결합 할 수 있습니다. 주어진 파티션에서 클러스터 크기는 고정됩니다.
Simon B

MSDOS가 주로했기 때문에 나는 그것을 알고 있었다.
Basile Starynkevitch

실제로, FreeBSD는 여전히 "블록 장치"라고 부르는 것을 사용합니다. 큰 블록 배열 이외의 하드 디스크에 액세스하는 방법은 없습니다. 그것들은 FreeBSD에서 문자 / 원시 장치라고 불립니다. 그들은 여전히 ​​큰 블록 배열로 장치에 액세스합니다. FreeBSD에서 누락 된 유일한 것은 장치 수준에서의 캐싱입니다. 파일 시스템은 이미 캐싱을 제공하므로 필요하지 않습니다.
juhist 2016 년

3

Basile Starynkevitch가 말한 모든 것이 정확합니다. 조금 더 추가하겠습니다. 실제로 디스크 드라이브는 "블록"드라이브이지만 블록 장치 (및 다른 많은 장치)는 "raw"와 "cooked"의 두 가지 형태로 나타납니다. 원시 장치는 기본 스토리지 청크 크기의 배수 인 청크로만 처리 할 수 ​​있습니다. 따라서 원시 디스크 장치는 한 두 번이 아니라 한 번에 하나 이상의 블록 만 읽거나 쓸 수 있습니다. 쿠킹 된 장치는 다양한 다른 기능뿐만 아니라 더 작은 작업을 허용하는 레이어를 추가했습니다.

BS가 설명했듯이 파일 시스템은 원시 장치와 함께 작동하므로 큰 바이트 배열이 아니라 큰 블록 배열로 보았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.