Можно ли проверить, существует ли файл, не отправляя запрос на жесткий диск в Linux? - PullRequest
1 голос
/ 17 января 2012

Это мой первый пост здесь.

Я хочу проверить, существует ли файл, но без использования жесткого диска. Например, посмотрите на этот код:

<?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.

Существует ли какая-либо файловая система, которая хранит журнал жесткого диска в основной памяти, так что операция с существующим файлом может выполняться без обращения к жесткому диску?

Ответы [ 3 ]

5 голосов
/ 17 января 2012

Журнал (а) живет на диске, и (б) полностью решает другую проблему.

Когда вы делаете такой вызов, ядро ​​запрашивает файловую систему. Если необходимые блоки файловой структуры кэшируются в памяти, он не будет обращаться к диску. Если это не так, то будет.

1 голос
/ 17 января 2012

Нет.Журнал файловой системы не хранится полностью в памяти и в любом случае не содержит все метаданные в файловой системе.Он используется исключительно в качестве инструмента для ускорения восстановления после нечистоты.

0 голосов
/ 17 января 2012

Для доступа к жесткому диску потребуется, по крайней мере, доступ к нему. Теперь на самом деле открытие файла? Я бы подумал, что нет.

...