molpako / ceph-cluster

0 stars 0 forks source link

Mounting CephFS #2

Open molpako opened 8 months ago

molpako commented 8 months ago

Mounting CephFS

で作成したCephFSをマウントして扱ってみる

molpako commented 8 months ago

認証

https://docs.ceph.com/en/latest/cephfs/client-auth/

user1, user2 の認証情報を作成。user1 には / に read をつける

$ ceph fs authorize cephfs1 client.user1 / r /home/user1 rw
[client.user1]
    key = AQCC7PZld/kYHRAADIIkcaNn9iQ4AxRSn/Y9Zw==
$ ceph fs authorize cephfs1 client.user2 /home/user2 rw
[client.user2]
    key = AQCI7PZlXWvMJxAA2oUjtKV9T1qqcae0s3Xd0A==

user1, user2 の比較

root@mon1:/# ceph auth get client.user1  | grep -v key
[client.user1]
    caps mds = "allow r fsname=cephfs1, allow rw fsname=cephfs1 path=/home/user1"
    caps mon = "allow r fsname=cephfs1"
    caps osd = "allow rw tag cephfs data=cephfs1"
root@mon1:/# ceph auth get client.user2  | grep -v key
[client.user2]
    caps mds = "allow rw fsname=cephfs1 path=/home/user2"
    caps mon = "allow r fsname=cephfs1"
    caps osd = "allow rw tag cephfs data=cephfs1"
molpako commented 8 months ago

Mount CephFS using Kernel Driver

Kenel admin からディレクトリとファイル作成

root@mon1:/home/ubuntu# mount -t ceph admin@.cephfs1=/ /mnt -o  secretfile=admin.secret.txt
root@mon1:/mnt# mkdir -p home/user1
root@mon1:/mnt# cd home/user1/
root@mon1:/mnt/home/user1# touch /mnt/home/user1/file
root@mon1:/mnt/home/user1#

user1 から 権限のある /home/user1 をマウントしてファイル確認

root@client1:/home/ubuntu# mount -t ceph  user1@.cephfs1=/home/user1 /mnt -o  secretfile=user1.secret.txt
root@client1:/home/ubuntu# cd /mnt/
root@client1:/mnt# ls -l
total 0
-rw-r--r-- 1 root root 0 Mar 20 07:39 file
molpako commented 8 months ago

ファイル書き込み

root@client1:/mnt# dd if=/dev/zero of=test bs=10M count=100
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 1.97594 s, 531 MB/s
root@client1:/mnt# dd if=/dev/zero of=test bs=10M count=1000
1000+0 records in
1000+0 records out
10485760000 bytes (10 GB, 9.8 GiB) copied, 21.5712 s, 486 MB/s
molpako commented 8 months ago

データのパス

https://docs.ceph.com/en/latest/cephfs/cephfs-io-path#ceph-file-system-io-path

cephfsに書き込まれたデータはRADOSオブジェクトとして <inode number>.<object index> 形式で保存される。

root@client1:/home/ubuntu# ls -lhi /mnt/test
1099511628778 -rw-r--r-- 1 root root 9.8G Mar 20 07:49 /mnt/test
root@client1:/home/ubuntu# printf "%x\n" 1099511628778
100000003ea
root@mon1:/home/ubuntu# rados -p cephfs_data ls | grep 100000003ea  | head -3
100000003ea.000001af
100000003ea.000004a6
100000003ea.000000aa
root@mon1:/home/ubuntu# rados -p cephfs_data ls | grep 100000003ea -c
2500

2500個あるのはオブジェクトを4MB(デフォルト)に分割するから。

root@client1:/mnt# ls -lhi obj_2048 obj_8192
1099511628779 -rw-r--r-- 1 root root 2.0M Mar 20 10:15 obj_2048
1099511629280 -rw-r--r-- 1 root root 7.9M Mar 20 10:15 obj_8192
root@client1:/mnt# printf "%x\n" $(ls -lhi obj_2048 obj_8192 | awk '{print $1}')
100000003eb
100000005e0
root@mon1:/home/ubuntu# rados -p cephfs_data ls | grep 100000003eb
100000003eb.00000000
root@mon1:/home/ubuntu# rados -p cephfs_data ls | grep 100000005e0
100000005e0.00000001
100000005e0.00000000