Проект

Общее

Профиль

Развитие #250

открыто

Сделать поддержку сбора копий с flashcache томов

Добавил(а) Андрей Волков больше 11 лет назад. Обновлено больше 8 лет назад.

Статус:
Решена
Приоритет:
Нормальный
Версия:
-
Дата начала:
2013-08-08
Срок завершения:
Готовность:

100%

Оценка временных затрат:

Обновлено Рамиль Абдулбяров больше 11 лет назад

  • Параметр Статус изменился с Новая на В работе

Обновлено Рамиль Абдулбяров больше 11 лет назад

--- rsyncsnap.sh-2013-08-07    2013-08-07 12:00:19.000000000 +0600
+++ /usr/bin/rsyncsnap.sh    2013-08-08 15:32:57.000000000 +0600
@@ -37,6 +37,9 @@

 # Аварийное отключение backup в postgresql
 fn_pg_stop_backup() {
+  # Если это flashcashe, размораживаем файловую систему
+  [ "${FLAG_FLASHCACHE}" = 'yes' ] && fn_flashcache_resume
+
   if [ "${USE_POSTGRES}" = yes ]; then
     PG_STOP_BACKUP=$(psql ${PSQL_ARGS} -AXt -c "select pg_stop_backup()") \
       || fn_result "${@}" EMERGENCY_ERROR "Failed to pg_stop_backup() " HALT
@@ -61,6 +64,13 @@
   fn_snapshot_remove "${@}" EMERGENCY "umount snapshot '${MNT_POINT}'" HALT
 }

+# Разморозка файловой системы flashcache
+fn_flashcache_resume() {
+  ${PRIVELEGE_WRAPPER} /sbin/dmsetup resume "${FLASHCACHE_DEVICE_NAME}" \
+    && fn_result "Resume file system on '${FLASHCACHE_DEVICE_NAME}'" \
+    || fn_result "${@}" EMERGENCY_ERROR "Failed resume file system on '${FLASHCACHE_DEVICE_NAME}'" HALT
+}
+
 # Проверяем, доступна ли у rsync опция --drop-cache
 DROPCACHE_SUPPORT=$(rsync --help | grep 'drop-cache')
 RSYNC_DROPCACHE="${DROPCACHE_SUPPORT:+--drop-cache}" 
@@ -82,9 +92,21 @@
   && fn_result "Block device mark '${DEVICE_MARK}' value is valid '${BLK_NAME}'" \
   || fn_result ERROR "Block device mark '${DEVICE_MARK}' is empty" HALT

-# Выясняем имя блочного устройства по метке
-BLOCK_DEVICE_NAME=$(/sbin/blkid -l -o device -t "${DEVICE_MARK}${BLK_NAME}") \
-  || fn_result ERROR "Failed to search for block device with mark '${DEVICE_MARK}${BLK_NAME}'" HALT
+# Опеределям имена устройств flashcache
+BLOCK_DEVICE_LIST=$(${PRIVELEGE_WRAPPER} blkid -o device -c /dev/null -t "${DEVICE_MARK}${BLK_NAME}" \
+  |xargs ${PRIVELEGE_WRAPPER} /sbin/dmsetup table \
+  |grep -A1 'flashcache conf:' \
+  |sed 'N;s#^\(.*\): .*disk dev (\(.*\)) .*$#\1 \2#')
+
+# Выясняем имя блочного устройства в зависимости используется flashcache или нет
+if [ -z "${BLOCK_DEVICE_LIST}" ]; then
+  BLOCK_DEVICE_NAME=$(${PRIVELEGE_WRAPPER} /sbin/blkid -l -o device -c /dev/null -t "${DEVICE_MARK}${BLK_NAME}") \
+    || fn_result ERROR "Failed to search for block device with mark '${DEVICE_MARK}${BLK_NAME}'" HALT
+else
+  FLASHCACHE_DEVICE_NAME=${BLOCK_DEVICE_LIST% *}
+  BLOCK_DEVICE_NAME=${BLOCK_DEVICE_LIST#* }
+  FLAG_FLASHCACHE='yes'
+fi

 # Проверем, удалось ли найти имя устройства
 [ -n "${BLOCK_DEVICE_NAME}" ] \
@@ -186,6 +208,13 @@
   [ -z "${PG_START_BACKUP}" ] && fn_result ERROR "Got '${PG_START_BACKUP}' in return of pg_start_backup('${SNAPSHOT_TAG}')" HALT
 fi

+# Если это flashcashe замораживаем файловую систему перед созданием снимка
+if [ "${FLAG_FLASHCACHE}" = 'yes' ]; then
+  ${PRIVELEGE_WRAPPER} /sbin/dmsetup suspend "${FLASHCACHE_DEVICE_NAME}" \
+    && fn_result "Suspend file system on '${FLASHCACHE_DEVICE_NAME}'" \
+    || fn_result "${@}" EMERGENCY_ERROR "Failed resume file system on '${FLASHCACHE_DEVICE_NAME}'" HALT
+fi
+
 # Пробуем создать снимок размера 100% от исходного раздела
 # Если не получилось, то берем 90% от свободного места в группе
 # Снимок создается с правами только для чтения
@@ -194,6 +223,9 @@
     || fn_pg_stop_backup ERROR "Can not create LVM snapshot '${LVM_SNAP_DEVICE_NAME}' with tag '${SNAPSHOT_TAG}'" 
 fi

+# Если это flashcashe, размораживаем файловую систему после создания снимка
+[ "${FLAG_FLASHCACHE}" = 'yes' ] && fn_flashcache_resume
+
 if [ "${USE_POSTGRES}" = yes ]; then
   # Делаем checkpoint и возобнавляем изменение data файлов
   PG_STOP_BACKUP=$(psql ${PSQL_ARGS} -AXt -c "select pg_stop_backup()") \

Обновлено Рамиль Абдулбяров больше 8 лет назад

  • Параметр Статус изменился с В работе на Решена
  • Параметр Готовность изменился с 0 на 100
commit 38317070c42d03995d35632b040f1b56e1fa37f5
Author: Abdulbjarov Ramil <ramil@ekb-info.ru>
Date:   Thu Aug 8 18:08:07 2013 +0600

    https://redmine.ekb-info.ru/issues/250
    Реализована поддержка сбора копий с flashcache томов

Экспортировать в Atom PDF