Есть ли способ синхронизации только одного раздела?


Ответы:


10

вы можете перемонтировать с опцией синхронизации и затем перемонтировать ее обратно с помощью async:

mount -o remount,sync /mountpoint
mount -o remount,async /mountpoint

Использование опции remount не будет связываться с процессами, использующими перемонтированную файловую систему.


2
Почему вы считаете, что 2 ремонтирования необходимы? По крайней мере, в ядре 2.6.32 do_remount_sb выполняет sync_filesystem, которая является той же функцией, которая вызывается в системном вызове syncfs, представленном в lwn.net/Articles/433384 .
Юрий Назаров

5

Существует стандартная функция для данных синхронизируются (и метаданные) одного файла: fsync. Для доступа к ней нет стандартной или обычной команды оболочки, но вы можете использовать syncметод perl в IO::Handle:

perl -MIO::File -e 'new IO::File($ARGV[0], "r+")->sync()' filename

Не существует стандартной или общей функции или команды оболочки для синхронизации только одного раздела.

В последних системах Linux существует syncfsсистемный вызов (введен в ядре 2.6.39 и представлен начиная с glibc 2.14 ). Я не думаю, что этот системный вызов выставлен в coreutils или util-linux.


1
Последнее предложение о syncfsявляется наиболее важной частью.
пул

3

Монтирование раздела с syncопцией может быть решением.


2

Если вы имеете в виду syncутилиту, которая сбрасывает данные из памяти на диск, то ответ - нет. Это связано с тем, что syncобычно используется во время процедуры выключения или перезагрузки, когда желательно безопасно записывать данные на диск, а реальной целью операции является память, а не диски, и извлечение этих буферизованных данных из ОЗУ. в безопасное место Диски находятся там, где заканчиваются данные.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.