Ceph集群配置系列《五》CephFS的使用

必备条件

  1. 验证是否具有合适版本的Linux内核。 有关详细信息,请参阅OS建议。

    # lsb_release -a 
    # uname -r 
    
  2. 确保Ceph存储集群正在运行并处于active + clean状态。 还要确保至少运行一个Ceph元数据服务器。

    Tip:创建MDS之后,但在创建某些池和文件系统前,MDS不会变为活动状态。

    # ceph -s
    cluster:
        id:     6ba14dc2-0261-4925-9a50-f90c94d544d2
        health: HEALTH_OK
     
      services:
        mon: 3 daemons, quorum node1,node2,node3
        mgr: node1(active), standbys: node2, node3
        osd: 8 osds: 8 up, 8 in
     
      data:
        pools:   6 pools, 384 pgs
        objects: 231  objects, 2.3 KiB
        usage:   8.2 GiB used, 15 TiB / 15 TiB avail
        pgs:     384 active+clean
    

创建文件系统

需先创建两个存储池,一个池用于存储数据,另一个用于存储元数据。然后创建文件系统

#ceph osd pool create cephfs_data  
#ceph osd pool create cephfs_metadata  
# ceph fs new  cephfs_metadata cephfs_data 

此命令将创建一个新文件系统。 文件系统名称和元数据池名称是不言自明的。 指定的数据池是默认数据池,设置后无法更改。每个文件系统都有自己的一组分配给rank的MDS守护进程,因此请确保有足够的备用守护进程来容纳新的文件系统。

例如:

# ceph osd pool create cephfs_data 64
pool 'cephfs_data' created 
# ceph osd pool create cephfs_metadata 64
pool 'cephfs_metadata' create 
# ceph fs new cpehfs cephfs_metadata cephfs_data 
new fs with metadata pool 8 and data pool 7

此时MDS会变为活动状态

# ceph -s
  cluster:
    id:     6ba14dc2-0261-4925-9a50-f90c94d544d2
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: node1(active), standbys: node2, node3
    mds: cpehfs-1/1/1 up  {0=node2=up:active}, 1 up:standby
    osd: 8 osds: 8 up, 8 in
 
  data:
    pools:   8 pools, 512 pgs
    objects: 253  objects, 5.1 KiB
    usage:   8.3 GiB used, 15 TiB / 15 TiB avail
    pgs:     512 active+clean

列出文件系统

按名称列出所有文件系统。

# ceph fs ls
name: cpehfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

转储给定epoch(默认值:current)的FSMap,其中包括所有文件系统设置、MDS守护进程及其所属的rank,以及备用MDS守护进程列表。

# ceph fs dump
dumped fsmap epoch 8
e8
enable_multiple, ever_enabled_multiple: 0,0
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,8=no anchor table,9=file layout v2,10=snaprealm v2}
legacy client fscid: 1
 
Filesystem 'cephfs' (1)
fs_name	cpehfs
epoch	7
flags	12
created	2019-10-15 09:57:09.335969
modified	2019-10-15 09:57:10.339237
tableserver	0
root	0
session_timeout	60
session_autoclose	300
max_file_size	1099511627776
min_compat_client	-1 (unspecified)
last_failure	0
last_failure_osd_epoch	0
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,8=no anchor table,9=file layout v2,10=snaprealm v2}
max_mds	1
in	0
up	{0=4192}
failed	
damaged	
stopped	
data_pools	[7]
metadata_pool	8
inline_data	disabled
balancer	
standby_count_wanted	1
4192:	11.11.11.21:6804/2626601780 'node2' mds.0.6 up:active seq 60626
 
 
Standby daemons:
 
4188:	11.11.11.20:6805/1630534972 'node1' mds.-1.0 up:standby seq 1

获取文件系统的信息

要获取指定文件系统的信息,包括设置和rank。 这是ceph fs dump命令中相同信息的子集。

# ceph fs get 

例如:

# ceph fs get cephfs
Filesystem 'cephfs' (1)
fs_name	cpehfs
epoch	7
flags	12
created	2019-10-15 09:57:09.335969
modified	2019-10-15 09:57:10.339237
tableserver	0
root	0
session_timeout	60
session_autoclose	300
max_file_size	1099511627776
min_compat_client	-1 (unspecified)
last_failure	0
last_failure_osd_epoch	0
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,8=no anchor table,9=file layout v2,10=snaprealm v2}
max_mds	1
in	0
up	{0=4192}
failed	
damaged	
stopped	
data_pools	[7]
metadata_pool	8
inline_data	disabled
balancer	
standby_count_wanted	1
4192:	11.11.11.21:6804/2626601780 'node2' mds.0.6 up:active seq 60626

添加数据池到文件系统

将数据池添加到文件系统。 此池可用作文件布局,作为存储文件数据的备用位置。

# ceph fs add_data_pool  

从文件系统中删除指定池

此命令从文件系统的数据池列表中删除指定的池。 如果任何文件具有已删除数据池的布局,则文件数据将变为不可用。 无法删除默认数据池(创建文件系统时指定的池)。

# ceph fs rm_data_pool  

创建密钥文件

默认情况下,Ceph存储集群在启用身份验证的情况下运行。 应该有一个包含密钥的文件(不是密钥环本身)。 要获取特定用户的密钥,请执行以下过程:

  1. 在keyring文件中查看用户的密钥。 例如:

    # cat ceph.client.admin.keyring 
    [client.admin] 
    key = AQALapVchh0XHRAAjMrPZT08c66wlVhnCISNtQ== 
    ...
    
  2. 新建一个以用户名称为属性的文件(例如,admin.secret)。将该用户的密钥粘贴到空文件,复制用户的密钥用于挂载CephFS文件系统。

    AQALapVchh0XHRAAjMrPZT08c66wlVhnCISNtQ== 
    
  3. 确保文件权限适合用户,但对其他用户不可见。

  4. 将该文件复制到所有的节点。

    # scp /etc/ceph/admin.secret node2:/etc/ceph/
    # scp /etc/ceph/admin.secret node3:/etc/ceph/
    # scp /etc/ceph/admin.secret node4:/etc/ceph/
    

内核驱动

将CephFS挂载为内核驱动。

#sudo mkdir /mnt/nzfs 
#sudo mount -t ceph {ip-address-of-monitor}:6789:/ /mnt/nzfs 

Ceph存储集群默认使用身份验证。 在“创建密钥文件”部分中指定创建用户name和secretfile。 例如:

#sudo mount -t ceph 11.11.11.20,11.11.11.21,11.11.11.22:6789:/ /mnt/nzfs -o name=admin,secretfile=/etc/ceph/admin.secret 
# df -Th
...
11.11.11.20,11.11.11.21,11.11.11.22:6789:/ ceph      3.5T     0  3.5T   0% /mnt/nzfs

用户空间文件系统(FUSE)

将CephFS挂载为用户空间文件系统(FUSE)。

# sudo mkdir /fs 
# sudo ceph-fuse -m {ip-address-of-monitor}:6789 ~/mycephfs 

例如:

# ceph-fuse -m 11.11.11.20,11.11.11.21,11.11.11.22:6789 /fs

 ceph-fuse[8084]: starting ceph client 
 2019-03-25 04:03:49.368 7f97141a6c00 -1 init, newargv = 0x559bbd95b4a0 newargc=7 
 ceph-fuse[8084]: starting fuse 
# df -Th
...
ceph-fuse           fuse.ceph-fuse  3.5T     0  3.5T   0% /fs

Ceph存储集群默认使用身份验证。 如果密钥环不在默认位置(即/etc/ceph),请指定密钥环:

# sudo ceph-fuse -k ./ceph.client.admin.keyring -m {ip-address-of-monitor}:6789  /fs

删除文件系统

先umount文件系统,停止MDS,再删除文件系统。

删除CephFS文件系统将从FSMap中删除关于文件系统状态的信息。元数据池和数据池是不受影响的,必须单独删除。

# systemctl stop ceph-mds.target
# ceph fs rm  [--yes-i-really-mean-it]

你可能感兴趣的:(分布式存储,#,Ceph)