ceph 挂载失败,显示 (95) 操作不受支持

ceph mount failed with (95) Operation not supported

我在服务器 "A" 和 "B" 上安装了 ceph,我想从 "C" 或 "D" 服务器上安装它。

但我遇到了以下错误。

ceph-fuse[4628]: ceph mount failed with (95) Operation not supported

我的服务器配置如下

A Server: ubunt16.04(ceph-server) 10.1.1.54
B Server: ubuntu16.04(ceph-server) 10.1.1.138
C Server: AmazonLinux(clinet)
D Server: ubuntu16.04(client)

和ceph.conf

[global]
fsid = 44f299ac-ff11-41c8-ab96-225d62cb3226
mon_initial_members = node01, node02
mon_host = 10.1.1.54,10.1.1.138
auth cluster required = none
auth service required = none
auth client required = none
auth supported = none
osd pool default size = 2
public network = 10.1.1.0/24

Ceph 也安装正确。

ceph 健康

HEALTH_OK

ceph -s

  cluster 44f299ac-ff11-41c8-ab96-225d62cb3226
     health HEALTH_OK
     monmap e1: 2 mons at {node01=10.1.1.54:6789/0,node02=10.1.1.138:6789/0}
            election epoch 12, quorum 0,1 node01,node02
     osdmap e41: 2 osds: 2 up, 2 in
            flags sortbitwise,require_jewel_osds
      pgmap v100: 64 pgs, 1 pools, 306 bytes data, 4 objects
            69692 kB used, 30629 MB / 30697 MB avail
                  64 active+clean

使用ceph-fuse命令时出错。

sudo ceph-fuse -m 10.1.1.138:6789 /mnt/mycephfs/ --debug-auth=10 --debug-ms=10
ceph-fuse[4628]: starting ceph client
2017-11-02 08:57:22.905630 7f8cfdd60f00 -1 init, newargv = 0x55779de6af60 newargc=11
ceph-fuse[4628]: ceph mount failed with (95) Operation not supported
ceph-fuse[4626]: mount failed: (95) Operation not supported

我收到一条错误消息 "ceph mount failed with (95) Operation not supported"

我添加了一个选项“--auth-client-required=none”

sudo ceph-fuse -m 10.1.1.138:6789 /mnt/mycephfs/ --debug-auth=10 --debug-ms=10 --auth-client-required=none
ceph-fuse[4649]: starting ceph client
2017-11-02 09:03:47.501363 7f1239858f00 -1 init, newargv = 0x5597621eaf60 newargc=11

行为发生变化,此处无响应。

如果不使用 ceph-fuse 命令,我会得到以下错误。

sudo mount -t ceph 10.1.1.138:6789:/ /mnt/mycephfs

can't read superblock

不知何故,即使使用"auth supported = none"

,似乎也需要与客户端进行身份验证

那样的话,你怎么能通过服务器"c"或"d"的认证呢?

请让我知道,如果除了身份验证之外还有其他可能的原因。

我认为您需要更多步骤,例如格式化文件系统,所以 你应该根据你的目的再次检查你的安装步骤,Ceph 的每个服务都有多个组件,例如对象存储、块存储、文件系统和 API。每个服务都需要其配置步骤。

此安装指南对您的案例有所帮助。

https://github.com/infn-bari-school/cloud-storage-tutorials/wiki/Ceph-cluster-installation-(jewel-on-CentOS)

如果要构建Ceph 文件系统进行测试,可以按照以下安装步骤构建小型CephFS。 具体的步骤和CLI的使用我就略过了,大家可以去官方文档了解更多。

环境信息

  • Ceph 版本:Jewel,10.2.9
  • OS: 美分OS 7.4

安装 Ceph 文件系统之前的先决条件。

  • 此配置需要 4 个节点,

    • ceph-admin 节点:部署监视器、元数据服务器
    • ceph-osd0:osd 服务
    • ceph-osd1:osd 服务
    • ceph-osd2:osd 服务
  • 启用 NTP - 所有节点

  • 用于部署 ceph 组件的 OS 用户需要升级权限设置(例如 sudoers)
  • SSH public密钥配置(方向:ceph-admin -> OSD节点)

在 ceph-admin 管理节点上安装 ceph-deploy 工具。

# yum install -y ceph-deploy

为 Ceph 文件系统部署所需的 Ceph 组件

  1. 使用普通 OS 用户在 ceph-admin 管理节点上创建集群(用于部署 ceph 组件)

    $ mkdir ./cluster

    $ cd ./cluster

    $ ceph-deploy new ceph-admin

  2. 修改ceph.conf进入集群目录

    $ vim ceph.conf

    [global]

    ..snip...

    mon_initial_members = ceph-admin

    mon_host = $MONITORSERVER_IP_OR_HOSTNAME

    auth_cluster_required = cephx

    auth_service_required = cephx

    auth_client_required = cephx

    # the number of replicas for objects in the pool, default value is 3

    osd pool default size = 3

    public network = $YOUR_SERVICE_NETWORK_CIDR

  3. 正在为相关节点安装监视器和 osd 服务。

    $ ceph-deploy install --release jewel ceph-admin ceph-osd0 ceph-osd1 ceph-osd2

  4. 启动监控服务

    $ ceph-deploy mon create-initial

  5. 创建 OSD 设备

    ceph-deploy osd list ceph-osd{0..2}:vdb

为 Ceph 文件系统服务添加元数据服务器组件。

  1. 添加元数据服务器(此服务只需要 Ceph 文件系统)

    ceph-deploy mds create ceph-admin

  2. 查看状态

    ceph mds stat

  3. 为 cephFS 创建池

    ceph osd pool create cephfs_data_pool 64

    ceph osd pool create cephfs_meta_pool 64

  4. 创建 ceph 文件系统

    ceph fs new cephfs cephfs_meta_pool cephfs_data_pool

挂载 Ceph 文件系统

  1. 挂载节点需要ceph-fuse包。

  2. 挂载为 cephFS

    ceph-fuse -m MONITOR_SERVER_IP_OR_HOSTNAME:PORT_NUMBER <LOCAL_MOUNTPOINT>

结束...

我通过修改三个设置解决了这个问题。

1.

ceph.conf中的授权设置返回如下

auth cluster required = cephx
auth service required = cephx
auth client required = cephx

2.

public网络错误

public network = 10.1.1.0/24

public network = 10.0.0.0/8

我的客户端 IP 地址是 10.1.0.238... 这是一个愚蠢的错误。

3.

我将 secret 选项更改为 secretfile 选项,一切正常。

在这种情况下,失败了。

sudo mount -t ceph 10.1.1.138:6789:/ /mnt/mycephfs -o name=client.admin,secret=`sudo ceph-authtool -p /etc/ceph/ceph.client.admin.keyring`

输出:

mount error 1 = Operation not permitted

但在这种情况下,它是成功的。

sudo mount -vvvv -t ceph 10.1.1.138:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret

输出:

parsing options: rw,name=admin,secretfile=admin.secret
mount: error writing /etc/mtab: Invalid argument

※ Invalid argument 错误似乎被忽略了。

显然,两者是同一个密钥。

sudo ceph-authtool -p /etc/ceph/ceph.client.admin.keyring
AQBd9f9ZSL46MBAAqwepJDC5tuIL/uYp0MXjCA==


cat admin.secret 
AQBd9f9ZSL46MBAAqwepJDC5tuIL/uYp0MXjCA==

我不知道为什么,但我可以使用 secretfile 选项挂载。