ceph分布式存储实战(4)——ceph存储配置(映射RBD镜像到客户端)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
块设备(rbd)
    1、块设备可以应用为:
        1、作为额外的磁盘使用
        2、可以作为裸设备使用
        3、可以格式化成文件系统,然后挂载给虚拟机或者物理服务器使用
     
    2、创建块设备(可以在任意一台ceph节点上创建)
    下面的命令创建一个名为ceph-client1-rbd1、大小为10G的RBD设备
    [root@ceph-node1 ~]# rbd create ceph-client1-rbd1 --size 10240
    注意:默认情况下rbd镜像会保存在ceph集群的rbd池中,可以使用-p参数改变池
     
    3、列出rbd设备镜像(可在任意一台节点上列出)
    [root@ceph-node3 ~]# rbd ls
    ceph-client1-rbd1
 
     
    4、查看创建后的块设备的信息(可以在任意一台ceph节点上查看)
    [root@ceph-node1 ~]# rbd --image ceph-client1-rbd1 info
    rbd image 'ceph-client1-rbd1':
    size 10240 MB in 2560 objects
    order 22 (4096 kB objects)
    block_name_prefix: rbd_data.857a238e1f29
    format2
    features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
    flags: 
 
    5、创建ceph客户端
    安装一台虚拟机或者用一台物理机来作为cpeh客户端进行测试,操作系统需要是linux(我的环境是centos7)
     
    需要注意:
        1、linux内核从2.6.32版本开始支持ceph
        2、建议使用2.6.34以及以上的内核版本
     
    查看内核版本命令:uname -rbd
    检查是否支持rbd命令: modprobe rbd
     
    安装完客户端的操作系统之后,记得将ceph集群的IP地址和主机名添加到hosts文件中:
    192.168.89.101 ceph-node1
    192.168.89.102 ceph-node2
    192.168.89.103 ceph-node3
    192.168.89.139 ceph-client1
 
     
    6、映射rados块设备给客户端
        在映射之前,需要授权给客户端访问ceph集群的权限,需要下面两个步骤,添加秘钥环(客户端与ceph集群之间的身份验证就是基于这个秘钥环)和添加ceph配置文件
     
        1、在管理节点(ceph-deploy)上通过ceph-deploy工具给ceph-client1安装ceph包
        deploy install ceph-client1-rbd1
         
        2、在管理节点上(ceph-deploy)上通过ceph-deploy工具给ceph-client1客户端下发秘钥环和ceph配置文件
        用于授予客户端访问ceph集群的权限
        ceph-deploy admin ceph-client1
         
        3、登录ceph-client1客户端检查秘钥文件和配置文件是否下发成功
        进入/ect/ceph/目录
        [root@ceph-client1 ceph]# ls -l
        -rw------- 1 root root 129 Jan  6 22:51 ceph.client.admin.keyring #这是下发后的秘钥文件
        -rw-r--r-- 1 root root 234 Jan  6 22:51 ceph.conf #这是下发后的配置文件
        -rw-r--r-- 1 root root  92 Oct  4 10:50 rbdmap
        -rw------- 1 root root   0 Jan  6 22:51 tmpUcImw6
         
        4、在ceph-client1客户端上查询ceph集群的RBD镜像
        [root@ceph-client1 ~]# rbd ls #列出rbd列表
        ceph-client1-rbd1
        [root@ceph-client1 ~]# rbd info --image ceph-client1-rbd1 #查看rbd镜像详细信息
        rbd image 'ceph-client1-rbd1':
            size 10240 MB in 2560 objects
            order 22 (4096 kB objects)
            block_name_prefix: rbd_data.857a238e1f29
            format2
            features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
            flags: 
         
        5、授权之后,就在ceph-client1客户端上映射名为'ceph-client1-rbd1'的rbd镜像:
        rbd map --image ceph-client1-rbd1
         
        执行上述映射命令后发生如下错误:
        [root@ceph-client1 log]# rbd map --image ceph-client1-rbd1
        rbd: sysfs write failed
        RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".
        In some cases useful info is found in syslog - try "dmesg | tail" or so.
        rbd: map failed: (6) No such device or address
        遇到问题:rbd镜像的一些特性,OS kernel并不支持,所以映射失败
         
        查看下该镜像支持了哪些特性
        [root@ceph-client1 ~]# rbd info ceph-client1-rbd1
        rbd image 'ceph-client1-rbd1':
        size 10240 MB in 2560 objects
        order 22 (4096 kB objects)
        block_name_prefix: rbd_data.857a238e1f29
        format2
        features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
        flags: 
        可以看到特性feature一栏,由于我OS的kernel只支持layering,其他都不支持,所以需要把部分不支持的特性disable掉。
         
        以下方法根据实际情况选其一即可!(我这里使用的是方式二)
         
        【方法一:】直接diable这个rbd镜像的不支持的特性:
        [root@ceph-client1 ~]# rbd feature disable ceph-client1-rbd1 exclusive-lock object-map fast-diff deep-flatten
        [root@ceph-client1 ~]# rbd info ceph-client1-rbd1 #关闭后查看
        rbd image 'ceph-client1-rbd1':
            size 10240 MB in 2560 objects
            order 22 (4096 kB objects)
            block_name_prefix: rbd_data.857a238e1f29
            format2
            features: layering #仅剩一个特性
            flags: 
 
        【方法二:】在ceph集群中任意节点上创建rbd镜像时就指明需要的特性,如:
        $ rbd create --size 10240 ceph-client1-rbd1 --image-feature layering
        rbd create --size 10240 ceph-client1-rbd1 --image-feature layering exclusive-lock object-map fast-diff deep-flatten
 
        【方法三:】修改Ceph配置文件/etc/ceph/ceph.conf,在global section下,增加
        rbd_default_features = 1
        再创建rdb镜像。
        rbd create ceph-client1-rbd1 --size 10240
         
         
        6、解决上述问题之后,再次尝试映射
        [root@ceph-client1 ~]# rbd map --image ceph-client1-rbd1
        /dev/rbd0
        此刻,映射成功
         
        7、查看映射信息
        [root@ceph-client1 ~]# rbd showmapped
        id pool image             snap device    
        0  rbd  ceph-client1-rbd1 -    /dev/rbd0 
 
        8、如需指定RBD镜像所属池的名称(这是可选的操作)可以执行以下命令:
        rbd map rbd/ceph-client1-rbd1
         
        10、映射之后,格式化RBD块设备,并创建文件系统
        [root@ceph-client1 ~]# fdisk -l /dev/rbd0
        Disk /dev/rbd0: 10.7 GB, 10737418240 bytes, 20971520 sectors
        Units = sectors of 1 * 512 = 512 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 4194304 bytes / 4194304 bytes
         
        [root@ceph-client1 ~]# mkfs.xfs /dev/rbd0
        [root@ceph-client1 ~]# mkdir /mnt/ceph-vol1
        [root@ceph-client1 ~]# mount /dev/rbd0 /mnt/ceph-vol1/
         
        [root@ceph-client1 ~]# df -H
        Filesystem           Size  Used Avail Use% Mounted on
        devtmpfs             494M     0  494M   0% /dev
        tmpfs                507M     0  507M   0% /dev/shm
        tmpfs                507M  6.9M  500M   2% /run
        tmpfs                507M     0  507M   0% /sys/fs/cgroup
        /dev/mapper/cl-root  8.6G  1.6G  7.0G  19% /
        /dev/sda1            1.1G  195M  869M  19% /boot
        tmpfs                102M     0  102M   0% /run/user/0
        /dev/rbd0             11G   35M   11G   1% /mnt/ceph-vol1 #这个是挂载后的
         
        11、取消映射块设备
        [root@ceph-client1 ~]# umount /mnt/ceph-vol1/ #取消挂载
        [root@ceph-client1 ~]# rbd unmap /dev/rbd/rbd/ceph-client1-rbd1 #取消映射
        [root@ceph-client1 ~]# rbd showmapped #查看是否取消成功,如没有任何输出则表示取消映射成功
         
        12、如下删除块设备,执行以下命令
        [root@ceph-node1 ~]# rbd rm ceph-client1-rbd1
        Removing image: 100% complete...done.
        [root@ceph-node1 ~]# rbd ls


上一篇:31 天重构学习笔记8. 使用委派代替继承


下一篇:基于阿里云的企业安全最佳实践