Встала задача заменить целиком один сторадж сервер, снабжающий томами SVC, на другой.
Сначала планировалось переносить экстенты через GUI SVC, но учитывая большое количество VDisk-ов, MDisk-ов и многоходовости визарда, на это потребовалась бы прорва времени и уйма внимания.
В общем решил вникнуть в SVC CLI и вот что из этого получилось:
================ mdmigrate.sh =====================
# SVC Mdisk migration utility (c) Alexander Dubrovsky
#!/usr/bin/sh
SVCNAME=$1
DISKS=`grep -v “#” srcdst.$SVCNAME`
MDGRP=`grep $SVCNAME mdgrp|awk ‘{print $2}’`
VDISKS=`ssh admin@$SVCNAME “svcinfo lsvdisk -filtervalue mdisk_grp_name=$MDGRP -nohdr” |awk ‘{print $2}’`
for i in $VDISKS
do
for j in $DISKS
do
TD=`echo $j |awk -F”;” ‘{print $1}’`
ND=`echo $j |awk -F”;” ‘{print $2}’`
EXTS=`ssh admin@$SVCNAME “svcinfo lsvdiskextent -nohdr $i” |awk -v ID=$TD ‘( $1 == ID ) {print $2}’ `
if [ “$EXTS” != “” ] ; then
echo ssh admin@$SVCNAME “svctask migrateexts -source $TD -target $ND -exts $EXTS -vdisk $i “
# ssh admin@$SVCNAME “svctask migrateexts -source $TD -target $ND -exts $EXTS -vdisk $i “
MIGPRC=`ssh admin@$SVCNAME “svcinfo lsmigrate -nohdr”`
fi
done
while [ ! -z “$MIGPRC” ] ; do
echo $MIGPRC
sleep 5
MIGPRC=`ssh admin@$SVCNAME “svcinfo lsmigrate -nohdr”`
done
done
========= mdgrp – SVC to MDisk Group matching ========================
svc1 MDGroup1
svc2 MDGroup2
=========================================================
======== srcdst.svc1 – Source to Target MDisks matching for svc1 cluster ==========
25;38
28;39
30;41
37;40
==========================================================
Конечно же хост, с которого запускается скрипт, должен без пароля по ключу ходить к SVC.
Данный скрипт – просто пример использования CLI, но в принципе может быть использован без модификаций, если у кого-то встанет аналогичная задача.
Он проходит по всем VDisk и запускает на параллельное выполнение процессы миграции экстентов со всех MDisk-ов, которые нужно освободить на новые или просто другие.
Поскольку один MDisk не может быть источником и/или приемником для двух и более одновременных процессов миграции, то скрипт дожидается окончания процессов для каждого VDisk, и затем идет дальше.
2 комментария “SVC: Миграция данных с использованием CLI”
Спасибо!
Интересный способ!