Мы используем сетевой диск Samba для резервного копирования на нашем сервере Linux. Чтобы хранить разрешения (Samba не поддерживает это), мы создали устройство цикла для большого файла (50 ГБ) на сетевом диске. В большинстве случаев это работает нормально, но каждые несколько недель устройство цикла переходит в режим только для чтения.
Вот фрагмент кода fstab для сетевого и кольцевого дисков:
//xyxyxy.your-backup.de/backup /backup cifs credentials=/root/backup-credentials,iocharset=utf8 0 0
/backup/backup.lp /backup-loop ext3 loop,sync,defaults,_netdev 0 0
Я уже пробовал стандартную конфигурацию цикла, но проблема сохраняется:
/backup/backup.lp /backup-loop ext3 loop,sync 0 0
Наше предположение: насколько мне известно, смонтированный диск переходит в режим только для чтения при потере связи с физическим устройством. Таким образом, когда сетевой диск теряет соединение, файл цикла исчезает, и монтирование петли переходит в режим только для чтения. CIFS выполняет повторное подключение своего собственного монтирования, но loop ничего об этом не знает.
Наше текущее решение - принудительно перемонтировать как samba, так и loop device незадолго до того, как наша cronjob запустит процесс резервного копирования. Это работает, но кажется неправильным.
Есть ли возможность инициировать перемонтирование устройства цикла, когда целевой файл цикла снова в сети?
Я думаю, что ваше предположение о том, что вещи переходят в режим только для чтения, когда соединение с сетевым диском потеряно, верно. Я провел простой тест с небольшим файлом на общей папке Samba, и то же самое произойдет, если я дерну сетевой кабель.
Что касается решения проблемы, я бы сказал так:
В зависимости от того, как вы на самом деле выполняете резервное копирование, я бы смонтировал файл цикла rw как часть процесса резервного копирования и размонтировал бы его после завершения. Это также помогает защитить резервную копию от случайного хищения.
Если вам нужен доступ к резервной копии в другое время, смонтируйте ее только для чтения. Вы можете всегда держать файл смонтированным таким образом, за исключением случаев, когда вы действительно хотите сделать резервную копию.
Таким образом, никто не пострадает, и вы сможете делать то, что хотите, и когда хотите. Я бы даже сказал, что это даже немного лучше, чем постоянно монтировать файл цикла в rw - с учетом соображений безопасности.
Если вы используете rsync для резервного копирования, вы можете проверить статус выхода rsync, чтобы выяснить, не повезло ли вам потерять соединение во время резервного копирования (верно и для других инструментов - только мои предпочтения). Затем вы можете действовать соответствующим образом.
Это не дает вам именно того, о чем вы просили - я бы сказал, что это дает вам что-то немного лучше - но я не думаю, что вы можете ожидать, что устройство петли будет работать так, как вы хотите. все равно какая-то уловка.
Надеюсь, это поможет :-)