저는 12GB DDR3과 여러 개의 1.5TB 하드 드라이브를 갖춘 OpenBSD 서버에 12개의 파일 시스템을 가지고 있습니다. 모든 파일 시스템 자체의 크기는 일반적으로 8GB에서 64GB 사이입니다.
모범 사례를 따른 후에도(너무 작게 유지) fsck
재부팅 시 여전히 매우 느린 것으로 나타났습니다.
무엇이 그렇게 느리게 만드는 걸까요 fsck
? 원시 파일 시스템 크기? 총 inode 수(사용된 + ifree)는 무엇입니까? 사용된 inode 수는 무엇입니까? 완전히 다른 것? fsck
시간을 더욱 향상시킬 수 있는 쉬운 방법이 있습니까 ?
답변1
fsck를 실행하는 목적은 불일치를 찾는 것입니다. 이는 파일 시스템을 탐색하여 각 디렉토리 항목(디렉토리/파일)과 그 뒤에 있는 데이터를 살펴보고 디렉토리 항목의 크기가 데이터의 실제 크기와 일치하는지 확인하는 것을 의미합니다. 프로세스가 느렸습니다. 과거에는 파일 시스템이 훨씬 더 작고, 더 적은 수의 파일이 포함되어 있고, 어쨌든 컴퓨터를 부팅하는 데 더 오랜 시간이 걸렸기 때문에 우리는 이를 알지 못했습니다(서비스는 순차적으로 시작되었습니다). 회전하는 디스크의 속도는 용량만큼 증가하지 않으므로 시스템 시작 중에 파일 시스템 검사를 실행하는 것이 점점 더 불가능해집니다.
이것이 바로 많은 최신 파일 시스템(예: ext3, ext4, reiserfs, XFS...)이 재부팅 시 더 이상 파일 시스템 검사를 수행하지 않는 이유입니다. 대신에 그들은잡지부기에 사용됩니다. 변경 사항이 디스크에 기록되기 전에 로그에 기록됩니다. 변경이 완료된 후 미해결 트랜잭션은 로그에 완료된 것으로 표시됩니다. 트랜잭션이 완료되기 전에 시스템이 종료되면 파일 시스템은 진행 중인 트랜잭션을 알고 해당 트랜잭션을 "재생"하여 파일 시스템을 일관된 상태로 되돌릴 수 있습니다. 이는 파일 시스템 검사를 실행하는 것보다 훨씬 빠른 경우가 많습니다. 최신 파일 시스템은 로그 유지 관리에 따른 오버헤드를 줄이기 위해 많은 영리한 트릭을 사용합니다. 실제로 일반적으로 차이점을 눈치채지 못할 것입니다.
btrfs, ZFS와 같은 최신 세대의 파일 시스템... 사용쓰기 중 복사이는 파일이나 메타데이터를 수정하는 트랜잭션이 기존 데이터를 덮어쓰지 않는다는 것을 의미합니다. 대신, 새로운 데이터가 별도의 블록에 기록됩니다. 새 복사본이 준비되면 파일 시스템은 새 복사본을 사용하도록 자동으로 전환됩니다. 이는 또한 파일 시스템이 일관되지 않게 되는 것을 효과적으로 방지합니다(그리고 다른 장점도 있습니다).
사용을 고려해보세요저널 파일 시스템또는기록 중 복사 파일 시스템시스템을 빠르게 시작하려는 경우.
답변2
fsck 시간을 더욱 향상시킬 수 있는 쉬운 방법이 있습니까?
@HaukeLaging이 맞습니다. 파일 시스템의 inode 밀도를 변경하면 속도가 빨라질 수 있습니다. 바라보다 newfs -i
.