分享更有价值
被信任是一种快乐

Oracle 安装前 runcluvfy.sh脚本怎么用

文章页正文上

小编给大家分享一下Oracle 安装前 runcluvfy.sh脚本怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
Oracle 官方建议在安装Oracle Grid Infrastructure前运行此脚本,来检查各个节点是否满足GI安装的官方要求.
在部署Grid Infrastructure的过程中使用,我们不光要学会怎么用这个脚本,更应该明白其中的一些原理。
runcluvfy.sh将功能在shell中实现,并和GI的安装介质一起提供给用户,使得用户在数据库和CLUSTER安装之前就可以利用这个工具的功能。

先看一下脚本的基本用法
./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose
语法说明:
-pre: 该选项主要检查是否满足安装的需要。
-post:该选择主要检查安装后组件是否正常。
-n:该选项用于指定节点列表,这里指定了2个节点。
-verbose:该选项用于输出详细的验证信息。
-fixup:这是Oracle 11gR2中新增加的一个参数。利用这个参数,可以产生一个名为runfixup.sh的脚本。
runfixup.sh脚本中包含一系列的操作系统命令,利用这个脚本可以对操作系统进行一定的修改,使其满足安装条件。
完成系统进行校验之后,以root用户的身份执行脚本runfixup.sh,就可以解决操作系统中一些尚不满足安装条件的情况。

附一个我的测试库的输出结果

crmdb1:/oracle@grid> ./runcluvfy.sh stage -pre crsinst -n crmdb1,crmdb2 -verbose

Performing pre-checks for cluster services setup

Checking node reachability…

Check: Node reachability from node “crmdb1”
Destination Node Reachable?
———————————— ————————
crmdb2 yes
crmdb1 yes
Result: Node reachability check passed from node “crmdb1”

Checking user equivalence…

Check: User equivalence for user “oracle”
Node Name Status
———————————— ————————
crmdb2 passed
crmdb1 passed
Result: User equivalence check passed for user “oracle”

Checking node connectivity…

Checking hosts config file…
Node Name Status
———————————— ————————
crmdb2 passed
crmdb1 passed

Verification of the hosts config file successful

Interface information for node “crmdb2”
Name IP Address Subnet Gateway Def. Gateway HW Address MTU
—— ————— ————— ————— ————— —————– ——
eth0 192.168.1.5 192.168.1.0 0.0.0.0 132.64.196.1 78:58:60:B1:26:38 1500
eth2 132.64.196.45 132.64.196.0 0.0.0.0 132.64.196.1 9C:37:F4:01:02:06 1500

Interface information for node “crmdb1”
Name IP Address Subnet Gateway Def. Gateway HW Address MTU
—— ————— ————— ————— ————— —————– ——
eth0 192.168.1.4 192.168.1.0 0.0.0.0 132.64.196.1 78:58:60:B1:26:04 1500
eth2 132.64.196.44 132.64.196.0 0.0.0.0 132.64.196.1 E4:35:C8:7C:03:AB 1500

Check: Node connectivity of subnet “192.168.1.0”
Source Destination Connected?
—————————— —————————— —————-
crmdb2[192.168.1.5] crmdb1[192.168.1.4] yes
Result: Node connectivity passed for subnet “192.168.1.0” with node(s) crmdb2,crmdb1

Check: TCP connectivity of subnet “192.168.1.0”
Source Destination Connected?
—————————— —————————— —————-
crmdb1:192.168.1.4 crmdb2:192.168.1.5 passed
Result: TCP connectivity check passed for subnet “192.168.1.0”

Check: Node connectivity of subnet “132.64.196.0”
Source Destination Connected?
—————————— —————————— —————-
crmdb2[132.64.196.45] crmdb1[132.64.196.44] yes
Result: Node connectivity passed for subnet “132.64.196.0” with node(s) crmdb2,crmdb1

Check: TCP connectivity of subnet “132.64.196.0”
Source Destination Connected?
—————————— —————————— —————-
crmdb1:132.64.196.44 crmdb2:132.64.196.45 passed
Result: TCP connectivity check passed for subnet “132.64.196.0”

Interfaces found on subnet “132.64.196.0” that are likely candidates for VIP are:
crmdb2 eth5:132.64.196.45
crmdb1 eth5:132.64.196.44

Interfaces found on subnet “192.168.1.0” that are likely candidates for a private interconnect are:
crmdb2 eth0:192.168.1.5
crmdb1 eth0:192.168.1.4
Checking subnet mask consistency…
Subnet mask consistency check passed for subnet “192.168.1.0”.
Subnet mask consistency check passed for subnet “132.64.196.0”.
Subnet mask consistency check passed.

Result: Node connectivity check passed

Checking multicast communication…

Checking subnet “192.168.1.0” for multicast communication with multicast group “230.0.1.0”…
Check of subnet “192.168.1.0” for multicast communication with multicast group “230.0.1.0” passed.

Checking subnet “132.64.196.0” for multicast communication with multicast group “230.0.1.0”…
PRVG-11134 : Interface “132.64.196.44” on node “crmdb1” is not able to communicate with interface “132.64.196.45” on node “crmdb2”
Checking subnet “132.64.196.0” for multicast communication with multicast group “224.0.0.251”…
Check of subnet “132.64.196.0” for multicast communication with multicast group “224.0.0.251” passed.

Check of multicast communication passed.

Checking ASMLib configuration.
Node Name Status
———————————— ————————
crmdb2 passed
crmdb1 passed
Result: Check for ASMLib configuration passed.

Check: Total memory
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 504.6577GB (5.29171932E8KB) 1.5GB (1572864.0KB) passed
crmdb1 504.6577GB (5.29171932E8KB) 1.5GB (1572864.0KB) passed
Result: Total memory check passed

Check: Available memory
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 402.1997GB (4.21736976E8KB) 50MB (51200.0KB) passed
crmdb1 401.8191GB (4.2133782E8KB) 50MB (51200.0KB) passed
Result: Available memory check passed

Check: Swap space
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 31.25GB (3.2767996E7KB) 16GB (1.6777216E7KB) passed
crmdb1 31.25GB (3.2767996E7KB) 16GB (1.6777216E7KB) passed
Result: Swap space check passed

Check: Free disk space for “crmdb2:/tmp”
Path Node Name Mount point Available Required Status
—————- ———— ———— ———— ———— ————
/tmp crmdb2 /tmp 28.5234GB 1GB passed
Result: Free disk space check passed for “crmdb2:/tmp”

Check: Free disk space for “crmdb1:/tmp”
Path Node Name Mount point Available Required Status
—————- ———— ———— ———— ———— ————
/tmp crmdb1 /tmp 28.4948GB 1GB passed
Result: Free disk space check passed for “crmdb1:/tmp”

Check: User existence for “oracle”
Node Name Status Comment
———— ———————— ————————
crmdb2 passed exists(501)
crmdb1 passed exists(501)

Checking for multiple users with UID value 501
Result: Check for multiple users with UID value 501 passed
Result: User existence check passed for “oracle”

Check: Group existence for “oinstall”
Node Name Status Comment
———— ———————— ————————
crmdb2 passed exists
crmdb1 passed exists
Result: Group existence check passed for “oinstall”

Check: Group existence for “dba”
Node Name Status Comment
———— ———————— ————————
crmdb2 passed exists
crmdb1 passed exists
Result: Group existence check passed for “dba”

Check: Membership of user “oracle” in group “oinstall” [as Primary]
Node Name User Exists Group Exists User in Group Primary Status
—————- ———— ———— ———— ———— ————
crmdb2 yes yes yes no failed
crmdb1 yes yes yes no failed
Result: Membership check for user “oracle” in group “oinstall” [as Primary] failed

Check: Membership of user “oracle” in group “dba”
Node Name User Exists Group Exists User in Group Status
—————- ———— ———— ———— —————-
crmdb2 yes yes yes passed
crmdb1 yes yes yes passed
Result: Membership check for user “oracle” in group “dba” passed

Check: Run level
Node Name run level Required Status
———— ———————— ———————— ———-
crmdb2 5 3,5 passed
crmdb1 5 3,5 passed
Result: Run level check passed

Check: Hard limits for “maximum open file descriptors”
Node Name Type Available Required Status
—————- ———— ———— ———— —————-
crmdb2 hard 65536 65536 passed
crmdb1 hard 65536 65536 passed
Result: Hard limits check passed for “maximum open file descriptors”

Check: Soft limits for “maximum open file descriptors”
Node Name Type Available Required Status
—————- ———— ———— ———— —————-
crmdb2 soft 65536 1024 passed
crmdb1 soft 65536 1024 passed
Result: Soft limits check passed for “maximum open file descriptors”

Check: Hard limits for “maximum user processes”
Node Name Type Available Required Status
—————- ———— ———— ———— —————-
crmdb2 hard 16384 16384 passed
crmdb1 hard 16384 16384 passed
Result: Hard limits check passed for “maximum user processes”

Check: Soft limits for “maximum user processes”
Node Name Type Available Required Status
—————- ———— ———— ———— —————-
crmdb2 soft 16384 2047 passed
crmdb1 soft 16384 2047 passed
Result: Soft limits check passed for “maximum user processes”

Check: System architecture
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 x86_64 x86_64 passed
crmdb1 x86_64 x86_64 passed
Result: System architecture check passed

Check: Kernel version
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 2.6.32-696.el6.x86_64 2.6.9 passed
crmdb1 2.6.32-696.el6.x86_64 2.6.9 passed
Result: Kernel version check passed

Check: Kernel parameter for “semmsl”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 6010 6010 250 passed
crmdb1 6010 6010 250 passed
Result: Kernel parameter check passed for “semmsl”

Check: Kernel parameter for “semmns”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 769280 769280 32000 passed
crmdb1 769280 769280 32000 passed
Result: Kernel parameter check passed for “semmns”

Check: Kernel parameter for “semopm”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 6010 6010 100 passed
crmdb1 6010 6010 100 passed
Result: Kernel parameter check passed for “semopm”

Check: Kernel parameter for “semmni”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 128 128 128 passed
crmdb1 128 128 128 passed
Result: Kernel parameter check passed for “semmni”

Check: Kernel parameter for “shmmax”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 270989756416 270989756416 4294967295 passed
crmdb1 270989756416 270989756416 4294967295 passed
Result: Kernel parameter check passed for “shmmax”

Check: Kernel parameter for “shmmni”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 4096 4096 4096 passed
crmdb1 4096 4096 4096 passed
Result: Kernel parameter check passed for “shmmni”

Check: Kernel parameter for “shmall”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 132318976 132318976 2097152 passed
crmdb1 132318976 132318976 2097152 passed
Result: Kernel parameter check passed for “shmall”

Check: Kernel parameter for “file-max”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 6815744 6815744 6815744 passed
crmdb1 6815744 6815744 6815744 passed
Result: Kernel parameter check passed for “file-max”

Check: Kernel parameter for “ip_local_port_range”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 between 9000.0 & 65500.0 between 9000.0 & 65500.0 between 9000.0 & 65500.0 passed
crmdb1 between 9000.0 & 65500.0 between 9000.0 & 65500.0 between 9000.0 & 65500.0 passed
Result: Kernel parameter check passed for “ip_local_port_range”

Check: Kernel parameter for “rmem_default”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 262144 262144 262144 passed
crmdb1 262144 262144 262144 passed
Result: Kernel parameter check passed for “rmem_default”

Check: Kernel parameter for “rmem_max”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 4194304 4194304 4194304 passed
crmdb1 4194304 4194304 4194304 passed
Result: Kernel parameter check passed for “rmem_max”

Check: Kernel parameter for “wmem_default”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 262144 262144 262144 passed
crmdb1 262144 262144 262144 passed
Result: Kernel parameter check passed for “wmem_default”

Check: Kernel parameter for “wmem_max”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 1048576 1048576 1048576 passed
crmdb1 1048576 1048576 1048576 passed
Result: Kernel parameter check passed for “wmem_max”

Check: Kernel parameter for “aio-max-nr”
Node Name Current Configured Required Status Comment
—————- ———— ———— ———— ———— ————
crmdb2 1048576 1048576 1048576 passed
crmdb1 1048576 1048576 1048576 passed
Result: Kernel parameter check passed for “aio-max-nr”

Check: Package existence for “make”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 make-3.81-23.el6 make-3.80 passed
crmdb1 make-3.81-23.el6 make-3.80 passed
Result: Package existence check passed for “make”

Check: Package existence for “binutils”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 binutils-2.20.51.0.2-5.46.el6 binutils-2.15.92.0.2 passed
crmdb1 binutils-2.20.51.0.2-5.46.el6 binutils-2.15.92.0.2 passed
Result: Package existence check passed for “binutils”

Check: Package existence for “gcc(x86_64)”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 gcc(x86_64)-4.4.7-18.el6 gcc(x86_64)-3.4.6 passed
crmdb1 gcc(x86_64)-4.4.7-18.el6 gcc(x86_64)-3.4.6 passed
Result: Package existence check passed for “gcc(x86_64)”

Check: Package existence for “libaio(x86_64)”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 libaio(x86_64)-0.3.107-10.el6 libaio(x86_64)-0.3.105 passed
crmdb1 libaio(x86_64)-0.3.107-10.el6 libaio(x86_64)-0.3.105 passed
Result: Package existence check passed for “libaio(x86_64)”

Check: Package existence for “glibc(x86_64)”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 glibc(x86_64)-2.12-1.209.el6 glibc(x86_64)-2.3.4-2.41 passed
crmdb1 glibc(x86_64)-2.12-1.209.el6 glibc(x86_64)-2.3.4-2.41 passed
Result: Package existence check passed for “免费主机域名glibc(x86_64)”

Check: Package existence for “compat-libstdc++-33(x86_64)”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 compat-libstdc++-33(x86_64)-3.2.3-69.el6 compat-libstdc++-33(x86_64)-3.2.3 passed
crmdb1 compat-libstdc++-33(x86_64)-3.2.3-69.el6 compat-libstdc++-33(x86_64)-3.2.3 passed
Result: Package existence check passed for “compat-libstdc++-33(x86_64)”

Check: Package existence for “elfutils-libelf(x86_64)”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 elfutils-libelf(x86_64)-0.164-2.el6 elfutils-libelf(x86_64)-0.97 passed
crmdb1 elfutils-libelf(x86_64)-0.164-2.el6 elfutils-libelf(x86_64)-0.97 passed
Result: Package existence check passed for “elfutils-libelf(x86_64)”

Check: Package existence for “elfutils-libelf-devel”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 elfutils-libelf-devel-0.164-2.el6 elfutils-libelf-devel-0.97 passed
crmdb1 elfutils-libelf-devel-0.164-2.el6 elfutils-libelf-devel-0.97 passed
Result: Package existence check passed for “elfutils-libelf-devel”

Check: Package existence for “glibc-common”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 glibc-common-2.12-1.209.el6 glibc-common-2.3.4 passed
crmdb1 glibc-common-2.12-1.209.el6 glibc-common-2.3.4 passed
Result: Package existence check passed for “glibc-common”

Check: Package existence for “glibc-devel(x86_64)”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 glibc-devel(x86_64)-2.12-1.209.el6 glibc-devel(x86_64)-2.3.4 passed
crmdb1 glibc-devel(x86_64)-2.12-1.209.el6 glibc-devel(x86_64)-2.3.4 passed
Result: Package existence check passed for “glibc-devel(x86_64)”

Check: Package existence for “glibc-headers”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 glibc-headers-2.12-1.209.el6 glibc-headers-2.3.4 passed
crmdb1 glibc-headers-2.12-1.209.el6 glibc-headers-2.3.4 passed
Result: Package existence check passed for “glibc-headers”

Check: Package existence for “gcc-c++(x86_64)”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 gcc-c++(x86_64)-4.4.7-18.el6 gcc-c++(x86_64)-3.4.6 passed
crmdb1 gcc-c++(x86_64)-4.4.7-18.el6 gcc-c++(x86_64)-3.4.6 passed
Result: Package existence check passed for “gcc-c++(x86_64)”

Check: Package existence免费主机域名 for “libaio-devel(x86_64)”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 libaio-devel(x86_64)-0.3.107-10.el6 libaio-devel(x86_64)-0.3.105 passed
crmdb1 libaio-devel(x86_64)-0.3.107-10.el6 libaio-devel(x86_64)-0.3.105 passed
Result: Package existence check passed for “libaio-devel(x86_64)”

Check: Package existence for “libgcc(x86_64)”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 libgcc(x86_64)-4.4.7-18.el6 libgcc(x86_64)-3.4.6 passed
crmdb1 libgcc(x86_64)-4.4.7-18.el6 libgcc(x86_64)-3.4.6 passed
Result: Package existence check passed for “libgcc(x86_64)”

Check: Package existence for “libstdc++(x86_64)”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 libstdc++(x86_64)-4.4.7-18.el6 libstdc++(x86_64)-3.4.6 passed
crmdb1 libstdc++(x86_64)-4.4.7-18.el6 libstdc++(x86_64)-3.4.6 passed
Result: Package existence check passed for “libstdc++(x86_64)”

Check: Package existence for “libstdc++-devel(x86_64)”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 libstdc++-devel(x86_64)-4.4.7-18.el6 libstdc++-devel(x86_64)-3.4.6 passed
crmdb1 libstdc++-devel(x86_64)-4.4.7-18.el6 libstdc++-devel(x86_64)-3.4.6 passed
Result: Package existence check passed for “libstdc++-devel(x86_64)”

Check: Package existence for “sysstat”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 sysstat-9.0.4-33.el6 sysstat-5.0.5 passed
crmdb1 sysstat-9.0.4-33.el6 sysstat-5.0.5 passed
Result: Package existence check passed for “sysstat”

Check: Package existence for “pdksh”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 missing pdksh-5.2.14 failed
crmdb1 missing pdksh-5.2.14 failed
Result: Package existence check failed for “pdksh”

Check: Package existence for “expat(x86_64)”
Node Name Available Required Status
———— ———————— ———————— ———-
crmdb2 expat(x86_64)-2.0.1-13.el6_8 expat(x86_64)-1.95.7 passed
crmdb1 expat(x86_64)-2.0.1-13.el6_8 expat(x86_64)-1.95.7 passed
Result: Package existence check passed for “expat(x86_64)”

Checking for multiple users with UID value 0
Result: Check for multiple users with UID value 0 passed

Check: Current group ID
Result: Current group ID check passed

Starting check for consistency of primary group of root user
Node Name Status
———————————— ————————
crmdb2 passed
crmdb1 passed

Check for consistency of root user’s primary group passed

Starting Clock synchronization checks using Network Time Protocol(NTP)…

NTP Configuration file check started…
The NTP configuration file “/etc/ntp.conf” is available on all nodes
NTP Configuration file check passed

Checking daemon liveness…

Check: Liveness for “ntpd”
Node Name Running?
———————————— ————————
crmdb2 no
crmdb1 yes
Result: Liveness check failed for “ntpd”
PRVF-5508 : NTP configuration file is present on at least one node on which NTP daemon or service is not running.
Result: Clock synchronization check using Network Time Protocol(NTP) failed

Checking Core file name pattern consistency…
Core file name pattern consistency check passed.

Checking to make sure user “oracle” is not in “root” group
Node Name Status Comment
———— ———————— ————————
crmdb2 passed does not exist
crmdb1 passed does not exist
Result: User “oracle” is not part of “root” group. Check passed

Check default user file creation mask
Node Name Available Required Comment
———— ———————— ———————— ———-
crmdb2 0022 0022 passed
crmdb1 0022 0022 passed
Result: Default user file creation mask check passed
Checking consistency of file “/etc/resolv.conf” across nodes

Checking the file “/etc/resolv.conf” to make sure only one of domain and search entries is defined
File “/etc/resolv.conf” does not have both domain and search entries defined
Checking if domain entry in file “/etc/resolv.conf” is consistent across the nodes…
domain entry in file “/etc/resolv.conf” is consistent across nodes
Checking if search entry in file “/etc/resolv.conf” is consistent across the nodes…
search entry in file “/etc/resolv.conf” is consistent across nodes
Checking file “/etc/resolv.conf” to make sure that only one search entry is defined
All nodes have one search entry defined in file “/etc/resolv.conf”
Checking all nodes to make sure that search entry is “localdomain.localdomain” as found on node “crmdb2”
All nodes of the cluster have same value for ‘search’
Checking DNS response time for an unreachable node
Node Name Status
———————————— ————————
crmdb2 failed
crmdb1 failed
PRVF-5636 : The DNS response time for an unreachable node exceeded “15000” ms on following nodes: crmdb2,crmdb1

File “/etc/resolv.conf” is not consistent across nodes

Check: Time zone consistency
Result: Time zone consistency check passed

Pre-check for cluster services setup was unsuccessful on all the nodes.
以上是“Oracle 安装前 runcluvfy.sh脚本怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注云技术行业资讯频道!

相关推荐: ORACLE如何查看IP和解析机器名

这篇文章给大家分享的是有关ORACLE如何查看IP和解析机器名的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ORACLE 查看IP,解析机器名oracle中如何获取本机ip地址,根据IP地址获取域名—–解析ip 地址SQL&g…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册