Переміщення файлової системи ZFS з одного пулу в інший


18

Я розширюю сервер Solaris 10 U8 з додатковим пулом пам’яті на додаток до кореневої версії.

Який найбільш ефективний / простий / надійний спосіб переміщення певної файлової системи ZFS від rpool до цього нового пулу пам’яті?

Чи можна це зробити в Інтернеті чи потрібно спочатку закрити послуги, використовуючи ці пули?

Відповіді:


15

Питання про відключення послуг по суті залежить від самих служб:

  • Чи активно вони записують у файлову систему, яку ви плануєте перенести?
  • Чи зберігають вони постійні дані, які ви хочете зберегти.

У будь-якому випадку надсилання файлової системи ZFS може зайняти багато часу. Можна мінімізувати недоступність сервісу, зберігаючи їх в Інтернеті більшу частину часу таким чином:

  • створити знімок
  • надішліть цей знімок так, як було запропоновано раніше, але зберігаючи всі сервіси активними
  • коли fs отримано в іншому пулі, відключіть критичні межі служб у цій файловій системі. Переконайтесь, що нова файлова система в пулі призначення не змінюється, оскільки зміни будуть відкинуті пізніше.
  • створити другий знімок (наприклад, знімок2)
  • посилайте цей другий знімок поступово, це буде набагато швидше попереднього перенесення. наприклад:

    zfs send -i rpool / filesystem @ snapshot rpool / filesystem @ snapshot2 | zfs отримують -F пункт призначення / файлова система

  • після завершення перемістіть точку монтування файлової системи зі старого набору даних до нової. наприклад:

    zfs set mountpoint=/application/directory.old rpool/filesystem
    

    zfs встановити крапку = / application / каталог призначення / файлову систему

Потрібно переконатися, що жоден процес не пов'язаний /application/filesystem(наприклад: доступ до файлів або його наявність у поточному каталозі) для досягнення цього.

  • повторно ввімкніть послуги (і), і ви закінчите.

10

Я не думаю, що це можна зробити в Інтернеті, але мій процес полягав би в тому, щоб закрити необхідні сервіси, зробити знімок і використовувати zfs відправити / отримати для здійснення міграції. Щось на зразок:

zfs send rpool/filesystem@snapshot | zfs receive destinationpool/filesystem

Редагувати:

Якщо ви встановите команду "view view" (pv), ви можете контролювати стан передачі за допомогою:

zfs send rpool/filesystem@snapshot | pv | zfs receive destinationpool/filesystem

10

Я повторюю багато з того, що сказав jlliagre, але з доповненнями для спадкових файлових систем. (Переважно тому я маю посилання, коли забуду.)

Якщо у вас є підфайлові системи, ви хочете використовувати -rпрапор у команді zfs snapshot та команду -rабо -Rпрапор у zfs sendкоманді. У верхньому регістрі -Rпереміщуються всі властивості , знімки та клони.

Щоб перемістити весь басейн:

zfs snapshot -r sourcepool@moving
zfs send -R sourcepool@moving | zfs receive -F destpool

потім для синхронізації змін на коротший період міграції вимкнено програми, samba shutdown, nfs

zfs snapshot -r sourcepool@moving2
zfs send -Ri sourcepool@moving sourcepool@moving2 | zfs receive -F destpool

Якщо ви створюєте декілька проміжних знімків для міграції, ознайомтеся зі сторінкою про zfs send -Iкомутатор.


3
У моїх експериментах здавалося, що точна команда: zfs відправити -R Pool0 @ переміщення | zfs отримують -dF Pool1
TinkerTank

4

Ви також знайдете певну користь у використанні такого інструменту, як "mbuffer"; Очевидно, продуктивність передачі / реф. ZFS значно покращується, якщо обидва кінці можуть здебільшого передавати потокові дані безперервно, і без mbuffer (або чогось подібного) ви отримуєте ефект пінг-понгу, коли один постійно блокується з іншого.


Зауважте, що це дуже давнє запитання (понад 5 років), і ваша відповідь навряд чи зможе щось додати до такого старого питання.
Кетрін Макіннес

1
Це чудова порада, і я використовую її і для руху в басейні.
Ден Бюлер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.