Бывают ситуации когда в ceph нужно смигрировать данные между пулами. Когда обьемы десятки терабайт это невозможно выполнить быстро, особенно на медленном хранилище. В этом на время переноса используют кеш.
Бывают ситуации когда в ceph нужно смигрировать данные между пулами. Когда обьемы десятки терабайт это невозможно выполнить быстро, особенно на медленном хранилище. В этом на время переноса используют кеш.
Если вас даунтайм устраивает можете использовать этот вариант.
https://gist.github.com/ksingh7/ae09f33eded05e8215aa
У нас задача смигрировать данные (s3 bucket) c пула который с типом данных erasure (кодирование шифрование) на replicated.
Что мы будем делать:
Отключим rgw (минута простоя будет).
Переименуем пул, создадим новый пул с нужными типами репликации со старым именем.
Поставим старый пул кешом к новому.
Смегрируем данные.
На всех нодах останавливаем radosgw
systemctl stop ceph-radosgw.target
Проверяем статус ceph чтобы все rgw были недоступны иначе на время переезда если попытаються туда залить данные он создаст бакет, вы не сможете смигрировать данные.
ceph -s
Переименовываем пул testpool, на его месте создадим новый с таким же названием, это нужно для того чтобы использовать кеш.
ceph osd pool rename testpool testpool-old
Создаем новый пул с правилом репликации replicated (replicated_hdd), плейменсгруп 8 (настраиваем под себя).
ceph osd pool create testpool 8 8 replicated replicated_hdd
Если у вас не разбит или вы хотите в дефолтном создать создаем без replicated replicated_hdd
Проверяем пулы
rados df
Создаем кеш для пула нового пула testpool, кешом будет старый пул (в этом вся суть) с данными.
По скольку кеш не пустой то используем ключ —force-nonempty
ceph osd tier add testpool testpool-old —force-nonempty
Ставим форвард
ceph osd tier cache-mode testpool-old forward —yes-i-really-mean-it
Переключаем пользователей на кеш чтобы были видны все данные
ceph osd tier set-overlay testpool testpool-old
После этого можем запустить rgw
systemctl start ceph-radosgw.target
Начинаем вытеснять данные с старого пула (использовать в скрине или продолжить после прерывания той же командой).
rados -p testpool-old cache-flush-evict-all
Проверяем процесс миграции
rados df
Если все перенесено, отвязываем overlay и кеш.
ceph osd tier remove-overlay testpool
ceph osd tier remove testpool testpool-old
No comments