내 이해에 따르면 읽기/쓰기 등은 Linux의 파일 시스템 작업입니다. 파일 시스템은 커널(VFS)에 콜백을 등록하고 읽기/쓰기 작업 중에 특정 FS가 감지되면 커널에 의해 호출됩니다.
예를 들어:
EXT4_쓰기:
VFS write request -> ext4_writepages()
F2FS_쓰기:
VFS write request -> f2fs_write_data_page()
그런데 저장매체가 포맷되지 않았다면 어떻게 될까요? 파일 시스템이 없습니다. 읽기/쓰기 작업을 수행할 때 기본적으로 선택되는 파일 시스템 작업은 무엇입니까?
답변1
VFS 계층이 파일에 대한 읽기/쓰기 작업을 수행할 수 있으려면 파일이 어떤 방식으로든 열려야 합니다. 미디어에 파일 시스템이 없으면 마운트할 수 없습니다. 마운트할 수 없으면 경로를 가져올 수 없습니다 open()
. 파일을 열 수 없으면 읽기/쓰기가 불가능합니다. 따라서 파일 시스템이 없는 미디어에서는 읽기/쓰기 작업을 수행할 수 없습니다.
필요한 모든 드라이버를 사용할 수 있다고 가정할 때 블록 장치를 갖게 되며 이를 통해 장치 자체에 대한 I/O 작업을 수행하여 장치를 포맷할 수 있습니다.
답변2
읽기/쓰기를 위해 블록 장치에 포맷된 파일 시스템이 필요하지 않습니다. 블록 장치 또는 파티션(예: /dev/sda1)을 열고 블록을 직접 읽고 쓸 수 있습니다. 이는 mke2fs 및 e2fsck와 같은 도구가 장치 자체의 블록을 읽고 써서 장치 내의 파일 시스템을 포맷하거나 복구하는 방법입니다.
다양한 유형의 장치(HDD, CDROM, NVMe, 다양한 파일 시스템, 파일, 디렉터리 등)에 유사한 액세스 방법을 갖는 것은 Unix 계열 시스템의 장점 중 하나입니다.