Ext4 디스크 검사가 NTFS보다 훨씬 빠른 이유는 무엇입니까? 몇 초 밖에 걸리지

오늘 컴퓨터를 다시 시작한 상황에서 디스크의 일관성을 검사해야한다고 말했습니다. 약 10 분 후 ( “1 %”완료), 나는 포기하고 집에 갈 때 달려 나가기로 결정했습니다.

비교를 위해 가정용 컴퓨터는 모든 파티션에 Ext4를 사용하며 디스크 검사 (1 주일에 한 번 정도 실행)는 몇 초 밖에 걸리지 않습니다. 빠른 디스크 검사가 우선 순위라는 것을 기억하지만 어떻게 그렇게 할 수 있는지 모르겠습니다.

Ext4는 어떻게 디스크 검사를 그렇게 빨리 수행합니까? NTFS가 나온 후 (~ 10 년 전)이 작업을 수행하는 데 엄청난 혁신이 있습니까?

참고 : NTFS 디스크는 ~ 300GB이고 Ext4 디스크는 ~ 500GB입니다. 둘 다 반이 가득 찼습니다.



답변

성능 차이에 대한 두 가지 주요 이유와 두 가지 가능한 이유가 있습니다. 첫째, 주된 이유 :


ext4와 NTFS의 성능 향상

다양한 벤치 마크 에서 실제 ext4 파일 시스템은 NTFS 파티션보다 다양한 읽기 / 쓰기 작업을 더 빠르게 수행 할 수 있다고 결론지었습니다 . 이러한 테스트는 실제 성능을 나타내지는 않지만 이러한 결과를 추정하여 한 가지 이유로 사용할 수 있습니다.

ext4가 실제로 더 나은 성능을 보이는 이유는 NTFS가 다양한 이유 때문일 수 있습니다. 예를 들어, ext4는 지연 할당을 직접 지원합니다. 다시 말하지만 성능 향상은 사용중인 하드웨어에 따라 결정되며 특정 경우 완전히 무시 될 수 있습니다.

파일 시스템 검사 요구 사항 감소

ext4 파일 시스템은 다른 동등한 저널링 파일 시스템 (예 : NTFS)보다 빠른 파일 시스템 검사 를 수행 할 수 있습니다. Wikipedia 페이지에 따르면 :

ext4에서는 할당되지 않은 블록 그룹과 inode 테이블의 섹션이 그와 같이 표시됩니다. 이를 통해 e2fsck는 검사에서 이들을 완전히 건너 뛰고 ext4가 지원하는 크기의 파일 시스템을 검사하는 데 걸리는 시간을 크게 줄입니다. 이 기능은 Linux 커널 버전 2.6.24에서 구현됩니다.


그리고 지금, 가능한가지 이유 :


파일 시스템 검사 유틸리티

특정 응용 프로그램은 실제로 “체크”상태를 수행하기 위해 파일 시스템에서 다른 루틴을 실행할 수 있습니다. Linux 에서는 fsck 유틸리티 를 사용하고 Windows 에서는 chkdsk 유틸리티 를 사용하면 쉽게 알 수 있습니다 . 이러한 응용 프로그램은 파일 시스템마다 다른 운영 체제에서 작성됩니다. 가능한 원인 으로이 문제를 제기 이유는 각 운영 체제의 하위 수준 시스템 호출이 다르기 때문에 두 가지 운영 체제를 사용하여 유틸리티를 직접 비교하지 못할 수 있습니다.

디스크 조각화

이것은 이해하기 쉽고 파일 시스템의 차이점을 이해하는 데 도움이됩니다. 파일에 보유하는 모든 디지털 데이터는 동일하지만, 방법 이 하드 드라이브에 저장됩니다 파일 시스템은 파일 시스템에서 매우 다르다. 파일 조각화는 액세스 속도를 분명히 높여 속도 차이가 더 커질 수 있습니다.


답변

내 이해에서 ext4는 현재 데이터가 존재하지 않는 열린 inode의 최대 연속 간격에 데이터를 쓰려고합니다. 이는 개별 파일의 전체 내용이 대부분 단일 연속 트랙에있는 대부분의 경우 해당 파일을 읽어야 할 때 대기 시간을 크게 줄이므로 드라이브 헤드는 데이터가 포함 된 모든 블록을 찾을 때 수행 할 작업이 줄어 듭니다. 그 하나의 파일을 구성합니다.

NTFS (ext4)는 여전히 조각화 될 수는 있지만 NTFS와 마찬가지로 읽기 / 쓰기 성능에 심각한 영향을 줄 수있는 것은 아닙니다. NTFS에서는 데이터가 헤드 경로의 첫 번째 열린 블록에 기록됩니다.

따라서 헤드가 놓여 있고 열린 블록이있는 곳에는 가능한 한 많은 양의 데이터를 쓴 다음 헤드가 다른 파일에 액세스하기 위해 디스크의 다른 부분으로 이동해야 할 때 디스크의 다른 위치에 기록합니다. 다른 파일이 여전히 작성되는 동안 방금로드 한 프로그램에서 파일을 열어야합니다.
이는 파일이 크면 별도의 트랙에서 서로 분리 된 블록으로 확산 될 가능성이 높으며 NTFS에 대해 조각 모음이 자주 필요한 이유입니다.

또한 데이터가 지속적으로 디스크에서 연중 무휴 24 시간 읽히고 읽히는 서버에서 더 많은 I / O가 진행되므로 서버가 일반적으로 사용하지 않는 이유는 무엇입니까?

또한 확실하지 않지만 chkdsk각 파일의 무결성을 확인하면 (내가 믿고 믿는 fsck) NTFS에서 조각화에 대해 방금 설명한 것으로 인해 속도가 느려집니다.


답변

Windows는 시작할 때 NTFS 볼륨을 확인할 필요가 없습니다. 그렇다면 심각한 BSOD 나 정전보다 훨씬 심각한 문제가 발생한 것입니다. 파일 시스템 메타 데이터가 손상된 경우 일부 데이터가 손상되었을 가능성이 있습니다. 디스크 검사는이를 감지 할 수 없습니다. 그것의 유일한 목적은 추가적인 부패를 피하는 것입니다.

KB2854570 에는 이러한 문제가 발생할 수있는 몇 가지 이유가 나와 있습니다. 하나는 볼륨이 마운트 된 OS를 최대 절전 모드로 전환하고 볼륨의 내용을 수정 한 다음 볼륨이 다시 연결된 최대 절전 모드에서 다시 시작하는 것입니다. 그렇게하면 자동 데이터 손상 가능성이 높습니다.

왜 ext4 파일 시스템이 일주일에 한 번 자체 검사를했는지 모르지만, 아마도 매주 반복되는 위기로 인한 것이 아닐 것입니다. 전체 정합성 검사가 아닌 일상적인 위생 검사를 수행 한 것일 수 있습니다.


답변

UNIX / Linux Ext2 / Ext3 / Ext4 기술은 페인트 스프레이와 달리 자기 데이터 비트를 내려 놓는 NTFS에 비해 훨씬 더 강력한 자기 비트 비트를 NTFS에 배치하기 때문입니다. NTFS는 Ext2 / 3 / 4처럼 조각 모음이 거의 필요없는 일반 “조각 모음”이 필요합니다. 그렇게 간단합니다. 유닉스 / 리눅스 드라이브에서 무언가가 필요한 경우, OS는 단단히 고정 된 데이터 비트의 팁을 어디에서 픽업해야 하는지를 정확히 알고있는 반면 NTFS는 드라이브 디스크 전체를 스크램블링해야합니다. NTFS 저널 시스템은 매우 잘 작동하지만, 헤드는 탁구를 내려 놓고 자기 비트를 집어 들고 있습니다. 이중 FAT 파일 시스템은 잘 작동하지만 단일 비트의 부셸을 수집하기 위해 지옥 에이커를 모두 실행 해야하는 경우 전체 비트 열을 필요로하지 않고 선택할 수 있으면 훨씬 빠릅니다.