2012-01-08 3 views
1

크기가 5MB 인 파일이 있다고 가정 해보십시오. 나는 C로 쓰기 모드로 열었다가 정확히 5 MB의 정크 데이터로 채 웁니다. 이전에 사용 된 동일한 디스크 섹터를 덮어 쓰거나 OS가 새 데이터를 위해 새 디스크 섹터를 선택합니까?파일을 덮어 쓸 때 작성되는 부분은 무엇입니까?

+2

반드시 그렇지는 않습니다. 왜 중요합니까? 이것은 순전히 이론적 인 질문입니까, 아니면 해결하려는 문제가 있습니까? 파일 시스템은 추상화를위한 것입니다. –

답변

4

파일 시스템에 따라 다릅니다.

전통적으로 대답은 '그렇습니다. 동일한 섹터가 새 데이터로 덮어 쓰게됩니다'입니다.

저널 파일 시스템에서는 응답이 다를 수 있습니다. 플래시 드라이브 시스템을 사용하면 대답은 거의 확실합니다. 현재 작성된 부문을 지우지 않도록 새로운 부문이 작성 될 것입니다. '

3

파일 시스템은 원하는 모든 것을 할 수 있습니다. 그러나 실제 파일 시스템은 동일한 섹터에 데이터를 다시 기록합니다.

이미지 만약 그렇지 않다면. 파일에 쓸 때마다 파일 시스템은 새로운 자유 섹터를 찾아서 해당 섹터에 쓰고 파일의 메타 데이터를 업데이트하여 새로운 섹터를 가리켜 야합니다. 또한 인접한 5MB 파일의 중간에 단일 섹터를 작성하면 조각이 나올 수 있기 때문에 끔찍한 파일 조각화가 발생합니다. 따라서 동일한 분야로 다시 쓰는 것이 훨씬 쉽습니다.

내가 생각할 수있는 유일한 예외는 JFFS2입니다. 플래시의 마모 균등화를 지원하기 위해 설계 되었기 때문입니다.

이제 파일 시스템은 동일한 섹터에 쓰지만 디스크 하드웨어는 원하는 위치에 쓸 수 있습니다. 실제로 SSD/플래시 드라이브에서 하드웨어는 wear leveling을 처리하기 위해 데이터를 다른 섹터에 기록 할 수 있습니다. 그러나 이는 OS/파일 시스템에 투명합니다. (sector sparing으로 인해 하드 드라이브에서도 가능합니다.)

관련 문제