파일 시스템은 캐릭터 장치가 아닌 블록 장치에서만 생성할 수 있나요?

파일 시스템은 캐릭터 장치가 아닌 블록 장치에서만 생성할 수 있나요?

파일 시스템은 캐릭터 장치가 아닌 블록 장치에서만 생성할 수 있나요?

파일 시스템 자체를 블록 장치로 간주할 수 있습니까(예: 파일 시스템을 프로그래밍 방식으로 사용하는 경우)?

내 추측은 '그렇다'이지만 다음 사항을 토대로 확신할 수는 없습니다.

  • Linux에 대한 다이어그램이 있습니다.운영 체제 개념:

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

  • 것 같다Linux 커널에 대해 알아보기문자 장치 파일에 대한 IO 작업과 달리 일반 파일 및 블록 장치 파일에 대한 IO 작업은 위에서 설명한 장치 드라이버 구현과 대체로 유사합니다.

감사해요.

일부 파일 시스템은 물리적 장치(예: /proc.

답변1

파일 시스템은 커널에 대한 인터페이스로 사용되거나 네트워크를 통해 파일에 액세스하거나 사용자 공간에서 구현되지 않는 한 일반적으로 블록 장치에 구축됩니다. 파일을 하드 드라이브나 SSD에 저장하려면 블록 장치로 액세스하는 것이 가장 쉬운 방법입니다. 블록 경계에 데이터를 정렬하지 않는 SquashFS와 같은 파일 시스템이 있지만 여전히 블록 장치에서 작동하는 기본 버퍼 캐시를 사용합니다. 일부 Unix 시스템에서는 버퍼 캐시를 사용하지 않고 디스크에 액세스할 수 있는 문자 장치를 제공합니다. Linux에서는 이러한 목적으로 open이 플래그를 사용합니다.O_DIRECT

파일을 블록 장치로 사용할 수 있습니다 losetup. 을 참조하십시오.

파일 시스템은 블록 장치가 아닙니다.

편집하다

블록 장치에 없는 파일 시스템에 대한 의견의 질문에 답하기

  • "커널에 대한 인터페이스": 이것은 대부분 이지만 /proc일반적 으로 아래에 마운트되는 파일 시스템 /sys묶음이기도 합니다 .cgroup/sys/fs/cgroup
  • "네트워크를 통해 파일에 액세스": NFS(일반적으로 Unix/Linux), SMB/CIFS(Windows) 등
  • "사용자 공간에 구현됨": "FUSE"는 "사용자 공간의 파일 시스템"을 의미합니다. 커널의 관점에서 보면 이는 사용자 공간 프로그램에서 지원됩니다. 이 프로그램은 블록 장치(fuseblk)를 사용할 수도 있으며, NTFS는 퓨즈blk를 사용하여 구현됩니다. 또한 네트워크나 다른 것을 사용하여 파일 시스템을 렌더링할 수도 있습니다.

관련 정보