it-swarm-korea.com

대용량 파일 시스템에서 fsck를 실행하는 메모리 부족

저는 512MB의 RAM 만 장착 한 오래된 데비안 리눅스 박스 (에치 실행)를 돌보고 있지만 많은 외부 저장소가 연결되어 있습니다. 하나의 ext3 파일 시스템은 2.7 TB 크기이고 fsck는 메모리가 부족하여 다음과 같은 오류가 발생하여 확인할 수 없습니다.

 디렉터리 블록 배열 할당 오류 : 메모리 할당 실패 
 e2fsck : 중단됨 

4GB 스왑 파티션을 추가했지만 아직 완료되지 않았지만 이것은 32 비트 커널이므로 더 이상 추가하는 것이 도움이 될 것으로 기대하지 않습니다.

64 비트 커널로 부팅하는 것 외에 fsck가 검사를 완료하는 다른 방법이 있습니까?

13
TimB

64 비트 커널과 많은 양의 RAM는 fsck가 멋지고 빠르게 끝낼 수 있도록합니다. 또는 e2fsck에 모든 중간 결과를 저장하도록 지시하는 옵션이 있습니다. 엄청난 도움이되는 RAM 대신 디렉토리. Create /etc/e2fsck.conf 다음 내용으로 :

[scratch_files]
directory = /var/cache/e2fsck

(그리고 분명히 디렉토리가 존재하고 충분한 여유 공간이있는 파티션에 있는지 확인하십시오). e2fsck는 SLLOOOOWWWWWWW를 실행하지만 적어도 완료됩니다.

물론 이것은 루트 FS에서는 작동하지 않지만 스왑이 있다면 루트 마운트를 지난 것입니다 FS 어쨌든.

12
womble

나는 결국 womble이 제안한 것을 시도했습니다. 여기 저처럼 e2fsck에서이 새로운 기능을 본 적이없는 경우 유용 할 수있는 몇 가지 세부 정보가 있습니다.

E2fsck의 "scratch_files"구성 옵션은 버전 1.40.x 기간 중 언젠가 사용할 수있게되었습니다. (우리의 경우이 기능을 사용하려면 최신 Debian 배포판으로 업그레이드해야했습니다.)

제안 된 "directory =/var/cache/e2fsk"옵션과 함께 스크래치 파일 저장소가 사용되는 방법을 미세 조정하는 몇 가지 추가 구성 옵션이 있습니다. "dirinfo = false"를 사용했습니다. 파일 시스템에 많은 수의 파일이 있지만 그렇게 많은 디렉토리가 없기 때문입니다. 상황이 반전 된 경우 "icount"옵션이 적절합니다. 이러한 옵션은 모두 e2fsck.conf의 man 페이지에 설명되어 있습니다.

BTW, Ted T'so는 이러한 옵션에 대해 this thread 에 썼습니다.

E2fsck가 Ted가 예상 한 것보다 훨씬 더 느리게 실행되고 있다는 것을 알았습니다. 대부분의 시간 (매우 느린 오래된 프로세서에서) 99.9 %의 CPU 사용률로 실행되었으므로 메모리 대신 디스크에 이러한 데이터 구조를 저장하는 것이 속도 저하의 주요 원인이 아니라는 것을 나타냅니다. 파일 시스템에 저장된 내용이 e2fsck를 특히 느리게 만들었을 수 있습니다. 결국 저는 파일 시스템 검사를 포기했습니다. 파일 시스템은 검사 할 예정 이었지만 오류가 없었으므로 (내가 아는 한) 일주일 동안 중단 될 여유가있는 더 편리한 시간에 파일 시스템을 검사 할 것입니다.

6
TimB