파일 시스템의 "외부 조각화"란 무엇입니까?

파일 시스템의 "외부 조각화"란 무엇입니까?

저는 EXT4를 사용하고 있지만 모든 Unix/Linux 파일 시스템과 관련된 문제인 것 같습니다.

"Ext4의 조각과 범위의 차이점"에 대한 2022 답변지적했다:

외부 조각화는 관련 파일이 모두 하나의 디렉터리에 있고 디스크 전체에 분산되어 있을 때 발생합니다. 디렉터리의 모든 파일을 읽으려고 하면 내부 조각화만큼이나 많은 성능 문제가 발생할 수 있습니다. ext4fs 알고리즘은 또한 동일한 디렉토리에 있는 다른 파일과 동일한 실린더 그룹에 있는 파일에 블록을 할당하려고 시도하여 외부 조각화를 최소화하려고 시도합니다.

다음과 같은 이유로 이것이 사실인지 궁금합니다.

  1. 이를 확인할 수 있는 다른 출처를 찾을 수 없습니다. "외부 조각화"에 대한 웹 검색 결과는 일반적으로 RAM 조각화를 가리키는 반면, "ext4 외부 조각화"를 지정하면 몇 가지 답변이 제공되지만 일반적으로 오래된 답변(<2010)이 제공됩니다.

  2. 2009년 Arch Linux 포럼 게시물FS 컨텍스트에서는 "외부 조각화"에 대한 완전히 다른 정의가 제공됩니다.

    잔해에는 내부 잔해와 외부 잔해의 두 가지 유형이 있습니다. 내부 단편화는 파일 시스템이 특정 크기(예: 4KB)의 블록을 사용하는 경우이므로 크기가 1KB밖에 되지 않는 파일이 있으면 4KB 블록에 저장되므로 3KB 블록이 낭비됩니다. 이는 참으로 피할 수 없는 일입니다.

    외부 단편화는 파일이 연속적으로 배열되지 않는 경우, 즉 서로 멀리 떨어져 있는 여러 블록에 분산되어 있는 경우입니다. 따라서 디스크 헤드가 모든 조각을 수집하고 파일을 다시 작성하는 데 더 많은 시간이 걸립니다.

지금까지 내 의견은 다음과 같습니다.

  • 이전에 인용된 StackExchange 2022 답변은 완전히 잘못되었습니다.

  • 두 번째로 인용된 정의는 정확합니다.

    외부 단편화는 파일이 연속적으로 배열되지 않는 경우, 즉 서로 멀리 떨어져 있는 여러 블록에 분산되어 있는 경우입니다.

  • 그리고 "동일한 디렉토리에 있는 다른 파일과 동일한 실린더 그룹에 있는 파일에 블록을 할당하려고 시도하는 것"과 같은 것은 없습니다(첫 번째 인용문에서 따옴). 기본적으로 FS(또는 OS)가 디스크의 동일한 디렉터리에 파일을 그룹화하려고 하면 일반적으로 FS(적어도 EXT4의 경우)가 많은 수의 파일로 파일을 둘러싸려고 한다는 사실과 충돌합니다. . 향후 파일 확장 시 파일 조각화를 방지하기 위한 여유 공간입니다.

누군가 내 결론이 정확하다는 것을 확인할 수 있습니까(따라서 인용된 Stack Exchange 답변이 잘못되었습니다)?

[편집하다]

더 많은 조사를 거친 후 나는 "외부" 및 "내부" 조각화라는 용어가 파일 시스템 컨텍스트에서 공식적으로 정의된 적이 없다는 결론을 내렸습니다. 일부 출처에서는 사용된 의미로 인용합니다.이 2009년 Arch Linux 게시물에서또는kernel.org 위키 항목, 일부 (더 적은 수의) 출처에서는 이를 인용합니다.2022년의 이 StackExchange 게시물에서.

관련 정보