標籤:共用 nfs 同步 儲存 掛載
本文首發於爛泥行天下。
以前有關NFS的文章,我們介紹的都是NFS的使用掛載等等。這篇文章我們介紹有關NFS作為儲存使用。
既然本篇文章的主題是有關NFS的,我們還是先把NFS伺服器搭建完畢。具體搭建過程可參考《爛泥:NFS儲存與VSphere配合使用》,這篇文章。
在此有關NFS設定檔/etc/exports中的幾個參數,我們需要先介紹下:
ro 該主機對該共用目錄有唯讀許可權。
rw 該主機對該共用目錄有讀寫權限,需要配合no_root_squash參數使用。
root_squash 該參數為預設參數,客戶機用root使用者訪問該共用資料夾時,將root使用者映射成匿名使用者即nobody使用者不具有對目錄具有建立和刪除操作。
no_root_squash 客戶機用root訪問該共用資料夾時,不映射root使用者。即具有root使用者所有許可權,具有對目錄具有建立和刪除操作。
all_squash 客戶機上的任何使用者訪問該共用目錄時都映射成匿名使用者。
anonuid 將客戶機上的使用者映射成指定的本機使用者ID的使用者。
anongid 將客戶機上的使用者映射成屬於指定的本機使用者組ID。
sync 資料同步寫入到記憶體與硬碟中。
async 資料會先暫存於記憶體中,而非直接寫入硬碟。
Insecure 允許從這台機器過來的非授權訪問。
因為NFS是做儲存使用的,所以我們必須為共用檔案配置讀寫以及root使用者權限,同時考慮到資料的安全的問題,建議還需要配置同步許可權。具體配置許可權如下:
650) this.width=650;" title="clip_image001" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image001" src="http://img1.51cto.com/attachment/201409/16/526870_14108337072wIO.png" width="728" height="237" />
通過,我們可以看到NFS共用目錄/nfs,具有root使用者權限,同時具有可讀寫、同步的許可權。而NFS共用目錄/home/datasoft/soft/iso/目錄,只具有可讀許可權。為什麼會是這樣,我們會在下面就行講解。
我們現在先來測試下,NFS共用目錄的許可權。
登入KVM伺服器掛載NFS共用目錄。如下:
650) this.width=650;" title="clip_image002" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image002" src="http://img1.51cto.com/attachment/201409/16/526870_1410833708tNMx.png" width="744" height="285" />
通過。我們可以看到NFS的/nfs目錄掛載到KVM伺服器的/nfs目錄下,/home/datasoft/soft/iso/目錄掛載到NFS的/nfs目錄下。
下面我們開始測試各自掛載目錄的許可權,如下:
650) this.width=650;" title="clip_image003" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image003" src="http://img1.51cto.com/attachment/201409/16/526870_14108337086gcn.png" width="758" height="346" />
650) this.width=650;" title="clip_image004" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image004" src="http://img1.51cto.com/attachment/201409/16/526870_1410833709MZpF.png" width="730" height="214" />
通過以上兩張圖可以看出,我們對在KVM伺服器上對NFS共用目錄/nfs的操作都會在NFS伺服器上/nfs進行同步,而且我們也具有相應的讀寫、建立、刪除許可權。
650) this.width=650;" title="clip_image005" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image005" src="http://img1.51cto.com/attachment/201409/16/526870_1410833709sehL.png" width="745" height="426" />
通過我們可以看到,我們在KVM伺服器上對NFS共用目錄/home/datasoft/soft/iso/只具有讀許可權許可權,而沒有建立和刪除許可權。這個也可以和我們在設定的許可權相對應。
650) this.width=650;" title="clip_image006" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image006" src="http://img1.51cto.com/attachment/201409/16/526870_1410833710as2S.png" width="736" height="214" />
注意NFS共用目錄/home/datasoft/soft/iso/儘管有讀寫權限,但是因為沒有加入no_root_squash參數,預設使用root_squash參數。儘管已經給出rw參數,但是由於不具有root使用者權限,所以沒有建立和刪除許可權。
以上有關NFS共用目錄許可權測試完畢後,我們現在就開始配置NFS與KVM進行整合。
有關KVM與NFS儲存我們分為圖形介面方式和命令列方式。
我們首先來介紹命令列方式,現在把KVM的VM的硬碟建立到NFS伺服器上,通過如下命令:
qemu-img create -f qcow2 /nfs/nfs.img 20G
ifconfig eth0|grep "inet addr"|awk ‘{print $2}‘|cut -d: -f2
650) this.width=650;" title="clip_image007" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image007" src="http://img1.51cto.com/attachment/201409/16/526870_1410833710fsKJ.png" width="741" height="261" />
建立完畢後,我們現在登陸NFS伺服器查看剛剛產生的檔案。如下:
650) this.width=650;" title="clip_image008" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image008" src="http://img1.51cto.com/attachment/201409/16/526870_1410833711tOUe.png" width="734" height="216" />
通過我們可以看到,現在KVM的VM硬碟已經存在NFS伺服器上。
現在我們開始建立VM,使用如下命令:
virt-install -n nfs -r 2048 --os-type=linux --vcpus=1 -c /iso/CentOS-6.5-i386-minimal.iso --disk path=/nfs/nfs.img,format=qcow2,bus=ide --boot cdrom,menu=on -b br0 --vnc --vnclisten=0.0.0.0 --vncport=5993
650) this.width=650;" title="clip_image009" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image009" src="http://img1.51cto.com/attachment/201409/16/526870_1410833711Si55.png" width="737" height="339" />
但是此時會發現系統,提示如下的錯誤資訊:
ERROR 內部錯誤 Process exited while reading console log output: char device redirected to /dev/pts/1
qemu-kvm: -drive file=/nfs/nfs.img,if=none,id=drive-ide0-0-0,format=qcow2,cache=none: could not open disk image /nfs/nfs.img: Permission denied
經過多次實驗,如果把VM的硬碟檔案許可權修改為777,就不會報錯。如下:
650) this.width=650;" title="clip_image010" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image010" src="http://img1.51cto.com/attachment/201409/16/526870_1410833712VVlK.png" width="496" height="272" />
但是這種方法你可以看到,這對VM的安全性很低的。
經過查詢資料發現,我們只需要把/etc/libvirt/qemu.conf檔案中有關使用者和使用者組的注釋去掉即可,這樣就不需要修改有關VM的配置。qemu.conf 是libvirt對QEMU的驅動的設定檔,包括VNC、SPICE等和串連它們時採用的許可權認證方式的配置,也包括記憶體大頁、SELinux、Cgroups等相關配置。
如下:vi /etc/libvirt/qemu.conf
650) this.width=650;" title="clip_image011" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image011" src="http://img1.51cto.com/attachment/201409/16/526870_1410833712Qaq0.png" width="687" height="463" />
修改完畢後要重啟qemu。如下:
/etc/init.d/libvirtd restart
650) this.width=650;" title="image" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201409/16/526870_1410833713eY4H.png" width="639" height="194" />
然後再次建立虛擬機器,如下:
650) this.width=650;" title="clip_image014" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image014" src="http://img1.51cto.com/attachment/201409/16/526870_14108337134kyW.png" width="735" height="352" />
系統沒有報錯,說明現在可以正式安裝VM。
現在通過VNC用戶端,進行系統安裝,如下:
650) this.width=650;" title="clip_image015" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image015" src="http://img1.51cto.com/attachment/201409/16/526870_1410833714FldU.png" width="660" height="547" />
以上是有關命令列下的配置,說實話命令列下配置還是比較簡單的。下面我來介紹下如何在圖形介面下使用NFS儲存,圖形介面下需要建立相應的儲存池。
注意為了更好的實驗效果,我現在把KVM伺服器上所有關NFS掛載已經卸載。
啟動KVM虛擬機器管理virt-manager,如下:
650) this.width=650;" title="clip_image016" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image016" src="http://img1.51cto.com/attachment/201409/16/526870_1410833715fLtu.png" width="397" height="427" />
現在我們為KVM建立儲存池,如下:
650) this.width=650;" title="clip_image017" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image017" src="http://img1.51cto.com/attachment/201409/16/526870_1410833715qkQQ.png" width="323" height="291" />
650) this.width=650;" title="clip_image018" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image018" src="http://img1.51cto.com/attachment/201409/16/526870_1410833716MYp0.png" width="671" height="536" />
在這個介面中,類型一定要注意,選擇netfs:網路匯出的目錄。
650) this.width=650;" title="clip_image019" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image019" src="http://img1.51cto.com/attachment/201409/16/526870_1410833716rFyT.png" width="577" height="414" />
在這個介面中“目標路徑”填寫KVM伺服器中你需要掛載點。我現在需要把NFS的鏡像檔案許可權掛載到/iso目錄下。
“主機名稱”中填寫NFS伺服器。
“源路徑”中填寫NFS共用的目錄。
650) this.width=650;" title="clip_image020" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image020" src="http://img1.51cto.com/attachment/201409/16/526870_1410833717H8GY.png" width="683" height="484" />
這個介面是我們用來儲存鏡像檔案的儲存池。下面建立VM硬碟的儲存池,利用上邊同樣的方法,如下:
650) this.width=650;" title="clip_image021" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image021" src="http://img1.51cto.com/attachment/201409/16/526870_1410833717rhbG.png" width="576" height="410" />
650) this.width=650;" title="clip_image022" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image022" src="http://img1.51cto.com/attachment/201409/16/526870_1410833718lvkW.png" width="752" height="492" />
VM硬碟的儲存池建立完畢後,此時並沒有建立VM的硬碟檔案。現在開始建立VM的硬碟檔案,如下:
650) this.width=650;" title="clip_image023" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image023" src="http://img1.51cto.com/attachment/201409/16/526870_14108337181Wfc.png" width="557" height="502" />
650) this.width=650;" title="clip_image024" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image024" src="http://img1.51cto.com/attachment/201409/16/526870_1410833719toU9.png" width="747" height="489" />
VM的硬碟檔案建立完畢後,我們就可以建立虛擬機器。如下:
650) this.width=650;" title="clip_image025" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image025" src="http://img1.51cto.com/attachment/201409/16/526870_1410833719B5D8.png" width="292" height="198" />
650) this.width=650;" title="clip_image026" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image026" src="http://img1.51cto.com/attachment/201409/16/526870_14108337195fMy.png" width="378" height="430" />
650) this.width=650;" title="clip_image027" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image027" src="http://img1.51cto.com/attachment/201409/16/526870_14108337205mFV.png" width="913" height="441" />
在ISO鏡像中,我們可以選擇在前面建立的鏡像檔案儲存池。
650) this.width=650;" title="clip_image028" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image028" src="http://img1.51cto.com/attachment/201409/16/526870_1410833721BGQn.png" width="383" height="444" />
650) this.width=650;" title="clip_image029" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image029" src="http://img1.51cto.com/attachment/201409/16/526870_1410833721uw3j.png" width="899" height="386" />
在VM的硬碟我們,可以選擇前面建立的硬碟檔案。
650) this.width=650;" title="clip_image030" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image030" src="http://img1.51cto.com/attachment/201409/16/526870_1410833722FtG8.png" width="383" height="446" />
650) this.width=650;" title="clip_image031" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image031" src="http://img1.51cto.com/attachment/201409/16/526870_1410833723pI8a.png" width="757" height="633" />
啟動VM,開始進行安裝系統。
現在看看KVM伺服器上NFS掛載情況。如下:
df –h
650) this.width=650;" title="clip_image032" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image032" src="http://img1.51cto.com/attachment/201409/16/526870_14108337238L2g.png" width="724" height="261" />
通過我們可以發現,其實命令列和圖形介面配置的都是一樣的。
以上就是有關,NFS作為儲存與KVM進行整合時的相關配置方法以及注意點。
本文出自 “爛泥行天下” 部落格,請務必保留此出處http://ilanni.blog.51cto.com/526870/1553125
爛泥:NFS做儲存與KVM整合