创建和使用CephFS
创建和使用CephFS
快速创建CephFS
对于大多数Ceph部署,设置第一个CephFS文件系统非常简单,如下所示
root@node1:~# ceph fs volume create cephfs
手动创建:
创建2个RADOS池
Ceph文件系统至少需要两个RADOS池,一个用于数据,另一个用于元数据
文件系统、元数据池和数据池的名称只能包含集合[a-zA-Z0-9_-.]中的字符。
$ ceph osd pool create cephfs_data
$ ceph osd pool create cephfs_metadata
此命令使用指定的元数据和数据池创建一个新的文件系统。指定的数据池是默认数据池,设置后无法更改。每个文件系统都有自己的一组MDS守护程序分配给列组,因此请确保有足够的备用守护程序可用于容纳新的文件系统。
创建mds服务守护进程
创建 mds.yaml文件
service_type: mds
service_id: fs_name
placement:count: 3
然后可以使用以下方法应用该规范:
ceph orch apply -i mds.yaml
创建文件系统
$ ceph fs new <fs_name> <metadata> <data> [--force] [--allow-dangerous-metadata-overlay] [<fscid:int>] [--recover]
$ ceph fs new cephfs cephfs_metadata cephfs_data
$ ceph fs ls
挂载CephFS
CephFS 有两种挂载方式,kernel及FUSE mounts。kernel挂载的性能比fuse更好。
作为一个粗略的指南,从Ceph 10.x(Jewell)开始,您应该至少使用4.x内核。如果您必须使用较旧的内核,那么应该使用fuse客户端,而不是内核客户端。
内核驱动挂载
通常,通过内核驱动程序装载CephFS的命令如下所示:
mount -t ceph {device-string}={path-to-mounted} {mount-point} -o {key-value-args} {other-args}
在Ceph集群上,默认情况下会启用CephX。使用mount命令使用内核驱动程序装载CephFS:
mkdir /mnt/mycephfs
mount -t ceph <name>@<fsid>.<fs_name>=/ /mnt/mycephfs
name是用于安装CephFS的CephX用户的用户名。fsid是可以使用ceph-fsid命令找到的ceph集群的fsid。fs_name是要装载的文件系统。内核驱动程序需要MON的套接字和CephX用户的密钥,例如:
root@node1:~# ceph fsid
361628de-f851-11ed-97a2-000c29391d66
root@node1:~# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]key = AQCP4mpk5wgMExAAAOeZLA5mFiYV/Sg3Umqm+A==caps mds = "allow *"caps mgr = "allow *"caps mon = "allow *"caps osd = "allow *"
可以使用secretfile文件echo AQCP4mpk5wgMExAAAOeZLA5mFiYV/Sg3Umqm+A== > cephuser.secret
root@node3:~# mkdir /root/mycephfs
root@node3:~# mount -t ceph admin@361628de-f851-11ed-97a2-000c29391d66.cephfs=/ /root/mycephfs -o mon_addr=172.16.11.135:6789/172.16.11.136:6789,secretfile=/root/cephuser.secret
root@node3:~# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 393M 1.5M 391M 1% /run
/dev/mapper/ubuntu--vg-lv--0 46G 8.5G 36G 20% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 138M 1.7G 8% /boot
tmpfs 393M 4.0K 393M 1% /run/user/1000
tmpfs 393M 4.0K 393M 1% /run/user/0
overlay 46G 8.5G 36G 20% /var/lib/docker/overlay2/d4ccc46e1cce45011bfa5489535e026b32d5fe01997944efab8663b e6e1e7f25/merged
overlay 46G 8.5G 36G 20% /var/lib/docker/overlay2/e1405f4830dbe37d851fbd657d278e5cadfc642e07d7399f50bd3c7 bf51a219a/merged
overlay 46G 8.5G 36G 20% /var/lib/docker/overlay2/727a220b46961e2d11ee9d8755a5c7e4275483e793046e7358fa141 179102525/merged
overlay 46G 8.5G 36G 20% /var/lib/docker/overlay2/b004a6dd972e3caf5887c51a209d1a883063a738ab45d0d84a72624 3d59b15a0/merged
overlay 46G 8.5G 36G 20% /var/lib/docker/overlay2/3cbb7606a098d28712bd4d9e7009d58e45ff64d92ef12c45bf8ebe4 2e1afaaab/merged
admin@361628de-f851-11ed-97a2-000c29391d66.cephfs=/ 95G 0 95G 0% /root/mycephfs
内核挂载必须安装ceph-common,否则会报错
root@node3:~# mount -t ceph admin@361628de-f851-11ed-97a2-000c29391d66.cephfs=/ /root/mycephfs -o mon_addr=172.16.11.135:6789/172.16.11.136:6789,secretfile=/root/cephuser.secret
mount: /root/mycephfs: wrong fs type, bad option, bad superblock on admin@361628de-f851-11ed-97a2-000c29391d66.cephfs=/, missing codepage or helper program , or other error.
安装ceph-common
root@node3:~# cephadm add-repo --release quincy
root@node3:~# cephadm install ceph-common
持久性装载
要在文件系统表中安装CephFS作为内核驱动程序,请在/etc/fstab中添加以下内容
{name}@.{fs_name}=/ {mount}/{mountpoint} ceph [mon_addr={ipaddress},secret=secretkey|secretfile=/path/to/secretfile],[{mount.options}] {fs_freq} {fs_passno}
我们尝试使用以下挂载
admin@361628de-f851-11ed-97a2-000c29391d66.cephfs=/ /root/mycephfs ceph mon_addr=172.16.11.135:6789/172.16.11.136:6789/172.16.11.137,secretfile=/root/cephuser.secret,noatime,_netdev 0 0
支持旧语法以实现向后兼容性。
要使用内核驱动程序装载CephFS,请执行以下操作:
mount -t ceph :/ /root/mycephfs -o name=admin
测试CephFS的io速率
吞吐量 | bw |
---|---|
IOPS | IOPS |
响应时间 | lat |
提交延迟 | slat |
filename=/dev/emcpowerb 支持文件系统或者裸设备,-filename=/dev/sda2或-filename=/dev/sdb
direct=1 测试过程绕过机器自带的buffer,使测试结果更真实
rw=randwread 测试随机读的I/O
rw=randwrite 测试随机写的I/O
rw=randrw 测试随机混合写和读的I/O
rw=read 测试顺序读的I/O
rw=write 测试顺序写的I/O
rw=rw 测试顺序混合写和读的I/O
bs=4k 单次io的块文件大小为4k
bsrange=512-2048 同上,提定数据块的大小范围
size=5g 本次的测试文件大小为5g,以每次4k的io进行测试
numjobs=30 本次的测试线程为30
runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止
ioengine=psync io引擎使用pync方式,如果要使用libaio引擎,需要yum install libaio-devel包
rwmixwrite=30 在混合读写的模式下,写占30%
group_reporting 关于显示结果的,汇总每个进程的信息
此外
lockmem=1g 只使用1g内存进行测试
zero_buffers 用0初始化系统buffer
nrfiles=8 每个进程生成文件的数量
安装fio软件包
apt-get -y install fio
随机读:
root@node1:~# fio -name=randread -direct=1 -iodepth=64 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/root/mycephfs/filetest.txt
randread: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
fio-3.30
Starting 1 process
randread: Laying out IO file (1 file / 1024MiB)
Jobs: 1 (f=1): [r(1)][100.0%][r=7541KiB/s][r=1885 IOPS][eta 00m:00s]
randread: (groupid=0, jobs=1): err= 0: pid=204836: Wed May 24 09:54:16 2023read: IOPS=1043, BW=4175KiB/s (4275kB/s)(1024MiB/251154msec)slat (usec): min=9, max=18992, avg=24.00, stdev=116.84clat (usec): min=4, max=1441.8k, avg=61285.53, stdev=107963.39lat (usec): min=483, max=1441.8k, avg=61310.69, stdev=107963.14clat percentiles (msec):| 1.00th=[ 3], 5.00th=[ 5], 10.00th
更多推荐
创建和使用CephFS
发布评论