inode 오프셋 값이 inode 크기를 초과하는 것처럼 보이는 이유는 무엇입니까?

inode 오프셋 값이 inode 크기를 초과하는 것처럼 보이는 이유는 무엇입니까?

저는 Ext4 파일 시스템에서 작업 중이며 128바이트 inode 크기로 인해 혼란스럽습니다. 이는 그것이 저장하는 마지막 메타데이터 값(오프셋 156바이트에 있어야 함)과 충돌하는 것 같습니다.

이것에문서inode 길이가 128바이트라고 나와 있습니다. 마운트되지 않은 /dev/sdb1에서 dumpe2fs를 호출했습니다. dumpe2fs 결과는 inode 크기가 128임을 확인합니다.

그런데 이것 때문에 혼란스러워요문서inode에 저장된 메타데이터를 설명합니다. 각 메타데이터 항목에는 해당하는 물리적 오프셋이 있습니다. 마지막 항목은 프로젝트 ID입니다. 오프셋은 0x9c(정수 156)에 있습니다.

메타데이터 오프셋이 inode의 할당된 크기를 초과하는 것 같습니다. 내가 여기서 무엇을 오해하고 있습니까?

답변1

inode의 길이가 128바이트라고 나와 있습니다.

아니요. 그것은 다음과 같이 말합니다.

[...] 각 인덱스 노드가지다디스크 레코드 크기는 128바이트입니다. ext4부터 파일 시스템의 모든 inode에는 포맷 시 더 큰 디스크 inode가 할당되어 원래 ext2 inode의 끝을 넘어서는 공간을 제공할 수 있습니다. 디스크의 inode 레코드 크기는 슈퍼블록에 기록됩니다 s_inode_size. struct ext4_inode 원래 128바이트 ext2 inode를 초과하여 사용된 실제 바이트 수는 i_extra_isize각 inode에 대한 필드에 기록됩니다. […] 기본적으로 ext4 inode는 256바이트로 기록되며, (2019년 8월 현재) inode struct는 다음과 같습니다. 160바이트( i_extra_isize = 32).

귀하의 질문:

마지막 항목은 프로젝트 ID입니다. 오프셋은 0x9c(정수 156)에 있습니다. 메타데이터 오프셋이 inode의 할당된 크기를 초과하는 것 같습니다.

마지막 항목은 156에서 시작하여 4바이트( __le32)를 차지합니다. 기본 160바이트 이내입니다.

파일 시스템의 inode 크기가 128이라고 표시 되면 dumpe2fs파일 시스템이 원시 128바이트 ext2 inode를 사용한다는 의미입니다. 없음 i_extra_isize(오프셋 0x80, 십진수 128에 있음) 또는 범위를 벗어난 항목입니다.

관련 정보