#創建一個CephFS 文件系統
ceph fs volume create cephfs02#創建子卷
ceph fs subvolumegroup create cephfs02 myfsg2#查看子卷
ceph fs subvolumegroup ls cephfs02[{"name": "myfsg2"}
]
創建 NFS Ganesha 集群
#例子
$ ceph nfs cluster create <cluster_id> [<placement>] [--ingress] [--virtual_ip <value>] [--ingress-mode {default|keepalive-only|haproxy-standard|haproxy-protocol}] [--port <int>]ceph nfs cluster create my-ha-nfs \ ---集群id --placement="ceph-100,ceph-102,ceph-103" \ -- 使用3個節點--ingress \--virtual_ip=172.16.8.99 \ -----這個虛擬IP必須要和你的客戶端掛載IP一致--ingress-mode=haproxy-standard \--port=2049#查看集群
ceph nfs cluster ls
["my-ha-nfs"
]
創建完之后查看集群是否正常
最后導出NFS
導出nfs
ceph nfs export create cephfs \--cluster-id my-ha-nfs \--pseudo-path /my-nfs \--fsname cephfs02 \ --squash no_root_squash這個參數是偽路徑。系統不存在的目錄
--pseudo-path /my-nfs獲取cluster-id
ceph nfs cluster ls 獲取fsname
ceph fs ls這句是死的,因為nfs建立在cephfs之上的
ceph nfs export create cephfs 這段就不解釋大家都懂的
--squash no_root_squash
????注意假如你又想增加掛載目錄
刪除配置
ceph nfs export rm my-ha-nfs /my-nfs再查看為空
# ceph nfs export get my-ha-nfs /my-nfs
{}
重新創建
ceph nfs export create cephfs \--cluster-id my-ha-nfs \ --pseudo-path /my-nfs \--fsname cephfs02 \--path=/volumes/myfsg2 \--squash no_root_squash新增了
--path=/volumes/myfsg2這個不是目錄是一個子卷 掛載到子卷,
--path=/volumes/myfsg2
# 如果覺得麻煩可以跳過這步直接掛載根目錄
修改完之后
客戶端測試
我的系統是debian12
apt install -y nfs-common使用剛才的虛擬IP掛載
mkdir /mnt/nfs-client
mount -t nfs 172.16.8.99:/my-nfs /mnt/nfs-client/測試
echo 2222222222222 > /mnt/nfs-client/2.txt
好多網友以前都是這樣創建其實不是高可用的,
ceph nfs cluster create my-nfs --placement="node1,node2" --port=2049
更多權限
# 高級導出命令(含訪問控制與安全配置)
ceph nfs export create cephfs \--cluster-id my-nfs \--pseudo-path /secure-nfs \--fsname cephfs01 \--path=/secure-data \--readonly \--client_addr 192.168.1.100 \--client_addr 10.0.0.0/24 \--sectype sys,krb5i \--squash none