天天看點

NFS Volume Provider(Part I) - 每天5分鐘玩轉 OpenStack(62)配置 NFS Volume Provider

cinder-volume 支援多種 volume provider,前面我們一直使用的是預設的 LVM,本節我們将增加 NFS volume provider。

雖然 NFS 更多地應用在實驗或小規模 cinder 環境,由于性能和缺乏高可用的原因在生産環境中不太可能使用,但是學習 NFS volume provider 的意義在于:

1. 了解 cinder-volume 如何支援多 backend

2. 更重要的,可以了解 cinder-volume,nova-compute 和 volume provider 是如何協同工作,共同為 instance 提供塊存儲。

3. 舉一反三,能夠快速了解并接入其他生産級 backend ,比如 Ceph,商業存儲等。

下圖展示了 cinder、nova 是如何與 NFS volume provider 協調工作的。

NFS Volume Provider

就是我們通常說的 NFS Server,提供遠端 NFS 目錄,NFS Clinet 可以 mount 這些遠端目錄到本地,然後像使用本地目錄一樣建立、讀寫檔案以及子目錄。

cinder-volume

存儲節點通過 NFS driver 管理 NFS volume provider 中的 volume,這些 volume 在 NFS 中實際上是一個個檔案。

nova-compute

計算節點将 NFS volume provider 存放 volume 的目錄 mount 到本地,然後将 volume 檔案作為虛拟硬碟映射給 instance。

這裡有幾點需要強調:

在 Cinder 的 driver 架構中,運作 cinder-volume 的存儲節點和 Volume Provider 可以是完全獨立的兩個實體。 cinder-volume 通過 driver 與 Volume Provider 通信,控制和管理 volume。

Instance 讀寫 volume 時,資料流不需要經過存儲節點,而是直接對 Volume Provider 中的 volume 進行讀寫。

正如上圖所示,存儲節點與 NFS Volume Provider 的連接配接隻用作 volume 的管理和控制(綠色連線);真正的資料讀寫,是通過計算節點和 NFS Volume Proiver 之間的連接配接完成的(紫色連線)。這種設計減少了中間環節,存儲節點不直接參與資料傳輸,保證了讀寫效率。

其他 Volume Provider(例如 ceph,swift,商業存儲等)均遵循這種控制流與資料流分離的設計。

在實驗環境中,NFS volume provider 的 NFS 遠端目錄為 192.168.104.11:/storage

cinder-volume 服務節點上 mount point 為 /nfs_storage。

在 /etc/cinder/cinder.conf 中添加 nfs backend。

enabled_backends = lvmdriver-1,nfs 讓 cinder-volume 使用 nfs backend

[nfs] 中詳細配置 nfs backend。包括:

a) 指定存儲節點上 /nfs_storage 為 nfs 的 mount point。

nfs_mount_point_base = /nfs_storage

   b) 檢視 /etc/cinder/nfs_shares 活動 nfs 共享目錄清單。

nfs_shares_config = /etc/cinder/nfs_shares,其内容為

清單中隻有 192.168.104.11:/storage。如果希望有多個 nfs 共享目錄存放 volume,則可以添加到該檔案中。

   c) nfs volume driver。

volume_driver=cinder.volume.drivers.nfs.NfsDriver

   d) 設定 volume backend name。在 cinder 中需要根據這裡的 volume_backend_name 建立對應的 volume type,這個非常重要。

volume_backend_name = nfs

重新開機 cinder-volume,cinder service-list 确認 nfs cinder-volume 服務正常工作。

建立 nfs volume type。

打開GUI頁面Admin -> System -> Volumes -> Volume Types,點選 “Create Volume Type”。

命名 nfs,點選“Create Volume Type”。

選擇 nfs volume tyep,點選下拉菜單“View Extra Specs”

點選“Create”,Key 輸入 volume_backend_name ;Value 輸入 nfs。

NFS volume provider 準備就緒,下一節我們将建立 NFS 為 backend 的 volume。

本文轉自CloudMan6 51CTO部落格,原文連結:

http://blog.51cto.com/cloudman/1827934