리눅스 파일은 어떻게 생겼나요?

青灯夜游
풀어 주다: 2023-03-17 09:30:56
원래의
1240명이 탐색했습니다.

Linux 파일은 디렉터리(파일)입니다. 파일 및 디렉터리 관리를 용이하게 하기 위해 Linux 시스템은 루트 디렉터리 "/"부터 시작하는 역트리 구조로 구성합니다. Linux의 디렉터리는 Windows 시스템의 폴더와 유사합니다. 차이점은 Linux 시스템의 디렉터리도 파일로 처리된다는 점입니다.

리눅스 파일은 어떻게 생겼나요?

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

Linux 파일은 디렉터리(파일)입니다.

파일 및 디렉터리 관리를 용이하게 하기 위해 Linux 시스템은 루트 디렉터리 /부터 시작하는 역트리 구조로 구성합니다. Linux의 디렉터리는 Windows 시스템의 폴더와 유사합니다. 차이점은 Linux 시스템의 디렉터리도 파일로 처리된다는 점입니다.

Linux 운영 체제에서는 모든 파일과 디렉터리가 그림 1과 같이 루트 노드 "/"부터 시작하는 역트리 구조로 구성됩니다.

리눅스 파일은 어떻게 생겼나요?
그림 1 Linux 시스템 파일 및 디렉터리 구성 다이어그램

그 중 디렉터리는 Windows의 폴더와 동일합니다. 디렉터리는 파일 또는 기타 하위 디렉터리를 저장할 수 있으며 파일에는 실제 정보가 저장됩니다.

파일 시스템의 최상위 수준은 루트 디렉터리로 시작합니다. 시스템은 "/"를 사용하여 루트 디렉터리를 나타냅니다. 루트 디렉터리 아래에는 디렉터리 또는 파일이 있을 수 있으며 각 디렉터리에는 (sub) 디렉터리 또는 파일. 반복적으로 거대한 파일 시스템이 형성될 수 있습니다.

사실 이 트리형 및 계층적 파일 구조를 사용하는 주요 목적은 파일 시스템의 관리 및 유지 관리를 용이하게 하는 것입니다. 모든 파일이 하나의 디렉터리에 배치되면 파일 시스템의 관리 및 유지 관리가 가능해집니다. 악몽이 될 것이다.

현실에도 비슷한 예가 많습니다. 예를 들어 전체 행정 시스템에서 주민은 파일에 해당합니다. 그들은 마을에 살고 있으며, 마을은 주민이 저장되어 있는 디렉토리입니다. 많은 마을이 타운십을 형성하는데, 이는 저장된 마을의 목록과 같은 역할을 하며 궁극적으로 거대한 행정적 지역 관리 구조도를 구축하게 됩니다.

디렉터리 이름이나 파일 이름은 대소문자를 구분합니다. 예를 들어 dog, DOG 및 Dog는 3개의 다른 디렉터리 또는 파일입니다. 전체 디렉토리 또는 파일 경로는 일련의 디렉토리 이름으로 구성되며 각 디렉토리 이름은 "/"로 구분됩니다. 예를 들어 cat의 전체 경로는 /home/cat입니다.

파일 시스템에는 두 개의 특수 디렉터리가 있습니다. 하나는 점 "."으로 표시할 수 있는 현재 디렉터리인 사용자의 작업 디렉터리입니다. 상위 디렉터리는 두 개의 점 ".."으로 표시됩니다.

디렉토리나 파일 이름이 점으로 시작하면 해당 디렉터리나 파일이 숨겨진 디렉터리나 파일이라는 의미입니다. 즉, 기본 방식으로 검색할 때(검색 명령은 나중에 설명함) 디렉터리나 파일이 표시되지 않습니다.

관리 및 유지 관리를 용이하게 하기 위해 Linux 시스템은 루트 디렉터리 아래의 각 디렉터리에 어떤 유형의 파일(또는 하위 디렉터리)이 존재해야 하는지를 규정하는 FHS 표준이라고도 하는 파일 시스템 계층 구조 표준을 채택합니다. /bin 및 /sbin 디렉터리에는 실행 파일이 저장되어야 합니다

리눅스 파일 시스템(파일 시스템)

하드 디스크의 물리적 구성

우선 물리적인 부분을 간단히 이해해 봅시다. 하드 디스크의 구조 일반적으로 하드 디스크 구조에는 플래터, 자기 헤드, 플래터 스핀들, 제어 모터, 헤드 컨트롤러, 데이터 변환기, 인터페이스, 캐시 및 기타 부품이 포함됩니다. 모든 플래터(일반적으로 하드 디스크에는 여러 개의 플래터가 있고 플래터는 평행함)는 스핀들에 고정됩니다. 각 디스크의 저장면에는 자기 헤드가 있습니다. 자기 헤드와 디스크 사이의 거리가 매우 작기 때문에 심한 진동에 의해 손상되기 쉽습니다. 자기 헤드는 자기 헤드 컨트롤러에 균일하게 연결됩니다. 각 자기 헤드의 움직임을 제어합니다. 자기 헤드는 디스크의 반경을 따라 이동하고 디스크는 지정된 방향으로 고속으로 회전하므로 자기 헤드가 디스크의 모든 위치에 도달할 수 있습니다.

디스크는 트랙이라고 불리는 여러 개의 링으로 구성되며, 각 섹터는 512바이트입니다. 하드 디스크의 모든 디스크에서 동일한 위치에 있는 링이 자기 기둥을 형성합니다. 실린더). 하드 디스크 용량은 512바이트 * 섹터 수 * 자기 기둥 수 * 헤드 수

처음 세 숫자는 헤드 수에 곱한 값이 무엇인지 이해하기 쉽지 않을 수 있습니다. 는 원의 저장량을 계산하는 것과 같으며 하나의 자기 헤드가 원을 읽으므로 자기 헤드 수를 곱하는 것은 원의 면적에 원의 수를 곱하는 것과 같습니다.

디스크 파티셔닝

디스크 파티셔닝의 최소 단위는 자기 실린더(Cylinder)

디스크 파티셔닝은 실제로 파티션(파티션)의 시작과 끝 자기 실린더를 기록하는 것이며, 이렇게 기록된 정보는 메인 부트 섹터(Master Boot Recorder, MBR)에 저장됩니다. 실제로 MBR은 하드 디스크의 0번째 트랙에 있습니다. 이는 하드 디스크를 사용하기 위해 컴퓨터를 켤 때 읽어야 하는 첫 번째 영역이기도 합니다.

질문을 생각해 보세요. MBR의 크기는 고정되어 있나요?

우리는 이렇게 생각합니다. 데이터 저장 순서는 MBR + 기타 데이터입니다. 예를 들어 MBR의 크기가 고정되어 있지 않은 경우 원래 세 개의 파티션 정보가 MBR에 저장되어 있었는데 이제 새 파티션을 추가하려는 경우 결과는 어떻게 될까요? 결과적으로 모든 "다른 데이터"는 하나의 파티션 정보만큼 순차적으로 뒤로 이동해야 합니다. 배열을 추가하거나 삭제하는 것에 대해 생각해 보셨나요? 그래서 우리는 MBR을 수정하길 희망하는데, 이는 MBR이 4개의 파티션의 정보만 저장하도록 수정된 것이기도 합니다. 훨씬 좋아 보이지만 파티션이 4개뿐입니다. 충분합니까? 물론 디자이너도 이 문제를 고려하여 파티션을 기본과 확장(최대 1개의 E만 있을 수 있음)의 두 가지 범주로 나누었습니다. 그 중 P는 직접 사용할 수 있지만 E는 직접 사용할 수 없다. E는 확장 파티션의 위치 정보 저장 위치를 ​​가리키는 포인터에 해당한다.

filesystem

파일 시스템도 파일 시스템입니다. 각 oartition은 fat32, ntfs 등과 같은 자체 파일 시스템을 가질 수 있습니다.

파티션마다 파일 시스템이 다르지만 모두 데이터 저장에 사용됩니다. . 앞서 하드디스크의 최소 저장 단위는 섹터(섹터, 일반적으로 512Byte)라고 소개했지만, 파일 시스템의 최소 저장 단위는 섹터가 아니라 블록이다. 블록은 섹터의 2승 배수이고, 헤드는 한번에 한 블록의 데이터를 읽는다. 따라서 블록이 너무 작으면 자기 헤드가 파일을 읽을 때 더 많은 블록을 읽어야 하므로 매우 비효율적입니다. 그러나 예를 들어 블록에는 하나의 파일만 존재할 수 있으므로 블록이 너무 클 수는 없습니다. , 블록 크기는 100M이고, 100.1M 파일이 있으면 두 개의 블록을 차지해야 하므로 많은 공간이 낭비됩니다.

superblock

각 파일 시스템의 첫 번째 블록을 슈퍼블록이라고 합니다. 슈퍼블록의 역할은 파일 시스템의 크기, 비어 있거나 채워진 블록, 이와 같은 기타 일반 정보를 저장하는 것입니다. 즉, 파일 시스템을 사용하려면 가장 먼저 거쳐야 할 블록이 슈퍼블록이다. 슈퍼블록이 깨지면 파티션을 저장할 방법이 없을 것이다.

Linux의 EXT2 파일 시스템

Linux를 배우다 보면 당연히 Linux의 파일 시스템도 배워야 하는데, 가장 표준적인 Linux인 EXT2를 예로 설명하겠습니다.

EXT2의 파일 시스템은 inode 영역과 블록 영역으로 구분됩니다. inode는 파일의 관련 속성과 기타 정보를 저장하고, 블록 영역은 파일의 내용을 설명하는 포인터 역할을 합니다. 파일의 관련 속성 및 파일이 있는 블록의 위치를 ​​가리킵니다. 블록 및 inode 수는 초기 포맷 시 고정됩니다.

전체 파일 시스템의 도식:

리눅스 파일은 어떻게 생겼나요?

  • SuperBlock: 앞서 언급했듯이 Superblock은 전체 파일 시스템의 관련 정보가 기록되는 곳입니다. Superblock이 없으면 파일 시스템도 없습니다. 그가 기록하는 정보는 주로 다음과 같습니다:
    • 블록과 inode의 총량
    • 사용되지 않은 inode/블록의 수
    • 한 블록과 한 inode의 크기, 최신 쓰기 데이터 입력 시간, 최근 디스크 검사(fsck) 시간 등 파일 시스템 관련 정보
    • 유효 비트 값은 파일 시스템이 마운트된 경우 유효 비트가 0입니다. 마운트되지 않은 경우 유효한 비트는 0이 됩니다. 유효한 비트는 1입니다.
    그룹 설명: 이 블록이 기록을 시작하는 위치를 기록합니다.
  • 블록 비트맵: 해당 블록이 사용되는지 여기에 기록합니다.
  • Inode 비트맵: 해당 inode가 사용되는지 여부를 여기에 기록합니다. inode;
  • 데이터 블록: 각 블록의 데이터 저장 영역입니다.

리눅스 파일 시스템의 동작우리는 하드 디스크의 액세스 속도가 메모리에 비해 매우 느리다는 것을 알고 있습니다. 전체 속도를 향상시키기 위해 Linux는 비동기 처리를 사용합니다.

비동기란 무엇인가요? 예를 들면 다음과 같습니다. "시스템이 특정 파일을 읽으면 해당 파일이 있는 블록 데이터가 메모리에 로드되므로 디스크 블록은 주 메모리의 버퍼 캐시 영역에 배치됩니다. 블록의 데이터가 변경되면 처음에는 주 메모리의 블록 데이터만 변경되고 버퍼의 블록 데이터는 "Dirty"로 표시됩니다. 이때 디스크의 물리적 블록은 아직 수정되지 않았습니다. ! 따라서 이는 디스크의 물리적 블록에 있는 데이터와 주 메모리에 있는 블록 데이터의 일관성을 유지하기 위해 이러한 "더티" 블록의 데이터를 디스크에 다시 기록해야 함을 의미합니다. 』

그러므로 Linux를 종료할 때 주의를 기울여야 합니다. 그렇지 않으면 파일 손실이나 심지어 디스크 손상이 발생할 수 있습니다! ! !

마운트 포인트

따라서 Linux를 종료할 때 정말 주의해야 합니다. 그렇지 않으면 파일 손실이나 심지어 디스크 손상이 발생할 수 있습니다! ! !

mount point

위에서 언급한 내용은 모두 파일 시스템에 관한 것이지만 Linux에서 사용하려면 Linux 시스템에 "마운트"해야 합니다. ! 위에서는 디렉토리가 파일 이름 및 inode와 관련된 정보를 기록할 수 있다고 언급했습니다. 또한 디렉토리를 통해 파일 시스템에 대한 해당 진입점을 생성할 수도 있습니다. 따라서 우리는 해당 진입점 디렉토리를 "마운트 지점"이라고 부릅니다.

관련 권장 사항: "Linux 비디오 튜토리얼"

위 내용은 리눅스 파일은 어떻게 생겼나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿