1. Tổng quan.
Block Storage trong Ceph là một dịch vụ cung cấp khả năng lưu trữ dữ liệu theo hình thức khối, giúp bạn tạo và quản lý các thiết bị lưu trữ ảo trên Ceph Cluster. Sử dụng Block Storage, bạn có thể thực hiện các hoạt động sau:
- Lưu trữ dữ liệu: Block Storage cho phép bạn tạo ra các ổ đĩa ảo (virtual disks) và lưu trữ dữ liệu trên đó. Các ổ đĩa này có thể được sử dụng như các thiết bị lưu trữ thông thường và được gắn kết (attach) vào máy ảo hoặc máy chủ vật lý.
- Tăng giảm kích thước: Bạn có thể tăng giảm kích thước của các ổ đĩa ảo theo nhu cầu. Điều này cho phép bạn mở rộng không gian lưu trữ hoặc giảm bớt không gian khi cần thiết mà không làm gián đoạn quá trình hoạt động của máy ảo hay máy chủ vật lý.
- Sao lưu và khôi phục: Block Storage cung cấp khả năng sao lưu và khôi phục dữ liệu. Bạn có thể tạo bản sao lưu (snapshot) của các ổ đĩa ảo để đảm bảo an toàn dữ liệu và khôi phục lại chúng khi cần thiết.
- Hiệu suất cao: Ceph Block Storage được thiết kế để cung cấp hiệu suất cao và đáng tin cậy. Với cơ chế phân tán và cân bằng tải trên Ceph Cluster, Block Storage cho phép tăng cường hiệu suất và khả năng chịu lỗi của hệ thống lưu trữ.
- Tích hợp với ứng dụng và hệ thống hiện có: Ceph Block Storage có thể tích hợp với các ứng dụng và hệ thống hiện có thông qua giao thức như iSCSI. Điều này giúp bạn sử dụng Block Storage trong môi trường hiện có mà không cần thay đổi quá nhiều.
2. Thực hành.
Sau đây là quy trình tạo và sử dụng Block Storage trong Ceph. Bạn tạo một pool lưu trữ mới, tạo ổ đĩa ảo, ánh xạ nó vào hệ thống máy chủ và sử dụng các lệnh khác để quản lý và truy cập dữ liệu trong ổ đĩa ảo đó.
2.1. Tạo Block Storage và mount.
Copy file cấu hình ceph.conf và file keyring sang radosgw.
scp /etc/ceph/ceph.conf root@<ipaddr_domain_client>:/etc/ceph/
scp /etc/ceph/ceph.client.admin.keyring root@<ipaddr_domain_client>:/etc/ceph/
Tạo một pool lưu trữ mới có tên là “rbd” với 128 PG (Placement Group). Pool lưu trữ được sử dụng để lưu trữ các dữ liệu block.
$ ceph osd pool create rbd 128
pool 'rbd' created
Cấu hình chế độ tự động tự điều chỉnh số lượng PG cho pool “rbd”. Chế độ này cho phép Ceph tự động tính toán và cân bằng số lượng PG dựa trên cấu hình hệ thống và khối lượng dữ liệu.
$ ceph osd pool set rbd pg_autoscale_mode on
set pool 51 pg_autoscale_mode to on
Hiển thị trạng thái tự động tự điều chỉnh số lượng PG của pool.
$ ceph osd pool autoscale-status
POOL SIZE TARGET SIZE RATE RAW CAPACITY RATIO TARGET RATIO EFFECTIVE RATIO BIAS PG_NUM NEW PG_NUM AUTOSCALE BULK
ceph-vm 72937M 3.0 15202G 0.0141 1.0 32 on False
ceph-ct 7554M 3.0 15202G 0.0015 1.0 32 on False
device_health_metrics 5840k 3.0 15202G 0.0000 1.0 1 on False
cephfs_data 131 3.0 15202G 0.0000 1.0 1 32 off False
cephfs_metadata 42698 3.0 15202G 0.0000 4.0 1 16 off False
rbd 15 3.0 15202G 0.0000 1.0 32 on False
Tạo một ổ đĩa ảo (rbd01) có kích thước 10GB trong pool “rbd”. Ceph sẽ cấp phát không gian lưu trữ cần thiết cho ổ đĩa ảo này.
rbd create --size 10G --pool rbd rbd01
Liệt kê danh sách các ổ đĩa ảo hiện có trong Ceph và thông tin chi tiết của chúng.
$ rbd ls -l
NAME SIZE PARENT FMT PROT LOCK
rbd01 10 GiB 2
Ánh xạ ổ đĩa ảo (rbd01) vào một thiết bị block trên hệ thống máy chủ. Sau khi được ánh xạ, bạn có thể sử dụng thiết bị block như một ổ đĩa thông thường.
$ rbd map rbd01
/dev/rbd2
Hiển thị danh sách các ổ đĩa ảo đã được ánh xạ trên hệ thống máy chủ.
$ rbd showmapped
id pool namespace image snap device
0 ceph-ct vm-113-disk-0 - /dev/rbd0
1 ceph-ct vm-104-disk-0 - /dev/rbd1
2 rbd rbd01 - /dev/rbd2
Tạo một hệ thống tệp XFS trên thiết bị block /dev/rbd2
. Hệ thống tệp XFS sẽ được sử dụng để định dạng và quản lý không gian lưu trữ của thiết bị block.
$ mkfs.xfs /dev/rbd2
meta-data=/dev/rbd2 isize=512 agcount=16, agsize=163840 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=16 swidth=16 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=16 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Discarding blocks...Done.
Tạo một thư mục trên hệ thống máy chủ để gắn kết (mount) thiết bị block và sử dụng nó như một điểm gắn kết để truy cập dữ liệu trong ổ đĩa ảo.
mkdir /mnt/rbd
Mount ổ đĩa.
mount /dev/rbd0 /mnt/rdb
Và kết quả mount Block Storage thành công.
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 126G 0 126G 0% /dev
tmpfs tmpfs 26G 2.0M 26G 1% /run
/dev/mapper/pve-root ext4 65G 21G 41G 34% /
tmpfs tmpfs 126G 82M 126G 1% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 vfat 1022M 344K 1022M 1% /boot/efi
/dev/fuse fuse 128M 36K 128M 1% /etc/pve
tmpfs tmpfs 26G 0 26G 0% /run/user/0
192.168.13.225:6789:/ ceph 4.6T 0 4.6T 0% /mnt
/dev/rbd0 ext4 49G 851M 46G 2% /mnt/rbd
2.2. Loại bỏ Block Storage.
Đầu tiên hãy rbd unmap /dev/rbd0
trước.
rbd unmap /dev/rbd0
Tiếp theo hãy gỡ bỏ RBD đã được map, bạn có thể sử dụng lệnh rbd unmap
với tên thiết bị hoặc ID của kết nối. Trong trường hợp này, bạn muốn gỡ bỏ kết nối có ID là 2 và tên thiết bị là /dev/rbd2
. Dưới đây là cách thực hiện:
rbd unmap /dev/rbd2