Rook入门:打造云原生Ceph存储的全面学习路径(下)
文章目录
- 六.Rook部署云原生CephFS文件系统
- 6.1 部署cephfs storageclass
- 6.2 创建容器所需cephfs文件系统
- 6.3创建容器pod使用rook-cephfs提供pvc
- 6.4 查看pod是否使用rook-cephfs
- 七.Ceph Dashboard界面
- 7.1 启用dashboard开关
- 7.2 ceph-dashboard配置外部访问
- 7.3 Dashboard web admin密码查看
- 7.4 dashboard web登录查看
- 八.Prometheus监控
- 8.1 查看rook-ceph-mgr metrics监控指标
- 8.2部署prometheus-operator
- 8.3 部署prometheus实例
- 8.4部署grafana
- 8.5配置grafana监控ceph模板
- 8.6 在grafana上查看ceph集群状态
- 九.常见故障排查
- 9.1 ceph集群出现警告mgr modules have recently crashed
- 9.2 ceph集群出现警告 mons are allowing insecure global_id reclaim
- 9.3 rook部署ceph集群某个pod异常或者pending状态
- 9.4 PVC处于pending状态
- 9.5 rook-ceph osd down格式化硬盘重新挂载
- 十.ceph集群常用命令
- 10.1查看集群状态命令
- 10.2 Ceph mds命令
- 10.3 ceph osd命令
- 10.4 ceph pg命令
- 10.5 ceph osd pool命令
- 10.6 rados命令
六.Rook部署云原生CephFS文件系统
6.1 部署cephfs storageclass
cephfs文件系统与RBD服务类似,要想在kubernetes pod里使用cephfs,需要创建一个cephfs-provisioner storageclass服务,在rook代码里已有资源文件,单独部署即可[root@node1 examples]#
kubectl create -f deploy/examples/csi/cephfs/storageclass.yaml查看cephfs storageclass名称
[root@node1 examples]# kubectl get storageclasses.storage.k8s.io | grep rook-cephfs
rook-cephfs rook-ceph.cephfs.csi.ceph.com Delete Immediate true 21d
[root@node1 examples]#
6.2 创建容器所需cephfs文件系统
创建容器所需pvc指定rook部署rook-cephfs存储类名称
[root@node1 cephfs]# cat pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: cephfs-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: rook-cephfs
[root@node1 cephfs]#
[root@node1 cephfs]# kubectl apply -f pvc.yaml查看pvc所提供是rook-cephfs
[root@node1 cephfs]# kubectl get pvc | grep cephfs-pvc
cephfs-pvc Bound pvc-da18c8f9-00c1-4c39-8c53-68a628fa8bdd 1Gi RWO rook-cephfs 21drook-cephfs 7d23h
[root@node1 cephfs]#
6.3创建容器pod使用rook-cephfs提供pvc
[root@node1 cephfs]# cat pod.yaml
---
apiVersion: v1
kind: Pod
metadata:name: csicephfs-demo-pod
spec:containers:- name: web-serverimage: nginx:latestvolumeMounts:- name: mypvcmountPath: /var/lib/www/htmlvolumes:- name: mypvcpersistentVolumeClaim:claimName: cephfs-pvcreadOnly: false
[root@node1 cephfs]#
[root@node1 cephfs]# kubectl apply -f pod.yaml查看pod运行状况
[root@node1 cephfs]# kubectl get pod | grep cephfs
csicephfs-demo-pod 1/1 Running 0 21d
[root@node1 cephfs]#
6.4 查看pod是否使用rook-cephfs
[root@node1 cephfs]# kubectl exec -it csicephfs-demo-pod -- bash
root@csicephfs-demo-pod:/# df -hT | grep csi-vol
10.68.91.46:6789,10.68.110.0:6789,10.68.225.251:6789:/volumes/csi/csi-vol-50d5c216-3e2a-11ed-9773-9a6110af61d6/f4e696bf-757d-4793-b2c2-3091d38ccec5 ceph 1.0G 0 1.0G 0% /var/lib/www/html
root@csicephfs-demo-pod:/#
root@csicephfs-demo-pod:/# echo "cephfs" > /var/lib/www/html/index.html
root@csicephfs-demo-pod:/# cat /var/lib/www/html/index.html
cephfs
root@csicephfs-demo-pod:/#
注:登录相应pod容器可以看到pod已经挂载cephfs文件系统地址,可以在相应挂载目录创建内容。
七.Ceph Dashboard界面
ceph有一个dashboard web管理界面,通过web界面在可以查看集群的状态,包括总体运行状态,mgr、osd、rgw等服务状态,还可以查看ceph pool池及pg状态等相关信息。
7.1 启用dashboard开关
在cluster.yaml文件中,dashboard.enable=true即可。rookoperator就会启用ceph-mgr dashboard模块,默认已启用。Ceph-dashboard默认会通过service的方式将服务暴露给外部,通过8443的https端口进行访问。
[root@node1 examples]# kubectl get svc -n rook-ceph | grep rook-ceph-mgr-dashboard
rook-ceph-mgr-dashboard ClusterIP 10.68.218.45 <none> 8443/TCP 24d
[root@node1 examples]#
7.2 ceph-dashboard配置外部访问
Dashboard web界面外部访问可以通过ingress或者NodePort方式,这里使用NodePort方式将dashboard服务暴露给kubernetes集群外部访问,外部通过nodeport端口访问dashboard服务。
Dashboard-external-https资源文件应用
[root@node1 examples]# kubectl apply -f dashboard-external-https.yaml查看dashboard nodeport端口32367
[root@node1 examples]# kubectl get svc -n rook-ceph | grep rook-ceph-mgr-dashboard
rook-ceph-mgr-dashboard ClusterIP 10.68.218.45 <none> 8443/TCP 24d
rook-ceph-mgr-dashboard-external-https NodePort 10.68.104.233 <none> 8443:32367/TCP 22d
[root@node1 examples]#
7.3 Dashboard web admin密码查看
用户名默认是admin,密码通过下面方式查看
[root@node1 examples]# kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo ""
Z(M(@>GBC4TUZXQgT6%$
[root@node1 examples]#
7.4 dashboard web登录查看
Dashboard web界面访问https://node_ip:32367
登录后dashboard界面,ceph集群状态,hosts、monitors、osds、rgw、pools、block等相关信息。
八.Prometheus监控
rook部署ceph集群默认没有安装prometheus监控服务,这里我们使用prometheus以容器化运行在kubernetes中,使用prometheus-operator部署方式。
prometheus监控系统包括组件:
Exporter:监控agent端,用于上报,ceph-mgr默认已提供内置监控指标
Prometheus:服务端用于存储监控数据、提供查询、告警等
Grafana:展示监控信息,通常从prometheus获取监控指标通过模板来展示图表信息
8.1 查看rook-ceph-mgr metrics监控指标
[root@node1 examples]# kubectl get svc -n rook-ceph | grep rook-ceph-mgr
rook-ceph-mgr ClusterIP 10.68.33.103 <none> 9283/TCP 24d
Ceph-mgr metrics监控指标访问
[root@node1 examples]# curl http://10.68.33.103:9283/metrics# HELP ceph_health_status Cluster health status
# TYPE ceph_health_status untyped
ceph_health_status 0.0
# HELP ceph_mon_quorum_status Monitors in quorum
# TYPE ceph_mon_quorum_status gauge
ceph_mon_quorum_status{ceph_daemon="mon.b"} 1.0
ceph_mon_quorum_status{ceph_daemon="mon.c"} 1.0
ceph_mon_quorum_status{ceph_daemon="mon.d"} 1.0
# HELP ceph_fs_metadata FS Metadata
# TYPE ceph_fs_metadata untyped
ceph_fs_metadata{data_pools="5",fs_id="1",metadata_pool="4",name="myfs"} 1.0
# HELP ceph_mds_metadata MDS Metadata
# TYPE ceph_mds_metadata untyped
ceph_mds_metadata{ceph_daemon="mds.myfs-b",fs_id="1",hostname="10.255.82.25",public_addr="172.20.166.175:6801/2538469664",rank="0",ceph_version="ceph version 17.2.3 (dff484dfc9e19a9819f375586300b3b79d80034d) quincy (stable)"} 1.0
ceph_mds_metadata{ceph_daemon="mds.myfs-a",fs_id="1",hostname="10.255.82.27",public_addr="172.20.135.49:6801/1468538095",rank="0",ceph_version="ceph version 17.2.3 (dff484dfc9e19a9819f375586300b3b79d80034d) quincy (stable)"} 1.0
# HELP ceph_mon_metadata MON Metadata
# TYPE ceph_mon_metadata untyped
ceph_mon_metadata{ceph_daemon="mon.b",hostname="10.255.82.25",public_addr="10.68.225.251",rank="0",ceph_version="ceph version 17.2.3 (dff484dfc9e19a9819f375586300b3b79d80034d) quincy (stable)"} 1.0
ceph_mon_metadata{ceph_daemon="mon.c",hostname="10.255.82.26",public_addr="10.68.91.46",rank="1",ceph_version="ceph version 17.2.3 (dff484dfc9e19a9819f375586300b3b79d80034d) quincy (stable)"} 1.0
ceph_mon_metadata{ceph_daemon="mon.d",hostname="10.255.82.27",public_addr="10.68.243.187",rank="2",ceph_version="ceph version 17.2.3 (dff484dfc9e19a9819f375586300b3b79d80034d) quincy (stable)"} 1.0
# HELP ceph_mgr_metadata MGR metadata
# TYPE ceph_mgr_metadata gauge
ceph_mgr_metadata{ceph_daemon="mgr.b",hostname="10.255.82.25",ceph_version="ceph version 17.2.3 (dff484dfc9e19a9819f375586300b3b79d80034d) quincy (stable)"} 1.0
ceph_mgr_metadata{ceph_daemon="mgr.a",hostname="10.255.82.27",ceph_version="ceph version 17.2.3 (dff484dfc9e19a9819f375586300b3b79d80034d) quincy (stable)"} 1.0
# HELP ceph_mgr_status MGR status (0=standby, 1=active)
# TYPE ceph_mgr_status gauge
ceph_mgr_status{ceph_daemon="mgr.b"} 0.0
ceph_mgr_status{ceph_daemon="mgr.a"} 1.0
# HELP ceph_mgr_module_status MGR module status (0=disabled, 1=enabled, 2=auto-enabled)
# TYPE ceph_mgr_module_status gauge
ceph_mgr_module_status{name="alerts"} 0.0
ceph_mgr_module_status{name="balancer"} 2.0
ceph_mgr_module_status{name="cephadm"} 0.0
ceph_mgr_module_status{name="crash"} 2.0
ceph_mgr_module_status{name="dashboard"} 1.0
ceph_mgr_module_status{name="devicehealth"} 2.0
ceph_mgr_module_status{name="diskprediction_local"} 0.0
ceph_mgr_module_status{name="influx"} 0.0
ceph_mgr_module_status{name="insights"} 0.0
ceph_mgr_module_status{name="iostat"} 1.0
ceph_mgr_module_status{name="k8sevents"} 0.0
ceph_mgr_module_status{name="localpool"} 0.0
ceph_mgr_module_status{name="mds_autoscaler"} 0.0
ceph_mgr_module_status{name="mirroring"} 0.0
ceph_mgr_module_status{name="nfs"} 1.0
ceph_mgr_module_status{name="orchestrator"} 2.0
ceph_mgr_module_status{name="osd_perf_query"} 0.0
ceph_mgr_module_status{name="osd_support"} 0.0
ceph_mgr_module_status{name="pg_autoscaler"} 2.0
ceph_mgr_module_status{name="progress"} 2.0
ceph_mgr_module_status{name="prometheus"} 1.0
ceph_mgr_module_status{name="rbd_support"} 2.0
ceph_mgr_module_status{name="restful"} 1.0
ceph_mgr_module_status{name="rook"} 0.0
ceph_mgr_module_status{name="selftest"} 0.0
ceph_mgr_module_status{name="snap_schedule"} 0.0
ceph_mgr_module_status{name="stats"} 0.0
ceph_mgr_module_status{name="status"} 2.0
ceph_mgr_module_status{name="telegraf"} 0.0
ceph_mgr_module_status{name="telemetry"} 2.0
ceph_mgr_module_status{name="test_orchestrator"} 0.0
ceph_mgr_module_status{name="volumes"} 2.0
ceph_mgr_module_status{name="zabbix"} 0.0
# HELP ceph_mgr_module_can_run MGR module runnable state i.e. can it run (0=no, 1=yes)
# TYPE ceph_mgr_module_can_run gauge
ceph_mgr_module_can_run{name="alerts"} 1.0
ceph_mgr_module_can_run{name="balancer"} 1.0
ceph_mgr_module_can_run{name="cephadm"} 1.0
ceph_mgr_module_can_run{name="crash"} 1.0
ceph_mgr_module_can_run{name="dashboard"} 1.0
ceph_mgr_module_can_run{name="devicehealth"} 1.0
ceph_mgr_module_can_run{name="diskprediction_local"} 1.0
ceph_mgr_module_can_run{name="influx"} 0.0
ceph_mgr_module_can_run{name="insights"} 1.0
ceph_mgr_module_can_run{name="iostat"} 1.0
ceph_mgr_module_can_run{name="k8sevents"} 1.0
ceph_mgr_module_can_run{name="localpool"} 1.0
ceph_mgr_module_can_run{name="mds_autoscaler"} 1.0
ceph_mgr_module_can_run{name="mirroring"} 1.0
ceph_mgr_module_can_run{name="nfs"} 1.0
ceph_mgr_module_can_run{name="orchestrator"} 1.0
ceph_mgr_module_can_run{name="osd_perf_query"} 1.0
ceph_mgr_module_can_run{name="osd_support"} 1.0
ceph_mgr_module_can_run{name="pg_autoscaler"} 1.0
ceph_mgr_module_can_run{name="progress"} 1.0
ceph_mgr_module_can_run{name="prometheus"} 1.0
ceph_mgr_module_can_run{name="rbd_support"} 1.0
ceph_mgr_module_can_run{name="restful"} 1.0
ceph_mgr_module_can_run{name="rook"} 1.0
ceph_mgr_module_can_run{name="selftest"} 1.0
ceph_mgr_module_can_run{name="snap_schedule"} 1.0
ceph_mgr_module_can_run{name="stats"} 1.0
ceph_mgr_module_can_run{name="status"} 1.0
ceph_mgr_module_can_run{name="telegraf"} 1.0
ceph_mgr_module_can_run{name="telemetry"} 1.0
ceph_mgr_module_can_run{name="test_orchestrator"} 1.0
ceph_mgr_module_can_run{name="volumes"} 1.0
ceph_mgr_module_can_run{name="zabbix"} 1.0
# HELP ceph_osd_metadata OSD Metadata
# TYPE ceph_osd_metadata untyped
ceph_osd_metadata{back_iface="",ceph_daemon="osd.0",cluster_addr="172.20.166.156",device_class="hdd",front_iface="",hostname="10.255.82.25",objectstore="bluestore",public_addr="172.20.166.156",ceph_version="ceph version 17.2.3 (dff484dfc9e19a9819f375586300b3b79d80034d) quincy (stable)"} 1.0
ceph_osd_metadata{back_iface="",ceph_daemon="osd.1",cluster_addr="172.20.104.37",device_class="hdd",front_iface="",hostname="10.255.82.26",objectstore="bluestore",public_addr="172.20.104.37",ceph_version="ceph version 17.2.3 (dff484dfc9e19a9819f375586300b3b79d80034d) quincy (stable)"} 1.0
ceph_osd_metadata{back_iface="",ceph_daemon="osd.2",cluster_addr="172.20.135.32",device_class="hdd",front_iface="",hostname="10.255.82.27",objectstore="bluestore",public_addr="172.20.135.32",ceph_version="ceph version 17.2.3 (dff484dfc9e19a9819f375586300b3b79d80034d) quincy (stable)"} 1.0
# HELP ceph_disk_occupation Associate Ceph daemon with disk used
.....
.....
.....
[root@node1 examples]#
8.2部署prometheus-operator
[root@node1 examples]#
kubectl apply -f https://raw.githubusercontent.com/coreos/prometheus-operator/v0.40.0/bundle.yamlPrometheus-operator部署后以容器方式运行
[root@node1 examples]# kubectl get pod | grep prometheus-operator
prometheus-operator-5944b5f9dd-5r789 1/1 Running 0 8d
[root@node1 examples]#
8.3 部署prometheus实例
[root@node1 monitoring]# pwd
/opt/rook/deploy/examples/monitoring
[root@node1 monitoring]#
[root@node1 monitoring]# kubectl apply -f prometheus.yaml -f prometheus-service.yaml -f service-monitor.yamlprometheus默认提供了9090端口访问,这里更改nodeport类型方式访问[root@node1 monitoring]# kubectl get svc -n rook-ceph | grep rook-prometheus
rook-prometheus NodePort 10.68.232.216 <none> 9090:30900/TCP 8d
[root@node1 monitoring]#prometheus访问地址http://node_ip:30900
8.4部署grafana
grafana是一个数据展示的平台,数据展示主要依赖后端的数据源。这里使用prometheus作为数据源,grafana作为展示。grafana部署在kubernetes中,参考grafana on kubernetes官方yaml文件。地址如下,根据自己需求进行修改。
https://grafana.com/docs/grafana/latest/setup-grafana/installation/kubernetes/
Grafana.yaml部署资源文件
---apiVersion: v1kind: PersistentVolumeClaimmetadata:name: grafana-pvcspec:accessModes:- ReadWriteOnceresources:requests:storage: 1Gi---apiVersion: apps/v1kind: Deploymentmetadata:labels:app: grafananame: grafanaspec:selector:matchLabels:app: grafanatemplate:metadata:labels:app: grafanaspec:securityContext:fsGroup: 472supplementalGroups:- 0containers:- name: grafanaimage: grafana/grafana:9.1.0imagePullPolicy: IfNotPresentports:- containerPort: 3000name: http-grafanaprotocol: TCPreadinessProbe:failureThreshold: 3httpGet:path: /robots.txtport: 3000scheme: HTTPinitialDelaySeconds: 10periodSeconds: 30successThreshold: 1timeoutSeconds: 2livenessProbe:failureThreshold: 3initialDelaySeconds: 30periodSeconds: 10successThreshold: 1tcpSocket:port: 3000timeoutSeconds: 1resources:requests:cpu: 250mmemory: 750MivolumeMounts:- mountPath: /var/lib/grafananame: grafana-pvvolumes:- name: grafana-pvpersistentVolumeClaim:claimName: grafana-pvc---apiVersion: v1kind: Servicemetadata:name: grafanaspec:ports:- port: 3000protocol: TCPtargetPort: http-grafanaselector:app: grafanasessionAffinity: Nonetype: LoadBalancer# kubectl apply -f grafana.yaml查看grafana运行状态,grafana对外访问使用nodeport形式。
[root@node1 rook]# kubectl get pod,svc | grep grafana
pod/grafana-b8b88d68-z8qpf 1/1 Running 2 (8d ago) 8d
service/grafana NodePort 10.68.99.199 <none> 3000:30780/TCP 8d
[root@node1 rook]#grafana访问地址如下,默认用户名和密码均为admin。登录后需要修改密码。
http://node_ip:30780
8.5配置grafana监控ceph模板
通常下面模板已满足ceph集群监控信息
ceph-cluster模板ID:2842
ceph-osd 模板ID:5336
ceph-pool 模板ID:5342
导入模板ID步骤1
导入模板ID步骤2,输入ID载入即可
8.6 在grafana上查看ceph集群状态
九.常见故障排查
9.1 ceph集群出现警告mgr modules have recently crashed
解决方法:
# kubectl exec -it rook-ceph-tools-5d8c78cd5b-kr6m9 -n rook-ceph -- bashbash-4.4$ ceph crash ls-new
ID ENTITY NEW
bash-4.4$ ceph crash archive 2022-09-30T07:59:23.681099Z_31814cfb-a08d-423e-b8dd-b5f0fd4fb097
bash-4.4$bash-4.4$ ceph health
HEALTH_OK
bash-4.4$
9.2 ceph集群出现警告 mons are allowing insecure global_id reclaim
解决方法:
ceph config set mon auth_allow_insecure_global_id_reclaim false
9.3 rook部署ceph集群某个pod异常或者pending状态
解决问题思路:
1.查看pod log查看容器内部异常日志信息
2.通过describe查看pod事件异常信息
9.4 PVC处于pending状态
解决问题思路:
1.集群中确认是否有OSD
2.CSI配置程序pod未运行或者未响应配置存储的请求
9.5 rook-ceph osd down格式化硬盘重新挂载
// 重新格式化硬盘准备
# yum -y install gdisk
# kubectl -n rook-ceph scale deployment rook-ceph-operator --replicas=0
deployment.apps/rook-ceph-operator scaled// 查询osd的状态,找到要移除的osd id
# ceph osd status// ID为2的osd标识为out,此时会进⾏元数据的同步
# ceph osd out osd.2
# ceph osd purge 2 --yes-i-really-mean-it// 删除ID为2的OSD
# ceph auth del osd.2
entity osd.2 does not exist// 删除相关osd节点的deployment
# kubectl delete deploy -n rook-ceph rook-ceph-osd-2
deployment.apps "rook-ceph-osd-2" deleted// 删除硬盘分区信息
# sgdisk --zap-all /dev/sdb
Creating new GPT entries.
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.// 清理硬盘数据(hdd硬盘使用dd,ssd硬盘使用blkdiscard,二选一)
# dd if=/dev/zero of="/dev/sdb" bs=1M count=500000 oflag=direct,dsync
500000+0 records in
500000+0 records out
524288000000 bytes (524 GB) copied, 258.146 s, 2.0 GB/s// ssd硬盘选择此命令
# blkdiscard /dev/sdb// 删除原osd的lvm信息(如果单个节点有多个osd,那么就不能用*拼配模糊删除,而根据lsblk -f查询出明确的lv映射信息再具体删除)
ls /dev/mapper/ceph-* | xargs -I% -- dmsetup remove %
rm -rf /dev/ceph-*
lsblk -f// 恢复rook的operator,使检测到格式化后的osd硬盘,osd启动后ceph集群会自动平衡数据
kubectl -n rook-ceph scale deployment rook-ceph-operator --replicas=1
deployment.aps/rook-ceph-operator scaled
十.ceph集群常用命令
10.1查看集群状态命令
ceph -v //查看ceph的版本
ceph -s //查看集群的状态
ceph -w //监控集群的实时更改|查看正在操作的动作
ceph osd tree #查看osd目录树
ceph osd df //详细列出集群每块磁盘的使用情况|查看osd的使用信息
ceph osd stat #查看osd状态
ceph mon stat //查看mon状态
ceph mds stat # 检查 MDS 状态
ceph osd find osd.o//查看osd.0节点ip和主机名
ceph auth get client.admin # 查看ceph授权信息
10.2 Ceph mds命令
ceph mds
ceph mds stat #查看msd状态
ceph mds dump #msd的映射信息
ceph mds rm 0 mds.node1#删除一个mds节点
10.3 ceph osd命令
ceph osd stat #查看osd状态
ceph osd dump #osd的映射信息
ceph osd tree#查看osd目录树
ceph osd down 0 #down掉osd.0节点
ceph osd rm 0#集群删除一个osd硬盘
ceph osd crush remove osd.4#删除标记
ceph osd getmaxosd#查看最大osd个数
ceph osd setmaxosd 10#设置osd的个数
ceph osd out osd.3#把一个osd节点逐出集群
ceph osd in osd.3#把逐出的osd加入集群
ceph osd pause#暂停osd (暂停后整个集群不再接收数据)
ceph osd unpause#再次开启osd (开启后再次接收数据)
ceph osd df //查看osd的使用信息
要定位对象,只需要对象名和存储池名字即可,例如:
ceph osd map {poolname} {object-name}
10.4 ceph pg命令
ceph pg stat#查看pg状态
ceph pg dump#查看pg组的映射信息
ceph pg map 0.3f#查看一个pg的map //查看单个pg和osd的映射信息
ceph pg 0.26 query#查看pg详细信息
ceph pg dump --format plain#显示一个集群中的所有的pg统计
ceph pg {pg-id} query //获取pg的详细信息
10.5 ceph osd pool命令
ceph osd lspools #查看ceph集群中的pool数量
创建和删除存储池
ceph osd pool create myPoolName 100#创建一个pool 这里的100指的是PG组
ceph osd pool delete myPoolName myPoolName --yes-i-really-really-mean-it #删除,集群名字需要重复两次
rados df#显示集群中pool的详细信息
ceph osd pool get data pg_num #查看data池的pg数量
ceph osd pool set data target_max_bytes 100000000000000#设置data池的最大存储空间为100T(默认是1T)
ceph osd pool set data size 3 #设置data池的副本数是3
ceph osd pool set data min_size 2 #设置data池能接受写操作的最小副本为2
ceph osd pool set data pg_num 100#设置一个pool的pg数量
ceph osd pool set data pgp_num 100#设置一个pool的pgp数量
ceph osd pool ls //查看集群中的存储池名称
ceph osd pool ls detail //查看池的的详细信息
ceph osd pool stats //查看池的IO情况
10.6 rados命令
rados lspools#查看ceph集群中有多少个pool (只是查看pool)
rados df #查看存储池使用情况:多少个pool,每个pool容量及利用情况
rados mkpool test#创建一个pool,名字:test
rados create testobject -p testpool#testpool中创建一个对象testobject
rados rm test-object-1 -p test#删除(test存储池的)一个对象object
rados -p test ls #查看存储池test的对象
相关文章:
Rook入门:打造云原生Ceph存储的全面学习路径(下)
文章目录 六.Rook部署云原生CephFS文件系统6.1 部署cephfs storageclass6.2 创建容器所需cephfs文件系统6.3创建容器pod使用rook-cephfs提供pvc6.4 查看pod是否使用rook-cephfs 七.Ceph Dashboard界面7.1 启用dashboard开关7.2 ceph-dashboard配置外部访问7.3 Dashboard web ad…...
UI控件使用说明
文章目录 一、控件的公共属性二、常用控件的私有属性三、控件的显示与隐藏 一、控件的公共属性 struct element {u32 highlight: 1; //高亮标志u32 state: 3; //内核记录控件的状态u32 ref: 5; //内核计数值u32 prj: 3; //工程序号u32 hide_action: 1; //HIDE_WI…...
Java面向对象.抽象
目录 1.object类 一、Object类的地位 所有类的父类 2.抽象类 一、定义与声明 抽象类的概念 二、抽象方法 抽象方法的特点 三、继承抽象类 子类的责任 3.抽象方法基础理念 1.抽象方法的特征 2.将abstaract加在方法的前面,该类无法被继承 1.首先࿰…...
uniapp在小程序连接webScoket实现余额支付
webScoket文档:uni.connectSocket(OBJECT) | uni-app官网 /plugins/event.js const Dep function() {this.Evens Object.create(null); } class Event {constructor({dep new Dep()} {}) {if (dep.constructor Object && Object.keys(dep).length 0…...
【C语言】连接陷阱探秘(4):检查外部类型
目录 一、外部类型概述 1.1. 外部类型的重要性 1.2. 外部类型在C语言中的使用 1.3. 注意事项 二、常见的外部类型陷阱 2.1. 结构体和联合体的大小不匹配 2.1.1. 示例代码 2.1.2. 正确的做法 2.2. 枚举类型的值不匹配 2.3. 函数签名不一致 2.3.1. 函数签名不一致的问…...
Hexo博客在多个设备同步
title: ‘Hexo博客在多个设备同步’ date: 2024-11-28 19:08:08 categories: Hexo教程 cover: /img/cover4.jpg description: ‘实现Hexo博客在不同的设备上都可以使用和上传’ 博客链接1 :Hexo搭建博客的多终端同步问题 博客链接2:Hexo博客多台电脑设备同步管理 …...
Pytorch使用手册-使用 TensorBoard 可视化模型、数据和训练过程(专题十)
在 60 分钟速成课程中,我们展示了如何加载数据,将其传递通过我们定义的作为 nn.Module 子类的模型,训练该模型并在测试数据上进行测试。为了查看发生了什么,我们在模型训练过程中打印一些统计信息,以便了解训练是否进展顺利。然而,我们可以做得更好:PyTorch 与 TensorBo…...
Linux网络——NAT/代理服务器
一.NAT技术 1.NAT IP转换 之前我们讨论了, IPv4 协议中, IP 地址数量不充足的问题,NAT 技术就是当前解决 IP 地址不够用的主要手段, 是路由器的一个重要功能。 NAT 能够将私有 IP 对外通信时转为全局 IP. 也就是一种将私有 IP 和全局IP 相互转化的技术方法: 很…...
使用ffmpeg命令实现视频文件间隔提取帧图片
将视频按每隔五秒从视频中提取一张图片 使用 ffmpeg 工具,通过设置 -vf(视频过滤器)和 -vsync 选项 命令格式 ffmpeg -i input_video.mp4 -vf "fps1/5" output_%03d.png 解释: -i input_video.mp4:指定输…...
Elasticsearch实战:从搜索到数据分析的全面应用指南
Elasticsearch(简称 ES)是一个强大的分布式搜索引擎和分析工具,它能够快速处理海量数据,并提供全文检索、结构化搜索、数据分析等功能。在现代系统中,它不仅是搜索的核心组件,也是数据分析的有力工具。 本文…...
【CSS in Depth 2 精译_064】10.3 CSS 中的容器查询相对单位 + 10.4 CSS 容器样式查询 + 10.5 本章小结
当前内容所在位置(可进入专栏查看其他译好的章节内容) 【第十章 CSS 容器查询】 ✔️ 10.1 容器查询的一个简单示例 10.1.1 容器尺寸查询的用法 10.2 深入理解容器 10.2.1 容器的类型10.2.2 容器的名称10.2.3 容器与模块化 CSS 10.3 与容器相关的单位 ✔…...
滑动窗口讲解(c基础)
滑动窗口的基本概念 滑动窗口是一种高效处理线性数据结构(如数组、字符串)的算法技巧。它就像是一个可移动的 “框”,框住数据结构中的一部分元素,通过不断地移动这个 “框”(即滑动窗口),对框内…...
Flink的双流join理解
如何保证Flink双流Join准确性和及时性、除了窗口join还存在哪些实现方式、究竟如何回答才能完全打动面试官呢。。你将在文中找到答案。 1 引子 1.1 数据库SQL中的JOIN 我们先来看看数据库SQL中的JOIN操作。如下所示的订单查询SQL,通过将订单表的id和订单详情表ord…...
springboot341+vue校园求职招聘系统设计和实现pf(论文+源码)_kaic
毕 业 设 计(论 文) 校园求职招聘系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,…...
dmdba用户资源限制ulimit -a 部分配置未生效
dmdba用户资源限制ulimit -a 部分配置未生效 1 环境介绍2 数据库实例日志报错2.1 mpp01 实例日志报错2.2 mpp02 实例日志报错 3 mpp02 服务器资源限制情况4 关闭SELinux 问题解决4.1 临时关闭 SELinux4.2 永久关闭 SELinux 5 达梦数据库学习使用列表 1 环境介绍 Cpu x86 Os Ce…...
kafka-clients之CommonClientConfigs
CommonClientConfigs是kafka-clients库中一个包含Kafka通用配置项的类,它定义了Kafka Producer、Consumer、Admin等客户端共享的配置。以下是其中的主要配置项及其含义: 1. bootstrap.servers 类型:List<String>说明:Kafk…...
支持多种快充协议的取电芯片,支持最大功率140W
前言 在快节奏的现代生活中,人们对于小家电的依赖日益加深,而随之而来的充电问题也日益凸显。传统的充电方式往往受限于电压、电流的限制,难以满足不同设备对电力的多样化需求。而PD快充协议的诞生,则为这一难题提供了全新的解决…...
《Vue零基础入门教程》第十四课:列表渲染
往期内容 《Vue零基础入门教程》第六课:基本选项 《Vue零基础入门教程》第八课:模板语法 《Vue零基础入门教程》第九课:插值语法细节 《Vue零基础入门教程》第十课:属性绑定指令 《Vue零基础入门教程》第十一课:事…...
Linux系统 进程
Linux系统 进程 进程私有地址空间用户模式和内核模式上下文切换 进程控制进程控制函数获取进程 ID创建和终止进程回收子进程让进程休眠加载并运行程序 系统调用错误处理利用fork和execve运行程序 进程 异常是允许操作系统内核提供进程(process)概念的基…...
文件具有selinux标签如下 system_u:object_r:httpd_sys_content:s0:c3 解释一下每段的含义?
文件具有selinux标签如下 system_u:object_r:httpd_sys_content:s0:c3 解释一下每段的含义? SELinux标签通常由四个部分组成,分别用于定义文件的上下文、访问控制策略以及系统安全性。针对你提供的标签:system_u:object_r:httpd_sys_content:s0:c3&…...
对偶分解算法详解及其Python实现
目录 对偶分解算法详解及其实现第一部分:对偶分解算法概述1.1 什么是对偶分解算法1.2 应用场景1.3 算法优点第二部分:对偶分解算法的数学推导2.1 问题形式2.2 对偶问题2.3 算法框架第三部分:对偶分解算法的Python实现第四部分:案例1——支持向量机中的对偶分解(策略模式)…...
Linux之web服务器
一、web 服务器简介 1.www 简介 www 是全球信息广播的意思,上网即使用 www 来查询信息,它结合多种多媒体,通过超链接以 Internet 传递信息。上网时,网站提供数据,客户端用浏览器解析数据。 www 所用协议为 HTTP&…...
十二、Pod的扩缩容-手动/自动-HPA
在实际生产系统中,经常会遇到某个服务需要扩容的场景,也可能会遇到由于资源紧张或者工作负载降低而需要减少服务实例数量的场景。此时可以利用Deployment/RC的Scale机制来完成这些工作。 Kubernetes对Pod的扩缩容操作提供了手动和自动两种模式,手动模式通过运行kubectl sca…...
RabbitMQ高级特性:TTL、死信队列与延迟队列
RabbitMQ高级特性:TTL、死信队列与延迟队列 RabbitMQ作为一款开源的消息代理软件,广泛应用于分布式系统中,用于实现消息的异步传递和系统的解耦。其强大的高级特性,包括TTL(Time-To-Live)、死信队列&#…...
UPLOAD LABS | UPLOAD LABS 靶场初识
关注这个靶场的其它相关笔记:UPLOAD LABS —— 靶场笔记合集-CSDN博客 0x01:UPLOAD LABS 靶场简介 UPLOAD LABS 靶场是一个专门用于学习文件上传漏洞攻击和防御的靶场。它提供了一系列文件上传漏洞的实验环境,用于帮助用户了解文件上传漏洞的…...
杰发科技AC7803——不同晶振频率时钟的配置
计算公式 PLL_POSDIV [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62] PLL_PREDIV_1 1 2 4 USE_XTAL 24M SYSCLK_FREQ 64M SYSCLK_DIVIDER 1 VCO USE_XTAL*…...
cocos creator 触摸事件官方案例
cocos creator 触摸事件官方案例 1、官方示例; 2、对官方示例的总结: (1)介绍了鼠标事件和触摸事件的类型,这里主要关注的是在移动端和PC端都可以触发的触摸事件。 (2)节点事件的派发&#…...
浅谈人工智能之基于容器云进行图生视频大模型搭建
浅谈人工智能之基于容器云进行图生视频大模型搭建 根据之前我们所讲过的内容: 文生图 文生视频 我们继续讲解图生视频大模型搭建。 引言 随着深度学习技术的不断发展,图生视频(image-to-video)大模型成为了计算机视觉和自然语言…...
【爬虫框架:feapder,管理系统 feaplat】
github:https://github.com/Boris-code/feapder 爬虫管理系统 feaplat:http://feapder.com/#/feapder_platform/feaplat 爬虫在线工具库 :http://www.spidertools.cn :https://www.kgtools.cn/1、feapder 简介 对于学习 Python…...
txt地图格式处理
1、txt地图格式 [属性描述] 坐标系2000国家大地坐标系 几度分带3 投影类型高斯克吕格 计量单位米 带号38 精度0.001 转换参数,,,,,, [地块坐标] 5,475.888,1,测试地块1,面,J50G077061,公路用地,地下, J1,1,113.22222222222222,23.129111721551794 J2,1,113.2722314…...
【0346】Postgres内核 Startup Process 通过 signal 与 postmaster 交互实现 (5)
1. Startup Process 进程 postmaster 初始化过程中, 在进入 ServerLoop() 函数之前,会先通过调用 StartChildProcess() 函数来开启辅助进程,这些进程的目的主要用来完成数据库的 XLOG 相关处理。 如: 核实 pg_wal 和 pg_wal/archive_status 文件是否存在Postgres先前是否发…...
蜜罐攻击网络渗透工具推荐
推荐一批侧重蜜罐攻击的网络渗透测试工具: Glastopf – 主要用于监测网络安全事件的工具。以蜜罐形式可以模拟数千个漏洞,以收集针对Web应用程序的攻击数据。 Kippo – 中交互性的SSH 蜜罐攻击器,用于记录暴力破解攻击。 Kojoney – 一种低…...
26页PDF | 数据中台能力框架及评估体系解读(限免下载)
一、前言 这份报告详细解读了数据中台的发展历程、核心概念、能力框架及成熟度评估体系。它从阿里巴巴的“大中台,小前台”战略出发,探讨了数据中台如何通过整合企业内部的数据资源和能力,加速业务迭代、降低成本,并推动业务增长…...
AI开发 - GPT之魂 用Python 演示chatGPT的自注意力机制 - 机器学习
自注意力机制(Self-Attention)就是让模型在处理每个词时,学会“关注重点”,而不是平均地对每个词一视同仁。这种机制让 GPT 能更聪明地理解句子的上下文和语义之间的关系。 自注意力机制是 GPT 的核心,它帮助模型在理解…...
Vue CLI 提供了哪些功能
前言 Vue CLI 为开发者提供了一整套强大且灵活的工具链,极大地提升了开发效率和代码质量。无论是创建项目、管理依赖、配置环境,还是进行测试和优化,Vue CLI 都能为你提供全面的支持。本文将深入探讨 Vue CLI 所提供的各种功能,并…...
网络爬虫的原理
网络爬虫就是根据网络,把上面的相关信息比如源代码以字符串的形式爬取下来,并且涉及到网站下的一系列网站。 DNS域名解析服务器可以通过ping域名/ip来测试是否连通,dns可以记录网站访问次数,从而评估出网站的使用权重,…...
02_Django路由Router
二、Django路由Router 在实际开发过程中,一个Django 项目会包含很多的 app ,这时候如果我们只在主路由里进行配置就会显得杂乱无章,所以通常会在每个 app 里,创建各自的urls.py路由模块,然后从根路由出发,…...
计算属性和监听属性
Vue.js 中的计算属性与监听属性 Vue.js 是一个流行的前端框架,它提供了许多强大的特性来简化 Web 应用的开发。其中,计算属性(Computed Properties)和监听属性(Watchers)是两个非常重要的概念,…...
JAVA项目-------医院挂号系统
1,项目目的 1、科室管理:新增科室,删除科室(如果有医生在,则不能删除该科室),修改科室。 2、医生管理:录入医生信息,以及科室信息。修改医生信息(主要是修改…...
《Learn Three.js》学习(3)光源
前言: WebGL本身不支持光源,不使用three.js,则需使用着色程序来模拟光源。 学习大纲: Three.js中的光源 特定光源的使用时机 如何调整和配置所有光源的行为 如何创建镜头光晕 光源表 基础光源:THRER.AmbientLight、THERE.Point…...
npm error code ETIMEDOUT 简单排查
今天突然没到一个仓库的ius问题。改完之后想发布npm包 出现下面的场景 npm addUser npm adduser npm notice Log in on https://registry.npmjs.org/ Create your account at: https://www.npmjs.com/login?next/login/cli/12596c8b-ba4a-4763-8a97-215087d380c4 Press ENTER…...
Flink高可用配置(HA)
从Flink架构中我们可以看到,JobManager这个组件非常重要,是中心协调器,负责任务调度和资源管理。默认情况下,每个Flink集群只有一个JobManager实例。这会产生单点故障(SPOF):如果JobManager崩溃,则无法提交新程序,正在运行的程序也会失败。通过JobManager的高可用性,…...
VITE+VUE3+TS环境搭建
前言(与搭建项目无关): 可以安装一个node管理工具,比如nvm,这样可以顺畅的切换vue2和vue3项目,以免出现项目跑不起来的窘境。我使用的nvm,当前node 22.11.0 目录 搭建项目 添加状态管理库&…...
windows上安装使用kubectl访问容器内服务
以云服务商提供的容器服务为例: 登录云服务,选择容器服务选择集群管理,选择集群概览点击kubeconfig按钮,进入说明页面官网下载kubectl 1、到 Kubernetes 版本变更 页面,查看 kubernetes 已发行版本,确认需要安装的 kubectl 版本。 2、kubectl 版本和集群的 kubernetes 版…...
软件工程第14章小测
单项选择题 第1题 定义类A和B Class A{ public B methodA(){...} } Class B{ public void methodB(){...} } 下面代码中的耦合是()。 Class Client{ public static void main(String args){ A oa new A(); a.methodA().methodB(); } } …...
HarmonyOS4+NEXT星河版入门与项目实战(23)------组件转场动画
文章目录 1、控件图解2、案例实现1、代码实现2、代码解释3、实现效果4、总结1、控件图解 这里我们用一张完整的图来汇整 组件转场动画的用法格式、属性和事件,如下所示: 2、案例实现 这里我们对上一节小鱼游戏进行改造,让小鱼在游戏开始的时候增加一个转场动画,让小鱼自…...
word转pdf
在线xml格式化: 在线 XML 格式化 | 菜鸟工具 Java使用FreeMarker自动生成Word文档(带图片和表单) Java使用FreeMarker自动生成Word文档(带图片和表单)_freemarker word模板-CSDN博客 将word转pdf JAVA 使用aspose…...
@bytemd/vue掘金markdown插件预览内容有误
vue项目使用bytemd/vue 来预览字符串格式的markdown内容,总会多出如图的一段代码, 请问有没有大佬知道为什么? 很急,求教!!!!!...
产品知识培训全面指南
在当今竞争激烈的市场环境中,产品知识已成为企业成功的关键因素。特别是对于软件即服务(SaaS)公司而言,产品的复杂性要求团队对产品有深入的了解,以便有效地与潜在客户沟通并促成交易。本指南将深入探讨产品知识培训的…...
VSCode修改资源管理器文件目录树缩进(VSCode目录结构、目录缩进、文件目录外观)workbench.tree.indent
文章目录 方法点击左下角小齿轮点击设置点击工作台,点击外观,找到Tree: Indent设置目录树的缩进 方法 点击左下角小齿轮 点击设置 点击工作台,点击外观,找到Tree: Indent设置目录树的缩进 "workbench.tree.indent"默认…...