Мы храним файлы в общей сетевой папке, наше приложение монтирует этот диск с помощью nfs. Теперь у нас есть требование о резервировании этого диска.
Мы можем добавить второй сервер, а затем синхронизировать каталог с этим сервером. Как лучше всего выполнить синхронизацию?
Если один сервер вышел из строя, как мы можем выполнить аварийное переключение? Есть ли способ в nfs указать резервный диск, и nfs автоматически получает данные с резервного диска? Если это невозможно с nfs, существует ли другая файловая система, которая поддерживает что-то подобное?
Вы также можете попробовать Glusterfs
С помощью glusterfs вы можете создавать разные способы репликации. Серверы могут делать это сами, или клиенты копируют это. Мы работаем с ним уже несколько месяцев, и он нас не подвел (пока)
Похоже, это хороший кандидат на кластер HA с DRB. Что-то вроде этого:
http://www.howtoforge.com/highly-available-nfs-server-using-drbd-and-heartbeat-on-debian-5.0-lenny
Однако это не лучшее описание, поэтому я бы посоветовал отправиться сюда в качестве отправной точки.
По сути, у вас есть два сервера, и диск реплицируется с сервера на другой. этот диск экспортируется через NFS, который затем монтируется клиентом через выделенный IP-адрес на одном из серверов. Если один сервер выходит из строя, отработка отказа будет почти прозрачной, так как просто нужно сделать другой сервер основным и переместить этот IP-адрес с одного сервера на другой (вручную или автоматически).
Самым простым и долгосрочным и наиболее стабильным решением было бы использование файловых систем Netapp. Очень быстрое переключение при отказе, полное резервирование, карты FlexCache для скачков производительности и т. Д. Аргументов в пользу Netapps много, но начальная цена капитальных затрат может показаться высокой, пока вы не поймете, что вы действительно получаете за свои деньги.