pNFS實驗環境部署

2021-08-25 21:55:05 字數 3262 閱讀 5663

什麼是pnfs?

pnfs是並行網路檔案系統,即nfsv4.1,與nfsv3不同的是,它將元資料與資料進行分離,允許客戶端直接與資料伺服器進行互動。這種機制解決了傳統nfs的效能瓶頸問題,從而使得系統獲得高效能和高擴充套件性的特性。pnfs支援多種協議(block[fc], object[osd], files[nfs])直接訪問資料,需要對客戶端功能進行擴充套件以支援不同的layout(layout4_file, layout4_block_volume, layout4_osd2_objects)。nfsv41和pnfs主要由rfc5661(nfsv4.1)、rfc5662(nfsv4.1 xdr)、rfc5663(pnfs block/volume layout)、rfc5664(object-based pnfs operations)描述,這些標準已經於2010.01正式發布。目前,pnfs商業和開源產品都比較少,而且實現方面還不成熟。linux kernel從2.6.30版本加入了pnfs支援,目前最新版本為2.6.38,pnfs仍處於expermental,包括server和client。對於pnfs感興趣的使用者,可以通過安裝新核心和nfs-util來安裝配置pnfs,進行測試和體驗。

pnfs實驗環境

整個pnfs測試環境由4臺伺服器組成,其中2臺資料伺服器,1台元資料伺服器和1臺客戶端,作業系統為centos 5.4 x86_64。這裡是使用虛擬機器來搭建測試環境,主要是為了驗證pnfs的功能。如果想測試pnfs效能,建議採用物理伺服器來部署測試環境。pnfs實驗環境配置如下:

mds:192.168.233.130

ds1: 192.168.233.131

ds2: 192.168.233.132

client: 192.168.233.134

4臺伺服器(ds、mds和client)均需要安裝配置pnfs kernel和nfs-utils軟體。

git clone git: (這個比較大,約1gb) git clone git:

根據核心原始碼中的documents/fs/spnfs.txt配置kernel編譯選項,make menuconfig時把nfsv41/spnfs的相關選項選中。配置完成後,.config中應該包含以下諸項:

config_network_filesystems=y config_nfs_fs=m config_nfs_v4=y config_nfs_v4_1=y config_pnfs=y config_nfsd=m # config_pnfsd_local_export is not set config_spnfs=y config_spnfs_layoutsegments=y

接下來就可以編譯和安裝核心了

make make modules make modules_install make install

如果沒有生成initramfs,mdinitrd /boot/initramfs-2.6.38-pnfs 2.6.38-pnfs生成。

與rpm安裝一樣,成功安裝kernel後,驗證相關資訊正確配置後,即可reboot機器。

配置data server

mkdir /export mkdir /export/pnfs vi /etc/export,編輯如下內容: /export/pnfs *(rw,sync,fsid=0,insecure,no_subtree_check,no_root_squash, pnfs) /etc/init.d/nfs start,啟動nfs server。

每個data server均進行如上配置,ds是常規的nfsv4.1伺服器。

配置metadata server

mkdir /export mkdir /export/spnfs mkdir /spnfs mkdir /spnfs/192.168.233.131 (第乙個ds mount點) mkdir /spnfs/192.168.233.132 (第二個ds mount點)

/export/spnfs *(rw,sync,fsid=0,insecure,no_subtree_check,no_root_squash, pnfs)

[general] verbosity = 1 stripe-size = 8192 dense-striping = 0 pipefs-directory = /var/lib/nfs/rpc_pipefs ds-mount-directory = /spnfs [dataservers] numds = 2 ds1_ip = 192.168.233.131 ds1_port = 2049 ds1_root = /pnfs ds1_id = 1 ds2_ip = 192.168.233.132 ds2_port = 2049 ds2_root = /pnfs ds2_id = 2

然後將ds伺服器輸出目錄mount至元mds上,啟動nfs server和spnfs server:

mount -t nfs4 -o minorversion=1 192.168.233.131:/pnfs /spnfs/192.168.233.131 mount -t nfs4 -o minorversion=1 192.168.233.132:/pnfs /spnfs/192.168.233.132 /etc/init.d/nfs start spnfs

配置client

pnfs支援block, object, files協議,我們這裡使用files協議訪問,需要載入nfs_layout_nfsv41_files。

modprobe nfs_layout_nfsv41_files mount -t nfs4 -o minorversion=1 192.168.233.130:/ /mnt/pnfs

pnfs測試

cd /mnt/pnfs

dd if=/dev/zero of=f8g bs=4m count=2k

dd中使用top監控ds和mds系統負載情況,看看io是不是發生在ds與client之間。如果mds i/o負載很高,接近與ds,則安裝配置可能有問題。

分別在mds和ds使用stat檢視f8g的屬性:

stat /export/spnfs/f8g (mds上f8g的block數量應該為0,只表現名字空間)

stat /export/pnfs/* (ds1和ds2上f8g對應物件的block數量應該》0,實際儲存檔案資料)

參考資料

wiki/index.php/configuring_pnfs/spnfsd

kernel documents/fs/spnfs.txt

環境部署 Redis環境部署

目錄 redis環境部署 準備部署目錄 修改配置檔案 啟動服務 檢查 附錄redis常用指令 解壓後目錄基本如下 編譯後在src目錄中可看到編譯產物 可執行的二進位制檔案 主要是這幾個 redis server redis sentinel redis cli redis benchmark red...

LAMP環境部署

lamp環境部署 安裝依賴包 yum install gcc gcc c autoconf libjpeg libjpeg devel libpng libpng devel freetype freetype devel libxml2 libxml2 devel zlib zlib devel ...

docker 環境部署

1 新增docker 安裝源 tee etc yum.repos.d docker.repo eof dockerrepo name docker repository baseurl enabled 1 gpgcheck 1 gpgkey eof2 更新yum軟體庫 yum update 安裝do...