個人感覺gnbd是個很好的東西,為啥不開發?

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

個人感覺gnbd是個很好的東西,為啥不開發?

個人感覺gnbd+GFS是個很好的方案,自帶fence,可以架設多個節點,配合dm-multipath多路徑訪問,為啥不開發了?哪位知道原因的說說?


另外這種方案現在真的不能使用了嗎?
《解決方案》

GNBD不是一個通行的IP SAN解決方案,它基於內核模塊,使用C/S方式工作,是早期沒有ISCSI的時候開發的軟體。 當初紅帽買GFS的時候一起買過來的,現在紅帽已經不再繼續開發了,甚至不再維護了,除非是關鍵客戶正在使用GNBD並且碰到問題。我以前碰到個很棘手的GNBD+multipath的問題,發郵件給開發人員請教,開發人員的解釋是,現在ISCSI是ip SAN的標準解決方案,GNBD需要維護單獨的內核模塊,因此維護複雜,現在已基本停止維護。 那個問題來自IBM,最後我也說服他們放棄GNBD而使用硬體FENCE+iscsi。

至於fence。。。 個人感覺紅帽很快就會發布iscsi fence的。。。

最後,fence是RHCS保證數據完整性的一個關鍵,硬體fence相對於軟體fence的可靠性會高很多,在生產環境中使用硬體fence會更穩妥些。

[ 本帖最後由 zhang1980s 於 2009-3-20 10:29 編輯 ]
《解決方案》

回復 #1 lijiangt 的帖子

轉一份資料看看
一、測試環境
主機:一台伺服器,一台PC和一虛擬機(安裝在伺服器中);系統:全部為RHEL5,內核版本為:2.6.18-8.el5

二、修改各個節點上的/etc/hosts文件(每個節點都一樣)
如下:
# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
192.168.1.50    gnbd-server
192.168.1.19    gfs-node01
192.168.1.8     gfs-node02

三、在gnbd-server上進行分區
注意,只進行分區,不要格式化
# fdisk /dev/sda

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.


The number of cylinders for this disk is set to 272309.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/sda: 2239.8 GB, 2239825444864 bytes
255 heads, 63 sectors/track, 272309 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2563    20482875   83  Linux
/dev/sda3            2564        2818     2048287+  82  Linux swap / Solaris
/dev/sda4            2819      267349  2124845257+   5  Extended
/dev/sda5            2819        3184     2939863+  83  Linux
/dev/sda6            3185        3550     2939863+  83  Linux
/dev/sda7            3551        9630    48837568+  83  Linux
/dev/sda8            9631       10847     9775521   83  Linux

Command (m for help): n
First cylinder (10848-267349, default 10848):
Using default value 10848
Last cylinder or +size or +sizeM or +sizeK (10848-267349, default 267349): +15000M

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.
Syncing disks.
# fdisk -l

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sda: 2239.8 GB, 2239825444864 bytes
255 heads, 63 sectors/track, 272309 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2563    20482875   83  Linux
/dev/sda3            2564        2818     2048287+  82  Linux swap / Solaris
/dev/sda4            2819      267349  2124845257+   5  Extended
/dev/sda5            2819        3184     2939863+  83  Linux
/dev/sda6            3185        3550     2939863+  83  Linux
/dev/sda7            3551        9630    48837568+  83  Linux
/dev/sda8            9631       10847     9775521   83  Linux
/dev/sda9           10848       12672    14659281   83  Linux





重啟gnb-server

四、在每個節點上都創建/etc/cluster/cluster.conf 文件

先在節點gfs-node01上創建/etc/cluster/cluster.conf 文件,如下:
# vi /etc/cluster/cluster.conf
<?xml version="1.0" ?>
<cluster config_version="5" name="mycluster">
        <fence_daemon post_fail_delay="0" post_join_delay="3"/>
        <clusternodes>
                <clusternode name="gfs-node01" nodeid="1" votes="1">
                        <fence>
                                <method name="1">
                                        <device name="F-Man" nodename="gfs-node01" ipaddr="192.168.1.19"/>
                                </method>
                        </fence>
                </clusternode>
                <clusternode name="gfs-node02" nodeid="2" votes="1">
                        <fence>
                                <method name="1">
                                        <device name="F-Man" nodename="gfs-node02" ipaddr="192.168.1.8"/>
                                </method>
                        </fence>
                </clusternode>
        </clusternodes>
        <cman expected_votes="1" two_node="1"/>
        <fencedevices>
                <fencedevice agent="fence_manual" name="F-Man"/>
        </fencedevices>
        <rm>
                <failoverdomains>
                        <failoverdomain name="web_failover" ordered="0" restricted="0">
                                <failoverdomainnode name="gfs-node01" priority="1"/>
                                <failoverdomainnode name="gfs-node02" priority="1"/>
                        </failoverdomain>
                </failoverdomains>
                <resources/>
        </rm>
</cluster>

把這個配置文件copy到節點gfs-node02上。

五、在gnbd-server上導出設備

5.1 啟動gnbd_serv進程
# gnbd_serv –v –n
gnbd_serv: startup succeeded

5.2 導出設備
# gnbd_export -v -e gfs -d /dev/sda9 -c
gnbd_export: created GNBD gfs serving file /dev/sda9

5.3 查看export狀態信息
# gnbd_export -v -l
Server : gfs
--------------------------
      file : /dev/sda9
   sectors : 29318562
  readonly : no
    cached : yes
   timeout : no


完成gnbd-server的設置。

六、在節點gfs-node01和gfs-node02上導入設備

6.1 分別在節點gfs-node01和gfs-node02上啟動cluster進程順序:
service cman start  (這個要在兩個節點上同時啟動)
service gfs start
service rgmanager start

# service cman start
Starting cluster:
   Loading modules... done
   Mounting configfs... done
   Starting ccsd... done
   Starting cman... done
   Starting daemons... done
   Starting fencing... done
                                                           [  OK  ]
# service cman start
Starting cluster:
   Loading modules... done
   Mounting configfs... done
   Starting ccsd... done
   Starting cman... done
   Starting daemons... done
   Starting fencing... done
                                                           [確定]
# service gfs start
# service gfs start

# service rgmanager start
Starting Cluster Service Manager:                          [  OK  ]
# service rgmanager start
啟動 Cluster Service Manager:                             [確定]

6.2 然後載入gnbd
# modprobe gnbd
# modprobe gnbd
6.3 分別在節點gfs-node01和gfs-node02上導入設備
# gnbd_import -v -i gnbd-server
gnbd_import: created directory /dev/gnbd
gnbd_import: created gnbd device gfs
gnbd_recvd: gnbd_recvd started

# gnbd_import -v -i gnbd-server
gnbd_import: created directory /dev/gnbd
gnbd_import: created gnbd device gfs
gnbd_recvd: gnbd_recvd started

6.4 分別查看導入狀態信息
# gnbd_import -v -l
Device name : gfs
----------------------
    Minor # : 0
sysfs name : /block/gnbd0
     Server : gnbd-server
       Port : 14567
      State : Close Connected Clear
   Readonly : No
    Sectors : 29318562

# gnbd_import -v -l
Device name : gfs
----------------------
    Minor # : 0
sysfs name : /block/gnbd0
     Server : gnbd-server
       Port : 14567
      State : Close Connected Clear
   Readonly : No
    Sectors : 29318562



七、建立gfs文件系統並且掛載
7.1 分別在節點gfs-node01和gfs-node02上載入gfs模塊
# modprobe gfs
# modprobe gfs

7.2 在gfs-node01上建立gfs文件系統
# gfs_mkfs -p lock_dlm -t mycluster:gfs -j 2 /dev/gnbd/gfs
This will destroy any data on /dev/gnbd/gfs.

Are you sure you want to proceed? y

Device:                    /dev/gnbd/gfs
Blocksize:                 4096
Filesystem Size:           3599040
Journals:                  2
Resource Groups:           56
Locking Protocol:          lock_dlm
Lock Table:                mycluster:gfs

Syncing...
All Done


7.3 分別在節點gfs-node01和gfs-node02的根目錄下創建一個名為gfstest的目錄,然後分別 mount上/dev/gnbd/gfs
# mkdir /gfstest
# mkdir /gfstest
# mount -t gfs /dev/gnbd/gfs /gfstest
# mount -t gfs /dev/gnbd/gfs /gfstest
《解決方案》

磁碟陣列都已經普及了,GNBD最終會消失的;個人理解。
《解決方案》

血淚斑斑!
http://linux.chinaunix.net/bbs/viewthread.php?tid=1040310&extra=




[火星人 ] 個人感覺gnbd是個很好的東西,為啥不開發?已經有497次圍觀

http://coctec.com/docs/service/show-post-6565.html