建筑外观设计网站推荐,做侵权视频网站,广西网站建设建议,长沙企业网站建设目录
快照
快照克隆
开机自动挂载
ceph文件系统
使用MDS
对象存储
配置服务器端
配置客户端
访问Dashborad 快照
快照可以保存某一时间点时的状态数据快照是映像在特定时间点的只读逻辑副本希望回到以前的一个状态#xff0c;可以恢复快照使用镜像、快照综合示例
#…目录
快照
快照克隆
开机自动挂载
ceph文件系统
使用MDS
对象存储
配置服务器端
配置客户端
访问Dashborad 快照
快照可以保存某一时间点时的状态数据快照是映像在特定时间点的只读逻辑副本希望回到以前的一个状态可以恢复快照使用镜像、快照综合示例
# 1. 在rbd存储池中创建10GB的镜像名为img1[rootclient1 ~]# rbd --help # 查看子命令[rootclient1 ~]# rbd help create # 查看子命令create的帮助[rootclient1 ~]# rbd create img1 --size 10G[rootclient1 ~]# rbd listimg1[rootclient1 ~]# rbd info img1rbd image img1:size 10 GiB in 2560 objectsorder 22 (4 MiB objects)snapshot_count: 0id: fa91208bfdafblock_name_prefix: rbd_data.fa91208bfdafformat: 2features: layering, exclusive-lock, object-map, fast-diff, deep-flattenop_features: flags: create_timestamp: Sat Dec 17 10:44:17 2022access_timestamp: Sat Dec 17 10:44:17 2022modify_timestamp: Sat Dec 17 10:44:17 2022# 2. 在客户端使用镜像img1将其挂载到/mnt[rootclient1 ~]# rbd listimg1[rootclient1 ~]# rbd map img1/dev/rbd0[rootclient1 ~]# mkfs.xfs /dev/rbd0[rootclient1 ~]# mount /dev/rbd0 /mnt/[rootclient1 ~]# rbd showmappedid pool namespace image snap device 0 rbd img1 - /dev/rbd0[rootclient1 ~]# df -h /mnt/Filesystem Size Used Avail Use% Mounted on/dev/rbd0 10G 105M 9.9G 2% /mnt# 3. 向/mnt中写入数据[rootclient1 ~]# cp /etc/hosts /mnt/[rootclient1 ~]# cp /etc/passwd /mnt/[rootclient1 ~]# ls /mnt/hosts passwd# 4. 创建img1的快照名为img1-sn1[rootclient1 ~]# rbd snap create img1 --snap img1-sn1Creating snap: 100% complete...done.[rootclient1 ~]# rbd snap ls img1SNAPID NAME SIZE PROTECTED TIMESTAMP 4 img1-sn1 10 GiB Sat Dec 17 10:46:07 2022# 5. 删除/mnt/中的数据[rootclient1 ~]# rm -f /mnt/*# 6. 通过快照还原数据[rootclient1 ~]# umount /mnt/[rootclient1 ~]# rbd unmap /dev/rbd0[rootclient1 ~]# rbd help snap rollback # 查看子命令帮助# 回滚img1到快照img1-sn1[rootclient1 ~]# rbd snap rollback img1 --snap img1-sn1# 重新挂载[rootclient1 ~]# rbd map img1/dev/rbd0[rootclient1 ~]# mount /dev/rbd0 /mnt/[rootclient1 ~]# ls /mnt/ # 数据还原完成hosts passwd
保护快照防止删除
[rootclient1 ~]# rbd help snap protect# 保护镜像img1的快照img1-sn1[rootclient1 ~]# rbd snap protect img1 --snap img1-sn1[rootclient1 ~]# rbd snap rm img1 --snap img1-sn1 # 不能删
删除操作
# 1. 取消对快照的保护[rootclient1 ~]# rbd snap unprotect img1 --snap img1-sn1# 2. 删除快照[rootclient1 ~]# rbd snap rm img1 --snap img1-sn1# 3. 卸载块设备[rootclient1 ~]# umount /dev/rbd0# 4. 取消映射[rootclient1 ~]# rbd unmap img1# 5. 删除镜像[rootclient1 ~]# rbd rm img1
快照克隆
不能将一个镜像同时挂载到多个节点如果这样操作将会损坏数据如果希望不同的节点拥有完全相同的数据盘可以使用克隆技术克隆是基于快照的不能直接对镜像克隆快照必须是受保护的快照才能克隆克隆流程 给多个客户端生成数据相同的数据盘
# 1. 创建名为img2的镜像大小10GB[rootclient1 ~]# rbd create img2 --size 10G# 2. 向镜像中写入数据[rootclient1 ~]# rbd map img2/dev/rbd0[rootclient1 ~]# mkfs.xfs /dev/rbd0[rootclient1 ~]# mount /dev/rbd0 /mnt/[rootclient1 ~]# for i in {1..20} do echo Hello World $i /mnt/file$i.txt done[rootclient1 ~]# ls /mnt/file10.txt file15.txt file1.txt file5.txtfile11.txt file16.txt file20.txt file6.txtfile12.txt file17.txt file2.txt file7.txtfile13.txt file18.txt file3.txt file8.txtfile14.txt file19.txt file4.txt file9.txt# 3. 卸载镜像[rootclient1 ~]# umount /mnt/[rootclient1 ~]# rbd unmap img2# 4. 为img2创建名为img2-sn1快照[rootclient1 ~]# rbd snap create img2 --snap img2-sn1# 5. 保护img2-sn1快照[rootclient1 ~]# rbd snap protect img2 --snap img2-sn1# 6. 通过受保护的快照img2-sn1创建克隆镜像[rootclient1 ~]# rbd clone img2 --snap img2-sn1 img2-sn1-1[rootclient1 ~]# rbd clone img2 --snap img2-sn1 img2-sn1-2# 7. 查看创建出来的、克隆的镜像[rootclient1 ~]# rbd lsimg2img2-sn1-1img2-sn1-2# 8. 不同的客户端挂载不同的克隆镜像看到的是相同的数据[rootclient1 ~]# rbd map img2-sn1-1/dev/rbd0[rootclient1 ~]# mkdir /data[rootclient1 ~]# mount /dev/rbd0 /data[rootclient1 ~]# ls /datafile10.txt file15.txt file1.txt file5.txtfile11.txt file16.txt file20.txt file6.txtfile12.txt file17.txt file2.txt file7.txtfile13.txt file18.txt file3.txt file8.txtfile14.txt file19.txt file4.txt file9.txt[rootceph1 ~]# yum install -y ceph-common[rootceph1 ~]# rbd map img2-sn1-2/dev/rbd0[rootceph1 ~]# mkdir /data[rootceph1 ~]# mount /dev/rbd0 /data/[rootceph1 ~]# ls /data/file10.txt file15.txt file1.txt file5.txtfile11.txt file16.txt file20.txt file6.txtfile12.txt file17.txt file2.txt file7.txtfile13.txt file18.txt file3.txt file8.txtfile14.txt file19.txt file4.txt file9.txt
查询镜像和快照
# 查看快照信息[rootclient1 ~]# rbd info img2 --snap img2-sn1rbd image img2:size 10 GiB in 2560 objectsorder 22 (4 MiB objects)snapshot_count: 1id: d46eed84bb61block_name_prefix: rbd_data.d46eed84bb61format: 2features: layering, exclusive-lock, object-map, fast-diff, deep-flattenop_features: flags: create_timestamp: Sat Dec 17 10:58:05 2022access_timestamp: Sat Dec 17 10:58:05 2022modify_timestamp: Sat Dec 17 10:58:05 2022protected: True # 受保护# 查看克隆的快照[rootclient1 ~]# rbd info img2-sn1-2rbd image img2-sn1-2:size 10 GiB in 2560 objectsorder 22 (4 MiB objects)snapshot_count: 0id: d48fe3d6559eblock_name_prefix: rbd_data.d48fe3d6559eformat: 2features: layering, exclusive-lock, object-map, fast-diff, deep-flattenop_features: flags: create_timestamp: Sat Dec 17 10:59:53 2022access_timestamp: Sat Dec 17 10:59:53 2022modify_timestamp: Sat Dec 17 10:59:53 2022parent: rbd/img2img2-sn1 # 父对象是rbd池中img2镜像的img2-sn1快照overlap: 10 GiB 合并父子镜像 img2-sn1-2是基于img2的快照克隆来的不能独立使用。如果父镜像删除了子镜像也无法使用。将父镜像内容合并到子镜像中子镜像就可以独立使用了。
# 把img2的数据合并到子镜像img2-sn1-2中[rootclient1 ~]# rbd flatten img2-sn1-2# 查看状态它就没有父镜像了[rootclient1 ~]# rbd info img2-sn1-2rbd image img2-sn1-2:size 10 GiB in 2560 objectsorder 22 (4 MiB objects)snapshot_count: 0id: d48fe3d6559eblock_name_prefix: rbd_data.d48fe3d6559eformat: 2features: layering, exclusive-lock, object-map, fast-diff, deep-flattenop_features: flags: create_timestamp: Sat Dec 17 10:59:53 2022access_timestamp: Sat Dec 17 10:59:53 2022modify_timestamp: Sat Dec 17 10:59:53 2022# 删除父镜像如果镜像正在被使用则先取消[rootclient1 ~]# umount /data/[rootclient1 ~]# rbd unmap img2-sn1-1# 1. 删除镜像img2-sn1-1[rootclient1 ~]# rbd rm img2-sn1-1# 2. 取消img2-sn1的保护[rootclient1 ~]# rbd snap unprotect img2 --snap img2-sn1# 3. 删除img2-sn1快照[rootclient1 ~]# rbd snap rm img2 --snap img2-sn1# 4. 删除img2[rootclient1 ~]# rbd rm img2# 因为img2-sn1-2已经是独立的镜像了所以它还可以使用# ceph1上的镜像没有受到影响[rootceph1 ~]# cat /data/file1.txt Hello World 1
开机自动挂载
# 1. 准备镜像[rootclient1 ~]# rbd create img1 --size 10G[rootclient1 ~]# rbd map img1/dev/rbd0[rootclient1 ~]# mkfs.xfs /dev/rbd0# 2. 设置开机自动挂载[rootclient1 ~]# vim /etc/ceph/rbdmap # 指定要挂载的镜像及用户名、密钥rbd/img1 idadmin,keyring/etc/ceph/ceph.client.admin.keyring[rootclient1 ~]# vim /etc/fstab # 追加/dev/rbd/rbd/img1 /data xfs noauto 0 0# noauto的意思是等rbdmap服务启动后再执行挂载# 3. 启动rbdmap服务[rootclient1 ~]# systemctl enable rbdmap --now# 4. reboot后查看结果[rootclient1 ~]# df -h /data/Filesystem Size Used Avail Use% Mounted on/dev/rbd0 10G 105M 9.9G 2% /data
ceph文件系统
文件系统相当于是组织数据存储的方式。格式化时就是在为存储创建文件系统。Linux对ceph有很好的支持可以把ceph文件系统直接挂载到本地。要想实现文件系统的数据存储方式需要有MDS组件
使用MDS 元数据就是描述数据的属性。如属主、属组、权限等。 ceph文件系统中数据和元数据是分开存储的 新建存储池 归置组PG存储池包含PG。PG是一个容器用于存储数据。为了管理方便将数量众多的数据放到不同的PG中管理而不是直接把所有的数据扁平化存放。通常一个存储池中创建100个PG。 创建ceph文件系统
# 1. 新建一个名为data1的存储池目的是存储数据有100个PG[rootclient1 ~]# ceph osd pool create data01 100# 2. 新建一个名为metadata1的存储池目的是存储元数据[rootclient1 ~]# ceph osd pool create metadata01 100# 3. 创建名为myfs1的cephfs数据保存到data1中元数据保存到metadata1中[rootclient1 ~]# ceph fs new myfs01 metadata01 data01# 4. 查看存储池[rootclient1 ~]# ceph osd lspools1 .mgr2 rbd3 data014 metadata01[rootclient1 ~]# ceph df--- RAW STORAGE ---CLASS SIZE AVAIL USED RAW USED %RAW USEDhdd 180 GiB 180 GiB 206 MiB 206 MiB 0.11TOTAL 180 GiB 180 GiB 206 MiB 206 MiB 0.11--- POOLS ---POOL ID PGS STORED OBJECTS USED %USED MAX AVAIL.mgr 1 1 449 KiB 2 1.3 MiB 0 57 GiBrbd 2 32 7.1 MiB 43 22 MiB 0.01 57 GiBdata01 3 94 0 B 0 0 B 0 57 GiBmetadata01 4 94 0 B 0 0 B 0 57 GiB# 5. 查看文件系统[rootclient1 ~]# ceph fs lsname: myfs01, metadata pool: metadata01, data pools: [data01 ]# 6. 启动MDS服务[rootclient1 ~]# ceph orch apply mds myfs01 --placement2 ceph1 ceph2# 7. 查看部署结果[rootclient1 ~]# ceph -scluster:id: a4b69ab4-79dd-11ed-ae7b-000c2953b002health: HEALTH_OKservices:mon: 3 daemons, quorum ceph1,ceph3,ceph2 (age 92m)mgr: ceph1.gmqorm(active, since 92m), standbys: ceph3.giqaphmds: 1/1 daemons up, 1 standby # mds服务信息osd: 9 osds: 9 up (since 92m), 9 in (since 4d)...略...
客户端使用cephfs
# 挂载文件系统需要密码。查看密码[rootclient1 ~]# cat /etc/ceph/ceph.client.admin.keyring [client.admin]key AQBmhINh1IZjHBAAvgk8m/FhyLiH4DCCrnrdPQ# -t 指定文件系统类型。-o是选项提供用户名和密码[rootclient1 ~]# mkdir /mydata[rootclient1 ~]# mount.ceph 192.168.88.13:/ /mydata -o nameadmin,secretAQC5u5ZjnTA1ERAAruLAI8F1W1nyOgxZSx0UXw [rootclient1 ~]# df -h /mydata/Filesystem Size Used Avail Use% Mounted on192.168.88.13:/ 57G 0 57G 0% /mydata
对象存储
配置服务器端
需要专门的客户端访问键值对存储方式对象存储需要rgw组件安装部署
# 1. 在ceph1/ceph2上部署rgw服务名为myrgw[rootclient1 ~]# ceph orch apply rgw myrgw --placement2 ceph1 ceph2 --port 8080[rootclient1 ~]# ceph -scluster:id: a4b69ab4-79dd-11ed-ae7b-000c2953b002health: HEALTH_OKservices:mon: 3 daemons, quorum ceph1,ceph3,ceph2 (age 101m)mgr: ceph1.gmqorm(active, since 6h), standbys: ceph3.giqaphmds: 1/1 daemons up, 1 standbyosd: 9 osds: 9 up (since 6h), 9 in (since 5d); 1 remapped pgsrgw: 2 daemons active (2 hosts, 1 zones) # rgw信息...略...
配置客户端
ceph对象存储提供了一个与亚马逊S3Amazon Simple Storage Service兼容的接口在S3中对象被存储在一个称作桶bucket的器皿中。这就好像是本地文件存储在目录中一样。
# 1. 安装amazon S3 cli工具客户端工具[rootclient1 ~]# yum install -y awscli# 2. 在ceph中创建一个用户[rootclient1 ~]# radosgw-admin user create --uidtestuser --display-nameTest User --emailtesttedu.cn --access-key12345 --secret67890# 3. 初始化客户端[rootclient1 ~]# aws configure --profilecephAWS Access Key ID [None]: 12345AWS Secret Access Key [None]: 67890Default region name [None]: # 回车Default output format [None]: # 回车# 4. 创建名为testbucket的bucket用于存储数据[rootclient1 ~]# vim /etc/hosts # 添加以下内容192.168.88.11 ceph1192.168.88.12 ceph2192.168.88.13 ceph3[rootclient1 ~]# aws --profileceph --endpointhttp://ceph1:8080 s3 mb s3://testbucket# 5. 上传文件[rootclient1 ~]# aws --profileceph --endpointhttp://ceph1:8080 --aclpublic-read-write s3 cp /etc/hosts s3://testbucket/hosts.txt# 6. 查看bucket中的数据[rootclient1 ~]# aws --profileceph --endpointhttp://ceph1:8080 s3 ls s3://testbucket2022-12-17 17:05:58 241 hosts.txt# 7. 下载数据[rootclient1 ~]# wget -O zhuji http://ceph1:8080/testbucket/hosts.txt
访问Dashborad
通过浏览器访问https://192.168.88.11:8443用户名为admin密码是安装时指定的123456。