- Підготовка файлового сервера на базі Debian Linux c QUADStor
- Підключення диска QUADStor до хосту віртуалізації на Windows Server
- Установка Veeam Backup Free Edition 9.5
- Реєстрація хоста віртуалізації в Veeam Backup
- Перевірка резервного копіювання ВМ в Veeam Backup
- Автоматизація запуску резервного копіювання ВМ
- перевіряємо результат
Виникла задача організації резервного копіювання віртуальних машин Hyper-V з окремих хостів віртуалізації (без кластера) на декількох віддалених майданчиках. В силу того, що однією з ввідних цього завдання є наявність дуже скромних і нестабільних каналів зв'язку, ідея використання єдиного сервера резервного копіювання на центральному майданчику відпала сама по собі. Бо одна справа, коли можна стягувати резервні копії в одне центральне місце з урахуванням блочних змін, скорочуючи при цьому навантаження на мережу, наприклад тим же System Center DPM , І зовсім інша справа, якщо в стислі терміни потрібно виконати повне відновлення ВМ на певний момент часу за цими ж слабеньким каналах. Таким чином, потрібно було подумати над тим, як організувати резервне копіювання віртуальних машин безпосередньо на віддаленій майданчику, за умови відсутності збільшення поточних витрат на ліцензованих за і на наявному обладнанні.
Так вийшло, що на цих віддалених майданчиках крім хоста віртуалізації є виведений раніше з експлуатації, але цілком робочий, старенький сервер IBM System x3200, який можна використовувати як файловий сервер для зберігання резервних копій віртуальних машин. Виникла ідея встановити на даний сервер додаткові диски, в якості базової ОС розгорнути Linux з пакетом QUADStor, за допомогою якого, в свою чергу, створити віртуальний диск з підтримкою блокової дедуплікаціі і по протоколу iSCSI презентувати цей диск хосту віртуалізації Hyper-V, а вже на хості віртуалізації за допомогою продукту Veeam Backup Free Edition 9.5 налаштувати "гаряче" резервне копіювання віртуальних машин на цей самий iSCSI диск. У результаті повинно вийти "дешево і сердито". У цій замітці я опишу процедуру настройки такої конструкції.
Підготовка файлового сервера на базі Debian Linux c QUADStor
Дискова кошик нашого майбутнього файлового сервера IBM System x3200 в наявної конфігурації підтримує не більше 4 SAS / SATA дисків 3.5 ". З огляду на те, що контролер в цій моделі сервера також дуже скромний (LSI Logic SAS1064ET) і, спрощено кажучи, вміє тільки" страйп " або "дзеркало", створимо дві дзеркальних пари дисків - першу на двох вже наявних SATA дисках малої місткості під операційну систему Linux, і другу - на двох додатково встановлених малобюджетних SATA дисках по 1TB для зберігання резервних копій ВМ (під віртуальний диск QUADStor).
Отже, на першу дзеркальну пару дисків без особливих вишукувань встановлюємо ОС Debian GNU / Linux 8.6 (Jessie). Другу дзеркальну пару великих дисків при цьому залишаємо як немарковані.
Переходимо до встановлення та налаштування QUADStor Storage Virtualization.
Порядок установки QUADStor на різні дистрибутиви Linux описаний в документі Installation / Upgrading on RHEL / CentOS 5.x, 6.x, SLES 11 and Debian 6.x, 7.x . Виходячи з того, що в нашому випадку використовується Debian, встановлюємо попередньо необхідні пакети:
# Apt-get install uuid-runtime build-essential sg3-utils iotop sysstat lsscsi apache2 psmisc firmware-qlogic linux-headers-`uname -r`
Включаємо підтримку CGI для веб-сервера Apache:
# A2enmod cgi
Додаємо правило iptables, що дозволяє підключення до вашого комп'ютера до веб-сервера і зберігаємо поточні правила:
# Iptables -A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT # iptables-save> /etc/iptables.conf
Перезавантажуємо сервер і переконуємося в тому, що служба веб-сервера успішно стартує при запуску системи:
# Systemctl status apache2.service
Тепер завантажуємо і встановлюємо основний пакет QUADStor Storage Virtualization (посилання на актуальну версію пакету беремо тут: Storage virtualization downloads ):
# Mkdir ~ / QUADStor-files # wget http://www.quadstor.com/virtentdub3z/quadstor-virt-3.2.11-debian7-x86_64.deb -P ~ / QUADStor-files # dpkg -i ~ / QUADStor-files /quadstor-virt-3.2.11-debian7-x86_64.deb ... Performing post install. Please wait ... Synchronizing state for quadstor.service with sysvinit using update-rc.d ... Executing /usr/sbin/update-rc.d quadstor defaults Executing /usr/sbin/update-rc.d quadstor enable Building required kernel modules Running / quadstor / bin / builditf. This may take a few minutes. Processing triggers for systemd (215-17 + deb8u5) ...
Установка пакета повинна завершитися без помилок.
Після установки служба quadstor НЕ буде запущена, але при цьому в процесі установки ця служба повинна бути автоматично прописана в автозавантаження при старті системи. Перезавантажуємо сервер і переконуємося в тому, що після завантаження системи служба успішно автоматично стартує:
# Systemctl status quadstor.service
Перевіряємо доступ до веб-інтерфейсу пройшовши за посиланням http: // {сервер}. Веб-сервер повинен буде перенаправити нас по посиланню http: // {сервер} /cgi-bin/system.cgi
Після того як установка завершена QUADStor, виконуємо первинну настройку, яка принципово не відрізняється від раніше описаної , а саме:
- Налаштовуємо обмеження доступу до веб-сервера Apache, а так само, при необхідності, налаштовуємо підтримку HTTPS;
- Переходимо в веб-інтерфейс управління QUADStor і створюємо там Storage Pool;
- Додаємо диск (Physical Storage) в Storage Pool (при цьому в якості додається диска використовуємо другу дзеркальну пару дисків великих дисків на нашому сервері, які в системі представлені як одне накопичувач на комп'ютері);
- Створюємо віртуальний диск VDisk.
Після того, як віртуальний диск QUADStor створений, налаштуємо доступ до нього по протоколу iSCSI. Взагалі інформацію про те, яким чином можливо отримати доступ до віртуальних дисків QUADStor, можна знайти в документі Accessing Virtual Disks (VDisks) .
Функціонал iSCSI Target реалізований в QUADStor за допомогою служби ietd, яка відкриває в системі TCP -прослушіватель на порту 3260, тому нам буде потрібно в iptables створити відповідне дозволяє правило:
# Iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3260 -j ACCEPT # iptables-save> /etc/iptables.conf
Щоб визначити установки конфігурації iSCSI, що стосується створеного нами віртуального диска перейдемо в властивості цього диска в веб-консолі QUADStor (Virtual Disks> Modify> iSCSI Configuration):
Тут в поле IQN побачимо автоматично згенерований ідентифікатор iSCSI-диска і для обмеження доступу до цього диску задамо значення полів Incoming User і Incoming Password. У ці поля пропишемо довільні ім'я користувача і пароль, які наш файловий сервер буде запитувати у iSCSI клієнта (Initiator) при підключенні до цього віртуального диску QUADStor.
Підключення диска QUADStor до хосту віртуалізації на Windows Server
Перейшовши на наш хост віртуалізації Hyper-V на базі Windows Server 2012 R2, відкриємо Панель управління і знайдемо в ній аплет iSCSI Initiator. При першому зверненні до цього аплету система повідомить про потребу в запуском її служби, необхідної для коректної роботи з протоколом iSCSI. Погоджуємося з запуском цієї служби і перекладом її в стан автоматичного запуску при старті системи:
Після запуску служби відкриється аплет управління iSCSI, де на закладці Discovery натиснемо кнопку Discover Portal, щоб додати інформацію про наш файловому сервері на базі Linux
У вікні введемо FQDN ім'я або IP адреса Linux-сервера (порт залишаємо пропонований за замовчуванням - 3260) і натиснемо ОК
Після цього в табличній частині поля Discovered targets повинен з'явиться раніше згаданий IQN нашого віртуального диска QUADStor зі статусом Inactive. Тобто диск успішно виявлений на віддаленому Linux-сервері і тепер для того, щоб зробити підключення цього диска скористаємося кнопкою Connect.
У вікні, включимо опцію Add this connection to the list of Favorite Targets для того, щоб диск був доданий в список автоматично підключаються при старті системи дисків і натиснемо кнопку розширених налаштувань підключення диска - Advanced
У вікні, включимо опцію Enable CHAP log on і вкажемо ім'я користувача і пароль для доступу до диска QUADStor, які ми поставили раніше.
Збережемо зроблені настройки, закривши вікна кнопкою ОК
Якщо все зроблено правильно, то статус диска повинен змінитися на Connected.
Перейдемо на закладку Favorite Targets і переконаємося в тому, що диск є в списку на автоматичне підключення при запуску операційної системи.
На цьому підключення віртуального диска QUADStor по протоколу iSCSI можна вважати закінченим. Тепер потрібно виконати ініціалізацію цього диска в системі і створити на ньому розділ з файловою системою NTFS. Для цього перейдемо в оснащення Disk Management (diskmgmt.msc), виберемо підключений диск і переведемо його в стан Online
Потім виконаємо ініціалізацію диска - Initialize Disk
Буде поставлено питання про вибір типу розмітки диска. Так як ми використовуємо віртуальний диск QUADStor, то, ймовірно, з часом ми захочемо збільшити розмір диска, і він буде більшого розміру, ніж зараз. Нагадаю, що віртуальний диск QUADStor може бути в будь-який час збільшений до 64TB, незважаючи на те, що реальний розмір фізичних дисків, на яких розташований цей віртуальний диск буде невеликий і / або буде залишатися на колишньому рівні. А з огляду на те, що в MBR є обмеження на розмір логічних дисків в 2TB, то в нашому випадку має сенс вибирати тип розмітки GPT:
Після того, як диск ініціалізованим першим і на ньому створена таблиця розділів, створимо на цьому диску розділ з файловою системою NTFS
Призначимо цього диску окрему букву, наприклад E: \, і дочекаємося закінчення процесу форматування, яке в залежності від розміру диска може зайняти деякий час.
Після закінчення процесу форматування переконаємося в тому, що диск доступний нам у системі, і ми можемо на ньому створювати, модифікувати і видаляти папки та файли. Після цих перевірок виконаємо перезавантаження нашого хоста віртуалізації і переконаємося в тому, що в процесі завантаження системи диск автоматично підключається і повноцінно доступний.
Установка Veeam Backup Free Edition 9.5
Для резервного копіювання віртуальних машин Hyper-V ми будемо використовувати програму Veeam Backup Free Edition 9.5, яка дозволить нам створювати повну резервну ВМ без її виключення.
Дізнатися про основні можливості цього продукту можна з документа Product Overview .
З системними вимогами можна ознайомитись завантаживши документ Release notes .
Ліцензійна угода EULA є по посиланню Veeam End User Software License Agreement .
Остання версія 9.5.0.711, доступна на поточний момент, може бути завантажена з сайту Veeam .
Файл образу VeeamBackup & Replication_9.5.0.711.iso розміром в 1,5GB після завантаження копіюємо на наш хост віртуалізації на базі Windows Server і монтуємо його в систему. Наприклад, за допомогою PowerShell зробити це можна так:
Mount-DiskImage -ImagePath "З: \ Temp \ VeeamBackup & Replication_9.5.0.711.iso"
На змонтованому диску запускаємо програму установки Setup.exe, читаємо і приймаємо ліцензійну угоду, тиснемо Next
На етапі введення ліцензійного ключа залишаємо все без змін. Без ключа програма буде працювати в режимі Free Edition з обмеженою функціональністю, якої в рамках нашого завдання буде досить.
Варто відзначити те, що насправді в систему встановлюється повноцінний екземпляр Veeam Backup & Replication, і якщо в процесі первинної установки не було зазначено ліцензійний ключ, то його можна додати в додаток надалі і підвищити режим його роботи до редакцій Standard, Enterprise або Enterprise Plus. Детальніше дізнатися про відмінності безкоштовної і платних версій можна з документа Veeam Backup: Free vs Paid
На наступному кроці, не змінюючи набору встановлюваних компонент, знову тиснемо Next
Далі програма установки зробить аналіз системи на відповідність мінімальним програмним вимогам і запропонує нам доустановити відсутні компоненти за допомогою кнопки Install:
Компоненти доустанавливать з дистрибутива, тому окремо нічого завантажувати не доведеться. Після того, як потрібні компоненти розгорнуті знову запускаємо перевірку за допомогою кнопки Re-run і переходимо до наступного етапу установки - Next.
Тут ми побачимо зведений екран поточної установки, з якими буде встановлено додаток. Якщо включити опцію Let me specify different settings, то всі зазначені налаштування можна буде змінити перед початком процесу безпосередньої установки. Наприклад, замість встановлюваного за замовчуванням іменованого екземпляра SQL Server 2012 Express, можна задати установку в уже існуючий екземпляр SQL Server, поміняти ім'я БД, сервісну обліковий запис, розташування каталогів або номера портів. У більшості випадків запропоновані налаштування можна залишити в конфігурації за замовчуванням і натиснути кнопку Install.
В процесі установки на нашому хості віртуалізації буде розгорнуто іменований екземпляр Microsoft SQL Server 2012 SP3 редакції Express (VEEAMSQL2012) і в ньому буде створена база даних VeeamBackup. Дочекаємося завершення процесу установки.
Реєстрація хоста віртуалізації в Veeam Backup
Після закінчення процесу установки, запускаємо з робочого столу або стартового меню ярлик Veeam Backup & Replication Console. Як сервер підключення використовуємо localhost і порт за замовчуванням 9392. Включимо опцію використання облікових даних поточного користувача Use Windows session authentication і натиснемо Connect
В першу чергу виконаємо в програмі реєстрацію нашого хоста віртуалізації, щоб з'явилася можливість резервного копіювання віртуальних машин, розташованих на цьому хості. Для цього на вкладці VIRTUAL MACHINES в дереві інфраструктури виберемо Microsoft Hyper-V і в контекстному меню або верхньої стрічці кнопок виберемо Add server.
У відкритому майстра додавання сервера введемо FQDN ім'я нашого сервера ...
На кроці Type виберемо тип Hyper-V сервера. У нашому випадку це окремо працює хост - Standalone
На кроці Credentials потрібно вказати адміністративну обліковий запис, за допомогою якої Veeam Backup буде підключатися до хосту віртуалізації і отримувати доступ до віртуальних машин для операцій резервного копіювання. На мій погляд, для цієї мети правильніше буде створити окрему сервісну обліковий запис. При цьому можна використовувати як локальну обліковий запис, створену на хості віртуалізації, так і доменну обліковий запис. У нашому прикладі обрана доменна обліковий запис, якій на хості віртуалізації надані адміністративні права.
Далі нам повідомлять про те, що на хост будуть встановлені компоненти інтеграції Veeam Backup з Hyper-V.
Тиснемо Next і чекаємо закінчення конфігурації Veeam Backup і підключається хоста віртуалізації
Після закриття майстра додавання хоста в консолі Veeam Backup повинен з'явиться перелік віртуальних машин, розташованих на доданому хості.
Тепер можна перейти до перевірки функцій резервного копіювання віртуальних машин c допомогою Veeam Backup.
Перевірка резервного копіювання ВМ в Veeam Backup
На підключеному нами раніше за протоколом iSCSI диску створимо каталог, в який будуть поміщатися повні резервні копії віртуальних машин, зроблені з Veeam Backup. У нашому випадку це буде каталог E: \ VMBackups.
Потім в консолі Veeam Backup виберемо якусь віртуальну машину і викличемо для неї пункт меню VeeamZIP
У вікні вкажемо шлях до щойно створеного каталогу для зберігання резервних копій, якщо потрібно, визначимо параметри видалення старих резервних копій і відключимо компресію. Компресія резервних копій Veeam Backup, це річ безперечно цікава, проте в нашому випадку включення компресії призведе до низьких показників дедуплікаціі на диску QUADStor (перевірено на практичних дослідах). Налаштувавши всі параметри поточної сесії резервного копіювання тиснемо OK
Запуск завдання резервного копіювання буде супроводжуватися інформаційним вікном з статусними показниками виконуваної завдання.
В ході резервного копіювання ми також зможемо побачити, що в консолі Hyper-V Manager віртуальна машина приймає відповідний статус.
В результаті виконання завдання резервного копіювання в зазначеному нами каталозі буде створена повна резервна копія ВМ у вигляді файла з розширенням VBK. Цей тип фалів асоційований в системі з Veeam Backup і по його подвійному кліку буде автоматично запускатися консоль Veeam Backup і в ній буде відкрита форма, з якої можна при необхідності провести операцію відновлення як всієї віртуальної машини, так і окремих файлів всередині ВМ (Instant File- Level Recovery).
Таким чином вважаємо, що резервне копіювання, як таке, у нас працює, але тепер потрібно вирішити ще одну важливу задачу. Справа в тому, що безкоштовна редакція Veeam Backup має обмеження, які не дозволяють нам налаштовувати запуск резервного копіювання за розкладом безпосередньо з інтерфейсу програми. Однак в складі Veeam Backup є набір командлетів PowerShell, за допомогою яких можна викликати завдання резервного копіювання в Veeam Backup. І якщо поєднати цю можливість з Планувальником завдань Windows (Task Scheduler), то на виході ми можемо отримати цілком працездатний рішення задачі автоматизації запуску резервного копіювання за розкладом.
Автоматизація запуску резервного копіювання ВМ
Отримати онлайн-довідку по PS-Командлети Veeam Backup можна за посиланням Veeam Backup & Replication 9.5 - PowerShell Reference . А вже готовий PowerShell скрипт, який експлуатує командлети Veeam Backup, зокрема Start-VBRZip , Ми можемо знайти в статті Veeam Backup Free Edition: Now with PowerShell! . Я трохи змінив цей скрипт, додавши можливість сповіщень електронною поштою тільки в тому випадку, якщо в процесі резервного копіювання виникла якась помилка.
# ########################### User Defined Variables ################### ######### # Names of VMs to backup separated by comma (Mandatory). For instance, $ VMNames = "VM1", "VM2" $ VMNames = "KOM-AD01-WS305", "KOM-AD01-DEV03" # Name of Hyper-V host VMs to backup reside on (Mandatory) $ HostName = " KOM-AD01-VM14 "# Directory that VM backups should go to (Mandatory; for instance, C: \ Backup) $ Directory =" E: \ VMBackups "# Desired compression level (Optional; Possible values: 0 - None, 4 - Dedupe-friendly, 5 - Optimal, 6 - High, 9 - Extreme) $ CompressionLevel = 0 # Quiesce VM when taking snapshot (Optional; VMware Tools are required; Possible values: $ True / $ False) $ EnableQuiescence = $ True # Protect resulting backup with encryption key (Optional; $ True / $ False) $ EnableEncryption = $ False # Encryption Key (Optional; path to a secure string) $ EncryptionKey = "" # Retention settings (Optional; By default, VeeamZIP files are not removed and kept in the specified location for an indefinite period of time. # Possible values: Never, Tonight, TomorrowNight, In3days, In1Week, In2Weeks, In1Month) $ Retention = "In1Wee k "# # ########################## Notification Settings ################## ########## # Enable notification (Optional) # Possible values: 0 - None, 1 - Only Warnings & Errors, 2 - All notifications $ EnableNotification = "1" $ SMTPServer = "KOM-SMTP.holding.com "$ EmailFrom =" [email protected] "$ EmailTo =" [email protected] "$ EmailSubject =" VEEAM Backup Notification "# ############ ############### Email formatting ############################ $ style = "< style> BODY {font-family: Arial; font-size: 10pt;} "$ style = $ style +" TABLE {border: 1px solid black; border-collapse: collapse;} "$ style = $ style +" TH {border: 1px solid black; background: #dddddd; padding: 5px; } "$ Style = $ style +" TD {border: 1px solid black; padding: 5px; } "$ Style = $ style +" </ style> "# ########################### End User Defined Variables #### ######################## Asnp VeeamPSSnapin $ Server = Get-VBRServer -name $ HostName $ MesssagyBody = @ () foreach ($ VMName in $ VMNames) {$ VM = Find-VBRHvEntity -Name $ VMName -Server $ Server If ($ EnableEncryption) {$ EncryptionKey = Add-VBREncryptionKey -Password (cat $ EncryptionKey | ConvertTo-SecureString) $ ZIPSession = Start-VBRZip -Entity $ VM -Folder $ Directory -Compression $ CompressionLevel -DisableQuiesce :(! $ EnableQuiescence) -AutoDelete $ Retention -EncryptionKey $ EncryptionKey} Else {$ ZIPSession = Start-VBRZip -Entity $ VM -Folder $ Directory -Compression $ CompressionLevel -DisableQuiesce :(! $ EnableQuiescence ) -AutoDelete $ Retention} If ($ EnableNotification -in "1", "2") {$ TaskSessions = $ ZIPSession .GetTaskSessions (). logger.getlog (). updatedrecords $ FailedSessions = $ TaskSessions | where {$ _ .status -eq "EWarning" -or $ _ .Status -eq "EFailed"} If ($ FailedSessi ons -ne $ Null) {$ MesssagyBody = $ MesssagyBody + ($ ZIPSession | Select-Object @ {n = "Name"; e = {($ _ .name) .Substring (0, $ _ .name.LastIndexOf ( "("))}}, @ {n = "Start Time"; e = {$ _ .CreationTime}}, @ {n = "End Time"; e = {$ _ .EndTime}}, Result, @ {n = "Details"; e = {$ FailedSessions .Title}})} Else {$ MesssagyBody = $ MesssagyBody + ($ ZIPSession | Select-Object @ {n = "Name"; e = {($ _ .name) .Substring (0, $ _ .name.LastIndexOf ( "("))}} , @ {n = "Start Time"; e = {$ _ .CreationTime}}, @ {n = "End Time"; e = {$ _ .EndTime}}, Result, @ {n = "Details"; e = {($ TaskSessions | sort creationtime -Descending | select -first 1) .Title}})}}} If ($ EnableNotification -in "1", "2") {If (($ EnableNotification -eq "1") -And ($ FailedSessions -eq $ Null)) {exit} Else {$ Message = New-Object System.Net.Mail.MailMessage $ EmailFrom, $ EmailTo $ Message .Subject = $ EmailSubject $ Message .IsBodyHTML = $ True $ message .Body = $ MesssagyBody | ConvertTo-Html -head $ style | Out-String $ SMTP = New-Object Net.Mail.SmtpClient ($ SMTPServer) $ SMT P .Send ($ Message)}}
Відкриємо з правами адміністратора консоль Windows PowerShell і виконаємо перевірки запуск скрипта виконавши команду:
& "C: \ Tools \ VeeamZip.ps1"
Запущений скрипт відобразить статус виконання завдання створення резервної копії віртуальних машин:
Після того, як ми переконалися в тому, що скрипт успішно відпрацьовує при ручному запуску, налаштуємо періодичний запуск скрипта за допомогою Планувальника завдань Windows. Як команди, що виконується в завданні Планувальника, вкажемо запуск powershell.exe з параметрами:
powershell.exe
-NoProfile -command "C: \ Tools \ VeeamZip.ps1"
Налаштування резервного копіювання можна вважати закінченою.
перевіряємо результат
Отже, в нашому прикладі PS-скрипт за розкладом (вночі, один раз на добу) виконує резервне копіювання двох віртуальних машин з автоматичним видаленням резервних копій старше семи днів. І сталося наприкінці семи днів перевіримо результат на нашому хості віртуалізації.
Як бачимо, у нас дійсно є по 7 повних резервних копій для кожної з двох віртуальних машин, які були вказані нами в скрипті. Загальний розмір використовуваного цими резервними копіями близько 700GB. При цьому, якщо ми заглянемо в веб-консоль QUADStor і подивимося властивості дискового пулу на базі якого створено віртуальний диск, то побачимо, що з урахуванням дедуплікаціі реальна фізична дискова ємність використана не більше ніж на 100GB.
На мій погляд, результат виглядає зовсім непогано. І в даній ситуації, при необхідності, ми зможемо збільшити термін зберігання резервних копій до двох тижнів, а то і до місяця. Тільки потрібно не забувати про те, що для цього нам потрібно збільшити розмір віртуального диска QUADStor з подальшим збільшенням логічного диска через оснащення Disk Management на хості віртуалізації.