«

centos7.6解决fdfs的数据存储盘分区使用满的问题-docker

LiHaiYang 发布于 阅读:1020 文件系统


[TOC]

本文使用两块数据盘进行模拟新增数据盘操作并且每块数据盘为8G,当前存储在/data/下

安装docker环境

docker下载地址

docker-compose下载地址

[root@localhost ~]# tar xf docker-24.0.4.tgz 
[root@localhost ~]# cd docker
[root@localhost ~]# ls
containerd  containerd-shim  ctr  docker  dockerd  docker-init  docker-proxy  runc
[root@localhost ~]# cp ./* /usr/bin/
[root@localhost ~]# cp ./* /usr/sbin/
[root@localhost ~]# cp ./* /usr/local/bin/
[root@localhost ~]# cp ./* /usr/local/sbin/
[root@localhost ~]# vim /etc/systemd/system/docker.service #在这个文件内写入新内容如下
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock  #2375端口为portainer编排中心连接docker使用
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
[root@localhost ~]# service docker start #启动docker
[root@localhost ~]# systemctl enable docker.service #设置docker开机启动
[root@localhost ~]# ps -ef |grep docker
root       1390      1  0 20:28 ?        00:00:11 /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
root       1818   1390  0 20:28 ?        00:00:09 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
root      14197  14060  0 23:03 pts/3    00:00:00 grep --color=auto docker

docker启动fdfs

[root@localhost ~]# tar xf fdfs.tar.gz
[root@localhost ~]# docker load -i fdfs.tar
[root@localhost ~]# rm -rf fdfs.tar.gz fdfs.tar
[root@localhost ~]# mkdir -p /data/fdfs/{storage,tracker}
[root@localhost ~]# docker run -itd --name tracker --network host fdfs:latest tracker
[root@localhost ~]# docker cp tracker:/etc/fdfs/ /etc/
[root@localhost ~]# docker rm -f tracker

修改配置文件

tracker配置文件:
base_path=/var/fdfs  #把目录改为自己的安装目录,本文不做修改,比如base_path=/data/fdfs/tracker
http.server_port=8080  #把8080改为80,http.server_port=8080
bind_addr=  #改为自己服务器的IP地址,建议使用内网地址

storage配置文件:
bind_addr=  #改为自己服务器的IP地址,建议使用内网地址
base_path=/var/fdfs  #改为自己服务器的目录存储路径,本文不做修改,比如base_path=/data/fdfs/storage
store_path0=/var/fdfs  #改为自己服务器的目录存储路径,比如store_path0=/data/fdfs/storage
tracker_server=192.168.209.121:22122  #改为自己的tracker地址
http.server_port=8888  #改为80

client配置文件:
base_path=/var/fdfs   #改为storage的目录
tracker_server=192.168.0.197:22122  #改为tracker的地址

mod_fastdfs.conf配置文件:
base_path=/tmp   #改为storage的存储目录
tracker_server=tracker:22122  #改为tracker的访问地址
url_have_group_name = false  #改为true
store_path0=/home/python/fastdfs/storage   #改为storage的存储路径

启动tracker

[root@localhost fdfs]# docker run -dti --network host --name tracker -v /data/fdfs/tracker/:/var/fdfs/ -v /etc/localtime:/etc/localtime -v /etc/fdfs/:/etc/fdfs/ fdfs:latest tracker
b8575b8670828fa1f3c06162a50e59b3bb84e2f9b5c27f1dab4f58c67bc5aead
[root@localhost fdfs]# docker logs -f tracker
try to start the tracker node...
[2022-05-30 16:28:22] INFO - FastDFS v5.11, base_path=/var/fdfs, run_by_group=, run_by_user=, connect_timeout=30s, network_timeout=60s, port=22122, bind_addr=192.168.1.55, max_connections=256, accept_threads=1, work_threads=4, min_buff_
size=8192, max_buff_size=131072, store_lookup=2, store_group=, store_server=0, store_path=2, reserved_storage_space=10.00%, download_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size=64 KB, storage_ip_changed_auto_adjust=1, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s, use_trunk_file=0, slot_min_size=256, slot_max_size=16 MB, trunk_file_size=64 MB, trunk_create_file_advance=0, trunk_create_file_time_base=02:00, trunk_create_file_interval=86400, trunk_create_file_space_threshold=20 GB, trunk_init_check_occupying=0, trunk_init_reload_from_binlog=0, trunk_compress_binlog_min_interval=0, use_storage_id=0, id_type_in_filename=ip, storage_id_count=0, rotate_error_log=0, error_log_rotate_time=00:00, rotate_error_log_size=0, log_file_keep_days=0, store_slave_file_use_link=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s

    -itd:后台启动
    -p:端口映射
    --network:绑定IP
    -v:映射文件
    -e MYSQL_RANDOM_ROOT_PASSWORD:设置密码
    --name:容器名称

启动storage

[root@localhost fdfs]# docker run -dti --network host --name storage -v /data/fdfs/storage/:/var/fdfs/ -v /etc/localtime:/etc/localtime -v /etc/fdfs/:/etc/fdfs/ fdfs:latest storage
4bceb899eab5ce8466acd36a43adb6b5f3ff8075370f6b340606e8a3a8074a4e
[root@localhost fdfs]# docker logs -f storage
ngx_http_fastdfs_set pid=8
try to start the storage node...
mkdir data path: FA ...
mkdir data path: FB ...
mkdir data path: FC ...
mkdir data path: FD ...
mkdir data path: FE ...
mkdir data path: FF ...
data path: /var/fdfs/data, mkdir sub dir done.
[2022-05-30 16:30:48] INFO - file: storage_param_getter.c, line: 191, use_storage_id=0, id_type_in_filename=ip, storage_ip_changed_auto_adjust=1, store_path=2, reserved_storage_space=10.00%, use_trunk_file=0, slot_min_size=256, slot_max
_size=16 MB, trunk_file_size=64 MB, trunk_create_file_advance=0, trunk_create_file_time_base=02:00, trunk_create_file_interval=86400, trunk_create_file_space_threshold=20 GB, trunk_init_check_occupying=0, trunk_init_reload_from_binlog=0, trunk_compress_binlog_min_interval=0, store_slave_file_use_link=0[2022-05-30 16:30:48] INFO - file: storage_func.c, line: 257, tracker_client_ip: 192.168.1.55, my_server_id_str: 192.168.1.55, g_server_id_in_filename: 922855616
[2022-05-30 16:30:48] INFO - file: tracker_client_thread.c, line: 310, successfully connect to tracker server 192.168.1.55:22122, as a tracker client, my ip is 192.168.1.55

    -itd:后台启动
    -p:端口映射
    --network:绑定IP
    -v:映射文件
    -e MYSQL_RANDOM_ROOT_PASSWORD:设置密码
    --name:容器名称

进入storage容器内修改nginx配置文件

[root@localhost data]# docker exec -it storage bash
[root@localhost nginx-1.12.2]# cd /usr/local/nginx/
[root@localhost nginx]# ls
client_body_temp  conf  fastcgi_temp  html  logs  proxy_temp  sbin  scgi_temp  uwsgi_temp
[root@localhost nginx]# cd conf/
[root@localhost conf]# ls
fastcgi.conf  fastcgi.conf.default  fastcgi_params  fastcgi_params.default  koi-utf  koi-win  mime.types  mime.types.default  nginx.conf  nginx.conf.default  scgi_params  scgi_params.default  uwsgi_params  uwsgi_params.default  win-utf
[root@localhost conf]# vi nginx.conf
[root@localhost conf]# /usr/local/nginx/sbin/nginx  -s stop
ngx_http_fastdfs_set pid=44
[root@localhost conf]# /usr/local/nginx/sbin/nginx  
ngx_http_fastdfs_set pid=45
[root@localhost conf]# cd 

进入docker容器内上传文件测试

[root@localhost fdfs]# docker exec -it storage bash
[root@localhost nginx-1.12.2]# cd /etc/fdfs/
[root@localhost fdfs]# ls
anti-steal.jpg  client.conf  client.conf.sample  http.conf  mime.types  mod_fastdfs.conf  storage.conf  storage.conf.sample  storage_ids.conf  storage_ids.conf.sample  tracker.conf  tracker.conf.sample
[root@localhost fdfs]# /usr/bin/fdfs_test /etc/fdfs/client.conf upload anti-steal.jpg 
This is FastDFS client test program v5.11

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/ 
for more detail.

[2022-05-30 16:32:18] DEBUG - base_path=/var/fdfs, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_sto
rage_id=0, storage server id count: 0
tracker_query_storage_store_list_without_group: 
    server 1. group_name=, ip_addr=192.168.1.55, port=23000

group_name=group1, ip_addr=192.168.1.55, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKgBN2KUgRKAftgiAABdrZgsqUU822.jpg
source ip address: 192.168.1.55
file timestamp=2022-05-30 16:32:18
file size=23981
file crc32=2553063749
example file url: http://192.168.1.55/group1/M00/00/00/wKgBN2KUgRKAftgiAABdrZgsqUU822.jpg
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKgBN2KUgRKAftgiAABdrZgsqUU822_big.jpg
source ip address: 192.168.1.55
file timestamp=2022-05-30 16:32:18
file size=23981
file crc32=2553063749
example file url: http://192.168.1.55/group1/M00/00/00/wKgBN2KUgRKAftgiAABdrZgsqUU822_big.jpg
[root@localhost fdfs]# 

模拟硬盘使用满的情况

[root@localhost data]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  2.0G     0  2.0G   0% /dev
tmpfs                   tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs                   tmpfs     2.0G   12M  2.0G   1% /run
tmpfs                   tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        45G  4.4G   41G  10% /
/dev/sda1               xfs      1014M  149M  866M  15% /boot
tmpfs                   tmpfs     406M     0  406M   0% /run/user/0
/dev/sdb1               ext4      7.8G  294M  7.1G   4% /data
/dev/sdc1               ext4      7.8G   36M  7.3G   1% /data1
overlay                 overlay    45G  4.4G   41G  10% /var/lib/docker/overlay2/2437872d1819faefbb19798ef900d962bb95acea083fba6be8a3379a5525e38a/merged
overlay                 overlay    45G  4.4G   41G  10% /var/lib/docker/overlay2/ff3f38725363c106117c81a916f4cc23419a636478745ac182fa27a546095900/merged
[root@localhost fdfs]# dd if=/dev/zero of=disk.img bs=100M count=75 
75+0 records in
75+0 records out
7864320000 bytes (7.9 GB) copied, 12.8574 s, 612 MB/s
[root@localhost fdfs]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  2.0G     0  2.0G   0% /dev
tmpfs                   tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs                   tmpfs     2.0G   12M  2.0G   1% /run
tmpfs                   tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        45G  4.4G   41G  10% /
/dev/sda1               xfs      1014M  149M  866M  15% /boot
tmpfs                   tmpfs     406M     0  406M   0% /run/user/0
/dev/sdb1               ext4      7.8G  7.7G     0 100% /data
/dev/sdc1               ext4      7.8G   36M  7.3G   1% /data1
overlay                 overlay    45G  4.4G   41G  10% /var/lib/docker/overlay2/2437872d1819faefbb19798ef900d962bb95acea083fba6be8a3379a5525e38a/merged
overlay                 overlay    45G  4.4G   41G  10% /var/lib/docker/overlay2/ff3f38725363c106117c81a916f4cc23419a636478745ac182fa27a546095900/merged
[root@localhost fdfs]# 
[root@localhost fdfs]# docker exec -it storage bash
[root@localhost nginx-1.12.2]# cd /etc/fdfs/
[root@localhost fdfs]# /usr/bin/fdfs_test /etc/fdfs/client.conf upload anti-steal.jpg 
This is FastDFS client test program v5.11

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/ 
for more detail.

[2022-05-30 16:56:15] DEBUG - base_path=/var/fdfs, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_sto
rage_id=0, storage server id count: 0
[2022-05-30 16:56:15] ERROR - file: tracker_proto.c, line: 48, server: 192.168.1.55:22122, response status 28 != 0
[2022-05-30 16:56:15] ERROR - file: ../client/tracker_client.c, line: 1085, fdfs_recv_response fail, result: 28
[2022-05-30 16:56:15] ERROR - file: tracker_proto.c, line: 48, server: 192.168.1.55:22122, response status 28 != 0
[2022-05-30 16:56:15] ERROR - file: ../client/tracker_client.c, line: 907, fdfs_recv_response fail, result: 28
tracker_query_storage fail, error no: 28, error info: No space left on device
[root@localhost fdfs]# 

新增一个数据目录

[root@localhost data]# docker exec -it storage bash
[root@localhost nginx-1.12.2]# mkdir -p /data/fdfs/
store_path_count=1   #修改为store_path_count=2,表示有几个磁盘挂载点
store_path1=/data1/fdfs/storage   #新增到store_path0下面
store_path=0   #修改为store_path=2,表示开启负载均衡并且上传到剩余容量最大的目录下
store_path_count=1   #修改为store_path_count=2,表示有几个磁盘挂载点
store_path1=/data1/fdfs/storage   #新增到store_path0下面
把
server {
        listen       80;
        server_name  192.168.1.55;
        location ~/group[1-9]/M00 {
            root /data/fdfs/storage/data/;
            ngx_fastdfs_module;
            }
        }
修改为
server {
        listen       80;
        server_name  192.168.1.55;
        location ~/group[1-9]/M00 {
            root /data/fdfs/storage/data/;
            ngx_fastdfs_module;
            }
        location ~/group[1-9]/M01 {
            root /data1/fdfs/storage/data/;
            ngx_fastdfs_module;
            }
        }
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
[root@localhost ~]# cd /etc/fdfs/
[root@localhost fdfs]# /usr/bin/fdfs_test /etc/fdfs/client.conf upload anti-steal.jpg 
This is FastDFS client test program v5.11

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/ 
for more detail.

[2022-05-30 17:04:57] DEBUG - base_path=/var/fdfs, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_sto
rage_id=0, storage server id count: 0
tracker_query_storage_store_list_without_group: 
    server 1. group_name=, ip_addr=192.168.1.55, port=23000

group_name=group1, ip_addr=192.168.1.55, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M01/00/00/wKgBN2KUiLmAXTgiAABdrZgsqUU501.jpg
source ip address: 192.168.1.55
file timestamp=2022-05-30 17:04:57
file size=23981
file crc32=2553063749
example file url: http://192.168.1.55/group1/M01/00/00/wKgBN2KUiLmAXTgiAABdrZgsqUU501.jpg
storage_upload_slave_by_filename
group_name=group1, remote_filename=M01/00/00/wKgBN2KUiLmAXTgiAABdrZgsqUU501_big.jpg
source ip address: 192.168.1.55
file timestamp=2022-05-30 17:04:57
file size=23981
file crc32=2553063749
example file url: http://192.168.1.55/group1/M01/00/00/wKgBN2KUiLmAXTgiAABdrZgsqUU501_big.jpg
[root@localhost fdfs]# 

此时已经可以正常访问,但是并不知道在没有docker映射目录下新增的数据存储在哪里,所以创建一个大文件上传到fdfs看看那块盘会新增大小

[root@localhost data]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  2.0G     0  2.0G   0% /dev
tmpfs                   tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs                   tmpfs     2.0G   12M  2.0G   1% /run
tmpfs                   tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        45G  4.5G   41G  10% /
/dev/sda1               xfs      1014M  149M  866M  15% /boot
tmpfs                   tmpfs     406M     0  406M   0% /run/user/0
/dev/sdb1               ext4      7.8G  7.7G     0 100% /data
/dev/sdc1               ext4      7.8G   36M  7.3G   1% /data1
overlay                 overlay    45G  4.5G   41G  10% /var/lib/docker/overlay2/2437872d1819faefbb19798ef900d962bb95acea083fba6be8a3379a5525e38a/merged
overlay                 overlay    45G  4.5G   41G  10% /var/lib/docker/overlay2/ff3f38725363c106117c81a916f4cc23419a636478745ac182fa27a546095900/merged
[root@localhost data]# 

/data/占满、/使用了4.5G、/data1使用了36M

[root@localhost data1]# dd if=/dev/zero of=disk.img bs=100M count=50
50+0 records in
50+0 records out
5242880000 bytes (5.2 GB) copied, 2.91093 s, 1.8 GB/s
[root@localhost data1]# ls
disk.img  lost+found
[root@localhost data1]# du -sh *
4.9G    disk.img
16K lost+found
[root@localhost data1]# 
[root@localhost data1]# docker cp disk.img  storage:/
[root@localhost data1]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  2.0G     0  2.0G   0% /dev
tmpfs                   tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs                   tmpfs     2.0G   12M  2.0G   1% /run
tmpfs                   tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        45G  9.3G   36G  21% /
/dev/sda1               xfs      1014M  149M  866M  15% /boot
tmpfs                   tmpfs     406M     0  406M   0% /run/user/0
/dev/sdb1               ext4      7.8G  7.7G     0 100% /data
/dev/sdc1               ext4      7.8G  5.0G  2.5G  68% /data1
overlay                 overlay    45G  9.3G   36G  21% /var/lib/docker/overlay2/2437872d1819faefbb19798ef900d962bb95acea083fba6be8a3379a5525e38a/merged
overlay                 overlay    45G  9.3G   36G  21% /var/lib/docker/overlay2/ff3f38725363c106117c81a916f4cc23419a636478745ac182fa27a546095900/merged
[root@localhost data1]# docker exec -it storage bash
[root@localhost nginx-1.12.2]# cd /
[root@localhost /]# ls
anaconda-post.log  bin  data  dev  disk.img  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@localhost /]# /usr/bin/fdfs_test /etc/fdfs/client.conf upload disk.img 
This is FastDFS client test program v5.11

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/ 
for more detail.

[2022-05-30 17:11:15] DEBUG - base_path=/var/fdfs, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_sto
rage_id=0, storage server id count: 0
tracker_query_storage_store_list_without_group: 
    server 1. group_name=, ip_addr=192.168.1.55, port=23000

group_name=group1, ip_addr=192.168.1.55, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M01/00/00/wKgBN2KUik0AAAABOIAAAMfDqqY130.img
source ip address: 192.168.1.55
file timestamp=2022-05-30 17:11:41
file size=5242880000
file crc32=3351489190
example file url: http://192.168.1.55/group1/M01/00/00/wKgBN2KUik0AAAABOIAAAMfDqqY130.img
storage_upload_slave_by_filename
group_name=group1, remote_filename=M01/00/00/wKgBN2KUik0AAAABOIAAAMfDqqY130_big.img
source ip address: 192.168.1.55
file timestamp=2022-05-30 17:12:27
file size=5242880000
file crc32=3351489190
example file url: http://192.168.1.55/group1/M01/00/00/wKgBN2KUik0AAAABOIAAAMfDqqY130_big.img
[root@localhost /]# exit
exit
[root@localhost data1]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  2.0G     0  2.0G   0% /dev
tmpfs                   tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs                   tmpfs     2.0G   12M  2.0G   1% /run
tmpfs                   tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        45G   20G   26G  43% /
/dev/sda1               xfs      1014M  149M  866M  15% /boot
tmpfs                   tmpfs     406M     0  406M   0% /run/user/0
/dev/sdb1               ext4      7.8G  7.7G     0 100% /data
/dev/sdc1               ext4      7.8G  5.0G  2.5G  68% /data1
overlay                 overlay    45G   20G   26G  43% /var/lib/docker/overlay2/2437872d1819faefbb19798ef900d962bb95acea083fba6be8a3379a5525e38a/merged
overlay                 overlay    45G   20G   26G  43% /var/lib/docker/overlay2/ff3f38725363c106117c81a916f4cc23419a636478745ac182fa27a546095900/merged
[root@localhost data1]# [root@localhost data1]# find / -name wKgBN2KUik0AAAABOIAAAMfDqqY130_big.img
/var/lib/docker/overlay2/ff3f38725363c106117c81a916f4cc23419a636478745ac182fa27a546095900/diff/data/fdfs/data/00/00/wKgBN2KUik0AAAABOIAAAMfDqqY130_big.img
/var/lib/docker/overlay2/ff3f38725363c106117c81a916f4cc23419a636478745ac182fa27a546095900/merged/data/fdfs/data/00/00/wKgBN2KUik0AAAABOIAAAMfDqqY130_big.img

可以看到文件上传到了docker的启动目录内


扫描二维码,在手机上阅读
取消
微信二维码
微信二维码
支付宝二维码