Запропоновано механізм blksnap для створення снапшотів блокових пристроїв у Linux

Компанія Veeam, що випускає програмне забезпечення для резервного копіювання та відновлення після аварій, запропонувала для включення до складу ядра Linux модуль blksnap з реалізацією механізму створення снапшотів блокових пристроїв та відстеження змін у блокових пристроях. Для роботи зі снапшотами підготовлено утиліту командного рядка blksnap та бібліотеку blksnap.so, що дозволяє з простору користувача взаємодіяти з модулем ядра через ioctl-дзвінки.

Метою створення модуля називається організація резервного копіювання накопичувачів і віртуальних дисків без зупинки роботи - модуль дозволяє зафіксувати в снапшоті поточний стан всього блокового пристрою, надавши для резервного копіювання ізольований зріз, що не залежить від змін, що продовжують надходити. Важливою особливістю blksnap є можливість одночасного створення снапшотів одразу для кількох блокових пристроїв, що дозволяє не тільки забезпечити цілісність даних на рівні блокового пристрою, але й досягти узгодженості стану різних блокових пристроїв у резервній копії.

Для відстеження змін до підсистеми блокових пристроїв (bdev) додано можливість прикріплення фільтрів, що дозволяють перехоплювати запити на введення/виведення. У blksnap реалізований фільтр, який перехоплює запити на запис, читає старе значення та зберігає його в окремому списку змін, що визначає стан снапшота. При такому підході логіка роботи з блоковим пристроєм не змінюється, запис в оригінальному блоковому пристрої проводиться як є, незалежно від снапшотів, що унеможливлює пошкодження даних і дозволяє уникнути проблем навіть у разі виникнення непередбачуваних критичних помилок у blksnap і переповнення місця, виділеного під зміни.

Модуль у тому числі дозволяє визначити, які блоки були змінені в проміжок часу між останнім і будь-яким попереднім снапшотом, що може бути корисним для реалізації інкрементального резервного копіювання. Для збереження змін щодо стану снапшота на будь-якому блоковому пристрої може бути виділений довільний діапазон секторів, що дозволяє зберігати зміни в окремих файлах усередині ФС на блокових пристроях. Розмір області зберігання змін у будь-який момент може бути збільшений, навіть після створення снапшота.

Blksnap заснований на коді модуля veeamsnap, що входить до складу продукту Veeam Agent for Linux, але перероблений з урахуванням специфіки постачання в основному складі ядра Linux. Концептуальною відмінністю blksnap від veeamsnap є задіяння системи фільтрів, що прикріплюються до блокового пристрою, замість окремого компонента bdevfilter, що перехоплює введення/виведення.

Джерело: opennet.ru

Додати коментар або відгук