easystack escloud云平台日常运维手册_第1页
easystack escloud云平台日常运维手册_第2页
easystack escloud云平台日常运维手册_第3页
easystack escloud云平台日常运维手册_第4页
easystack escloud云平台日常运维手册_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 日常操作命令31.1 Keystone标示和识别31.1.1 Tenant 相关命令31.1.2 Role 相关命令41.1.3 User 相关命令61.1.4 Service 相关命令91.2 Glance 镜像管理101.3 Neutron 网络虚拟化121.4 Nova 计算虚拟化141.5 Cinder 块管理191.6 Ceilometer 计量服务201.7 Ceph 集群状态. 212. 云环境系统状态检查222.1 CPU 状态检查222.2 内存状态检查242.3 网络状态检查262.4 磁盘状态检查262.4.1 磁盘使用率检查及优化处理262.4.2 I/O 使用率

2、检查及优化处理273. 云服务状态检查33集群状态检查333.13.2 rabbitmq 集群状态333.3 nova 组件状态检查363.4 neutron 状态检查363.5 cinder 状态检查373.6 pacemaker 管理的各服务集群状态检查383.7 l3-agent 的 namespace383.8 查看 dhcp-agent 的 namespace393.9 检查磁盘空间413.10 Ceph 状态3.11 巡检. 43. 434. 常见问题444.1 常见问题444.2 nova 常见问题454.3 cinder 常见问题474.4 Neutron 常见问题474.5

3、RabbitMQ 常见问题484.6 ceph 常见问题484.7 其余常见问题534.8 附加内容. 585. 常用日志文件7121. 日常操作命令下列命令均需在控制节点上执行,每次 ssh 至控制节点后,均需先执行source /root/openrc命令,环境变量。 否则命令会报权限错误如下。1.1 Keystone标示和识别1.1.1 Tenant 相关命令查看 Tenant/Project 列表keystone tenant-list创建一个 tenant,名字为 tenant4labskeystone tenant-create -name tenant4labs删除一个 tena

4、nt,删除时需要指定 tenant id(可以指定 tenant name,但唯一)keystone tenant-delete422452437d674e5ab81c73cda7bed81ftenant name 可能不31.1.2 Role 相关命令列出所有角色keystone role-list创建角色,角色名为 hradminkeystone role-create -name hradmin4将指定用户 HR01 以指定角色 hradmin(通过 keystone role-list 获得),加入指定 tenant Porduction(通过 keystone tenant-list

5、 获得)keystone user-role-add -user HR01-role hradmin -tenant Porduction_HR删除指定 tenant Porduction 中的指定用户 HR01 的指定角色 hradmin (不是删除用户名)keystone user-role-remove -user HR01-role hradmin -tenant Porduction_HR5删除角色 hradminkeystone role-delete hradmin1.1.3 User 相关命令创建一个用户1:先查询 Tenant-idkeystone tenant-list62

6、:创建某一个 Tenant 下的用户keystone user-create -name HR02-tenant 19845badbfaa41df9a1bdca56d49bc4d-pass 123456 -HR02example.3:查看用户列表keystone user-list4:删除用户,需要先查询 user id,然后指定 user idkeystone user-listkeystone user-delete dd66afc663314c799cd3b0508bc58f4b75:获取用户详细信息,需要先获取 user id,然后指定 user idkeystone user-lis

7、tkeystone user-get 25492fc370464feab11c8f5d9f99f39e86:更新用户keystone usassword-update -pass 000000 HR021.1.4 Service 相关命令1:查看服务列表keystorvice-list2:查看服务路径keystone endpo-list3:查看服务目录keystone catalog91.2 Glance 镜像管理1:创建一个新的镜像glance image-create-name image4labs-disk-format qcow2-container-formatbare-is-pu

8、blic False -file cirros-0.3.1-x86_64-disk.img注释:-progress-disk-format 镜像的磁盘格式-container-format 镜像的容器格式-is-public 是否共享-file 上传到 glance 中的 image file-progree:显示进度102:删除一个特定的镜像,先使用 glance image-list 获取 image-idglance image-delete 936ca7f8-abb2-406c-aeee-a1a340c074753:列出可以的镜像glance image-listglance imag

9、e-listglance image-show b6c948ab-a1c1-481d-8bf3-1438628f08dd111.3 Neutron 网络虚拟化1:查看所有网络neutron net-list2:查看所有 agent 列表neutron agent-list3:查看所有子网neutron subnet-list4:查看所有路由器neutron router-list5:创建一个网络,名称 es_hrneutron net-create es_hr126:创建一个网络下的一个子网,名称 es_hr_pri,需要指定 network name es_hr,neutron subnet

10、-create es_hr 192.168.100.0/24 -name es_hr_pri子网的网段7:创建路由器,名称 es_hr_routerneutron router-create es_hr_router138:连接路由器到先获取 router 名称neutron router-list然后获取名称 public_netneutron net-external-list连接路由器 es_hr_router 到public_netneutron router-gateway-set es_hr_rout再次确认路由器已经连接至neutron router-listublic_net1

11、.4 Nova 计算虚拟化1:列出可用的实例nova list142:查看实例详细信息nova show testvm013:列出可用的 flavornova flavor-list4:定制 flavor,flavor name=test500 flavor id=500 ram=512Mb cpu=2nova flavor-create test500 500 512 1 2155:创建一个 vm 实例先获取 flavor idnova flavor-list|grep 500获取 image id glance image-list获取网络 id neutron net-list创建 vm

12、 实例testvm01novaboot-imagef911dbae-aaee-4969-8b99-c535d6e18eaa-flavortest500-nicnet-id=b21a53d6-b4c0-4e49-ac78-50a8d66c310f testvm01注释:-image 后面加镜像 UUID,使用 glance image-list 查看-flavor 后面加 flavor 的 UUID,使用 nova flavor-list 查看,也可以新建 flavor-nic net-id 后面加网络 UUID,使用 neutron net-list 查看,主要是 net,部署 subnet-

13、availability-zone 如果不指定由 nova-scheduler 根据策略自动指定主机部署, 默认是 nova。可以通过 zone_name:node-name 将虚拟机部署到指定的主机上面,比如: ernal_Zone:node-11.前面是zone 名称,后面是宿主机的主机名.tld166:先查看未分配 ip,然后分配 floating ip 到实例先获取未使用的 floating ip 地址neutron floatingip-list然后获取nova 的 id nova list将指定的floating ip 指定分配给指定的novanova floating-ip-as

14、sote 8919cdf8-25c3-4488-b9ee-fa9580e49b50 192.168.2.134177:创建一个实例的快照获取实例的名称 testvm01 nova list创建实例的快照 testvm01_s1nova image-create testvm01 testvm01_s18:删除一个实例获取实例的 id nova list通过指定实例 id 删除实例nova delete 3f84a737-e26b-4cee-a5d9-ff44d9458172181.5 Cinder 块管理1:列出正在运行的 cinder service,查看状态cinder service-l

15、ist2:创建一个 volume,显示名称 testvol01,大小 1Gbcinder create -display-name testvol01 13:挂在一个 volume 到一个 vm 实例获取 volume idcinder list获取实例 id nova list将指定的 volume id 挂载到指定的 vm 实例 id 上nova volume-attach auto194:从 vm 实例卸载一个 volume获取 volume idcinder list获取实例 id nova list将指定的 volume id 从指定的 vm 实例 id 上卸载nova volume

16、-detach 5:删除 volume获取 volume id cinder list删除指定 volume id 的 volumecinder delete b3c3c099-16c6-43a2-a17f-d0fc5dcf26911.6 Ceilometer 计量服务1:列出 meters(省略部分输出)ceilometer meter-list2:列出资源列表20ceilometer resource-list1.7 Ceph 集群状态21rootnode-1 nova# ceph healthHEALTH_OKrootnode-1 nova# ceph suscluster 08feda

17、86-096c-42c6-8496-303a8b409dd9 health HEALTH_OKmonm1: 1 mons at node-1=192.168.0.2:6789/0, election epoch 1, quorum 0 node-1osdm99: 4 osds: 4 up, 4 inpgmap v954: 1088 pgs, 5 pools, 115 MB data, 37 objects41383 MB used, 37984 MB / 79368 MB avail1088 active+cleanrootnode-1 nova# ceph osd sosdm99: 4 os

18、ds: 4 up, 4 in rootnode-1 nova# ceph osd dump epoch 99fsid 08feda86-096c-42c6-8496-303a8b409dd9 created 2016-02-16 13:52:43.145660modified 2016-02-27 02:41:29.145559flagspool 0 rbd replicated size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 64pgp_num 64 last_change 1 flags hashpspool st

19、ripe_width 0pool 1 images replicated size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 256pgp_num 256 last_change 2 flags hashpspool stripe_width 0pool 2 volumes replicated size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 256pgp_num 256 last_change 3 flags hashpspool stripe_

20、width 0pool 3 compute replicated size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 256pgp_num 256 last_change 99 flags hashpspool stripe_width 0 removed_snaps 11,32pool 4 backups replicated size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 256pgp_num 256 last_change 5 flags h

21、ashpspool stripe_width 0max_osd 42. 云环境系统状态检查系统状态检查,主要关注操作系统的主要计算资源。如 CPU,内存,磁盘,网络等等。2.1 CPU 状态检查通过运行 mps3, 命令来查看系统所有 CPU平均的资源使用状态。其中 3 表示采样时间间隔为 3 秒。详细内容请参考下图。22osd.0 upinweight 1 up_from 97 up_thru 97 down_at 96 last_clean_erval 79,89) 192.168.0.4:6803/2560 192.168.1.4:6802/2560 192.168.1.4:6803/2

22、560 192.168.0.4:6804/2560exists,up d515024c-ed8a-4a8b-a6d9-a886edcf21daosd.1 upinweight 1 up_from 94 up_thru 94 down_at 89 last_clean_erval 77,88) 192.168.0.4:6800/2287 192.168.1.4:6800/2287 192.168.1.4:6801/2287 192.168.0.4:6801/2287exists,up a25e0eb1-eace-469d-8da3-36b924e259cfosd.2 upinweight 1 u

23、p_from 92 up_thru 97 down_at 86 last_clean_erval 73,85) 192.168.0.3:6803/2562 192.168.1.3:6802/2562 192.168.1.3:6803/2562 192.168.0.3:6804/2562exists,up 2e2dab5c-6499-450d-b8ba-c2dda7adf360osd.3 upinweight 1 up_from 90 up_thru 97 down_at 84 last_clean_erval 71,83) 192.168.0.3:6800/2258 192.168.1.3:6

24、800/2258 192.168.1.3:6801/2258 192.168.0.3:6801/2258exists,up 4809c03a-659d-4fc3-90ab-21d49f774368rootnode-1 nova# ceph osd tree# id weighttype nameup/down reweight-10.07996 root default-20.03998host node-300.01999osd.0up 110.01999osd.1up 1-30.03998host node-220.01999osd.2up 130.01999osd.3up 1 rootn

25、ode-1 nova# ceph mon dump dumped monmpoch 1epoch 1fsid 08feda86-096c-42c6-8496-303a8b409dd9 last_changed 0.000000created 0.0000000: 192.168.0.2:6789/0 mon.node-1如果想要查看具体的 CPU Core 的使用状态,可以使用参数-P, 后跟要查看的 CPU 核编号。如 0, 表示 CPU 的一个 Core。详细内容请参考下图。如果多个 CPU Core 的 IDLE 使用率达到 100%,需要对机器性能进行关注。如果存在响应慢的情况,可以执

26、行 top 命令来查看哪个进程 CPU 占用率过高,检查是否存在问题。232.2 内存状态检查通过运行 free g 命令可以查看系统的内存与 SWAP 使用率。24通过运行 vms3 命令,可以查看系统的内存与 SWAP 状态。3 为采样时间间隔,为秒。如果系统中的 swpd 值比较大,而 free 值较小,说明物理内存已经不够,需要添加内存或者采取其他资源的操作。可以结合 vmsprocs命令来判断系统是否繁忙,其中:r:等待运行的进程数。b:处在非中断睡眠状态的进程数。 w:被交换出去的可运行的进程数。memeoryswpd:虚拟内存使用情况,为KB。free:空闲的内存,为 KB。bu

27、ff:被用来作为缓存的内存数,swap为KB。si:从磁盘交换到内存的交换页数量,为 KB。so:从内存交换到磁盘的交换页数量,io为KB。bi:发送到块设备的块数, bo:从块设备接受的块数,system为KB。为 KB。in:每秒的中断数,包括时钟中断。 cs:每秒的环境切换次数。cpu按 cpu 的总使用百分比来显示。us:cpu 使用时间。 sy:cpu 系统使用时间。 id:闲置时间。标准情况下 r 和 b 的值应该为:r /proc/sys/vm/dirty_background_ratio$ echo 10 /proc/sys/vm/dirty_ratio29文件系统数据缓冲需要

28、频繁的内存分配。加大保留内存的值能8G 的内存,保留内存为 64M,大于 8G 的设置为 256M$ echo 65536 /proc/sys/vm/min_free_kbytes系统速度和稳定。小于I/O 调度器cat /sys/block/disk/queue/scheduler四种调度算法noopdeadline :ipatory deadline cfqdeadline 算法保证对既定的 IO 请求以最小的延迟时间。ipatory:有个 IO 发生后,如果又有进程请求 IO,则产生一个默认 6ms 猜测时间,猜测下一个进程请求 IO 是干什么。这对于随机会造成较大的延时。对数据库应用很

29、糟糕,而对于 Web Server 等则会表现不错。对每个进程一个 IO 队列,各个进程发来的 IO 请求会被 cfq 以轮循方cfq:式处理,对每一个 IO 请求都是公平。适合离散读的应用。对所有 IO 请求都用 FIFO 队列形式处理。默认 IO 不会存在性能问题。noop:改变调度器$ echo deadline /sys/block/sdX/queue/scheduler对于数据库服务器,deadline 算法是的。提高调度器请求队列的$ echo 4096 /sys/block/sdX/queue/nr_requests有大量的读请求,默认的请求队列应付不过来,可以提高这个值。缺点是

30、要牺牲一定的内存。为了增加连续的吞吐量,可以增加预读数据量。预读的实际值是自适应的,所以使用一个较高的值,不会降低小型随机存取的性能。$ echo 4096 /sys/block/sdX/queue/read_ahead_kb如果 LINUX 判断一个进程在顺序在缓存中。文件,那么它会提前进程所需文件的数据,放服务器遇到磁盘写活动,导致请求处理延迟非常大(超过 3 秒)。通过调整内核参数,将写活动的分布成频繁的多次写,每次写入的数据比较少。这样可以把尖峰的写操作削平成多次写操作。以这种方式执行的效率比较低,因为内核不太有机会组合写操作。但对于繁忙的服务器,写操作将更一致地进行,并将极大地改进交

31、互式性能。/proc/sys/vm/dirty_ratio控制文件系统的写缓冲区的大小,是百分比,表示占系统内存的百分比,表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。增大之会使用系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合时,应该降低其数值。30/proc/sys/vm/dirty_background_ratio控制文件系统的 pdflush 进程,在何时刷新磁盘。是百分比,表示系统内存的百分比,pdflush 用于将内存中的内容和文件系统进行同步,比如说,当一个文件在内存中进行修改,pdflush 负责将它写回硬盘.每当内存中的页(d

32、irty page)超过 10%的时候,pdflush 就会将这些页面备份回硬盘.增大之会使用系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合时,应该降低其数值:/proc/sys/vm/dirty_writeback_centisecs控制内核的脏数据刷新进程 pdflush 的运行间隔。是 1/100 秒。缺省数值是 500,也就是 5 秒。如果你的系统是持续地写入动作,那么实际上还是降低这个数值比较好,这样可以把尖峰的写操作削平成多次写操作。如果你的系统是短期地尖峰式的写操作,并且写入数据不大(几十 M/次)且内存有比较多富裕,那么应该增大此数值。该

33、参数的设置应该小于 dirty_expire_centisecs,但也不能太小,太小 I/O 太频繁,反而使系统性能下降。具体可能需要在生产环境上测试。据说 1:6 (dirty_expire_centisecs: dirty_writeback_centisecs )的比例比较好。/proc/sys/vm/dirty_expire_centisecsLinux 内核写缓冲区里面的数据多“旧”了之后,pdflush 进程就开始考虑写到磁盘中去。是 1/100 秒。缺省是 30000,也就是 30 秒的数据就算旧了,将会刷新磁盘。对于特别重载的写操作来说,这个值适当缩小也是好的,但也不能缩小太多

34、,因为缩小太多也会导致 IO 提高太快。当然,如果你的系统内存比较大,并且写入模式是间歇式的,并且每次写入的数据不大(比如几十 M),那么这个值还是大些的好。/proc/sys/vm/vfs_cache_prere表示内核回收用于 directory 和 inodecache 内存的倾向;缺省值 100 表示内核将根据pagecache 和 swapcache,把 directory 和 inodecache 保持在一个合理的百分比;降低该值低于 100,将导致内核倾向于保留 directory 和 inodecache;增加该值超过 100,将导致内核倾向于回收 directory 和 in

35、odecache/proc/sys/vm/min_free_kbytes表示强制 LinuxVM 最低保留多少空闲内存(Kbytes)。缺省设置:724(512M 物理内存)/proc/sys/vm/nr_pdflush_threads表示当前正在运行的 pdflush 进程数量,在 I/O 负载高的情况下,内核会自动增加pdflush 进程。的/pmit_memory指定了内核针对内存分配的策略,其值可以是 0、1、2。0,表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。311,表示内核允许分配所有的物理内存,

36、而不管当前的内存状态如何。2, 表示内核允许分配超过所有物理内存和交换空间总和的内存(参照缺省设置:0mit_ratio)。/p如果mit_ratiomit_memory=2,可以过载内存的百分比,通过以下公式来计算系统整体可用内存。系统可分配内存=交换空间+物理内存*缺省设置:50(%)mit_ratio/100/proc/sys/vm/page-cluster表示在写一次到 swap 区的时候写入的页面数量,0 表示 1 页,1 表示 2 页,2 表示 4 页。缺省设置:3(2 的 3 次方,8 页)/proc/sys/vm/swapiness表示系统进行交换行为的程度,数值(0-100)

37、越高,越可能发生磁盘交换。更改:/etc/sysctl.confvm.dirty_ratio = 40 sysctl -p查看:find /proc/sys/vm$name; done-namedirty*-pr|whilereadname;doecho$name;cat323. 云服务状态检查下列命令均需在控制节点上执行,每次 ssh 至控制节点后,均需先执行 source /root/openrc命令,环境变量。 否则命令会有如下报错。3.1集群状态检查#确保集群中的节点都是运行状态:rootnode-1 #-e show sus | greping_addresses192.168.0.

38、3、192.168.0.4、192.168.0.5 分别是集群中的 3 个 Controller 节点,任何一个没有出现在上面截图中的输出都应该是 出了问题。需要登录该节点, 查看 d.log 检查该节点的状态。/var/log/#确保是同步的:rootnode-1 #-e show sus | grepwsrment#确保 wsrep 同步完成:rootnode-1 #-e show sus | grepwsrep_ready!注意:手动重起集群,比如用命令集群要求必须至少有一个活的节点,所以不能将要做相应设置才能恢复。如果三个 controller 上的集群全部关闭,如果要关闭,服务全部出

39、问题,不会影响已运行的虚机, 但无法对云们。进行操作(如创建虚机,运行关闭虚机等)。 请尽快3.2 rabbitmq 集群状态#确保所有的节点都在 running。以 root 用户执行如下命令:33resource restart clone_p_rootnode-1 # rabbitmqctl cluster_sus需要关注 running_nodes 里面是否有 3 个节点在运行,如果没有,说明 rabbitmq 集群存在问题,需对有问题的节点进行处理。#确保所有的节点能 list queuesrootnode-1 # rabbitmqctl list_queues34如果 Rabbit

40、MQ 出问题, 不会影响已虚机,运行关闭虚机等)。可使用运行的虚机, 但无法对云进行操作(如创建resource restart p_rabbitmq-server 命令重启消息队列。 此动作不会对虚机造成影响。详细处理方法见“常见问题”部分。353.3 nova 组件状态检查rootnode-1 # nova service-list根据输出,查看 Se 是否存在 down 的情况,如果没有证明整个集群工作正常。如果有 down 的情况需及时进行处理。Nova 服务 down 掉,不会影响虚机运行, 但对相关物理机上的虚机操作会有影响(如开关机,迁移等等)。可尝试重启相应服务。具体方法见后面

41、“常见问题”部分。3.4 neutron 状态检查rootnode-1 # neutron agent-list36重点查看 alive 列的状态是否正常,L3 agent 和 DHCP agent 只要各有一个是正常的就行。3.5 cinder 状态检查rootnode-1 # cinder service-list查看 Se 列是否存在 down 的情况,如果存在需要及时进行相应处理。373.6 pacemaker 管理的各服务集群状态检查rootnode-1 #sus查看 pacemaker 集群的输出是否存在 down 的情况,如果存在需要进行相应处理。3.7 l3-agent 的 n

42、amespace从上面的状态可以看到 l3-agent 在 node-1,所以在 node-1 上查看 namespacerootnode-1 # ip netns输出如图:38rootnode-1 # ip netns exec qrouter-95e6d480-7607-477e-a11a-67ca68604619 ip a通过图中输出能看到 qr,qg 和对应的 IP。如果环境中没有启用 L3-router, 那么无需检查。3.8 查看 dhcp-agent 的 namespace从上面的状态可以看到 dhcp-agent 在 node-3,所以在 node-3 上查看 namespac

43、erootnode-3 # ip netns39rootnode-3 # ip netns exec qdhcp-3344c78a-d5a8-419c-bbc6-60424bf0ef14 ip a可以看到一个 tap 设备,ip 是 dhcp 的 IP。如果虚机分配不到 IP,请检查 dhcp 服务是否正常。rootnode-3 # ps aux | grep dhcp40rootnode-3#cat/var/lib/neutron/dhcp/3344c78a-d5a8-419c-bbc6-60424bf0ef14/host如果正常这个 host 文件里会有虚机的 mac 地址和分配的 IP

44、的及时处理。,如果没有这条,请当 dhcp 服务出问题时,不会影响现有虚机运行, 只会造成新建虚机无法获取 IP 地址,同时无法写入主机名和。 造成这个问题的可能性比较复杂, 请们进行详细检查。3.9 检查磁盘空间在每个节点运行 rootnode-1 # df -h Filesystem/dev/mapper/os-root tmpfs/dev/sda3SizeUsed Avail Use% Mounted on50G63G194M12G37M28M36G25% /63G156M1% /dev/shm16% /boot/dev/mapper/mongo-mongodb1.1T74G919G8% /var/lib/mongo主要是 log 和的 db log 占据的空间比较大以下在控制节点执行rootnode-1 # du -sh /var/log/* | sort -h 29M /var/log/nova-all.log4134M /var/log/ceph35M /var/log/keystone-all.log 36M /var/log/nova48M /var/log/neutron-all.log 51M /var/log/glance54M /var/log/glance-all.log 76M /var/log/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论