您好,登錄后才能下訂單哦!
Distributed Replicated Block Device (DRBD)是基于塊設備在不同的高可用服務器對之間同步和鏡像數據的軟件,通過它可以實現在網絡中的兩臺服務器之間基于塊設備級別的實時或異步鏡像或同步復制,類似于rsync+inotify這樣的系統架構項目軟件。只不過drbd是基于文件系統底層的,即block層級的同步;而rsync+inotify是在文件系統之上的實際物理文件同步。所以dbrd效率更高。
塊設備可以是磁盤分區,LVM邏輯卷,或整塊磁盤。
DRBD是linux的內核的存儲層中的一個分布式存儲系統,可以使用DRBD在兩臺Linux服務器之間共享塊設備、文件系統和數據。類似于一個網絡RAID-1的功能,在基于DBRD的高可用(HA)的兩臺服務器主機上,當我們將數據寫入到本地磁盤系統時,數據還會被實時的發送到網絡中的另一臺主機上并以相同的形式記錄在另一個磁盤系統中,使得本地(主節點)與遠程主機(備節點)的數據保持實時數據同步。這時,如果本地系統(主節點)出現故障,那么遠程主機(備節點)上還會保留有一份和主節點相同的數據備份可以繼續使用,不但數據不會丟失,還會提升訪問數據的用戶的體驗。更多詳細請查看dbrd官方網站http://www.dbrd.org/
drbd 工作原理圖如下圖所示:
協議A:
異步復制協議。一旦本地磁盤寫入已經完成,數據包已在發送隊列中,則寫被認為是完成的。在一個節點發生故障時,可能發生數據丟失,因為被寫入到遠程節點上的數據可能仍在發送隊列。盡管在故障轉移節點上的數據是一致的,但沒有及時更新。
協議B:
內存同步(半同步)復制協議。一旦本地磁盤寫入已完成且復制數據包達到了對等節點則認為寫在主節點上被認為是完成的。數據丟失可能發生在參加的兩個節點同時故障的情況下,因為在傳輸中的數據可能不會被提交到磁盤。
協議C:
同步復制協議。只有在本地和遠程節點的磁盤已經確認了寫操作完成,寫才被認為完成。沒有任何數據丟失,所以這是一個集群節點的流行模式,但IO吞吐量依賴于網絡帶寬。
一般使用協議C,但選擇C協議將影響流量,從而影響網絡時延。為了數據可靠性,我們在生產環境使用時須慎重選項使用哪一種協議。
生產場景中drbd常用于基于高可用服務器之間的數據同步解決方案。
例如:heartbeat+drbd+nfs/mfs/gfs、heartbeat+drbd+mysql/oracle等。實際上drbd可以配合任意需要數據同步的所有服務的應用場景。
(1)rsync(sersync,inotify,lsyncd)
(2)scp
(3)nc
(4)nfs(網絡文件系統)
(5)union雙機同步
(6)csync2多機同步
(7)軟件的自身同步機制(mysql,oracle,mongdb,ttserver,redis..)文件放到數據庫,同步到從庫,再把文件拿出來。
(8)Drbd
業務需求可以結合前面配置的heartbeat來搭建dbrd服務,hearbeat的安裝和部署我前面的文章已經寫了。主服務器為heartrbeat-1-114,從服務器為heartbeat-1-115。
(1)Drbd服務通過直連線或以太網實時互相數據同步。
(2)兩臺存儲服務器互相備份,正常情況下兩端各提供一個主分區供NFS使用。
(3)存儲服務器之間,存儲服務和交換機之間都是雙千兆網卡綁定。
(4)應用服務器通過NFS訪問存儲。
CentOS-6.8-x86_64
主服務器A:
主機名:heartbeat-1-114
eth0網卡地址:192.168.136.114(管理IP)
eth2網卡地址:10.0.10.4/255.255.255.0 (心跳IP)
從服務器B:
主機名:heartbeat-1-115
eth0網卡地址:192.168.136.115(管理IP)
eth2網卡地址:10.0.10.5/255.255.255.0(心跳IP)
虛擬VIP:
虛擬VIP在主服務器heartbeat-1-114上,VIP:192.168.136.116
需要修改主機名,關閉防火墻和selinux這些準備工作和heartbeat一樣,我前面的安裝heartbeat的文章有講,這里就不講了。就用安裝heartbeat的那兩臺機器,主服務器heartbeat-1-114、從服務器heartbeat-1-115。
Drbd是基于分區的,沒有可用的分區肯定不行。我們先把heartbeat-1-114和heartbeat-1-1115兩個虛擬機關機,然后在主節點heartbeat-1-114上添加一塊1G的硬盤,在從節點heartbeat-1-115上添加一塊2G的硬盤。添加硬盤就不演示了,然后啟動兩臺機器。
(1)對主節點/dev/sdb進行分區
[root@heartbeat-1-114 html]# fdisk -l|grep "/dev/sdb"
Disk /dev/sdb: 1073 MB, 1073741824 bytes
[root@heartbeat-1-114 html]# fdisk /dev/sdb
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): p
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000bb201
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): +768M
Command (m for help): N
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (100-130, default 100):
Using default value 100
Last cylinder, +cylinders or +size{K,M,G} (100-130, default 130):
Using default value 130
Command (m for help): p
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000bb201
Device Boot Start End Blocks Id System
/dev/sdb1 1 99 795186 83 Linux
/dev/sdb2 100 130 249007+ 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@heartbeat-1-114 html]# partprobe
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy). As a result, it may not reflect all of your changes until after reboot.
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sdb (Device or resource busy). As a result, it may not reflect all of your changes until after reboot.
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
Error: Invalid partition table - recursive partition on /dev/sr0.
[root@heartbeat-1-114 html]# fdisk -l|grep "/dev/sdb"
Disk /dev/sdb: 1073 MB, 1073741824 bytes
/dev/sdb1 1 99 795186 83 Linux
/dev/sdb2 100 130 249007+ 83 Linux
(2)對備節點/dev/sdb進行分區
[root@heartbeat-1-115 etc]# fdisk -l|grep "/dev/sdb"
Disk /dev/sdb: 2147 MB, 2147483648 bytes
[root@heartbeat-1-115 etc]# fdisk /dev/sdb
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): p
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003d93c
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261): +1536M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (198-261, default 198):
Using default value 198
Last cylinder, +cylinders or +size{K,M,G} (198-261, default 261):
Using default value 261
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@heartbeat-1-115 etc]# partprobe
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy). As a result, it may not reflect all of your changes until after reboot.
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sdb (Device or resource busy). As a result, it may not reflect all of your changes until after reboot.
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
Error: Invalid partition table - recursive partition on /dev/sr0.
[root@heartbeat-1-115 etc]# fdisk -l|grep "/dev/sdb"
Disk /dev/sdb: 2147 MB, 2147483648 bytes
/dev/sdb1 1 197 1582371 83 Linux
/dev/sdb2 198 261 514080 83 Linux
因此,我們需要做的就是對/dev/sdb進行分區,需要分區的具體內容見下圖:
提示:
1.這里的meta data分區一定不能格式化建立文件系統。
2.分好的分區現在不能直接掛在(mount)。
3.生產環境DRBD meta data分區一般可設為1-2G。這里的/dev/sdb2分區的預期大小1G應該是主節點和備節點的sdb2分區大小之和(305M+611M=916M),本次演示的大小是1G。
DRDB軟件可以編譯安裝也可以下載包含的源yum安裝,本次事件采用編譯安裝的方式。
(1)下載drbd軟件(兩臺機器都要操作)
可以在官網上下載http://oss.linbit.com/drbd/,然后用rz命令傳到服務器
(2)安裝gcc和gcc-c++
[root@heartbeat-1-114 tools]# yum install gcc gcc-c++ -y
(3)編譯drbd
[root@heartbeat-1-114 tools]# pwd
/home/linzhongniao/tools
[root@heartbeat-1-114 tools]# export LC_ALL=C
[root@heartbeat-1-114 tools]# ls
drbd-8.4.4.tar.gz
[root@heartbeat-1-114 tools]# tar –xf drbd-8.4.4.tar.gz
[root@heartbeat-1-114 tools]# cd drbd-8.4.4
[root@heartbeat-1-114 drbd-8.4.4]# ./configure --prefix=/usr/local/drbd8.4.4 --with-km --with-heartbeat --sysconfdir=/etc/
出現下面問題yum安裝dpkg、dpkg-dev、dpkg-devel再編譯
checking for udevinfo... false
configure: WARNING: No dpkg-buildpackage found, building Debian packages is disabled.
出現下面問題yum安裝flex,重新編譯
configure: error: Cannot build utils without flex, either install flex or pass the --without-utils option.
為了防止編譯發生錯誤,最好提前安裝上,下面是我在編譯的時候需要安裝的包。
yum install dpkg dpkg-dev dpkg-devel gcc gcc-c++ git rpm-build kernel-devel kernel-headers flex -y
(4)加載內核
1.先查找內核源碼
[root@heartbeat-1-114 drbd-8.4.4]# ls -ld /usr/src/kernels/$(uname -r)/
ls: 無法訪問/usr/src/kernels/2.6.32-642.el6.x86_64/: 沒有那個文件或目錄
沒有內核源碼文件路徑yum安裝kernel-devel kernel-headers在查看就有了
[root@heartbeat-1-114 drbd-8.4.4]# ls -ld /usr/src/kernels/$(uname -r)/
drwxr-xr-x 22 root root 4096 3月 5 05:55 /usr/src/kernels/2.6.32-696.20.1.el6.x86_64/
如果uname –r命令顯示的系統內核和在/usr/src/kernels/下查找的系統內核不一樣怎么辦呢,很簡單升級系統內核,重啟系統后再查看內核就一樣了。
[root@heartbeat-1-114 drbd-8.4.4]# ls -ld /usr/src/kernels/2.6.32-696.20.1.el6.x86_64/
drwxr-xr-x 22 root root 4096 Mar 6 19:24 /usr/src/kernels/2.6.32-696.20.1.el6.x86_64/
[root@heartbeat-1-114 drbd-8.4.4]# uname -r
2.6.32-642.el6.x86_64
[root@heartbeat-1-114 drbd-8.4.4]# yum -y install kernel
[root@heartbeat-1-114 ~]# uname -r
2.6.32-696.20.1.el6.x86_64
2.加載系統內核
[root@heartbeat-1-114 drbd-8.4.4]# make KDIR=/usr/src/kernels/$(uname -r)/
[root@heartbeat-1-114 drbd-8.4.4]# echo $?
0
(5)安裝drbd
[root@heartbeat-1-114 drbd-8.4.4]# make install
echo $?為零安裝成功
比較重要的是下面標黃的部分,我們還用部署heartbeat的那個環境,heartbeat的環境部署前面文章有,這里就不再演示了。
這個DRBD模塊在重啟電腦之后就會失效不會自動加載到系統內核中,我們可以放在/etc/rc.local里生效,讓它開機生效。生產中是不需要放在/etc/rc.local里面的,不讓自動啟動,自動啟動會導致一些不必要的問題。用lsmod |grep drbd查看有這個內容了就說明內核加載完成。
[root@heartbeat-1-114 drbd-8.4.4]# lsmod|grep drbd
[root@heartbeat-1-114 drbd-8.4.4]# mo
modinfo modutil mountmount.nfsmountpoint mount.tmpfs
modprobe more mount.cifs mount.nfs4 mountstats
[root@heartbeat-1-114 drbd-8.4.4]# modprobe drbd
[root@heartbeat-1-114 drbd-8.4.4]# lsmod|grep drbd
drbd 327370 0
libcrc32c 1246 1 drbd
[root@heartbeat-1-114 drbd-8.4.4]# echo 'modprobe drbd' >>/etc/rc.local
[root@heartbeat-1-114 drbd-8.4.4]# tail -1 /etc/rc.local
modprobe drbd
(1)配置DRBD的配置文件
DRBD的配置文件在我們編譯的時候指定的那個路徑/etc/下。
[root@heartbeat-1-114 etc]# pwd
/etc
[root@heartbeat-1-114 etc]# cp drbd.conf{,.bak}
[root@heartbeat-1-114 etc]# rm -f drbd.conf
[root@heartbeat-1-114 etc]# cat drbd.conf
global {
usage-count no;
}
common {
syncer {
# wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
rate 1000M;
verify-alg crc32c;
}
}
resource data {
protocol C;
disk {
on-io-error detach;
}
on heartbeat-1-114 {
device/dev/drbd0;
disk /dev/sdb1;
address 10.0.10.4:7788;
meta-disk /dev/sdb2[0];
}
on heartbeat-1-115 {
device/dev/drbd0;
disk /dev/sdb1;
address 10.0.10.5:7788;
meta-disk /dev/sdb2[0];
}
}
(2)配置文件參數說明
global {
usage-count no;
}
前三行是你全局配置,一般網站都會同步開源網站的安裝量,usage-count的值等于no,就是不允許官方統計。
common {
syncer {
# wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
rate 1000M;
verify-alg crc32c;
}
}
Common段里面設置了同步的速度比如1000M,crc32c是一個算法
resource data {
protocol C;
disk {
on-io-error detach;
}
on heartbeat-1-114 {
device /dev/drbd0;
disk /dev/sdb1;
address 10.0.10.4:7788;
meta-disk /dev/sdb2[0];
}
on heartbeat-1-115 {
device /dev/drbd0;
disk /dev/sdb1;
address 10.0.10.5:7788;
meta-disk /dev/sdb2[0];
}
}
上面resource段是drbd的資源,protocol C是一個實時同步數據的協議,用A或B都是異步同步或半同步,這樣會導致數據的丟失,除非業務需求數據不總要并發要求高的情況下。disk表示一個磁盤出現io錯誤怎么處理。resource后面的data是drbd的資源啟動drbd的時候會用到,注意這里resource可以有多個資源,比如說再想增加一個資源,我們可以把resource這段復制一個就好了,需要修改的有resource后面的資源名稱以及disk、meta-disk和同步的地址的端口號,例如7788。這里on heartbeat-1-114的on后面跟的是機器名,注意這里的機器名必須是uname –n返回的結果,device表示drbd的設備,disk表示對應本機/dev/sdb的第一個分區,address這里的地址是一個同步的地址,meta-disk是meta設備的數據分區對應本機/dev/sdb的第二個分區,0是meta 設備的一個格式。
兩臺機器都要操作以heartbeat-1-114為例
初始化資源,注意我們初始的資源就是drbd.conf里resource后面的data。
[root@heartbeat-1-114 etc]# drbdadm create-md data
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.
啟動drbd服務的命令:drbdadm up data
停止drbd服務的命令:drbdadm down data
drbdadm up 后跟的是resource設置的資源data,也可以指定所有資源drbdadm up all。準備節點都要啟動以主節點為例:
[root@heartbeat-1-114 etc]# drbdadm up data
/usr/local/drbd8.4.4/var/run/drbd: No such file or directory
/usr/local/drbd8.4.4/var/run/drbd: No such file or directory
我們看有錯誤提示/usr/local/drbd8.4.4/var/run/drbd: No such file or directory
這個目錄找不到centos6版本以上需要有這個目錄,好我們就創建一個這個目錄再啟動drbd。
[root@heartbeat-1-114 ~]# mkdir -p /usr/local/drbd8.4.4/var/run/drbd
[root@heartbeat-1-114 etc]# drbdadm create-md data
Device '0' is configured!
Command 'drbdmeta 0 v08 /dev/sdb2 0 create-md' terminated with exit code 2
[root@heartbeat-1-114 etc]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat-1-114, 2018-11-10 23:08:21
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:749984
這里顯示ro:Secondary/Secondary ds:Inconsistent/Inconsistent是正確的都是從,處于無主(primary)的狀態。
指定數據同步的主節點的命令:drbdadm -- --overwrite-data-of-peer primary data
將主節點變為從節點的命令(前提服務器已經是主節點的情況下):/usr/share/heartbeat/hb_standby
說明:
1.如果為空硬盤。可以隨意執行操作不需要考慮數據。
2.如果兩邊數據不一樣(要特別注意同步數據的方向,否則可能丟失數據)如果對端磁盤有數據要提前備份,否則會把對端數據覆蓋掉。
注意:在主服務器上操作我們的主服務器是heartbeat-1-114,同步DRBD數據到對端SERVER使數據保持一致
(1)指定主節點同步數據
[root@heartbeat-1-114 etc]# drbdadm -- --overwrite-data-of-peer primary data
查看主節點同步的信息
[root@heartbeat-1-114 etc]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat-1-114, 2018-11-10 23:08:21
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:40960 nr:0 dw:0 dr:41631 al:0 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:709024
[>...................] sync'ed: 6.0% (709024/749984)K
finish: 0:00:17 speed: 40,960 (40,960) K/sec
[root@heartbeat-1-114 etc]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat-1-114, 2018-11-10 23:08:21
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:164556 nr:0 dw:0 dr:168607 al:0 bm:10 lo:0 pe:1 ua:4 ap:0 ep:1 wo:f oos:586144
[===>................] sync'ed: 22.3% (586144/749984)K
finish: 0:00:14 speed: 40,960 (40,960) K/sec
[root@heartbeat-1-114 etc]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat-1-114, 2018-11-10 23:08:21
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:230100 nr:0 dw:0 dr:234143 al:0 bm:14 lo:0 pe:1 ua:4 ap:0 ep:1 wo:f oos:520608
[=====>..............] sync'ed: 31.0% (520608/749984)K
finish: 0:00:11 speed: 45,872 (45,872) K/sec
(2)從節點同步的信息
[root@heartbeat-1-115 etc]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat-1-115, 2018-11-10 23:08:42
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:0 nr:749983 dw:749983 dr:0 al:0 bm:46 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
(3)參數說明
以主節點為例
cs:Connected:Connected是連接的狀態,用zabbix做監控主要看Connected。
ro:Primary/Secondary: Primary是主,Secondary是從;也就是說本地是主對端是從。
ds:UpToDate/UpToDate:UpToDate是兩邊都更新完成。
ns(network send):網絡發送。
nr(network receive):網絡收到。備節點的這個點應該和主節點的ns的值是一樣的。
dw(disk write):硬盤寫入。把網絡數據寫到硬盤。如果備節點的dw、nr和主節點的ns的值一樣說明數據時完全同步的
cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
或
cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:8444
解決方法:
1.檢查兩臺物理網絡連接或者IP及主機路由是否正確。
2.停止iptables防火墻。
3.還可能是發生列腦導致的結果。
出現上面問題可用下面操作解決:
(1)在從節點slave上操作:
drbdadm secondary data
drbdadm disconnect data
drbdadm -- --discard-my-data connect data ---> 丟棄本端數據進行連接
(2)在主節點上操作:
通過查看cat/proc/drbd狀態,如果不是WFConnection狀態,則需要用下面命令手動重新連接資源
drbdadm connect data
然后再啟動備節點的drbd資源
(1)創建DRBD文件系統
格式化主節點的drbd0,備節點不需要格式化。
[root@heartbeat-1-114 etc]# mkfs.ext4 -b 4096 /dev/drbd0
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
46944 inodes, 187495 blocks
9374 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=192937984
6 block groups
32768 blocks per group, 32768 fragments per group
7824 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
(2)掛載設備
[root@heartbeat-1-114 etc]# mount /dev/drbd0 /data
提示:如果在從節點格式化會報錯,需要用drbdadm -- --overwrite-data-of-peer primary data
命令指定主節點的,從節點不能用這個命令不需要格式化drb0.
[root@heartbeat-1-115 ~]# mkfs.ext4 -b 4096 /dev/drbd0
mke2fs 1.41.12 (17-May-2010)
mkfs.ext4: 錯誤的介質類型 while trying to determine filesystem size
(3)測試備節點數據同步情況
先在主節點的data文件系統中插入數據,我們插入個20個文件
[root@heartbeat-1-114 data]# touch `seq 10`
[root@heartbeat-1-114 data]# ls
1 10 2 3 4 5 6 7 8 9 lost+found
查看備節點的數據同步情況,需要先掛載DRBD存儲設備,我們看數據已經同步過來了。
[root@heartbeat-1-115 etc]# mount /dev/sdb1 /mnt
mount: you must specify the filesystem type
[root@heartbeat-1-115 etc]# drbdadm down data 為什么啟動從節點的drbd資源的情況下掛載sdb1會報錯,這時把從節點的drbd資源停掉就可以掛載了查看數據是否同步了;在實踐中從節點只啟動drbd資源就可以了不必掛載文件系統,如果想查看文件是否同步把從節點drbd資源停止在掛載查看就好了
[root@heartbeat-1-115 etc]# mount /dev/sdb1 /mnt
[root@heartbeat-1-115 etc]# ll /mnt/
total 16
-rw-r--r-- 1 root root 0 Nov 11 15:26 1
-rw-r--r-- 1 root root 0 Nov 11 15:26 10
-rw-r--r-- 1 root root 0 Nov 11 15:26 2
-rw-r--r-- 1 root root 0 Nov 11 15:26 3
-rw-r--r-- 1 root root 0 Nov 11 15:26 4
-rw-r--r-- 1 root root 0 Nov 11 15:26 5
-rw-r--r-- 1 root root 0 Nov 11 15:26 6
-rw-r--r-- 1 root root 0 Nov 11 15:26 7
-rw-r--r-- 1 root root 0 Nov 11 15:26 8
-rw-r--r-- 1 root root 0 Nov 11 15:26 9
drwx------ 2 root root 16384 Nov 11 15:20 lost+found
出現上面同步的數據表示drbd完成了,完成了下面我們再啟動備節點的drbd服務
[root@heartbeat-1-115 ~]# umount /mnt/
[root@heartbeat-1-115 ~]# drbdadm up data
[root@heartbeat-1-115 ~]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat-1-129, 2018-03-05 07:38:05
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:0 nr:56 dw:56 dr:0 al:0 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。