04 ceph 块存储 实战

客户端

块设备的安装 创建 映射 挂载 详情 调整 卸载 取消映射 删除

快照的创建保护回滚删除,分层的使用


1,块设备的安装 创建 映射 挂载 详情 调整 卸载 取消映射 删除

在使用Ceph的块设备工作前,确保您的Ceph的存储集群是在主动 + 清洁状态。


【在admin节点】
添加这台客户端到admin的hosts文件内
vim /etc/hosts
172.16.66.144 ceph-client

安装ceph
ceph-deploy install ceph-client

用ceph-deploy复制Ceph配置文件和ceph.client.admin.keyring到你的ceph-client
ceph-deploy admin ceph-client

【client节点】
root@ceph-node0-admin0:~# cat /etc/apt/sources.list
deb http://download.ceph.com/debian-infernalis/ trusty main
deb http://mirrors.ustc.edu.cn/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse

wget -O- 'https://download.ceph.com/keys/release.asc' | apt-key add -
aptget update

创建pool
root@ceph-node0-admin0:~# ceph osd pool create block 128
pool 'block' created


创建一个100G块设备的镜像,镜像名字为 "foo",
rbd create foo --size 102400

首先要内核模块加载Ceph的RBD模块
modprobe rbd

映射foo镜像到本机一个块设备
rbd map foo --pool rbd --name client.admin

【ceph-client节点】
显示本机已经映射块设备
root@ceph-client:~# rbd showmapped
id pool image snap device    
0  rbd  foo   -    /dev/rbd0 

用这个块设备在一个ceph-client节点上创建一个文件系统
mkfs.ext4 /dev/rbd/rbd/foo

挂载这个文件系统到你的ceph-client节点上
mkdir /mnt/ceph-block-device
mount /dev/rbd/rbd/foo /mnt/ceph-block-device
cd /mnt/ceph-block-device

# df -hT
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/rbd0      ext4       99G   60M   99G    1% /mnt/ceph-block-device

【写入数据】
# dd if=/dev/zero bs=100M count=5 of=haha.tar.gz
-rw-r--r-- 1 root root 500M 11月  4 10:22 haha.tar.gz

【查询显示镜像信息】
# rbd --image haha -p swimmingpool info 
rbd image 'haha':
    size 1024 MB in 256 objects
    order 22 (4096 kB objects)
    block_name_prefix: rb.0.5b838.74b0dc51
    format: 1

 
【调整块设备镜像大小】把块调整为400G
# rbd resize --image foo --size 409600
# rbd resize --image haha -p swimmingpool --size 409600
# rbd --image haha -p swimmingpool info
rbd image 'haha':
    size 400 GB in 102400 objects
    order 22 (4096 kB objects)
    block_name_prefix: rb.0.5b838.74b0dc51
    format: 1


【取消映射块设备】,如果已挂载先卸载
# umount /dev/rbd/rbd/foo
rbd unmap /dev/rbd/{poolname}/{imagename}

删除块设备镜像
rbd rm {image-name} -p {pool-name}


【列出池中块】
# rbd ls swimmingpool
my_image
my_Layering2


【快照的创建 保护 回滚 删除 操作】

先创建一个swimmingpool 池 10个pg,10个pgp
root@ceph-client:~# ceph osd pool create swimmingpool 10 10


创建一个名为51cto的镜像 1G 指定放在swimmingpool
# rbd create 51cto --size 1024 --pool swimmingpool

加载Ceph的RBD模块,
# modprobe rbd

映射块设备镜像到内核模块
# rbd map 51cto --pool  swimmingpool 
/dev/rbd1


【显示映射块设备】
# rbd showmapped
id pool         image        snap device    
1  swimmingpool 51cto        -    /dev/rbd1 


【创建文件系统】
# mkfs.ext4 /dev/rbd/swimmingpool/51cto 
# mkdir -pv  /mnt/51cto
# mount /dev/rbd/swimmingpool/51cto /mnt/51cto/
# df -hT
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/rbd1      ext4      976M  1.3M  908M    1% /mnt/51cto


【生成文件】
# cd /mnt/51cto/
# dd if=/dev/zero bs=10M count=5 of=test.tar.gz
-rw-r--r-- 1 root root  50M 11月  5 12:54 test.tar.gz



【生成快照】
把swimmingpool中的51cto镜像创建一个名为first_51cto的快照
# rbd snap create swimmingpool/51cto@first_51cto

【生成新文件】
# cd /mnt/51cto/
# dd if=/dev/zero bs=10M count=2 of=test2.tar.gz
-rw-r--r-- 1 root root  20M 11月  5 12:57 test2.tar.gz
-rw-r--r-- 1 root root  50M 11月  5 12:54 test.tar.gz




【回滚快照到first_51cto】
rbd snap rollback swimmingpool/51cto@first_51cto

卸载挂载点
# cd
# umount /dev/rbd/swimmingpool/51cto


【验证回滚】
# mount /dev/rbd/swimmingpool/51cto /mnt/51cto/
# ll -h /mnt/51cto/
-rw-r--r-- 1 root root  50M 11月  5 12:54 test.tar.gz




【删除快照指定的快照】
1,卸载挂载点
# cd
# umount /dev/rbd/swimmingpool/51cto
# rbd snap rm swimmingpool/51cto@first_51cto

【删除所有快照】用RBD删除所有快照镜像
# rbd snap purge swimmingpool/51cto 


查看镜像信息
# rbd  -p swimmingpool --image 51cto  info
rbd image '51cto':
    size 1024 MB in 256 objects
    order 22 (4096 kB objects)
    block_name_prefix: rb.0.5b853.74b0dc51
    format: 1




【克隆 分层】

创建一个1G块设备的镜像,Ceph only supports cloning for format 2 images
root@ceph-client:~# rbd create --image-format 2 my_Layering2 --size 1024 --pool swimmingpool

要映射块设备镜像到内核模块,首先要加载Ceph的RBD模块,
modprobe rbd

映射这个镜像到一个块设备
root@ceph-client:~# rbd map my_Layering --pool swimmingpool2 --name client.admin
/dev/rbd2

【显示映射块设备】
root@ceph-client:~# rbd showmapped
id pool         image        snap device    
0  swimmingpool my_image     -    /dev/rbd0 
1  swimmingpool my_Layering  -    /dev/rbd1 
2  swimmingpool my_Layering2 -    /dev/rbd2


用这个块设备在一个ceph-client节点上创建一个文件系统
root@ceph-client:~# mkfs.ext4 /dev/rbd/swimmingpool/my_Layering2
root@ceph-client:~# mkdir /mnt/ceph-block_my_Layer2
root@ceph-client:~# mount /dev/rbd2 /mnt/ceph-block_my_Layer2/

[产生文件]
root@ceph-client:~# cd /mnt/ceph-block_my_Layer2/
#  ll
总用量 24K
drwxr-xr-x 3 root root 4.0K 11月  5 09:48 .
drwxr-xr-x 5 root root 4.0K 11月  5 09:49 ..
drwx------ 2 root root  16K 11月  5 09:48 lost+found
#  dd if=/dev/zero bs=10M  count=5 of=ceph.tar.gz
记录了5+0 的读入
记录了5+0 的写出
52428800字节(52 MB)已复制,1.65271 秒,31.7 MB/秒


【做一次快照】
#  rbd snap create swimmingpool/my_Layering2@first_my_Layer2
【保护快照】
#  rbd snap protect swimmingpool/my_Layering2@first_my_Layer2

【克隆快照,】把swimmingpool/my_Layering2@first_my_Layer2克隆为rbd/new-image
#  rbd clone swimmingpool/my_Layering2@first_my_Layer2  rbd/new-image

【查看子类信息】可以看到来自父类
#  rbd -p rbd --image new-image info

【列出有那些子类】
#  rbd children swimmingpool/my_Layering2@first_my_Layer2


解除保护快照
1,先删除子类 rbd rm new-image
2,解除保护 rbd snap unprotect swimmingpool/my_Layering2@first_my_Layer2
3,列出有那些子类 rbd children swimmingpool/my_Layering2@first_my_Layer2


【Flattening】
1,保护快照 # rbd snap protect swimmingpool/my_Layering2@first_my_Layer2
2,创建子类 # rbd clone swimmingpool/my_Layering2@first_my_Layer2  rbd/children_my_Layering2
3 扁平化子类# rbd flatten rbd/children_my_Layering2
4,# rbd -p rbd --image children_my_Layering2 info
rbd image 'children_my_Layering2':
    size 1024 MB in 256 objects
    order 22 (4096 kB objects)
    block_name_prefix: rbd_data.5b82c2ae8944a
    format: 2
    features: layering
    flags

5,此时子类已经独立出来,父类可以完全的删除了。






本文出自 “魂斗罗” 博客,谢绝转载!

你可能感兴趣的:(ceph,详情,设备映射,块设备安装)