网络促销方案网络seo优化公司
#作者:闫乾苓
文章目录
- 1.核心原理
- 2.部署步骤
- 3.cephfs同步测试
- 4.查看cephfs文件同步状态
- 5.优化cephfs文件系统同步的时间间隔
1.核心原理
Cephfs异地同步基于CephFS-mirror,其工作原理是基于CephFS的快照功能和cephfs-mirror工具的异步复制机制。它通过将本地CephFS文件系统的快照异步复制到远程CephFS文件系统,实现了数据的异地备份和容灾。同时,通过增量复制和并发同步等技术手段,提高了同步效率和可用性。
本章节后续具体部署、测试步骤均基于以下2个ceph集群进行:
ceph集群site-a(源集群):
节点hostname IP
ceph01 192.168.61.11
ceph02 192.168.61.12
ceph03 192.168.61.13ceph集群site-b(目标集群):
节点hostname IP
ceph-a 192.168.61.31
ceph-b 192.168.61.32
ceph-c 192.168.61.33
2.部署步骤
(1).在源存储集群中,创建cephfs文件系统
登录到 Cephadm shell:
[root@ceph01 ~]# cephadm shell
创建cephfs文件系统cephfs_s,并创建子卷cephfs_s_subvol_1(因为子卷才能创建快照)
[ceph: root@ceph01 /]# ceph fs volume create cephfs_s
[ceph: root@ceph01 /]# ceph fs subvolume create cephfs_s cephfs_s_subvol_1
(2).在源存储集群中,部署 CephFS 镜像守护进程:
[ceph: root@ceph01 /]# ceph orch apply cephfs-mirror ceph01
Scheduled cephfs-mirror update...
可选:部署多个 CephFS 镜像守护进程并实现高可用性
ceph orch apply cephfs-mirror --placement="3 host1 host2 host3"
(3).在目标存储集群中创建目标文件系统
登录到 Cephadm shell:
[root@ceph-a ~]# cephadm shell[ceph: root@ceph-a /]# ceph fs volume create cephfs_bak
[ceph: root@ceph-a /]# ceph fs subvolume create cephfs_bak cephfs_bak_subvol_1
(4).在目标存储集群中,为每个 CephFS 对等文件系统创建一个用户:
[ceph: root@ceph-a /]# ceph fs authorize cephfs_bak client.mirror / rwps
[client.mirror]key = AQCue6BnZ+ZqKRAASrc1YhuWa7uJDhXEINu4Og==caps mds = "allow rwps fsname=cephfs_bak"caps mon = "allow r fsname=cephfs_bak"caps osd = "allow rw tag cephfs data=cephfs_bak"
(5).在源存储集群中,启用 CephFS 镜像模块:
[ceph: root@ceph01 /]# ceph mgr module enable mirroring
module 'mirroring' is already enabled
(6).在源存储集群中,在 Ceph 文件系统上启用镜像功能:
[ceph: root@ceph01 /]# ceph fs snapshot mirror enable cephfs_s
{}
可选:禁用快照镜像:
ceph fs snapshot mirror disable cephfs
(7).在目标节点上,启用 mirroring Ceph Manager 模块
[ceph: root@ceph-a /]# ceph mgr module enable mirroring
(8).在同一个目标节点上,创建 peer bootstrap
remote-site 是用户定义的字符串,用于识别目标存储集群。
在双引号之间复制令牌字符串,以便在下一步中使用。
[ceph: root@ceph-a /]# ceph fs snapshot mirror peer_bootstrap create cephfs_bak client.mirror remote-site
{"token": "eyJmc2lkIjogImJhZWRjNmMwLWUwNTgtMTFlZi1hMjNhLTAwMGMyOWNmODMyOSIsICJmaWxlc3lzdGVtIjogImNlcGhmc19iYWsiLCAidXNlciI6ICJjbGllbnQubWlycm9yIiwgInNpdGVfbmFtZSI6ICJyZW1vdGUtc2l0ZSIsICJrZXkiOiAiQVFDdWU2Qm5aK1pxS1JBQVNyYzFZaHVXYTd1SkRoWEVJTnU0T2c9PSIsICJtb25faG9zdCI6ICJbdjI6MTkyLjE2OC42MS4zMTozMzAwLzAsdjE6MTkyLjE2OC42MS4zMTo2Nzg5LzBdIFt2MjoxOTIuMTY4LjYxLjMyOjMzMDAvMCx2MToxOTIuMTY4LjYxLjMyOjY3ODkvMF0gW3YyOjE5Mi4xNjguNjEuMzM6MzMwMC8wLHYxOjE5Mi4xNjguNjEuMzM6Njc4OS8wXSJ9"}
(9).在源存储集群中,从目标存储集群导入 bootstrap 令牌:
[ceph: root@ceph01 /]# ceph fs snapshot mirror peer_bootstrap import cephfs_s eyJmc2lkIjogImJhZWRjNmMwLWUwNTgtMTFlZi1hMjNhLTAwMGMyOWNmODMyOSIsICJmaWxlc3lzdGVtIjogImNlcGhmc19iYWsiLCAidXNlciI6ICJjbGllbnQubWlycm9yIiwgInNpdGVfbmFtZSI6ICJyZW1vdGUtc2l0ZSIsICJrZXkiOiAiQVFDdWU2Qm5aK1pxS1JBQVNyYzFZaHVXYTd1SkRoWEVJTnU0T2c9PSIsICJtb25faG9zdCI6ICJbdjI6MTkyLjE2OC42MS4zMTozMzAwLzAsdjE6MTkyLjE2OC42MS4zMTo2Nzg5LzBdIFt2MjoxOTIuMTY4LjYxLjMyOjMzMDAvMCx2MToxOTIuMTY4LjYxLjMyOjY3ODkvMF0gW3YyOjE5Mi4xNjguNjEuMzM6MzMwMC8wLHYxOjE5Mi4xNjguNjEuMzM6Njc4OS8wXSJ9
{}
(10).在源存储集群中,列出 CephFS 镜像对等点:
[ceph: root@ceph01 /]# ceph fs snapshot mirror peer_list cephfs_s|jq
{"827caf22-d004-481d-bf6c-4cfd3765e35a": {"client_name": "client.mirror","site_name": "remote-site","fs_name": "cephfs_bak"}
}
可选:删除快照对等点:
ceph fs snapshot mirror peer_remove FILE_SYSTEM_NAME PEER_UUID
(11).在源存储集群中,为快照镜像配置目录:
[ceph: root@ceph01 /]# ceph fs snapshot mirror add cephfs_s /volumes/_nogroup/cephfs_s_subvol_1
{}
可选:停止目录的快照镜像:
ceph fs snapshot mirror remove FILE_SYSTEM_NAME PATH
3.cephfs同步测试
准备1台客户端主机,用户挂载源集群和目的集群的文件系统并查看镜像测试
查看源集群admin的keyring
[ceph: root@ceph01 /]# grep key /etc/ceph/ceph.keyring key = AQDsDJdnNm99KxAAzRBeGalZmX/8fgpcBiBCgA==
将源集群key写入到客户端主机配置文件
cat > /etc/ceph/ceph01.admin.secret <<EOF
AQDsDJdnNm99KxAAzRBeGalZmX/8fgpcBiBCgA==
EOF
查看目标集群admin的keyring
[ceph: root@ceph-a /]# grep key /etc/ceph/ceph.keyring key = AQCHqZ1nT1eEBBAAdW6WvPygeF2MjU7olkkjrQ==
将目标集群key写入到客户端主机配置文件
cat > /etc/ceph/ceph-a.admin.secret <<EOF
AQCHqZ1nT1eEBBAAdW6WvPygeF2MjU7olkkjrQ==
EOF
在客户端主机创建两个用于挂载源,目标集群cephfs文件系统的目录
[root@cilent ~]# mkdir /mnt/{ceph01,ceph-a}
[root@cilent ~]# tree /mnt/
/mnt/
├── ceph01
└── ceph-a
客户端主机安装ceph-common
[root@cilent ~]# yum install ceph-common
分别挂载源、目标文件系统挂载到创建的目录
[root@cilent ~]# mount -t ceph 192.168.61.11:6789:/ /mnt/ceph01 -o name=admin,secretfile=/etc/ceph/ceph01.admin.secret
[root@cilent ~]# mount -t ceph 192.168.61.31:6789:/ /mnt/ceph-a -o name=admin,secretfile=/etc/ceph/ceph-a.admin.secret
[root@cilent ~]# df -h |grep ceph
192.168.61.11:6789:/ 475G 0 475G 0% /mnt/ceph01
192.168.61.31:6789:/ 475G 0 475G 0% /mnt/ceph-a
查看源、目标集群的镜像同步:
[root@cilent ~]# tree /mnt/
/mnt/
├── ceph01
│ └── volumes
│ ├── _:cephfs_s_subvol_1.meta
│ └── _nogroup
│ └── cephfs_s_subvol_1
│ └── 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1
└── ceph-a└── volumes└── _nogroup└── cephfs_s_subvol_19 directories, 1 file
在源集群文件系统子卷创建2个测试文件
[root@cilent ~]# cd /mnt/ceph01/volumes/_nogroup/cephfs_s_subvol_1/316d3b1c-b767-425e-81ec-6ed5cf0fe7e1
[root@cilent 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1]# dd if=/dev/zero of=test100M-1 bs=1M count=100
[root@cilent 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1]# dd if=/dev/zero of=test100M-2 bs=1M count=100
[root@cilent 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1]# ll
总用量 204800
-rw-r--r--. 1 root root 104857600 2月 3 16:47 test100M-1
-rw-r--r--. 1 root root 104857600 2月 3 16:47 test100M-2
cephfs快照默认1小时创建1个,创建快照后,将快照同步到目标集群,刚在源集群创建了2个测试文件,因未到1小时,快照为创建,所有测试文件未同步。
[root@cilent ~]# tree /mnt/
/mnt/
├── ceph01
│ └── volumes
│ ├── _:cephfs_s_subvol_1.meta
│ └── _nogroup
│ └── cephfs_s_subvol_1
│ └── 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1
│ ├── test100M-1
│ └── test100M-2
└── ceph-a
└── volumes
└── _nogroup
└── cephfs_s_subvol_1
9 directories, 3 files
可以等1小时后自动触发镜像同步,也可以手动创建快照,手动同步以便检验镜像同步效果。
在源集群为文件系统ceph-s手动创建快照
[ceph: root@ceph01 /]# ceph fs subvolume snapshot create cephfs_s cephfs_s_subvol_1 snapshot_1
在客户端再此查看测试文件是否已经同步到目标集群
[root@cilent ~]# tree /mnt/
/mnt/
├── ceph01
│ └── volumes
│ ├── _:cephfs_s_subvol_1.meta
│ └── _nogroup
│ └── cephfs_s_subvol_1
│ └── 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1
│ ├── test100M-1
│ └── test100M-2
└── ceph-a└── volumes└── _nogroup└── cephfs_s_subvol_1└── 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1├── test100M-1└── test100M-210 directories, 5 files
4.查看cephfs文件同步状态
检查 cephfs-mirror守护进程状态
[ceph: root@ceph01 /]# ceph fs snapshot mirror daemon status|jq
[{"daemon_id": 54168,"filesystems": [{"filesystem_id": 1,"name": "cephfs_s","directory_count": 1,"peers": [{"uuid": "827caf22-d004-481d-bf6c-4cfd3765e35a","remote": {"client_name": "client.mirror","cluster_name": "remote-site","fs_name": "cephfs_bak"},"stats": {"failure_count": 0,"recovery_count": 0}}]}]}
]
如需更多信息,请使用 admin 套接字接口,如下所述。
在运行 CephFS 镜像守护进程的节点上查找 Ceph 文件系统 ID:
本例中的 Ceph 文件系统 ID 是 cephfs_s@1
[ceph: root@ceph01 /]# ceph --admin-daemon /var/run/ceph/ceph-client.cephfs-mirror.ceph01.lieebi.7.94310288324944.asok help|grep @"fs mirror peer status cephfs_s@1 827caf22-d004-481d-bf6c-4cfd3765e35a": "get peer mirror status","fs mirror status cephfs_s@1": "get filesystem mirror status",
查看镜像状态
827caf22-d004-481d-bf6c-4cfd3765e35a 这是唯一的对等 UUID
[ceph: root@ceph01 /]# ceph --admin-daemon /var/run/ceph/ceph-client.cephfs-mirror.ceph01.lieebi.7.94310288324944.asok fs mirror status cephfs_s@1
{"rados_inst": "192.168.61.11:0/877331395","peers": {"827caf22-d004-481d-bf6c-4cfd3765e35a": {"remote": {"client_name": "client.mirror","cluster_name": "remote-site","fs_name": "cephfs_bak"}}},"snap_dirs": {"dir_count": 1}
}
查看对等状态:
[ceph: root@ceph01 /]# ceph --admin-daemon /var/run/ceph/ceph-client.cephfs-mirror.ceph01.lieebi.7.94310288324944.asok fs mirror peer status cephfs_s@1 827caf22-d004-481d-bf6c-4cfd3765e35a
{"/volumes/_nogroup/cephfs_s_subvol_1": {"state": "idle","last_synced_snap": {"id": 4,"name": "snapshot_3","sync_duration": 1.645025513,"sync_time_stamp": "5004.206685s"},"snaps_synced": 3,"snaps_deleted": 0,"snaps_renamed": 0}
}
state 可以是以下三个值之一:
- idle 表示目录当前没有同步。
- syncing 意味着目录当前正在同步。
- failed 表示目录连续失败已达到上限。
默认连续故障数为 10,默认重试间隔为 60 秒。
显示 cephfs-mirror 守护进程映射到的目录:
[ceph: root@ceph01 /]# ceph fs snapshot mirror dirmap cephfs_s /volumes/_nogroup/cephfs_s_subvol_1
{"instance_id": "54261","last_shuffled": 1738571008.0191686,"state": "mapped"
}
5.优化cephfs文件系统同步的时间间隔
在源集群ceph01节点编写在cephadm shell中创建快照的脚本,后续可通过配置crontab定时任务,定时执行此脚本,从而缩短cephfs文件系统镜像同步的时间间隔(可规避cephfs快照默认最短间隔1小时的配置)
#!/bin/bash
CEPH_FSID="0978cb18-dc68-11ef-b0d7-000c29460ffd"
CEPH_CONFIG_PATH="/var/lib/ceph/0978cb18-dc68-11ef-b0d7-000c29460ffd/mon.ceph01/config"cephadm shell \--fsid ${CEPH_FSID} \-c ${CEPH_CONFIG_PATH} \ceph fs subvolume snapshot create cephfs_s cephfs_s_subvol_1 snapshot_$(date +%Y%m%d_%H%M%S)