2012-01-16 4 views
1

이것은 내 첫 번째 게시물입니다.Linux에서 하드 디스크에 대한 요청없이 파일이 있는지 확인할 수 있습니까?

하드 디스크를 사용하지 않고 파일이 있는지 확인하고 싶습니다. 예를 들어,이 코드를 보면 :

<?php 
$filename = '/path/to/foo.txt'; 

if (file_exists($filename)) { 
    echo "The file $filename exists"; 
} else { 
    echo "The file $filename does not exist"; 
} 
?> 

ext4는 저널링 파일 시스템입니다. 스크립트가 저널을 조사하여 파일이 존재하는지 검사 할 수 있다는 의미입니까, 즉 하드 디스크를 건드리지 않고 메인 메모리입니까?

감사합니다.

UPD.

하드 디스크의 저널을 메인 메모리에 보관하는 파일 시스템이있어 하드 디스크에 액세스하지 않고도 파일의 작업을 수행 할 수 있습니까?

답변

5

저널 (a)은 디스크에 있고 (b) 완전히 다른 문제를 해결합니다.

이와 같이 호출하면 커널은 파일 시스템에 질문합니다. 파일 구조의 필요한 블록이 메모리에 캐시되면 디스크에 액세스하지 않습니다. 그렇지 않다면 그렇게 될 것입니다.

+0

감사합니다. 답변이 명확하게 정리되었습니다. 하지만 한 가지 더 알고 싶습니다. 한 번에 2 개의 file_exists 요청을하면 하드 디스크의 동일한 부분에 액세스했거나 하드 디스크 드라이브의 다른 부분과 다를 수 있습니다. – Fedor

+0

그들은 모든 곳에서있을 수 있습니다. 디렉토리는 하나의 디스크 블록에 들어 가지 않으며 파일 시스템이 반드시 이들을 함께 유지하지는 않습니다. – bmargulies

-1

하드 디스크가 있는지 확인하려면 최소한 하드 디스크에 액세스해야합니다. 이제 실제로 파일을 여는 중입니까? 나는 그렇게 생각하지 않을 것이다.

+0

하드 디스크의 저널을 메인 메모리에 보관하는 파일 시스템이 있습니까? 따라서 하드 디스크에 액세스하지 않고 파일의 작업을 수행 할 수 있습니까? – Fedor

+2

나는 하나도 들어 본 적이 없다. 그것은 단지 너무 많은 메모리를 차지할 것이고,별로 쓸모가 없을 것입니다. 하드 디스크에 액세스하지 않으려는 이유가 있습니까? – BrettAdamsGA

+1

또 다른 문제는 대부분의 메모리가 휘발성이므로 저널, 테이블, 목록 등을 매번 메모리에로드해야한다는 것입니다. – BrettAdamsGA

1

아니요. 파일 시스템 저널은 메모리에 완전히 보관되지 않으며 어떤 경우에도 파일 시스템의 모든 메타 데이터를 포함하지 않습니다. 이 도구는 부정한 언 마운트를 빨리 복구 할 수있는 도구로만 사용됩니다.

관련 문제