1. 程式人生 > >ubuntu+lustre 檔案系統

ubuntu+lustre 檔案系統

Lustre 是一個透明的全域性檔案系統,客戶端可以透明地訪問叢集檔案系統中的資料,而無需知道這些資料的實際儲存位置。客戶端通過網路讀取伺服器上的資料,儲存服務 器負責實際檔案系統的讀寫操作以及儲存裝置的連線,元資料伺服器負責檔案系統目錄結構、檔案許可權和檔案的擴充套件屬性以及維護整個檔案系統的資料一致性和響應 客戶端的請求。 Lustre把檔案當作由元資料伺服器定位的物件,元資料伺服器指導實際的檔案I/O請求到儲存伺服器,儲存伺服器管理在基於物件的磁碟組上的物理儲存。 由於採用元資料和儲存資料相分離的技術,可以充分分離計算和儲存資源,使得客戶端計算機可以專注於使用者和應用程式的請求;儲存伺服器和元資料伺服器專注於 讀、傳輸和寫資料。儲存伺服器端的資料備份和儲存配置以及儲存伺服器擴充等操作不會影響到客戶端,儲存伺服器和元資料伺服器均不會成為效能瓶頸。

引用:[url]http://www.ixdba.net/article/02/1211$2.html[/url]

lustre文章還是不少的,但是關於ubuntu上的文章很少,因為我的伺服器多半是ubuntu,所以這兩天研究了下lustre的編譯安裝真的夠麻煩的,但是隻要明白了,也就沒什麼難度了!

mds  :192.168.6.6
ost1 :192.168.6.119
ost2 :192.168.6.137
client:192.168.6.137         因為資源問題,我把  client 在 ost2 機器上操作了。

一.在mds編譯核心在  [url]http://www.kernel.org[/url] 下載 linux-2.6.22 核心,因為lustre-1.6.5最高支援 
linux-2.6.22
apt-get install quilt linux-patch-lustre 
libncurses5-dev  module-assistant dpatch  lustre-utils
shell $> cd /usr/src
shell $> ls
kernel-patches linux-2.6.22.tar.bz2
shell $> tar jxvf  linux-2.6.22.tar.bz2
shell $> cd linux-2.6.22
shell $> ln -s /usr/src/
kernel-patches/lustre/series/2.6.22-vanilla.series series
shell $> ln -s /usr/src/kernel-patches/lustre/patches/ patches
shell $> quilt setup series -d patches 
#為核心打 lustre 補丁
shell $> quilt push -av
shell $> quilt refresh
shell $> make clean
shell $> make mrproper
shell $> cp /boot/config-2.6.27.7-server  .config
shell $> make menuconfig
#編譯核心,相信大家都知道自己需要什麼,這裡我就用預設的沒有作任何改變!
shell $> make-kpkg --added-patches=lustre --initrd --append-to-version "-lustre" --revisionn ludy.1 kernel_image
#version 與 revision 後跟的是版本號!
shell $>dpkg -i linux-image-2.6.22-lustre_2.6.22-lustre-ludy.1_amd64.deb
shell $> reboot
#從啟後選用 新編譯的核心
shell $> uname -r
2.6.22-lustre
shell $> m-a auto-install lustre
#安裝含lustre核心模組
#漫長的等待後 終於編譯完畢了!
把 lustre-modules-2.6.22-lustre_1.6.5_amd64.deb  linux-image-2.6.22-lustre_2.6.22-lustre-ludy.1_amd64.deb拷貝到兩臺 ost與client 機器上安裝都選用 2.6.22核心進入系統!
二.測試
1.修改三臺伺服器的 /etc/hosts
   192.168.6.6 mds
   192.168.6.119 ost
   192.168.6.137 cls
2.在md伺服器執行以下操作
modprobe lustre
modprobe ldiskfs
modprobe lnet 'network="tcp0(eth0)"'
mkfs.lustre --reformat --fsname=testfs --mdt --mgs /dev/sda5 
#如硬碟沒有被格式化或者裡面有資料的話需要加 --reformat引數格式化!
mkdir -p /opt/mds
mount -t lustre /dev/sda5 /opt/mds
3.在兩臺 ost 上執行以下操作
modprobe lustre
modprobe ldiskfs
modprobe lnet 'network="tcp0(eth0)"'
mkfs.lustre --fsname=testfs --ost
[email protected]
/dev/sdb1
#同樣如果 sdb1 沒有被格式化或者有資料必須加 --reformat引數
mount -t lustre /dev/sdb1 /opt
4.在 client伺服器上執行 (也就是ost2)
mount -t lustre [email protected]:/testfs /mnt
好三臺伺服器已經連上了!
我們建立己個大檔案測試
5.在client 伺服器上執行
dd if=/dev/zero of=test1 bs=1024 count=40000
40000+0 records in
40000+0 records out
40960000 bytes (41 MB) copied, 2.85257 s, 14.4 MB/s

在 ost1伺服器 執行 df -lh檢視
/dev/sdb1            1004M   57M  897M   6% /opt
在 ost2 伺服器 執行 df -lh  檢視
/dev/sdb1            1004M   17M  897M   2% /opt
明顯 ost1 寫入了 40M 的資料 而 ost2沒有
在次執行 dd if=/dev/zero of=test2 bs=1024 count=40000
40000+0 records in
40000+0 records out
40960000 bytes (41 MB) copied, 4.66784 s, 8.8 MB/s
在ost1伺服器 執行 df -lh  檢視
/dev/sdb1            1004M   57M  897M   6% /opt 
沒有變動
在ost2伺服器 執行 df -lh 檢視
/dev/sdb1            1004M   57M  897M   6% /opt
ost2 被寫入了 40M 資料!

6.停止lustre檔案系統 
umount -f /opt

我做一點簡單 說明 來 說  lustre 工作原理!

mds  大概就是 存放元資料的地方  也就是 檔案列表一樣的東西,他知道儲存的檔案在 哪臺ost伺服器上 
ost 就是儲存檔案的伺服器

我也是剛剛研究 lustre所以不能準確的說出 什麼。希望高手能夠多多指點!

注意:以後啟動 mds  ost 略過 mkfs.lustre不用從新建立檔案系統
只需要  mount -t lustre 掛在檔案系統即可!