Как стать автором
Обновить

Зеркало здесь, зеркало там: сетевая репликация дисков под Windows

Время на прочтение4 мин
Количество просмотров14K
Всего голосов 43: ↑42 и ↓1+41
Комментарии54

Комментарии 54

Все уже придумано до нас! DFSN/DFSR, Storage spaces, etc.
Поправьте, если я ошибаюсь, но мне казалось, что DFSR работает только на серверных версиях Windows. То есть, запустить репликацию на двух домашних компьютерах с Windows 10 не получится.
Это правда. Но для домашних компьютеров тоже давно придуманы средства, начиная от регулярных бэкапов и заканчивая синхронизаторами типа Resilio или, как верно упомянуто ниже, Bittorent Sync и 100500 ещё. Тащить туда DRBD ну можно, конечно, но зачем?
НЛО прилетело и опубликовало эту надпись здесь
Скорее storage spaces, т.к. тут речь о репликации блочного устройства, а не файлов. И скорее того их варианта, который в состава WS datacenter, а не standard. Так что если там есть синхронная репликация (эээ… в смысле, что операция записи на диск не считается завершенной, пока не завершится запись на обоих — первичном и вторичном — хранилище), то может какой-то финт ушами и получится…

плюс Hyper-V Replica и Storage Replica

bittorent sync - и нет проблем, зачем столько трудов не понял

Кстати если файлов мелких >200k то bittorent sync ОЧЕНЬ тормозил (правда давно использовал, как сейчас не знаю), этим же страдают (наверное) все файловые синхронизаторы. Syncthing, Google backup и т.п. А еще они часто передают данные максимум на 20-30% от доступной скорости сети, особенно если через интернет.

Вот хотелось бы знать как со всем этим у WinDRBD

DRBD (вряд ли виндовый отличается от него в этом плане) вообще не в курсе про существование файлов. Он работает на уровне блочного устройства (т.е. винда видит еще один «типа физический» диск). Прошла операция записи на диск — копия этой операции пошла на «вторичную» его копию.

Плюс у линуксового есть «синхронный» режим, когда операция записи считается успешно завершенной только после окончания записи на другой копии диска (тормознее, но целостнее данные при сбое). И даже режим active-active, когда писать можно одновременно на обе копии (но в винде так нельзя из-за отсутствия кластерной файловой системы, точнее, диск-то может и можно сделать доступным на запись, но NTFS/ReFS такого издевательства не переживёт — поэтому в виндовый CSV (cluster shared volume) данные-то могут писать все узлы на диск сразу, а вот «контроллер» метаданных — для каждого CVS только один и является кластерной ролью).

На сколько я понимаю этим страдает в первую очередь сама винда.

Если вы хотите сохранить ваши файлы - не используйте репликацию, делайте бэкапы. Репликация не спасет вас от случайного удаления, вируса-шифровальщика и еще кучи возможностей потерять ваши данные. Например, duplicati, rsnapshot или любой другой инструмент.

Данные на жёстком диске должны ещё дожить до вечернего бэкапа. Репликация эту вероятность повышает. Хотя и незначительно, т.к. диски редко выходят из строя. Гораздо чаще пользователи сами случайно удаляют файлы.
Вероятность дожить до бэкапа повышается теми же самыми raid, хотя бы банальным зеркалом. «Сетевое зеркало» тут имеет небольшой плюс в том случае, если какой-нибудь блок питания вздумает задурить и диск накроется из-за него… То накрыться могут и оба винта в рейде (ага, статью начали именно с примера с отказом БП). Вот и предложили аналог storage spaces direct для винды, отличной от Server Datacenter…
но если честно, то для компа с клиентской виндой это уже для решения для настоящих параноиков. А вот забубенить на паре сервер стандартов (не датацентров) кластер с файлшарой без СХД, на локальных дисках — это было бы интересно, наверное.
НЛО прилетело и опубликовало эту надпись здесь
без слова direct точно есть, еще с 2012-го… но вот не помню, чтобы direct в «стандарт» спускали, хотя могу ошибиться.

под Linux с DRBD из двух компов можно собрать программную СХД с репликацией данных (и даже в режиме active-active её использовать, чтобы iSCSI максимально прозрачно отказ одного узла хранения обработал).

Вопрос в цене исправления последствий тотального сбоя ;) Знаю случаи, когда развалившийся storage space лечили сами Microsoft в рамках контракта. Но знаю случаи, когда и DIY сойдёт за глаза.
НЛО прилетело и опубликовало эту надпись здесь
Почему не несёт? Несёт. Но денег стоит (за редакцию сервера и за контракт). На линуксе бесплатно и эквивалентно «датацентру без контракта» ;)

А если всё равно контракта нет, то можно и на стандарте наколхозить попробовать, если стандарт по какой-то причине нужен…
НЛО прилетело и опубликовало эту надпись здесь
Тут дополнительный нюанс в том, что восстановление терабайтов данных из бэкапа — это тоже время и простой… Лучше, чем потеря, но всё равно долго.

Так что если можно бесплатно заполучить клон хранилища, пригодный к немедленному включению в работу (или даже автоматом задействованное) — то это иногда хорошее дополнение к бэкапу.
НЛО прилетело и опубликовало эту надпись здесь
В этом плане важнее БД, которая должна работать считай непрерывно, тут спасёт репликация (которая не отменяет бекапы, естественно).

MS SQL Enterprise умеет делать кластер active-active из двух «непересекающихся» по железу инсталляций… Но и денег стоит ;)

Можно сделать HA для стандартного… Многим этого «за глаза», но нужно общее хранилище, либо железка, либо спейсес директ, либо еще как-то софтверное хранилище делать (может drbd поможет как-то, например, ну или за деньги точно есть SDS)…

PS. А с этим вопросом не подскажете?

а там вопрос не понял… меньше чем на раздел даже сервер не даёт, хорошо, что хоть не на весь диск…
НЛО прилетело и опубликовало эту надпись здесь
в FB тоже завезли в текущей версии много чего полезного)

Так можно и postgresql завести, и много чего… Смотря с чем работает то, что вам надо. Есть некоторое количество софта, у которого либо нет выбора, либо рекомендуется MSSQL.

Уже. Полка была выбрана слабая, упирается в неё производительность.

Под MSSQL? (по контексту был он).
Если у него, то две бошки одновременно работают только в энтерпрайз едишене. В стандарте работает только одна, вторая ждёт, пока отключится первая, т.к. работают обе с одной и той же базой (у энтерпрайза — две базы с собственной репликацией между ними, за счёт чего active-active и получается, и могут работать без общей СХД — стандарту она нужна, чтобы базу от бошки к бошке перекинуть).
… Ну или заменить СХД на программное решение, это, как его щас модным словом называют, «гиперконвергентное» кажеццо? )

Тьфу. То бишь не на весь диск, а только на раздел один.

Стораж спейс, насколько я помню, кушает весь диск.

«Легаси» зеркалирование и объединение — работает с разделами.

Ну а уж что порезали в «хомяке» — на память не скажу, но раз не даёт сзеркалировать разделы — Кэп подсказывает, что значит нельзя :)
НЛО прилетело и опубликовало эту надпись здесь
Да, но на прошке можно несколько разделов собрать по разному.

В стораж спейс, а не в «легаси»?

Расширение раздела есть, а вот зеркала…
В сервере есть точно, и вот как раз вот тут ;)

а вдруг есть решение а-ля из статьи.
DRBD создаст зеркало раздела. На другой комп точно, в т.ч. на диск, к какому-будь Пи подключенному. А вот можно ли на том же компе — на знаю, это уже что-то из разряда «как в РПГ сделать белую тунику красной? прицепить на неё табличку „красная туника“!»
НЛО прилетело и опубликовало эту надпись здесь
… Ну или заменить СХД на программное решение, это, как его щас модным словом называют, «гиперконвергентное» кажеццо? )
Программная СХД — тоже вариант, да. Тот же StarWind Virtual SAN, например.
Гиперконвергентная среда — это ситуация, когда хранятся ВМ на тех же узлах, на которых они и исполняются, но считаются единым кластером, с отказоустойчивостью, синхронизацией и прочими атрибутами.
ну вот я и задался вопросом — можно ли загнать windrbd в режим active-active и собрать на нём CSV?.. если как-то можно — то будет то самое гиперконвергентное software defined storage.

Скажем, раздел DRBD расшарить по iSCSI (если виндовый iSCSI target умеет отдавать разделы в LUN'ы) с двух компов, дальше (если можно подключить target к initiator на том же компе) с multipath уже по идее получится сделать CSV…
Потерять суточную работу менее обидно, чем потерять всЁ, если шифровальщик начнёт шифровать файлы и DRBD автоматически обновит на остальных дисках файлы на зашифрованные. А инкрементальный бэкап современное ПО умеет стартовать сразу после записи в отслеживаемую папку, и с таким типом бэкапа шифровальщики не страшны, если конечно бэкап хранится не на этом же компьютере.
Вот только в случае сбоя (а не прорыва шифровальщика) это всё придётся потом ждать, пока оно обратно из бэкапа восстановится.

«Для дома, для семьи» это более чем приемлемо. Всё было бы целесообразнее, если бы нам рассказали, как с помощью DRBD сделать CSV для «сервер стандарта» на локальных дисках, без СХД и стораж спейсес директа от «датацентра».

Если нужно для рабочих целей — берите какой-нибудь Veeam B&R, там можно бэкап виртуальной машины сразу запустить, без ожидания восстановления.

можно… (кстати, он один такой, или акронисы тоже прикрутили подобную фичу?)

а сколько это денег стоит? ;) (т.к. эта фича в самой дорогой его редакции, насколько я помню)

плюс потеря данных между точкой последнего бэкапа и моментом отказа (ну и какой-то перерыв сервиса тоже).

Так что в общем случае бэкап не заменяет, а дополняет средства обеспечения высокой доступности и/или отказоустойчивости. А дальше надо считать стоимости проблем и их решений…

Не нашёл каких либо ограничений для этой функции по их правилам лицензирования.
Мне в community версии Instant recovery доступен.
Увы, потеря части данных тут всё же неизбежна при использовании обычного резервного копирования. Либо мы сохраняем вообще каждую операцию записи и ведём всю их историю для идеального отката до момента получения шифровальщика, либо мы уменьшаем расходы, но сохраняем с определённым интервалом.


Ну, так это везде так. Стоимость решений и стоимость потенциальных проблем должна быть сбалансирована.

Не нашёл каких либо ограничений для этой функции по их правилам лицензирования.
Мне в community версии Instant recovery доступен.

Так у комьюнити редакции ограничение другое — по числу виртуальных машин, насколько я помню (и/или по числу хостов в дополнение к этому), при том, что функции доступны все.

А вот у платных редакций это доступно в самой дорогой.

Может, конечно, в 11-й версии чего-то поменяли, я настолько за ними не слежу…
НЛО прилетело и опубликовало эту надпись здесь

FreeFileSync, rsync - отличные альтернативы

Мне тут недавно задавали вопрос как сделать надежное «горячее» хранение данных. Есть ИП у которого на обычном ПК крутится софт с помощью которого выдаются и закрываются задания для рабочих. Подробностей сам не знаю, но не суть. Есть резервный ПК такой же конфигурации. Предполагалось, что если сломается какой-то компонент основного ПК, то диск пертыкивается в резервный ПК и работаем дальше. Проблема в том, что если выходит из строя сам диск основного ПК, то от резерва толку особо нет даже при наличии ежедневной резервной копии, так как устаревание данных на сутки стало уже критичным — об изначальном масштабировании бизнеса у нас как-то мало кто заботится. Ни рейдов, ни бэкапов изначально не предусмотрено — делали как понимали и умели)

Знакомый, конечно, обратился немного не по адресу, так как я себя не считаю спецом в IT, а постольку-поскольку. Сходу было предожено «простое» решение — поставить третий комп, поднять там сервер Nextcloud и настроить синхронизацию данных через Nextcloud. И бэкап будет, и версионность в случае чего. Вот вопрос — а WinDRBD для этих целей подойдёт? Только у меня по Nextcloud в личных целях статистика-то хорошая накоплена, а сетевую репликацию DRBD я ни разу не щупал. Непонято будет, что будет если, например, второй ПК вдруг отключат — сетевой «рейд» типа развалится? И чем это чревато?

У них в документации расписан сценарий, который теоретически может подойти. Вкратце - бездисковая машина, которая через iPXE загружает по сети ядро Windows, а ядро уже грузит всю остальную систему с диска C:, расположенного на WinDRBD устройстве. Но, как по мне - это излишняя сложность.

Проще поставить на две машины VirtualBox и разместить его диск на WinDRBD. Windows с нужной софтиной установить внутри VirtualBox-а. Тогда при аварии достаточно будет на втором компьютере назначить устройство WinDRBD первичным и запустить виртуалку. Только для надёжности лучше использовать протокол С (при котором запись на диск считается завершённой, когда записалось на оба диска). Вариант с виртуалбоксом хорош ещё тем, что оба компьютера не обязаны быть одинаковой конфигурации.

Если второй компьютер отключают - "рейд" не разваливается. Просто перестаёт синхронизироваться. Когда включите компьютер - синхронизация снова запустится.

Про виртуалки я тоже думал, так как это хорошее решение в плане аппаратнонезависимости и удобно настроить виртуальную машину один раз, а потом её просто разворачивать где надо — всё рабочее окружение уже настроено. Ваша идея с сетевой репликацией файла диска виртуальной машины интересна. Можно даже эту идею расширить на все файлы виртуальной машины — тогда будет полностью идентичная копия виртуальной машины.
НЛО прилетело и опубликовало эту надпись здесь
Это понятно, что бекапы никто не отменял. И вообще их отсутствие — это есть полное бескультурье) Но с бекапами-то изначально понятно что, как и чем делать.

Для виртуалок давно есть Hyper-V реплика

S2D посмотрите - может быть получится вообще без виртуалок обойтись подняв кластер на Винде. Идея плодить сущности лично мне вообще не нравится. ГиперВ ничуть не хуже виртуалбокса, но поднимается проще и ресурсов потребляет меньше. И обязательно бекап не только всего ПК но и приложения. Даже виртуальные сервера имеют свойство со временем помирать :(

НЛО прилетело и опубликовало эту надпись здесь

он даже на 10 поднимается с ограниченным функционалом. по оборудованию вроде есть ограничение - только на SAS работает. но точной информации не имею, надо пробовать. коллега его на виртуальных серверах успешно поднял. кстати где-то тут есть пара не плохих статей про него.

НЛО прилетело и опубликовало эту надпись здесь
Автор, а вот на самом ведь деле — не рассматривали вариант сделать на windrbd CSV для кластера Windows Server Standard?..

У меня нет кластеров, так что не рассматривал. Но ваша мысль сделать CSV через multipath iSCSI довольно интересна. Вот только active-active на WinDRBD пока невозможно. Так что в любой момент времени один из target-ов будет без подключенных дисков. Будет-ли такое работать?

Хотя, возможно, я неправильно понял, как именно вы хотите сделать.

Конкретно на WinDRBD невозможно?.. DRBD сам по себе вроде ж умеет такое…

p.s.1: «Starting with 0.10.1, we distinguish between data devices and disk devices.». Нужны «disk devices», грубо говоря — raw disks, чтобы никаких там попыток со стороны drbd монтирования файловой системы хоть на букву, хоть в директорию.

p.s.2: для проверки, по идее, хватит двух виртуалок с windows server standard, даже физика не нужна…

Вот из документации:
Note that in contrast to Linux DRBD, WinDRBD devices exist only on nodes that are Primary. The reason is that if we should create Windows devices when the node is Secondary, the Windows Kernel (most notably the NTFS driver) will start to cache data above the WinDRBD driver, thereby causing data corruption (since WinDRBD doesn’t know about the modified data).

В будущем обещают добавить
LINSTOR support (for managing WinDRBD in a set of cluster nodes) and cluster manager support (for creating high availability clusters using WinDRBD).

Означает-ли это, что на Windows будет active-active? Не уверен. Скорее, будет автоматическое переключение одной из вторичных нод в режим первичной.

О каком типе устройства речь?

Т.к. у них же написано:
«Data devices are regular block devices with a mount point. They can be formatted with NTFS, other file systems like FAT family and ReFS are not yet supported.

Disk devices present themselves as a regular PnP disk (like a physical hard disk) and appear as disk in the Windows partition manager (and also in device manager).»

Собственно, с шареным SCSI LUN у винды ровно те же фигня, что описана у DRDBD — потому его не монтируют напрямую, только через CSV. То ли в windrbd переборщили с защитой пользователя от него ж самого, то ли для Disk devices всё-же как-то можно…

И опять же, какой secondary в режиме master-master? (или как там нынче политкорректно он называется, Dual primary?)
т.е. в линуксовом случае пишут:

4.8.1. Permanent dual-primary mode

To enable dual-primary mode, set the allow-two-primaries option to yes in the net section of your resource configuration:

resource [resource]
net {
protocol C;
allow-two-primaries yes;
fencing resource-and-stonith;
}
handlers {
fence-peer "...";
unfence-peer "...";
}
...
}

Нет времени объяснять, давайте делать колхоз из веток и известной субстанции. DataCore, Strawind и еще с десяток решений нервно курят в сторонке. Некоторые продаются дестяками лет, а DataCore и вовсе занимает верхние позиции в SPC1

Зарегистрируйтесь на Хабре, чтобы оставить комментарий