Назад | Перейти на главную страницу

Есть ли способ заставить sshd вызывать fsync () в конце загрузки scp?

У меня есть сервер на базе Debian Linux, который принимает загрузку файлов через scp, и этот сервер имеет тенденцию время от времени внезапно отключаться. Если потеря питания происходит вскоре после завершения загрузки scp, это может привести к тому, что загруженный файл (-ы) будет обрезан (или отсутствует) при следующем восстановлении питания.

Есть ли способ заставить sshd (или любой другой процесс, записывающий загруженные данные на диск ... я думаю, что это sshd) вызывать fsync () после завершения загрузки, чтобы минимизировать вероятность потери данных из-за отключение электричества?

В качестве примера того, что я ищу, этот сервер также принимает загрузку файлов через Samba / CIFS, и я обнаружил, что добавление следующих строк в раздел [globals] моего smb.conf помогает защититься от потери данных там :

strict sync = yes
sync always = yes

Итак, я ищу что-то аналогичное, возможно, что-то, что я мог бы поместить в / etc / sshd_config?

Спасибо!

Одна из основных утилит GNU - это sync команда. Таким образом, вы можете просто ввести свой сценарий загрузки ssh и запустить эту команду в конце. Хотя может быть что-то более чистое.

Я никоим образом не знаю, как заставить sshd делать это, хотя решение Кайла, безусловно, является допустимым (при условии, что вы используете ключи и агент, и может выдержать несколько секунд между завершением загрузки и sync запрос).

Если вы параноик по поводу потери данных, я предлагаю приобрести ИБП и карту RAID с резервным аккумулятором.
Если стоимость является проблемой, вы можете смонтировать целевую файловую систему с помощью sync опция (заставляет все записи выполняться синхронно).

Монтаж с sync set будет снижать производительность, но когда ваша передача будет завершена, вы знаете, что все данные находятся на диске (в зависимости от капризов кешей дисковых контроллеров, что, если вы используете достойный RAID-контроллер, может вызвать заметную задержку - см. выше: ).