Deploying the DingoFS client
Step 1: Environment Preparation
Step 2: Import the host
Users need to import the list of hosts required for the client, if you have already imported the client hosts while deploying the cluster, you can skip this step directly. Please make sure that the hosts specified in the subsequent mount/unmount are imported, see host management for details.
1. Prepare the list of hosts
$ vim hosts.yaml
global:
user: dingo
ssh_port: 22
private_key_file: /home/dingo/.ssh/id_rsa
private_key_file: /home/dingo/.ssh/id_rsa
- host: server-host1
hostname: 10.0.1.1
- host: server-host2
hostname: 10.0.1.2
- host: server-host3
hostname: 10.0.1.3
- host: client-host
hostname: 10.0.1.4
2. import hosts list
$ dingoadm hosts commit hosts.yaml
Step 3: Deploy Minio (optional)
This step is optional.
So you need to deploy an S3 storage or use a public cloud object storage such as Amazon S3, AliCloud OSS, Tencent Cloud OSS, etc. The following will show if you can quickly deploy a Minio for S3 backend storage using Docker:
$ mkdir minio-data
$ sudo docker run -d --name minio \
-p 9000:9000 \
-p 9900:9900 \
-v minio-data:/data \\
--restart unless-stopped \
minio/minio server /data --console-address ":9900"
📢 Note:
minio-data in the run parameter is a local path, you need to create this directory in advance before running the minio You need to create this directory in advance before running the container
💡 Reminder:
The following information will be used to fill in the S3-related-config in the client configuration file in step 4:
The default
Access KeyandSecret Keyfor the root user are bothminioadminThe S3 service access address is
http://$IP:9000, and you need to accesshttp://$IP:9000from your browser to create a bucketFor more details on deployment, you can refer to deploy-minio-standalone.
Step 4: Prepare the client configuration file
$ vim client.yaml
kind: dingofs
s3.ak: <>
s3.sk: <>
s3.endpoint: <>
s3.bucket_name: <>
container_image: dingodatabase/dingofs:latest
mdsOpt.rpcRetryOpt.addrs: 10.0.1.1:6700,10.0.1.2:6700,10.0.1.3:6700
log _dir: /home/dingo/logs/client
data_dir: /home/dingo/data/dingofs
disk_cache.cache_dir: /dingofs/client/cache/1:10240;/dingofs/client/ cache/2:10240;/dingofs/client/cache/3:10240 # container_path:size
mount_dirs: /mnt/cache/1:/dingofs/client/cache/1;/mnt/cache/2:/ dingofs/client/cache/2;/mnt/cache/3:/dingofs/client/cache/3 # host_path:container_path
# memory reference
data_stream.page.size: 64536
data_stream.page.total_size_mb: 512
data_stream.page.use_pool: true
# cto reference
fs.cto: true
# s3 upload thread num
data_stream.s3.async_upload_workers: 1024
# quota
quota.capacity: 10
quota.inodes: 1000
Configuration entries in the client configuration file have the same meaning as those in the cluster topology file, see DingoFS important-config.
For all configuration items that do not appear in the client configuration file, we will use the default configuration values. You can view the configuration items and their associated default values by clicking client configuration file.
💡 About the
mdsOpt.rpcRetryOpt.addrsconfiguration itemSince all the routing information exists in the MDS service, the client only needs to know the address of the MDS service in the cluster in order to perform IO reads and writes normally.
The
mdsOpt.rpcRetryOpt.addrsconfiguration item in the configuration file needs to be filled with the address of the MDS service in the cluster. After deploying the DingoFS cluster, You can check the address of the MDS service in the cluster viadingoadm status:$ dingoadm status Get Service Status: [OK] cluster name : my-cluster cluster kind : dingofs cluster mds addr: 10.0.1.1:6700,10.0.1.2:6700,10.0.1.3:6700 cluster mds leader: 10.0.1.1:6700 / 505da008b59c ...
📢 Note:
Please make sure to configure the data_dir configuration item if users need to enable local disk caching.
📢 Note:
dingofs supports multiple s3, one fs corresponds to one s3 backend. All s3 information (ak, sk, endpoint, and bucket_name) is stored in mds, and other components get it from mds. And the s3 information in the mds is specified when the fs is created. Therefore, the s3 information in client.yaml is required and will be synchronized to the configuration file of the fs creation tool. If the fs have already been created, please keep the same information, otherwise the mount will fail; If the fs have not been created yet, please make sure the s3 information is available, otherwise the mount will fail.
Step 5: Mount the DingoFS file system
$ dingoadm mount <dingofs-name> <mount-point> --host <host> -c client.yaml
* `<dingofs-name>`: filesystem name, user-defined, but must be a combination of **lowercase letters, numbers, and hyphens**, i.e., satisfy the regular expression `^([a-z0-9]+\\-?) +$`
* `<mount-point>`: mount path, user-defined, but must be **absolute path**.
* `--host`: Mount the volume to the specified host, user can choose, please make sure the host has been imported.
If the file system is mounted successfully, you can query the corresponding DingoFS file system on **the corresponding host**:
```shell
$ mount | grep <mount-point>
The user can also check the status of all clients on the central console:
$ dingoadm client status
Get Client Status: [OK]
Id Kind Host Container Id Status Aux Info
-- ---- ---- ------------ ------ --------
462d538778ad dingofs client-host1 dfa00fd01ae8 Up 36 hours {"fsname": "test1", "mount_point":"/mnt/ test1"}
c0d56cfaad14 dingofs client-host2 c1301eff2af0 Up 36 hours {"fsname": "test2", "mount_point":"/mnt/test2"}
d700e1f6acab dingofs client- host3 62554173a54f Up 36 hours {"fsname": "test3", "mount_point":"/mnt/test3"}
📢 Note:
If dingofs needs to use multiple s3 functions, just modify the configuration of the s3 information in client.yaml for different fs.
Example
$ dingoadm mount test /mnt/test --host client-host -c client.yaml
Other: unmount the filesystem
$ dingoadm umount <mount-point> --host client-host