Да, возможно "зеркально отразить" HD к новому диску, и существует много способов сделать это. До "лучшего способа", чтобы сделать это - хорошо, это подвергается среде, Вашему уровню опыта, и т.д.
Если Вы ищете инструменты, которые могут помочь, посмотреть на GParted Живой диск. Затем существует Фантом 4 Linux и т.д.
Если к Вашим данным активно не получают доступ, можно также просто скопировать (CP - PR..., rsync, и т.д.) данные от провального HD до нового HD, просто необходимо опустить вещи как {dev, lost+found, sys, proc...} в зависимости от Вашего дистрибутива и т.п.. После того как копия завершилась, необходимо повторно выполнить Личинку (или lilo) и добавить его назад к главной загрузочной записи и др. Очевидно, существует немного больше к ручному маршруту..., но это не настолько плохо, как можно было бы думать.
В нашей среде я даже создал живой CD, который раскрывает заархивированные данные из TSM (Tivoli Storage Manager), который может использоваться, чтобы эффективно сделать "восстановления с нуля".
У Вас действительно есть много опций. Это в конечном счете сводится к Вашему уровню комфорта и функции рассматриваемого поля. Посмотрите на живой GParted, наверняка. Это имеет много функций, которые делают эти виды вещей пирогом; как копирование и вставка разделов ;).
На стороне сервера для простого переключения при отказе вы можете сделать это с помощью Nagios и NRPE.
На сервере Nagios:
define service{
use critical-service
host_name B
service_description redis:2302
check_command check_tcp!2302
event_handler promote_redis!C!2302
contact_groups admin-sms,admin
}
define command{
command_name promote_redis
command_line $USER1$/eventhandlers/promote_redis.sh $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ $ARG1$ $ARG2$
}
Promo_redis.sh
#!/bin/bash
case "$1" in
OK)
;;
WARNING)
;;
UNKNOWN)
/usr/local/nagios/libexec/check_nrpe -H $4 -c promote_redis -a $5
;;
CRITICAL)
/usr/local/nagios/libexec/check_nrpe -H $4 -c promote_redis -a $5
;;
esac
exit 0
На подчиненном сервере :
nrpe.cfg
command[promote_slave_redis]=/usr/lib64/nagios/plugins/promote_redis.sh $ARG1$
Promo_redis.sh
#!/bin/bash
echo 'slaveof no one' | /usr/local/redis/bin/redis-cli -h C -p $1
Виртуальный IP-адрес можно настроить с помощью keepalived
, примерно так:
/etc/keepalived/keepalived.conf
vrrp_script chk_redis {
script "killall -0 redis-server"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
#nopreempt
interface eth0
lvs_sync_daemon_interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass pa$$w0rd
}
virtual_ipaddress {
x.y.z.t
}
track_script {
chk_redis
}
}
Но что произойдет, если вы захотите запустить несколько экземпляров?
Ив Трюдо и Перкона написали отличный агент ресурсов для аварийного переключения MySQL. Исходя из этого, Мартин Вальтер переписал для службы Redis . Попробуйте!
crm configure show
node master_629
node svr200-632.localdomain
primitive VIP ocf:heartbeat:IPaddr2 \
params ip="192.168.6.179" cidr_netmask="24" \
meta target-role="Started"
primitive redis_6380 ocf:heartbeat:redis \
params config="/usr/local/redis/etc/redis.conf"
ms ms_redis_6380 redis_6380 \
meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true" target-role="Started"
location REDIS-PREFER-master_629 ms_redis_12345 100: master_629
colocation vip_on_ms_redis_6380 inf: VIP:Started ms_redis_6380:Master
order vip_after_ms_redis_6380 inf: ms_redis_6380:promote VIP:start
property $id="cib-bootstrap-options" \
no-quorum-policy="ignore" \
default-action-timeout="60s" \
stonith-enabled="false" \
startup-fencing="false" \
dc-version="1.0.12-unknown" \
cluster-infrastructure="openais" \
expected-quorum-votes="2"
crm status
============
Last updated: Tue Aug 21 22:12:11 2012
Stack: openais
Current DC: master_629 - partition with quorum
Version: 1.0.12-unknown
2 Nodes configured, 2 expected votes
6 Resources configured.
============
Online: [ svr200-632.localdomain master_629 ]
Master/Slave Set: ms_redis_12345
Masters: [ master_629 ]
Slaves: [ svr200-632.localdomain ]
VIP (ocf::heartbeat:IPaddr2): Started master_629
Master/Slave Set: ms_redis_6380
Masters: [ master_629 ]
Slaves: [ svr200-632.localdomain ]