ext2 파일 시스템

ext2 파일 시스템

ext2 파일 시스템에 관해 질문이 있습니다. 나는 이것을 잘 알고 있어야합니다. 다 이해가 되는 것 같아요. 하지만 뭔가가 나를 괴롭히고 있습니다. 첫 번째 그림에서 볼 수 있듯이 이 파일 시스템은 볼륨을 여러 "블록 그룹"으로 나누게 합니다. 각각은 Inode 테이블 섹션을 가지고 있습니다. 내가 알고 싶은 것은 블록 그룹 0의 inode 테이블이 블록 그룹 1의 inode 테이블과 동일한지 여부입니다(2, 3...0 이외의 모든 것). 그들은 동일합니까? 동일한 경우 i_node에 해당하는 Inode_table을 찾는 방법입니다. 그렇지 않은 경우 이 경우 동일한 i_node가 2개 이상 있는 것 같습니다. 답을 확실히 알고 있다면 자신이 옳다는 것을 증명하는 웹사이트나 책 등 아이디어의 근거를 알려주세요.

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

답변1

inode 테이블이 항상 블록 그룹의 시작을 기준으로 동일한 오프셋에 있는지 묻는 경우 이는 그 앞의 모든 것이 고정된 크기여야 함을 의미합니다. 블록 및 inode 비트맵은 항상 블록입니다. 블록 그룹 설명자 테이블은 고정되어 있지 않습니다. 문서에는 다음과 같이 나와 있습니다.

정의된 블록 그룹 수에 따라 테이블에 여러 개의 스토리지 블록이 필요할 수 있습니다. 의심스러운 경우 항상 슈퍼블록을 참조하세요.

특정 inode에 대한 inode 테이블을 조회하려면 해당 inode가 어떤 블록 그룹에 속하는지 알아야 합니다. 블록 그룹 번호를 알고 있는 경우 블록 크기(s_log_block_size) 및 블록 그룹당 블록 수(그룹당 s_blocks_s_blocks_per_group), 블록 그룹의 시작을 찾을 수 있습니다.블록 그룹 설명자 테이블좌석. 이 블록 그룹에 대한 inode 테이블의 첫 번째 블록의 블록 ID를 포함합니다(bg_inode_table).

Ext 파일 시스템 내부 레이아웃 문서:http://www.nongnu.org/ext2-doc/ext2.html

답변2

(게시 후 몇 년 늦었다는 사실을 깨달았고 어쨌든 이 답변을 여기에 남길 것입니다.) 귀하의 질문을 올바르게 이해했다면 그룹 설명자 테이블에 있는 내용과 비트맵에서 참조하는 내용 사이에 혼동이 있는 것입니다.

각 블록 그룹에는 수퍼블록, 그룹 설명자 세트, 블록 및 inode 비트맵, inode 테이블이 포함되어 있습니다. 그룹 설명자 세트는 모든 블록 그룹에 적용되지만(슈퍼블록 및 그룹 설명자는 백업 복사본임) 비트맵 및 inode 테이블은 해당 블록 그룹에만 적용됩니다.

예를 들어 네 번째 블록 그룹에 관심이 있는 경우 그룹 설명자 테이블에서 네 번째 항목(디스크 시작 부분의 기본 항목 또는 백업 복사본)을 읽은 다음 그 항목에서 읽을 수 있습니다. 블록 번호와 inode 비트맵의 위치를 ​​읽습니다.

참고 사항: 위에서 작성한 내용은 일반적으로 희소 옵션이 기본적으로 설정되어 있고 모든 블록 그룹에 슈퍼 블록(공간 절약을 위해)이 있는 것은 아니기 때문에 위에서 쓴 내용이 완전히 정확하지는 않습니다. 슈퍼블록이기 때문에 블록을 읽는 것은 쉽습니다. 슈퍼블록의 s_magic 필드를 테스트하여 EXT2_SUPER_MAGIC과 같은지 확인하고, 그렇지 않은 경우 블록 그룹은 비트맵으로 시작합니다.

Hoov가 게시한 링크는 훌륭합니다. 여기에 또 다른 유용한 링크가 있습니다.http://cs.smith.edu/~nhowe/Teaching/csc262/oldlabs/ext2.html 몇 가지 혼란스러운 측면이 있지만 Hoov의 링크와 결합하면 시작하고 실행할 수 있습니다.https://wiki.osdev.org/Ext2나쁘지 않다.

관련 정보