Replikacja danych przy wykorzystaniu DRDB oraz RAID1 – Debian Squeeze

Print Friendly, PDF & Email

Chcemy stworzyć prosty w działaniu RAID1 ( czyli dublowanie się danych, tak aby zapewnić dostępność przy uszkodzeniu jednego dysku ). W tym celu wykorzystamy DRDB (Distributed Replicated Block Device). Poniżej schemat replikacji danych z jednej maszyny na drugą.

Będziemy potrzebowali dwóch maszyn:

– server1.example.com (IP address 192.168.0.100)– server2.example.com (IP address: 192.168.0.101)


Musimy posiadać około 30 GB wolnego miejsca na partycji /dev/sdb. Równie ważne jest umożliwienie komunikacji między maszynami. Dlatego dodamy odpowiednie wpisy do /etc/hosts.

1) Dodanie wpisów do /etc/hosts:

Server1 / Server2

vi /etc/hosts


dodajemy do niego:

127.0.0.1       localhost.localdomain   localhost192.168.0.100   server1.example.com     server1192.168.0.101   server2.example.com     server2
# The following lines are desirable for IPv6 capable hosts::1     ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters



2) Ustawiamy synchronizację czasową:

Server1 / Server2

apt-get install ntp ntpdate



3) Konfiguracja partycji:

Server1 / Server2

Na początek sprawdzimy jak wygląda nasz dysk:

fdisk -l


Na dole polecenia powinniśmy zobaczyć:

Disk /dev/sdb doesn’t contain a valid partition table


Co oznacza, że ta partycja nie została przygotowana do użycia. Teraz ją przygotujemy do użycia:


fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x8042e800.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to
         switch off the mode (command 'c’) and change display units to
         sectors (command 'u’).
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
pPartition number (1-4): 1
First cylinder (1-3916, default 1): Enter
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-3916, default 3916): Enter
Using default value 3916
Command (m for help):t
Selected partition 1
Hex code (type L to list codes): 83
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

Powinniśmy teraz zobaczyć dysk gotowy do pracy:


fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes255 heads, 63 sectors/track, 3916 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00029d5c
   Device Boot      Start         End      Blocks   Id  System/dev/sda1   *           1        3793    30461952   83  Linux/dev/sda2            3793        3917      992257    5  Extended/dev/sda5            3793        3917      992256   82  Linux swap / Solaris
Disk /dev/sdb: 32.2 GB, 32212254720 bytes255 heads, 63 sectors/track, 3916 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x78f21e78
   Device Boot      Start         End      Blocks   Id  System/dev/sdb1               1        3916    31455238+  83  Linux



4) Instalacja oraz konfiguracja DRDB:

Server1 / Server2

apt-get install drbd8-utils


Ładujemy moduł drbd

modprobe drbd



Sprawdzamy czy działa:

lsmod | grep drbd



drbd                  193312  0lru_cache               5042  1 drbdcn                      4563  1 drbd



Skonfigurujemy teraz replikację na nasze maszyny:

cp /etc/drbd.conf /etc/drbd.conf_orig
cat /dev/null > /etc/drbd.conf
vi /etc/drbd.conf



dodajemy do niego:


global { usage-count no; }common { syncer { rate 100M; } }resource r0 {        protocol C;        startup {                wfc-timeout  15;                degr-wfc-timeout 60;        }        net {                cram-hmac-alg sha1;                shared-secret „secret”;        }        on server1.example.com {                device /dev/drbd0;                disk /dev/sdb1;                address 192.168.0.100:7788;                meta-disk internal;        }        on server2.example.com {                device /dev/drbd0;                disk /dev/sdb1;                address 192.168.0.101:7788;                meta-disk internal;        }}

Ważne jest, aby wpisy w powyższym pliku odpowiadały rzeczywistości (nazwy hostów, IP oraz naszą partycję).

Następnie inicjujemy DRDB:

drbdadm create-md r0


w odpowiedzi otrzymamy:

Writing meta data…initializing activity logNOT initialized bitmapNew drbd meta data block successfully created.


Startujemy DRDB:

/etc/init.d/drbd start


Server1

Ustawimy Server1 jako główny węzeł w naszym RAID1:

drbdadm — –overwrite-data-of-peer primary all


Nastąpi synchronizacja danych między węzłami. 

Server2

Możemy zobaczyć jak przebiega synchronizacja wydając:

cat /proc/drbd


Server1

Sformatujemy teraz naszą partycję oraz zamontujemy go, aby DRDB go widział.

mkfs.ext3 /dev/drbd0
mkdir /data
mount /dev/drbd0 /data

Wydając polecenie df -h, będziemy mogli zobaczyć całą strukturę naszego dysku, wraz z podłączonym do niego udziałem /dev/drbd0.



5) Sprawdzamy działanie naszej replikacji:


Server1

Tworzymy przykładowe pliki do synchronizacji:

touch /data/test1.txttouch /data/test2.txt


Odmontowujemy katalog /data:


umount /data



Teraz ustawimy Server1 jako „slave” w naszym RAID1.


drbdadm secondary r0

Server2


Ustawimy Server2 jako „master” w naszym RAID1

drbdadm primary r0


sprawdzamy czy Server2 faktycznie stał się masterem:

cat /proc/drbd
version: 8.3.7 (api:88/proto:86-91)


srcversion: EE47D8BF18AC166BE219757 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r—-    ns:4 nr:32083300 dw:32083304 dr:325 al:1 bm:1920 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

następnie utworzymy katalog data, do którego zostaną przekopiowane nasze dane:

mkdir /datamount /dev/drbd0 /data


następnie powinniśmy sprawdzić czy znajdują się tam nasze dwa wcześniej utworzone pliki:

ls -l /data/
-rw-r–r– 1 root root     0 Aug  8 12:48 test1.txt-rw-r–r– 1 root root     0 Aug  8 12:48 test2.txt


Wszystko udało się, nasze pliki są replikowane.

Server1

W tym samym czasie Server1 jest teraz węzłem pomocniczym:

cat /proc/drbd


version: 8.3.7 (api:88/proto:86-91)srcversion: EE47D8BF18AC166BE219757 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r—-    ns:32083300 nr:4 dw:629064 dr:31454797 al:529 bm:2044 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0


Print Friendly, PDF & Email

Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.

Link do formularza tutaj: https://beitadmin.pl/pomysly

Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).

Dodaj komentarz

beitadmin.pl - Droga Administratora IT