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

Как переместить несколько приложений Apache Rails с минимальным временем простоя

У меня есть сервер, на котором размещено около 80 небольших приложений для рельсов. Недавно мы обновили дисковое пространство, поэтому теперь нам нужно переместить все сайты на этот новый диск. Хост - это сервер VMware ESX, поэтому все диски виртуальные.

У нас есть виртуальный хост и файл конфигурации apache для каждого файла. В этом файле мы определяем среду разработки, тестирования, принятия и производства, каждая в своем собственном домене. Производственная среда может иметь несколько доменов. Веб-сайты в настоящее время находятся в каталоге в разделе «/» (я знаю, это плохая идея), и их нужно переместить в новый раздел. На веб-сайтах работает база данных Sqlite, поэтому ее тоже нужно скопировать.

Мы хотим переместить эти сайты на другой диск. Проще всего закрыть apache, скопировать файлы и перемонтировать диск в старом месте. Это приведет к значительному простою, так как необходимо скопировать около 100 ГБ данных.

Есть ли способ синхронизировать новый диск со старыми файлами, а затем «мгновенно» поменять их местами? Или, может быть, автоматически перемещать веб-сайты по одному, чтобы минимизировать время простоя для каждого? Я больше всего боюсь повредить базы данных Sqlite, если они будут записаны во время выполнения операции.

Два решения:

  • если ваша файловая система позволяет, вы можете сделать снимок и распаковать его на новый диск. XFS позволяет это (и, вероятно, JFS, я не знаю). Вы можете впоследствии увеличить раздел до размера нового диска, если хотите.

  • вы можете сначала скопировать все с диска на диск с помощью обычной команды cp и активного старого диска. и когда вы будете готовы переключиться, вы выключите apache. rsync старый диск на новый диск, например:

    rsync -Cavz --delete <OLDDISKPATH> <NEWDISKPATH>
    umount <OLDDISKPATH>
    mount --move <NEWDISKPATH> <OLDDISKPATH>
    

    и запустите apache, и все готово с минимальным временем простоя.