Ceph 塊設備 - 塊設備快速入門

 

1、準備工做

本文描述如何安裝 ceph 客戶端,使用 Ceph 塊設備 建立文件系統並掛載使用。node

必須先完成 ceph 存儲集羣的搭建,並確保 Ceph 存儲集羣處於 active + clean 狀態,這樣才能使用 Ceph 塊設備。centos

Ceph 塊設備也叫 RBD 或 RADOS 塊設備。app

hostname ip
admin-node 192.168.0.130
ceph-client 192.168.0.134

注:你能夠在虛擬機上運行 ceph-client 節點,可是不能在與 Ceph 存儲集羣(除非它們也用 VM )相同的物理節點上執行下列步驟。ssh

 

2、安裝 Ceph

ceph-client 節點安裝 Ceph。工具

1) 確認你使用了合適的內核版本ui

uname -r
//CentOS 內核要求 3.10.*

2) 安裝 NPTcode

# sudo yum install ntp ntpdate ntp-doc

3) 安裝 SSHorm

# sudo yum install openssh-server

4) 建立新用戶server

# sudo useradd -d /home/zeng -m zeng
# sudo passwd zeng

5) 確保新用戶有 sudo 權限

# echo "zeng ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/zeng
# sudo chmod 0440 /etc/sudoers.d/zeng

6) 在管理節點上,將 ceph-client 添加到管理節點的 hosts 文件

$ sudo echo '192.168.0.134 ceph-client' >> /etc/hosts

7) 在管理節點上,容許管理節點無密碼登陸 ceph-client

$ ssh-copy-id zeng@ceph-client

8) 在管理節點上,經過 ceph-deploy 把 Ceph 安裝到 ceph-client 節點

$ cd /home/zeng/my-cluster
$ ceph-deploy install ceph-client

9) 在管理節點上,用 ceph-deploy 把 Ceph 配置文件和 ceph.client.admin.keyring 拷貝到 ceph-client 。

$ ceph-deploy admin ceph-client

10) 修改密鑰文件的權限
ceph-deploy 工具會把密鑰環複製到 /etc/ceph 目錄,要確保此密鑰環文件有讀權限:

# sudo chmod +r /etc/ceph/ceph.client.admin.keyring

 

3、使用塊存儲

ceph-client 節點上操做。

1) 建立塊設備映像 {pool-name}/{image-name}

存儲池相關操做,能夠參考 存儲池

$ ceph osd pool create mypool 128
$ rbd create --size 1024 mypool/myimage --image-feature layering
$ rbd ls mypool
$ rbd info mypool/myimage
rbd image 'myimage':
    size 1024 MB in 256 objects
    order 22 (4096 kB objects)
    block_name_prefix: rbd_data.31d606b8b4567
    format: 2
    features: layering
    flags:
// 這裏經過 --image-feature  layering 指定了 features: layering,不然 map 可能出錯
// 也能夠將 rbd_default_features = 1 添加到 /etc/ceph/ceph.conf 的 [global]

2) 映射塊設備 {pool-name}/{image-name}

$ sudo rbd map mypool/myimage --id admin
/dev/rbd0    # 注:rbd0 說明這是映射的第一個塊設備

$ rbd showmapped
id pool   image   snap device    
0  mypool myimage -    /dev/rbd0    # 說明 myimage 映射到了 /dev/rbd0

事實上,建立的塊設備映像,就在 /dev/rbd/{pool-name}/ 下:

$ cd /dev/rbd/mypool
$ ll
lrwxrwxrwx. 1 root root 10 10月 25 09:34 myimage -> ../../rbd0

3) 使用塊設備 /dev/rbd/{pool-name}/{image-name} 建立文件系統

$ sudo mkfs.xfs /dev/rbd/mypool/myimage

此命令可能耗時較長。

4) 將該文件系統掛載到 /mnt/ceph-block-device 文件夾下

$ sudo mkdir /mnt/ceph-block-device
$ sudo mount /dev/rbd/mypool/myimage /mnt/ceph-block-device

$ df -h
文件系統                 容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root   17G  1.3G   16G    8% /
devtmpfs                 910M     0  910M    0% /dev
tmpfs                    920M     0  920M    0% /dev/shm
tmpfs                    920M  8.4M  912M    1% /run
tmpfs                    920M     0  920M    0% /sys/fs/cgroup
/dev/sda1               1014M  142M  873M   14% /boot
tmpfs                    184M     0  184M    0% /run/user/1000
/dev/rbd0                976M  2.6M  958M    1% /mnt/ceph-block-device

此時,就能夠使用 /mnt/ceph-block-device 這個目錄了。

5) 塊設備擴容

//調整塊設備大小爲20G
$ rbd resize --size 20480 mypool/myimage
Resizing image: 100% complete...done.

//支持文件系統在線擴容
$ sudo resize2fs /dev/rbd0
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/rbd0 is mounted on /mnt/ceph-block-device; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on /dev/rbd0 is now 5242880 blocks long.

//發現 /dev/rbd0 的容量變爲20G
[zeng@ceph-client mnt]$ df -h
文件系統                 容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root   17G  1.3G   16G    8% /
devtmpfs                 910M     0  910M    0% /dev
tmpfs                    920M     0  920M    0% /dev/shm
tmpfs                    920M  8.4M  912M    1% /run
tmpfs                    920M     0  920M    0% /sys/fs/cgroup
/dev/sda1               1014M  142M  873M   14% /boot
tmpfs                    184M     0  184M    0% /run/user/1000
/dev/rbd0                 20G  5.4M   19G    1% /mnt/ceph-block-device

6) 解掛文件系統

$ sudo umount /mnt/ceph-block-device

若是解掛提示"device is busy",則先執行:

$ sudo yum install psmisc
$ fuser -m /mnt/ceph-block-device
$ kill -9 PID

7) 取消塊設備映射

$ sudo rbd unmap /dev/rbd/mypool/myimage
$ rbd showmapped

8) 刪除塊設備

$ rbd rm mypool/myimage
Removing image: 100% complete...done.

$ rbd ls mypool
相關文章
相關標籤/搜索