08.存儲Cinder→5.場景學習→11.NFS Volume Provider→1.環境搭建

描述 詳細
  1. cinder、nova 是如何與 NFS volume provider 協調工做:
    1. NFS Volume Provider:就是咱們一般說的 NFS Server,提供遠程 NFS 目錄,NFS Clinet 能夠 mount 這些遠程目錄到本地,而後像使用本地目錄同樣建立、讀寫文件以及子目錄。
    2. cinder-volume:存儲節點經過 NFS driver 管理 NFS volume provider 中的 volume,這些 volume 在 NFS 中其實是一個個文件。
    3. nova-compute:計算節點將 NFS volume provider 存放 volume 的目錄 mount 到本地,而後將 volume 文件做爲虛擬硬盤映射給 instance。mount到存儲節點是爲了管理,mount到計算節點是爲了讓instance使用volume。雖然這裏volume provider和instance(計算節點)位於同一節點,可是仍然須要mount到計算節點。參考見08.存儲Cinder→5.場景學習→11.NFS Volume Provider→3.Attach Volume
  2. 說明:
    1. 在 Cinder 的 driver 架構中,運行 cinder-volume 的存儲節點和 Volume Provider 能夠是徹底獨立的兩個實體。 cinder-volume 經過 driver 與 Volume Provider 通訊,控制和管理 volume。
    2. Instance 讀寫 volume 時,數據流不須要通過存儲節點,而是直接對 Volume Provider 中的 volume 進行讀寫。 正如上圖所示,存儲節點與 NFS Volume Provider 的鏈接只用做 volume 的管理和控制(綠色連線);真正的數據讀寫,是經過計算節點和 NFS Volume Proiver 之間的鏈接完成的(紫色連線)。這種設計減小了中間環節,存儲節點不直接參與數據傳輸,保證了讀寫效率。
      1. 其餘 Volume Provider(例如 ceph,swift,商業存儲等)均遵循這種控制流與數據流分離的設計。
  1. 配置NFS Volume Provider
    1. enabled_backends = lvmdriver-1,nfs :
      1. 讓 cinder-volume 使用 nfs backend
    2. nfs_mount_point_base = $state_path/mnt:
      1. 指定nfs客戶端上mount point爲$state_path/mnt
      2. 其中
    3. 查看 /etc/cinder/nfs_shares 活動 nfs 共享目錄列表。nfs_shares_config = /etc/cinder/nfs_shares,其內容爲172.16.1.55:/storage
      1. NFS volume provider 的 NFS 遠程目錄爲 172.16.1.55:/storage,其中172.16.1.55是計算節點的管理網ip
      2. 若是但願有多個 nfs 共享目錄存放 volume,則能夠添加到該文件中。
    4. nfs volume driver
    5. 設置 volume backend name,根據這裏的 volume_backend_name 建立對應的 volume type
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
root@controller:~# vim /etc/cinder/cinder.conf
[DEFAULT]
enabled_backends = lvmdriver-1,nfs

[lvmdriver-1]
image_volume_cache_enabled = True
volume_clear = zero
lvm_type = auto
iscsi_helper = tgtadm
volume_group = stack-volumes-lvmdriver-1
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_backend_name = lvmdriver-1
[nfs]
nfs_mount_point_base = $state_path/mnt
nfs_shares_config = /etc/cinder/nfs_shares
volume_driver = cinder.volume.drivers.nfs.NfsDriver
volume_backend_name = nfs

root@controller:~# cat /etc/cinder/nfs_shares
172.16.1.55:/storage
  1. 重啓服務、查看服務
1
root@controller:~# systemctl restart devstack@c-vol.service
  1. 建立nfs volume type
    1. 打開GUI頁面Admin ->  Volume -> Volume Types,點擊 「Create Volume Type」。
    2. 命名 nfs,點擊「Create Volume Type」。
    3. 選擇 nfs ,點擊下拉菜單「View Extra Specs」,點擊Create,Key 輸入 volume_backend_name ;Value 輸入 nfs。



  1. 在重啓cinder-volume服務後,發現報錯:
1
2
3
Jun 24 14:43:20 controller cinder-volume[10143]: 
ERROR cinder.service [-]
Manager for service cinder-volume controller@nfs is reporting problems, not sending heartbeat. Service will appear "down".

  1. 以後會出現服務down掉的狀況
  1. 解決辦法是:
    1. 在nfs服務器上執行:
1
2
3
4
root@compute:/# vim /etc/exports
/storage *(rw,sync,no_subtree_check,no_root_squash)
root@compute:/# mkdir /storage
root@compute:/# systemctl restart nfs-kernel-server.service

  1. 而後再次重啓cinder-volume服務,並查看cinder-volume日誌,發現服務正常了
相關文章
相關標籤/搜索