ceph--cephFS的使用

news2024/11/24 2:24:07

ceph分布式存储—cephFS的使用

1、cephfs的概念

ceph FS 即 ceph filesystem,可以实现文件系统共享功能,客户端通过 ceph 协议挂载并使
用 ceph 集群作为数据存储服务器。
Ceph FS 需要运行 Meta Data Services(MDS)服务,其守护进程为 ceph-mds,ceph-mds
进程管理与 cephFS 上存储的文件相关的元数据,并协调对 ceph 存储集群的访问。

cephfs 的元数据使用的动态子树分区,把元数据划分名称空间对应到不同的 mds,写入元数
据的时候将元数据按照名称保存到不同主mds上,有点类似于nginx中的缓存目录分层一样.

1.1 cephfs的架构图

在这里插入图片描述

2、部署MDS服务

2.1 下载部署cephfs(mds)服务的安装包

#在ceph-mgr1管理节点下载mds服务安装包
root@ceph-mgr1:~# apt-cache madison ceph-mds
root@ceph-mgr1:~# apt install ceph-mds
#在部署节点上创建mds服务
cephadmin@ceph-mon1:~/ceph-cluster$ ceph-deploy mds create ceph-mgr1

2.2创建cephFS metadata和data存储池

使用 CephFS 之前需要事先为集群创建一个文件系统,并为其分别指定元数据和数据相
关的存储池。

#创建存放文件元数据的存储池
[ceph@ceph-deploy ceph-cluster]$ ceph osd pool create cephfs-metadata 32 32
#创建存放文件数据的存储池
[ceph@ceph-deploy ceph-cluster]$ ceph osd pool create cephfs-data 64 64
#验证
cephadmin@ceph-mon1:~/ceph-cluster$ ceph osd pool ls
cephfs-metadata  #存放元数据
cephfs-data      #存放数据

2.3在部署节点上创建cephFS文件系统并验证

下面创建一个名为my cephfs 的文件系统用于测试,cephfs-metadata存储池为其存放文件的元数据
,cephfs-data存储池为其存放文件的数据.

#创建cephfs文件系统:mycephfs
cephadmin@ceph-mon1:~/ceph-cluster$ ceph fs new mycephfs cephfs-metadata cephfs-data
#列出当前Ceph集群中存在的文件系统
cephadmin@ceph-mon1:~/ceph-cluster$ ceph fs ls
name: mycephfs, metadata pool: cephfs-metadata, data pools: [cephfs-data ]
#当前Ceph元数据服务器(Metadata Server)的状态信息。它返回了与Ceph集群中正在运行的元数据服务器相关的详细统计数据。
(该命令会列出每个元数据服务器的编号、名称、所在的存储池、活动状态、操作数、目录数量等信息。通过运行ceph mds stat,你可以获得关于元数据服务器的实时状态,以便监视和诊断Ceph文件系统中的元数据服务情况。这对于故障排除和性能调优非常有用。)

#获取当前Ceph元数据服务器(Metadata Server)的状态信息
(该命令会列出每个元数据服务器的编号、名称、所在的存储池、活动状态、操作数、目录数量等信息。通过运行ceph mds stat,你可以获得关于元数据服务器的实时状态,以便监视和诊断Ceph文件系统中的元数据服务情况。这对于故障排除和性能调优非常有用。)
cephadmin@ceph-mon1:~/ceph-cluster$ ceph mds stat
mycephfs - 0 clients
========
RANK  STATE      MDS        ACTIVITY     DNS    INOS   DIRS   CAPS
 0    active  ceph-mgr1  Reqs:    0 /s    15     17     13     10
      POOL         TYPE     USED  AVAIL
cephfs-metadata  metadata   413k   569G
  cephfs-data      data     600M   569G
STANDBY MDS
MDS version: ceph version 16.2.13 (5378749ba6be3a0868b51803968ee9cde4833a3e) pacific (stable)


#参数详解如下:
mycephfs - 0 clients: 表示当前文件系统名称为"mycephfs",且没有客户端连接到该文件系统。
RANK: 元数据服务器的编号。
STATE: 元数据服务器的状态。在此示例中,元数据服务器0处于活动状态。
MDS: 元数据服务器名称。在此示例中,活动的元数据服务器名称为"ceph-mgr1"。
ACTIVITY: 元数据服务器的活动统计信息,包括每秒请求数(Reqs)等。在此示例中,平均每秒请求数为0。
DNS, INOS, DIRS, CAPS: 具体表示域名数(dentries)、索引节点数(inodes)、目录数和打开的文件描述符数。
POOL: 存储池名。
TYPE: 池的类型(metadata / data)。
USED, AVAIL: 用于表示存储池中已使用和可用的空间量。
STANDBY MDS: 表示有一个处于待命状态的元数据服务器。
MDS version: 表示Ceph集群中正在运行的元数据服务器软件版本

2.4 创建客户端账户

#创建账户
[ceph@ceph-deploy ceph-cluster]$ ceph auth add client.wsq mon 'allow r' mds 'allow rw' osd 'allow rwx pool=cephfs-data'
#验证账户
cephadmin@ceph-mon1:~/ceph-cluster$ ceph auth get client.wsq
[client.wsq]
	key = AQDYZ65kIHuWGBAAdFExyLsWVzEQ+lyFyHcNpA==
	caps mds = "allow rw"
	caps mon = "allow r"
	caps osd = "allow rwx pool=cephfs-data"
exported keyring for client.wsq

#创建keyring文件
[ceph@ceph-deploy ceph-cluster]$ ceph auth get client.wsq -o ceph.client.yanyan.keyring
#创建key文件
[ceph@ceph-deploy ceph-cluster]$ ceph auth print-key client.wsq > wsq.key
#验证用户的keyring文件
cephadmin@ceph-mon1:~/ceph-cluster$ cat ceph.client.wsq.keyring
[client.wsq]
	key = AQDYZ65kIHuWGBAAdFExyLsWVzEQ+lyFyHcNpA==
	caps mds = "allow rw"
	caps mon = "allow r"
	caps osd = "allow rwx pool=cephfs-data"

2.5 客户端安装ceph

root@ceph-client:~# apt update
root@ceph-client:~# apt install ceph-common -y

2.6同步客户端认证文件

[ceph@ceph-deploy ceph-cluster]$ scp ceph.conf ceph.client.wsq.keyring  wsq.key  root@172.17.10.69:/etc/ceph/
#客户端验证权限
root@ceph-client:~# ceph --user wsq -s
  cluster:
    id:     3bc181dd-a0ef-4d72-a58d-ee4776e9870f
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum ceph-mon1,ceph-mon2,ceph-mon3 (age 8m)
    mgr: ceph-mgr1(active, since 8m), standbys: ceph-mgr2
    mds: 2/2 daemons up, 2 standby
    osd: 9 osds: 9 up (since 8m), 9 in (since 22h)

  data:
    volumes: 1/1 healthy
    pools:   3 pools, 97 pgs
    objects: 93 objects, 200 MiB
    usage:   679 MiB used, 1.8 TiB / 1.8 TiB avail
    pgs:     97 active+clean

3、cephfs的使用方式

客户端挂载有两种方式,内核空间和用户空间,其中内核空间挂载需要系统内核支持ceph模块,用户空间挂载需要安装ceph-fuse

3.1 客户端使用内核空间挂载ceph-fs

3.1.1客户端通过key文件挂载

#挂载
root@ceph-client:~# mkdir /data
root@ceph-client:~# mount -t ceph 172.17.10.61:6789,172.17.10.62:6789,172.17.10.63:6789:/ /data -o  name=wsq,secretfile=/etc/ceph/wsq.key 

#验证写入数据
root@ceph-client:~# dd if=/dev/zero of=/data/testfile bs=1M count=100

#设置开机自启动挂载
root@ceph-client:~# cat /etc/fstab
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda3 during curtin installation
/dev/disk/by-uuid/f570731e-f73a-4f9e-96a7-1648efb29cb8 / ext4 defaults 0 1
# /boot was on /dev/sda2 during curtin installation
/dev/disk/by-uuid/f44ce411-83f2-4152-9e82-8334567a867d /boot ext4 defaults 0 1
172.17.10.61:6789,172.17.10.62:6789,172.17.10.63:6789:/ /data ceph defaults,name=wsq,secretfile=/etc/ceph/wsq.key,_netdev 0 0
root@ceph-client:~# mount -a

#验证
root@ceph-client:~#reboot
root@ceph-client:~#df -Th

3.1.2客户端通过密钥key挂载

root@ceph-client:/etc/ceph# ll
total 24
drwxr-xr-x   2 root root 4096 Jul 13 12:36 ./
drwxr-xr-x 100 root root 4096 Jul 13 12:56 ../
-rw-r--r--   1 root root  147 Jul 13 10:05 ceph.client.wsq.keyring
-rw-r--r--   1 root root  354 Jul 13 09:44 ceph.conf
-rw-r--r--   1 root root   92 Apr 19 23:37 rbdmap
-rw-r--r--   1 root root   40 Jul 13 10:05 wsq.key
root@ceph-client:/etc/ceph# cat wsq.key
AQDYZ65kIHuWGBAAdFExyLsWVzEQ+lyFyHcNpA==
root@ceph-client:~# mount -t ceph 172.17.10.61:6789,172.17.10.62:6789,172.17.10.63:6789:/ /data -o name=wsq,secret=AQDYZ65kIHuWGBAAdFExyLsWVzEQ+lyFyHcNpA==
#验证写入数据
root@ceph-client:~# dd if=/dev/zero of=/data/testfile bs=1M count=100

#设置开机自启动挂载
root@ceph-client:~# cat /etc/fstab
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda3 during curtin installation
/dev/disk/by-uuid/f570731e-f73a-4f9e-96a7-1648efb29cb8 / ext4 defaults 0 1
# /boot was on /dev/sda2 during curtin installation
/dev/disk/by-uuid/f44ce411-83f2-4152-9e82-8334567a867d /boot ext4 defaults 0 1
172.17.10.61:6789,172.17.10.62:6789,172.17.10.63:6789:/ /data ceph defaults,name=wsq,secret=AQDYZ65kIHuWGBAAdFExyLsWVzEQ+lyFyHcNpA==,_netdev 0 0

root@ceph-client:~# mount -a

#验证
root@ceph-client:~#reboot
root@ceph-client:~#df -Th

3.2用户空间挂载ceph-fs

如果内核版本比较低而没有ceph模块,那么可以安装ceph-fuse挂载,但是推荐使用内核模块挂载。

注意:我用的是ubuntu1804系统内核支持ceph.ko模块挂载cephfs文件系统故无需安装ceph-fuse

root@ceph-client:~# lsmod |grep ceph
ceph                  380928  1
libceph               315392  1 ceph
fscache                65536  1 ceph
libcrc32c              16384  2 raid456,libceph
root@ceph-client:~# modinfo ceph
filename:       /lib/modules/4.15.0-213-generic/kernel/fs/ceph/ceph.ko
license:        GPL
description:    Ceph filesystem for Linux   #ceph文件系统
author:         Patience Warnick <patience@newdream.net>
author:         Yehuda Sadeh <yehuda@hq.newdream.net>
author:         Sage Weil <sage@newdream.net>
alias:          fs-ceph
srcversion:     7719B0A9AE35739551E438E
depends:        libceph,fscache
retpoline:      Y
intree:         Y
name:           ceph
vermagic:       4.15.0-213-generic SMP mod_unload modversions
signat:         PKCS#7
signer:
sig_key:
sig_hashalgo:   md4

#通过ceph-fuse挂载ceph
[root@ceph-client ~]# mkdir /data
[root@ceph-client ~]# ceph-fuse --name client.wsq -m 172.17.10.61:6789,172.17.10.62:6789,172.17.10.63:6789 /data
ceph-fuse[1628]: starting ceph client
2021-06-08 10:51:24.332 7f5a3898ec00 -1 init, newargv = 0x556a48c77da0 newargc=7
ceph-fuse[1628]: starting fuse

[root@ceph-client2 ~]# vim /etc/fstab
none /data fuse.ceph ceph.id=yanyan,ceph.conf=/etc/ceph/ceph.conf,_netdev,defaults 0 0
[root@ceph-client2 ~]# mount -a

4、ceph mds高可用

4.1 ceph mds高可用的作用

ceph mds作为ceph的访问入口,需要实现高性能及数据备份,假设启动4个MDS进程,设置2个Rank。这时候有2个MDS进程会分配给两个Rank,还剩下2个MDS进程分别作为另外两个的备份。

在这里插入图片描述

设置每个 Rank 备份 MDS,也就是如果此 Rank 当前的 MDS 出现问题马上切换到另个
MDS。设置备份的方法有很多,常用选项如下。

mds_standby_replay:值为 true 或 false,true 表示开启 replay 模式,这种模式下主 MDS
内的数量将实时与从 MDS 同步,如果主宕机,从可以快速的切换。如果为 false 只有宕机
的时候才去同步数据,这样会有一段时间的中断。
mds_standby_for_name:设置当前 MDS 进程只用于备份于指定名称的 MDS。
mds_standby_for_rank:设置当前 MDS 进程只用于备份于哪个 Rank,通常为 Rank 编号。
另外在存在之个 CephFS 文件系统中,还可以使用 mds_standby_for_fscid 参数来为指定不
同的文件系统。
mds_standby_for_fscid:指定 CephFS 文件系统 ID,需要联合 mds_standby_for_rank 生
效,如果设置 mds_standby_for_rank,那么就是用于指定文件系统的指定 Rank,如果没有
设置,就是指定文件系统的所有 Rank。

4.2搭建MDS高可用

ceph-mgr2 和 ceph-mon1 和 ceph-mon2 作为 mds 服务角色添加至 ceph 集群,最后实两主两备的 mds 高可用和高性能结构

4.2.1 安装mds服务

注意:安装前要查看存储的状态和当前MDS服务的状态

#安装前的检查
cephadmin@ceph-mon1:~/ceph-cluster$ ceph -s
  cluster:
    id:     3bc181dd-a0ef-4d72-a58d-ee4776e9870f
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum ceph-mon1,ceph-mon2,ceph-mon3 (age 67m)
    mgr: ceph-mgr1(active, since 67m), standbys: ceph-mgr2
    mds: 2/2 daemons up, 2 standby
    osd: 9 osds: 9 up (since 67m), 9 in (since 23h)

  data:
    volumes: 1/1 healthy
    pools:   3 pools, 97 pgs
    objects: 93 objects, 200 MiB
    usage:   679 MiB used, 1.8 TiB / 1.8 TiB avail
    pgs:     97 active+clean
    
cephadmin@ceph-mon1:~/ceph-cluster$ ceph mds  stat

#将分别在ceph-mon1、ceph-mon2、ceph-mon3安装mds服务
[root@ceph-mon1 ~]# apt install ceph-mds -y
[root@ceph-mon2 ~]# apt install ceph-mds -y
[root@ceph-mgr2 ~]# apt install ceph-mds -y

#在ceph-mon1部署节点上把mds服务器添加至ceph存储集群
[ceph@ceph-mon1 ceph-cluster]$ ceph-deploy mds create ceph-mgr2
[ceph@ceph-mon1 ceph-cluster]$ ceph-deploy mds create ceph-mon2
[ceph@ceph-mon1 ceph-cluster]$ ceph-deploy mds create ceph-mon1

#添加完成后验证mds服务器当前的状态
cephadmin@ceph-mon1:~/ceph-cluster$ ceph mds stat
mycephfs:1 {0=ceph-mgr1=up:active} 3 up:standby

#验证ceph集群当前状态
当前处于激活状态的mds服务器有一台,处于备份状态的mds服务器有三台
cephadmin@ceph-mon1:~/ceph-cluster$ ceph fs status
mycephfs - 2 clients
========
RANK  STATE      MDS        ACTIVITY     DNS    INOS   DIRS   CAPS
 0    active  ceph-mgr1  Reqs:    0 /s    16     17     13      1
      POOL         TYPE     USED  AVAIL
cephfs-metadata  metadata   445k   569G
  cephfs-data      data     600M   569G
STANDBY MDS
 ceph-mon2
 ceph-mgr2
 ceph-mon1
MDS version: ceph version 16.2.13 (5378749ba6be3a0868b51803968ee9cde4833a3e) pacific (stable)

#查看当前的文件系统状态
cephadmin@ceph-mon1:~/ceph-cluster$ ceph fs get mycephfs
Filesystem 'mycephfs' (1)
fs_name	mycephfs
epoch	108
flags	12
created	2023-07-12T08:32:08.110331+0000
modified	2023-07-13T06:24:40.794921+0000
tableserver	0
root	0
session_timeout	60
session_autoclose	300
max_file_size	1099511627776
required_client_features	{}
last_failure	0
last_failure_osd_epoch	141
compat	compat={},rocompat={},incompat={1=base v0.20,2=client writeable ranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds uses versioned encoding,6=dirfrag is stored in omap,7=mds uses inline data,8=no anchortable,9=file layout v2,10=snaprealm v2}
max_mds	2
in	0,1
up	{0=114104,1=114103}
failed
damaged
stopped
data_pools	[4]
metadata_pool	3
inline_data	disabled
balancer
standby_count_wanted	1
[mds.ceph-mgr1{0:114104} state up:active seq 19 addr [v2:172.17.10.64:6800/118428332,v1:172.17.10.64:6801/118428332]compat {c=[1],r=[1],i=[7ff]}]
[mds.ceph-mon1{1:114103} state up:active seq 21 addr [v2:172.17.10.61:6800/3442732995,v1:172.17.10.61:6801/3442732995] compat {c=[1],r=[1],i=[7ff]}]

#设置处于激活状态mds的数量
目前有四个 mds 服务器,但是有一个主三个备,可以优化一下部署架构,设置为为两主两
备。
cephadmin@ceph-mon1:~/ceph-cluster$ ceph fs set mycephfs max_mds 2   #设置同时活跃的主mds最大值为2
cephadmin@ceph-mon1:~/ceph-cluster$ ceph fs status
mycephfs - 2 clients
========
RANK  STATE      MDS        ACTIVITY     DNS    INOS   DIRS   CAPS
 0    active  ceph-mgr1  Reqs:    0 /s    16     17     13      1
 1    active  ceph-mon1  Reqs:    0 /s    10     13     11      1
      POOL         TYPE     USED  AVAIL
cephfs-metadata  metadata   445k   569G
  cephfs-data      data     600M   569G
STANDBY MDS
 ceph-mon2
 ceph-mgr2
MDS version: ceph version 16.2.13 (5378749ba6be3a0868b51803968ee9cde4833a3e) pacific (stable)

5、MDS 高可用优化

目前的状态是 ceph-mgr1 和 ceph-mon1 分别是 active 状态,ceph-mon2 和 ceph-mgr2
分别处于 standby 状态,现在可以将 ceph-mgr2 设置为 ceph-mgr1 的 standby,将
ceph-mon2 设置为 ceph-mon1 的 standby,以实现每个主都有一个固定备份角色的结构,
则修改配置文件如下:

[ceph@ceph-deploy ceph-cluster]$ vim ceph.conf
[global]
fsid = 23b0f9f2-8db3-477f-99a7-35a90eaf3dab
public_network = 172.17.10.0/16
cluster_network = 192.168.10.0/24
mon_initial_members = ceph-mon1
mon_host = 172.17.10.61
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
mon clock drift allowed = 2
mon clock drift warn backoff = 30
mon_allow_pool_delete = true
osd pool default ec profile = /var/log/ceph_pool_healthy

[mds.ceph-mgr2]
#mds_standby_for_fscid = mycephfs
mds_standby_for_name = ceph-mgr1
mds_standby_replay = true
[mds.ceph-mon2]
mds_standby_for_name = ceph-mon1
mds_standby_replay = true


#分发配置文件并重启mds服务

#分发配置文件保证各 mds 服务重启有效
$ ceph-deploy --overwrite-conf config push ceph-mon1
$ ceph-deploy --overwrite-conf config push ceph-mon2
$ ceph-deploy --overwrite-conf config push ceph-mgr1
$ ceph-deploy --overwrite-conf config push ceph-mgr2
[root@ceph-mon2 ~]# systemctl restart ceph-mds@ceph-mon2.service
[root@ceph-mon1 ~]# systemctl restart ceph-mds@ceph-mon1.service
[root@ceph-mgr2 ~]# systemctl restart ceph-mds@ceph-mgr2.service
[root@ceph-mgr1 ~]# systemctl restart ceph-mds@ceph-mgr1.service


#验证
cephadmin@ceph-mon1:~/ceph-cluster$ ceph fs status
mycephfs - 2 clients
========
RANK  STATE      MDS        ACTIVITY     DNS    INOS   DIRS   CAPS
 0    active  ceph-mgr1  Reqs:    0 /s    16     17     13      1
 1    active  ceph-mon1  Reqs:    0 /s    10     13     11      1
      POOL         TYPE     USED  AVAIL
cephfs-metadata  metadata   445k   569G
  cephfs-data      data     600M   569G
STANDBY MDS
 ceph-mon2
 ceph-mgr2
MDS version: ceph version 16.2.13 (5378749ba6be3a0868b51803968ee9cde4833a3e) pacific (stable)

#查看active和standby对应关系
cephadmin@ceph-mon1:~/ceph-cluster$ ceph fs get mycephfs
Filesystem 'mycephfs' (1)
fs_name	mycephfs
epoch	108
flags	12
created	2023-07-12T08:32:08.110331+0000
modified	2023-07-13T06:24:40.794921+0000
tableserver	0
root	0
session_timeout	60
session_autoclose	300
max_file_size	1099511627776
required_client_features	{}
last_failure	0
last_failure_osd_epoch	141
compat	compat={},rocompat={},incompat={1=base v0.20,2=client writeable ranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds uses versioned encoding,6=dirfrag is stored in omap,7=mds uses inline data,8=no anchortable,9=file layout v2,10=snaprealm v2}
max_mds	2
in	0,1
up	{0=114104,1=114103}
failed
damaged
stopped
data_pools	[4]
metadata_pool	3
inline_data	disabled
balancer
standby_count_wanted	1
[mds.ceph-mgr1{0:114104} state up:active seq 19 addr [v2:172.17.10.64:6800/118428332,v1:172.17.10.64:6801/118428332]compat {c=[1],r=[1],i=[7ff]}]
[mds.ceph-mon1{1:114103} state up:active seq 21 addr [v2:172.17.10.61:6800/3442732995,v1:172.17.10.61:6801/3442732995] compat {c=[1],r=[1],i=[7ff]}]

6、通过ganesha将cephfs导出为NFS

通过 ganesha 将 cephfs 通过 NFS 协议共享使用。

https://www.server-world.info/en/note?os=Ubuntu_20.04&p=ceph15&f=8

6.1服务端配置

root@ceph-mgr1:~# apt -y install nfs-ganesha-ceph

#修改配置文件
root@ceph-mgr1:~# cd /etc/ganesha/
root@ceph-mgr1:/etc/ganesha#
root@ceph-mgr1:/etc/ganesha# cat ganesha.conf
###################################################
#
# EXPORT
#
# To function, all that is required is an EXPORT
#
# Define the absolute minimal export
#
###################################################
NFS_CORE_PARAM {
        # disable NLM
        Enable_NLM = false;
        # disable RQUOTA (not suported on CephFS)
        Enable_RQUOTA = false;
        # NFS protocol
        Protocols = 4;
}
EXPORT_DEFAULTS {
        # default access mode
        Access_Type = RW;
}
EXPORT {
        # uniq ID
        Export_Id = 1;
        # mount path of CephFS
        Path = "/";
        FSAL {
          name = CEPH;
          # hostname or IP address of this Node
          hostname="172.17.10.64";
}
        # setting for root Squash
        Squash="No_root_squash";
        # NFSv4 Pseudo path
        Pseudo="/magedu";
        # allowed security options
        SecType = "sys";
}
LOG {
        # default log level
        Default_Log_Level = WARN;
}

EXPORT
{
	# Export Id (mandatory, each EXPORT must have a unique Export_Id)
	Export_Id = 77;

	# Exported path (mandatory)
	Path = /nonexistant;

	# Pseudo Path (required for NFS v4)
	Pseudo = /nonexistant;

	# Required for access (default is None)
	# Could use CLIENT blocks instead
	Access_Type = RW;

	# Exporting FSAL
	FSAL {
		Name = VFS;
	}
}

6.2客户端挂载测试

root@ceph-client:/etc/ceph# mount -t nfs 172.17.10.64:/magedu  /data/data-nfs/
root@ceph-client:/etc/ceph# df -Th
Filesystem                                              Type      Size  Used Avail Use% Mounted on
udev                                                    devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                                                   tmpfs     392M   13M  380M   4% /run
/dev/sda3                                               ext4       98G  6.3G   87G   7% /
tmpfs                                                   tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs                                                   tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs                                                   tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/sda2                                               ext4      9.8G  152M  9.1G   2% /boot
172.17.10.61:6789,172.17.10.62:6789,172.17.10.63:6789:/ ceph      570G  200M  570G   1% /data
tmpfs                                                   tmpfs     392M     0  392M   0% /run/user/0
172.17.10.64:/magedu  nfs4      570G  200M  570G   1% /data/data-nfs

#验证
root@ceph-client: dd if=/dev/zero  of=/data/data-nfs/test.file bs=1M count=100
root@ceph-client:/data/data-nfs# mkdir test
root@ceph-client:/data/data-nfs# ll
total 204802
drwxr-xr-x 4 nobody 4294967294 209715226 Jul 13 16:27 ./
drwxr-xr-x 1 root   root               5 Jul 13 16:27 ../
drwxr-xr-x 2 nobody 4294967294         0 Jul 13 16:27 test/
-rw-r--r-- 1 nobody 4294967294 104857600 Jul 13 12:58 test.file

#验证
root@ceph-client: dd if=/dev/zero  of=/data/data-nfs/test.file bs=1M count=100
root@ceph-client:/data/data-nfs# mkdir test
root@ceph-client:/data/data-nfs# ll
total 204802
drwxr-xr-x 4 nobody 4294967294 209715226 Jul 13 16:27 ./
drwxr-xr-x 1 root   root               5 Jul 13 16:27 ../
drwxr-xr-x 2 nobody 4294967294         0 Jul 13 16:27 test/
-rw-r--r-- 1 nobody 4294967294 104857600 Jul 13 12:58 test.file

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/749582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity面试篇】Unity 面试题总结甄选 |Unity渲染Shader相关 | ❤️持续更新❤️

前言 关于Unity面试题相关的所有知识点&#xff1a;&#x1f431;‍&#x1f3cd;2023年Unity面试题大全&#xff0c;共十万字面试题总结【收藏一篇足够面试&#xff0c;持续更新】为了方便大家可以重点复习某个模块&#xff0c;所以将各方面的知识点进行了拆分并更新整理了新…

怎样优雅地增删查改(六):按任意字段关键字查询

文章目录 实现应用测试 实现 定义按任意字段关键字查询过滤器&#xff08;IKeywordOrientedFilter&#xff09;接口&#xff0c;查询实体列表Dto若实现该接口&#xff0c;将筛选指定的目标字段&#xff08;TargetFields&#xff09;包含指定的关键字&#xff08;Keyword&#…

软件开发的六大设计原则

我们常说软件开发要尽量具有良好的可扩展性&#xff0c;做到高内聚低耦合。那么究竟该如何实现呢&#xff1f;在面向对象软件设计领域有一系列大家所认可的设计原则&#xff0c;依据这些原则来设计软件&#xff0c;就可以让软件有很好的可扩展性&#xff0c;其中最重要的一条原…

发起投票平台投票吧网络投票平台网络投票平台

小程序投票活动如何做&#xff1f;很多企业在运营当中&#xff0c;都会通过投票活动来进行推广&#xff0c;从而达到吸粉、增加用户粘度等效果。而此类投票活动&#xff0c;通过小程序就可以实现&#xff0c;操作简单。 我们现在要以“青春大不同”为主题进行一次投票活动&…

扩展欧几里得 证明及应用代码(超详细,附带例题)

应用方面&#xff1a; 1.求解乘法逆元 2.求解&#xff08;ax&#xff09;%bc 即 a个x 模上b后得到c&#xff0c;其中满足条件的x的最小整数。[也可表示为axc(mod b)] 3.求解直线上的整点数 模板代码&#xff1a; 代码1&#xff1a; ll exgcd(ll a,ll b,ll &x,ll &a…

jeecgboot:vue3版本打包失败的解决过程

根据jeecgboot vue3的文档&#xff0c;把本地node升级到16&#xff0c;在本地运行都正常&#xff0c;打包后一直提示内存不足。 首先怀疑是代码配置问题&#xff0c;找到提示对应的地方&#xff0c;修改了package.json&#xff0c;把默认的NODE_OPTIONS--max-old-space-size81…

【批量将视频转为图像序列】

批量将视频转为图像序列 代码如下&#xff0c;代码中带有解释&#xff1a; # 导入所需要的库 import cv2 import os import numpy as np# 多个视频所在的路径 datasets_path ["/home/y/Code/数据集/1/007f.mp4","/home/y/Code/数据集/1/05f.mp4","/…

Python 打印文件执行路径和行号

文章目录 前言代码部分演示意外惊喜&#xff0c;文件位置跳转 前言 我最近在学Python&#xff0c;但是我感觉动态语言如果不打印文件路径和行号&#xff0c;到时候如果出问题Debug&#xff0c;除非你对业务特别熟悉&#xff0c;不然找不到问题的位置。 反正打印了也不亏 代码…

合宙Air001开发板系列教程—01环境搭建与点灯(基于Keil-MDK的开发)

近日合宙出品了一款&#xff1a; TSSOP20封装、ARMCortex-M0内核&#xff0c;内置32K Flash4K RAM、集成多路USART、IIC、SPI等通讯外设&#xff0c;5个16bit定时器以及1路12bit ADC和2路比较器的国产MCU10块钱一个开发板10个芯片&#xff0c;性价比还是很高的&#xff0c;加其…

基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升技术

空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 Geodatabase地理数据库 ArcGIS专题地图制作 2.1专题地图制作规范 2.2 空间数据的准备与处理 2.3 空间数据可视化&#xff1a;地图符号与注记 2.4 研究区…

ndk编译jni错误LOCAL_MAKEFILE is not defined,分析解决

概述 我们用ndk编译jni的时候&#xff0c;通常会写一个Android.mk脚本文件。但是有些情况&#xff0c;我们脚本文件名字不叫Android.mk&#xff0c;比如我的分别改成AndroidSo.mk&#xff0c;AndroidA.mk 这时候就会报错&#xff1a;LOCAL_MAKEFILE is not defined 软件环境 …

单片机数码管

LED数码管&#xff08;LED Segment Displays&#xff09;是由8个发光二极管构成&#xff0c;并按照一定的图形及排列封转在一起的显示器件。其中7个LED构成7笔字形&#xff0c;1个LED构成小数点&#xff08;固有时成为八段数码管&#xff09;。 LED数码管有两大类&#xff0c…

从新手到高阶,企业培训直播玩法全攻略

首先&#xff0c;把握培训直播的整体规划。 管理端&#xff1a;直播内容管理纳入企业内部学习资源的建设&#xff0c;让企业内部的知识积累、沉淀形成体系。学员端&#xff1a;方便学员精准、快速定位到课程资源&#xff0c;方便快捷检索内容&#xff0c;学习体验简单易用。 其…

CP AUTOSAR中的EThTrcv

环境 EthTrcv驱动实际上是要实现EthIf指出的接口,包括如下API函数,描述在一个结构体里面 /** \brief type used in EthIf_EthTrcvDrvApi */ typedef struct sEthIf_EthTrcvDrvApiType { EthIf_EthTrcvCheckWakeupFctPtrType CheckWakeupOfEthTrcvDrvApi; /**< Et…

2023 JAVA 面试太难, 吃透这份 JAVA 架构面试笔记后, 成功涨到 30K

前阵子跟一位高级架构师的前辈聊天时&#xff0c;聊到今年的面试。有两个感受&#xff0c;一个是今年面邀的次数比往年要低不少&#xff0c;再一个就是很多面试者准备明显不足。不少候选人能力其实不差&#xff0c;进入团队干活后达到期望不难&#xff0c;但由于没准备或不会表…

Python从入门到精通:一步步掌握Python编程

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言Python入门条件和循…

使用Django数据库模型中的ForeignKey()形成数据表记录的父子层次结构

可以把ForeignKey()的第1个参数设置为值 “self” 实际形成数据表记录的父子层次结构。 下面是一个简单的实例&#xff1a; 在文件 E:\Python_project\P_001\myshop-test\myshop\app1\models.py 中写入下面的代码&#xff1a; from django.db import models# Create your mod…

如何保证消息的可靠性+延迟队列(TTL+死信队列+延迟队列)

目录 1.如何保证消息的可靠性 1.1.消息的可靠投递 confirm机制 return机制 1.2.如何保证消息在队列中不丢失 1.3.确保消息能可靠的被消费掉 2.延迟队列 2.1.TTL 2.2.死信队列 2.3.延迟队列 3.如何防止消费者重复消费消息 1.如何保证消息的可靠性 1.1.消息的可靠投递…

element-ui 使用 el-descriptions

<el-descriptions :column"2" border size"mini" style"margin-top: 10px;" :labelStyle"{width: 123px}" :contentStyle"{width:42%}"><el-descriptions-item label"选择项目"><el-select size&…

花了整整一周,用新工具制作的进销存管理系统,比买来的好用

进销存简单点说就是进货、库存、出货的管理&#xff01;复杂一点还会牵扯日常交易。一般情况下&#xff0c;中小型企业或者涉及仓库的商贸、电商、制造、批发、零售等相关行业都会用到。 看似很简单&#xff0c;但涉及的领域却很广泛。 那么如何有效的管理企业的进销存数据&am…