Open molpako opened 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"
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
ファイル書き込み
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
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
Mounting CephFS
で作成したCephFSをマウントして扱ってみる