Как очистить кеш жесткого диска и флеш-диска (или файловой системы) из командной строки?
Я пишу резервную копию script, которая
- Копирует данные на резервный диск.
- Сбрасывает резервный диск.
- Выполняет проверку целостности хеша.
До того, как я сделал sleep(60)
для ожидания в минуту, чтобы данные автоматически были сброшены ядром. Который, я думаю, перебор, поэтому теперь я пытаюсь sudo hdparm -F --verbose /dev/disk
, но он сообщает об ошибке - HDIO_DRIVE_CMD(flushcache) failed: Invalid exchange
несколько раз.
Мне интересно, есть ли стандартный способ сбросить кеш на жесткий диск. Я думаю, что есть, потому что usb-creator-gtk
делает это, umount
делает это.
Я использую Ubuntu x64 9.10
PS: Я пытаюсь избежать "синхронизации" , потому что эта страница говорит, что она небезопасна. http://ubuntuforums.org/showthread.php?t=589975
Ответы
Ответ 1
Достаточно ли sync
?
Изменить: относительно вашего редактирования - вы пытаетесь избежать синхронизации, потому что какой-то парень в Интернете положил отказ от CYA на свой пост? Возможно, что-то не так с синхронизацией, о которой я не знаю, но это может стоить 2-го поста в себе.
Тем не менее, с информационных страниц linux:
sync записывает любые данные, буферизированные в памяти на диск. Это может
включают (но не ограничиваются ими) модифицированные суперблоки, модифицированные иноды,
и отложенные чтения и записи. Это должно быть реализовано ядром;
Программа синхронизации выполняет только системный вызов "sync".
Ответ 2
Вы хотите вызвать функциональный вызов fsync (man section 2), но если вы делаете это в script, вы, вероятно, захотите использовать команду sync (man section 8), которая просто вызывает sync().