共享存储服务nfs
csdh11 2025-01-15 12:08 20 浏览
--存储服务nfs
nfs概述
nfs的缺点
nfs属于本地文件存储服务
缺点一:
winndows上无法使用
缺点二:
在高并发场景,以及存储量比较高的场景,对数据安全性要求比较高场景
需要采用分布式储存(mfs FastDFS)
分布式文件系统:无法在服务器中看到真实的文件信息
1.2.2 实现Windows与linux系统文件数据共享方法
a.ftp(ftp服务部署)
b.samba服务
NFS共享网络文件系统企业应用
----主要用于存储web服务器上用户上传的数据信息,图片 附件 头像 视频 音频
NFS文件系统存在意义(实现数据共享,实现数据统一)
NFS 网络文件系统工作方式
* 在nfs服务端创建共享目录
* 通过mount 网路挂载,将NFS客户端本地目录挂载到NFS服务端共享目录上
* NFS客户端挂载目录上创建、删除、查看数据操作,等价于在服务端进行的创建、删除、查看数据操作
如图10-5所示,在 NFS服务器端设置好一个共享目录 /video后,其他有权限访问 NFS服务器端的客户端都可以将这个共享目录 /video挂载到客户端本地的某个挂载点(其实就是一个目录,这个挂载点目录可以自己随意指定),图10-5中的两个 NFS客户端本地的挂载点分別为/ v/video和/video ,不同客户端的挂载点可以不相同。
客户端正确挂载完毕后,就可以通过 NFS客户端的挂载点所在的/v/video或 /video目录查看
到 NFS服务器端 /video共享出来的目录下的所有数据。在客户端上查看时 ,NFS服务器端的 /video目录就相当于客户端本地的磁盘分区或目录,几乎感觉不到使用上的区别,根据 NFS服务器端授予 的 NFS共享权限以及共享目录的本地系统权限,只要在指定的 NFS客户端操作挂载/ v/video或/video的目录,就可以将数据轻松地存取到NFS服务器端上的/video目录中了。
NFS网络文件系统重点要了解两个重要服务
RPC服务
NFS服务
NFS工作流程图
RPC服务工作原理
NFS详细的访问流程
当访问程序通过NFS客户端向NFS服务器存取文件时,其请求数据流程大致如下:
01.首先用户访间网站程序,由程序在NFS客户端上发出存取NFS文件的请求,这时NFS客户端(即执行程序的服务器)的RPC服务(rpcbind服务)就会通过网络向NFS服务器端的RPC服务(rpcbind服务)的111端口发出NFS文件存取功能的询间请求.
02.NFS服务器端的RPC服务(rpcbind服务)找到对应的已注册的NFS端口后,通知NFS客户端的RPC服务(rpcbind服务)。
03.此时NFS客户端获取到正确的端口,并与NFS daemon联机存取数据
04.NFS客户端把数据存取成功后,返回给前端访间程序,告知用户存取结果,作为网站用户,就完成了一次存取操作。
因为NFS的各项功能都需要向RPC服务(rpcbind服务)注册,所以只有RPC服务才能获取到NFS服务的各项功能对应的端口号(port number)、PID、NFS在主机所监听的IP等信息,而NFS客户端也只能通过向RPC服务询问才能找到正确的端□。也就是说,NFS需要有RPC服务的协助才能成功对外提供服务。从上面的描述,我们不难推断,无论是NFS客户端还是NFS服务器端,当要使用NFS时,都需要首先启动RPC服务,NFS服务必须在RPC服务启动之后启动,客户端无需启动NFS服务,但需要启动RPC服务。
nsf实战
第一个里程碑-确认软件是否已经安装,安装NFS服务相关软件
rpm -qa|grep nfs
rpm -qa|grep rpc
安装rpcbind nfs-utils服务程序,并进行验证安装是否成功
yum install -y nfs-utils rpcbind
rpm -qa nfs-utils rpcbind
第二个里程碑-编写nfs配置文件
nfs配置文件默认存在/etc/exports
vim /etc/exports
#share /data by oldboy for share at 20170220
/data 172.16.1.0/24(rw,sync)
mkdir /data -p
chown -R nfsnobody.nfsnobody /data
说明:
NFS共享目录管理用户为nfsnobody,此用户不用创建,安装nfs软件时会自动创建
第四个里程碑:启动服务(注意顺序)
首先,启动rpc服务
/etc/init.d/rpcbind start
或者
systemctl start rpcbind
systemctl enable rpcbind
其次,启动nfs服务
systemctl start nfs
systemctl enable nfs
rpcbind服务启动信息查看
[root@nfs01 ~]# ps -ef|grep rpcbind
rpc 4050 1 0 10:55 ? 00:00:00 rpcbind
root 4054 3878 0 10:55 pts/1 00:00:00 grep --color=auto rpcbind
[root@nfs01 ~]# netstat -lntup|grep 111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 4050/rpcbind
tcp 0 0 :::111 :::* LISTEN 4050/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 4050/rpcbind
udp 0 0 :::111 :::* 4050/rpcbind
[root@nfs01 ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
nfs启动后查看信息
[root@nfs01 ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 28467 status
100024 1 tcp 56269 status
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
100005 1 udp 32886 mountd
100005 1 tcp 6154 mountd
100005 2 udp 38339 mountd
100005 2 tcp 60288 mountd
100005 3 udp 49824 mountd
100005 3 tcp 24427 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 61803 nlockmgr
100021 3 udp 61803 nlockmgr
100021 4 udp 61803 nlockmgr
100021 1 tcp 6064 nlockmgr
100021 3 tcp 6064 nlockmgr
100021 4 tcp 6064 nlockmgr
到此服务端部署配置完成
[root@nfs01 ~]# showmount -e 172.16.1.31 或者 showmount -e
Export list for 172.16.1.31: /data 172.16.1.0/24
服务端本地测试
NFS服务开启后,默认的参数文件位置,注意:修改此文件,对nfs服务没有任何影响
[root@nfs01 ~]# cat /var/lib/nfs/etab
/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid
NFS 客户端部署
第一个里程碑:确认软件有没有安装,进行nfs rpc 服务软件安装部署
yum install rpcbind nfs-utils -y
第二个里程碑:启动服务
提示:
rpcbind和nfs软件都可以不启动
第三个里程碑: 检查NFS服务端是否有可以进行挂载的目录
[root@nfs01 ~]# rpm -qf `which showmount`
nfs-utils-1.2.3-75.el6.x86_64
说明:showmount使用,需要安装nfs-utils软件
第四个里程碑:进程nfs客户端挂载
mount -t nfs 172.16.1.31:/data /mnt
[root@backup ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
说明: 如果nfs软件不安装
a 无法使用showmount 命令
b 客户端无法识别nfs 文件系统类型
第五个里程碑: 进行检查测试
[root@backup ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.5G 17G 9% /
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
172.16.1.31:/data 19G 1.5G 17G 9% /mnt
【测试】本地nfs客户端 进行增删改数据 等价于 nfs服务端共享目录操作
[root@backup mnt]# echo "test123">test.txt
[root@backup mnt]# ll test.txt
-rw-r--r-- 1 nfsnobody nfsnobody 8 Oct 13 11:28 test.txt
[root@nfs01 data]# cat test.txt
test123
------------知识深入----------------
NFS服务相关进程信息
rpcbind rpc启动进程 主进程
rpc state 检查数据存储的一致性
rpc.rquotad 磁盘配额
rpc.mountd 权限管理验证
nfsd NFS主进程
rpc.idmapd 用户压缩映射
进程/服务 详细说明
服务或进程名 | 用途说明 |
portmapper | rpcbind服务的进程(centos5.x 上为 portmap软件) |
rquotad | 磁盘配额进程 |
nfs、nfs_acl | nfs服务进程 |
nfsd (rpc.nfsd ) | rpc.nfsd的主要功能是管理NFS客户端是否能够登入NFS服务器端主机,其中还包括含登入者的ID判別等。 |
mountd | rpc.mountd的主要功能则是管理NFS文件系统。当NFS客户端顺利通过rpc.nfsd登入NFS服务器端主机时,在使用NFS服务器提供数据之前,它会去读NFS的配置文件/etc/exports来比对NFS客户端的权限,通过这一关之后,还要经过NFS服务器端本地文件系统使用权限(就是owner、group、other权限)等认证程序。如果都通过了,NFS客户端就可以取得使用NFS服务器端文件的权限。 注意:这个/etc/exports文件也是我们用来管理NFS共享目录的使用权限与安全设置的地方,特别强调,NFS本身设置的是网络共享权限,整个共享目录的权限还和目录自身的系统权限有关。 |
rpc.lockd (非必要) | 用来锁定文件,用于多客户端同时写入 |
rpc.statd (非必要) | 检查文件的一致性,与rpc.lockd有关。c、d两个服务雲要客户端,服务器端同时开启才可以;rpc.statd监听来自其他主机重启的通知,并且管理当本地系统重启时主机列表。 |
rpc.idmapd | 表示用户映射或用户压缩(重要) |
/etc/exports配置文件说明
--- /etc/exports文件说明
NFS共享目录:
为 NFS服务器端要共享的实际目录,要用绝对路径,如 (/data )。注意共享目录的本地权限,如果需要读写共享,一定要让本地目录可以被 NFS客户端的用户 (nfsnobody)读写。
NFS客户端地址:
为NFS服务器端授权的可访问共享目录的NFS客户端地址,可以为单独的IP地址或主机名、域名等,也可以为整个网段地址。还可以用来匹配所有客户端服务器,这里所谓的客户端一般来说是前端的业务的业务服务器,例如:web服务。
权限参数集
对授权的NFS客户端的访问权限设置。
nfs权限(共享目录\借给你手机)nfs配置的/ etc/exports /data 172.16.1.0/24(rw)
本地文件系统权限(\手机密码不告诉你)挂载目录的权限rwxr- xr-x root root/data
指定 NFS客户端地址的配置详细说明
客户端地址 | 具体地址 | 说 明 |
授权单一客户端访问NFS | 10.0.0.30 | 一般情况,生产环境中此配置不多 |
授权整个网段可访问NFS | 10.0.0.0/24 | 其中的24等同于255.255.255.0 ,指定网段为生产环境中最常见的配置。配置简单,维护方便 |
授权整个网段可访问NFS | 10.0.0.* | 指定网段的另外写法(不推荐使用) |
授权某个域名客户端访问 | nfs.oldboyedu.com | 此方法生产环境中一般情况不常用 |
授权整个域名客户端访问 | *.oldboyedu.com | 此方法生产环境中一般情况不常用 |
常见案例
常用格式说明 | 要共享的目录客户端IP地址或IP段(参1,参2,) |
配罝例一 | /data10.0.0.0/24(ro,sync) 说明:允许客户端读写,并且数据同步写入到服务器揣的磁盘里 注意:24和"("之间不能有空格 |
配置例二 | /data10.0.0.0/24(rw,sync/all_squash,anonuid=2000,anongid=2000) 说明:允许客户揣读写,并且数据同步写到服务器揣的磁盘里,并且指走客户端 的用户UID和GID,早期生产环境的一种配罝,适合多客户端共享一个NFS服务 单目录,如果所有服务器的nfsnobody账户UID都是65534,则本例没什么必 要了.早期centos5.5的系统默认情况下nfsnobody的UID不一定是65534, 此时如果这些服务器共享一个NFS目录,就会出现访问权限问题. |
配置例三 | /home/oldboy10.0.0.0/24(ro) 说明:只读共享 用途:例如在生产环境中,开发人员有查看生产眼务器日志的需求,但又不希罜 给开发生产服务器的权限,那么就可以给开发提供从某个测试服务器NFS客户端 上查看某个生产服务器的日志目录(NFS共享)的权限,当然这不是唯一的方法, 例如可以把程序记录的日志发送到测试服务器供开发查看或者通过收集日志等其 它方式展现 |
nfs服务访问原理
客户端(无论用什么用户访问)---门---服务端(nfsnobody) rpc.idmapd
NFS服务端设置rpcbind nfs服务开机自启动
[root@nfs01 ~]# chkconfig rpcbind on
[root@nfs01 ~]# chkconfig nfs on
[root@nfs01 ~]# chkconfig |egrep "rpcbinf|nfs"
nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off
NFS配置文件编写说明
官方举例配置
EXAMPLE
# sample /etc/exports file
/ master(rw) trusty(rw,no_root_squash)
/projects proj*.local.domain(rw)
/usr *.local.domain(ro) @trusted(rw)
/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)
/pub *(ro,insecure,all_squash)
/srv/www -sync,rw server @trusted @external(ro)
/foo 2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw)
/build buildhost[0-9].local.domain(rw)
/etc/exports文件配置格式为:
NFS共享目录 NFS客户端地址1(参数1,参数2,...) 客户端地址2(参数1,参数2,...)
或
NFS共享目录 NFS客户端地址1(参数1,参数2,...)
NFS共享目录 NFS客户端地址2(参数1,参数2,...)
注意:nfs服务默认没有认证机制,安全性不如分布式文件系统
只能通过控制配置文件中网络地址信息,实现安全性
3.5 nfs配置参数说明
参数 | 说明 |
rw | 可读写的权限 |
ro | 只读的权限 |
no_root_squash | 登入NFS主机,使用该共享目录时相当于该目录的拥有者,如果是root的话,那么对于这个共享的目录来说,他就具有root的权限,这个参数『极不安全』,不建议使用 |
root_squash | 登入NFS主机,使用该共享目录时相当于该目录的拥有者。但是如果是以root身份使用这个共享目录的时候,那么这个使用者(root)的权限将被压缩成为匿名使用者,即通常他的UID与GID都会变成nobody那个身份 |
all_squash | 不论登入NFS的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody |
anonuid | 可以自行设定这个UID的值,这个UID必需要存在于你的/etc/passwd当中 |
anongid | 同anonuid,但是变成groupID就是了 |
sync | 资料同步写入到内存与硬盘当中 |
async | 资料会先暂存于内存当中,而非直接写入硬盘 |
insecure | 允许从这台机器过来的非授权访问 |
nfs配置参数实践
all_squash 参数实践
-------不论登入NFS的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody
服务端修改配置
[root@nfs01 ~]# vim /etc/exports
#share 20171013 hzs
/data 172.16.1.0/24(rw,sync,all_squash)
[root@nfs01 ~]# /etc/init.d/nfs reload
配置修改需要平滑重启nfs 服务
reload 平滑重启
用户的访问体验更好
nfs客户端进行测试
[root@backup mnt]# touch test.txt
[root@backup mnt]# ll
-rw-r--r-- 1 nfsnobody nfsnobody 8 Oct 13 11:28 test.txt
[root@backup ~]# su - oldboy
[oldboy@backup ~]$ cd /mnt/
[oldboy@backup mnt]$ touch oldboy1.txt
[oldboy@backup mnt]$ ll
-rw-rw-r-- 1 nfsnobody nfsnobody 0 Oct 13 12:34 oldboy1.txt
-rw-r--r-- 1 nfsnobody nfsnobody 8 Oct 13 11:28 test.txt
说明:
不论登入NFS的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody
no_all_squash,root_squash 参数实践
服务端修改配置
[root@nfs01 ~]# vim /etc/exports
#share 20171013 hzs
/data 172.16.1.0/24(rw,sync,no_all_squash,root_squash)
[root@nfs01 ~]# /etc/init.d/nfs reload
客户端卸载重新挂载(服务器配置修改后客户端要重新挂载)
[root@backup ~]# umount /mnt/
[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
nfs客户端测试结果:
[root@backup mnt]# touch test1.txt
[root@backup mnt]# ll
-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 13 12:37 test1.txt
[root@backup mnt]# su - oldboy
[oldboy@backup ~]$ cd /mnt/
[oldboy@backup mnt]$ touch oldboy1.txt
touch: cannot touch `oldboy1.txt': Permission denied
[oldboy@backup mnt]$ touch oldboy2.txt
touch: cannot touch `oldboy2.txt': Permission denied
服务端验证:
[root@nfs01 ~]# ll /data/
-rw-rw-r-- 1 nfsnobody nfsnobody 0 Oct 13 12:34 oldboy1.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 13 12:37 test1.txt
-rw-r--r-- 1 nfsnobody nfsnobody 8 Oct 13 11:28 test.txt
说明:
no_all_squash,是所有用户都不进行压缩,所以oldboy用户对nfs的目录没有写入的权限(与nfs服务器的共享目录权限有关)。root用户进行压缩所以可以写入。
no_root_squash 参数实践(root用户不进行压缩映射)
服务端修改配置
[root@nfs01 ~]# vim /etc/exports
#share 20171013 hzs
/data 172.16.1.0/24(rw,sync,no_root_squash)
[root@nfs01 ~]# /etc/init.d/nfs reload
客户端卸载重新挂载(服务器配置修改后客户端要重新挂载)
[root@backup ~]# umount /mnt/
[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
nfs客户端测试结果:
[root@backup mnt]# touch root.txt
[root@backup mnt]# ll
total 16
-rw-rw-r-- 1 nfsnobody nfsnobody 0 Oct 13 12:34 oldboy1.txt
-rw-r--r-- 1 root root 0 Oct 13 12:45 root.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 13 12:37 test1.txt
-rw-r--r-- 1 nfsnobody nfsnobody 8 Oct 13 11:28 test.txt
删除测试
[root@backup mnt]# rm -rf ./*
[root@backup mnt]# ll
total 0
说明:
由于对root用户没有进行压缩,所以到达nfs服务器后依旧是root身份,root用户默认对所有的文件都有权限,所以可以写入。(很危险)
推荐方式:
创建用户和用户组并指定id
所有服务器:
groupadd -g 888 www
useradd -s /sbin/nologin -M -u 888 -g 888 www
服务端:
chown -R www.www /data/rw
- 上一篇:理解Linux下的SELinux
- 下一篇:记录Linux下Redis详细的启动过程
相关推荐
- 当iPhone X遇上 Mate 10 Pro 怎么挑?
-
产品:Mate10Pro(全网通)华为手机1iPhoneX一出就遇上了对手Hello!大家好我是石头这里是zol。首先来看看我手里的这个,不是装x的意思,今天好多人欢天喜地的拿到了属于自己或者属...
- 谁是办公高手? 六款商务平板全推荐
-
1超低功耗联想Thinkpad10领衔ThinkPad的名字在笔记本上依然是高曝光率,从IBM到联想,它一直以来是商务、办公领域的不二人选,然而在平板电脑大行其道的今天,ThinkPad当然也不单...
- 如何仅用几行代码将微信4.0公测版转换成玲珑格式?
-
微信4.0(玲珑版)已上架如意玲珑应用商店!!!...
- 音乐研发必备:理解 MIDI 协议与标准 MIDI 文件格式
-
1.MIDI简介...
- HEIF格式可以节约50%的空间!质量会有影响吗?
-
关于手机1亿像素到底有没有必要,争议肯定是存在的,但无法回避的一点是随着像素的成倍增加,一张照片十几MB成了常事,这必将给本就不太宽裕的存储容量造成压力,这种压力又会转嫁到用户身上,让他们不得不花更多...
- 「干货分享」30个前端知识技能提升的资源网站
-
今天给小伙伴们分享30个前端相关学习资源网站及一些在线小工具,希望能帮助到大家。CSS相关1、css精灵牛|在线图片CSS生成工具。...
- 用Facebook引流Shopify独立站,如何优化Facebook商户页面?
-
什么是FacebookBusinessPage?FacebookBusinessPage是官方的称号,其实你可以简单理解为facebookbusinesspage就是微信公众账户,而我们...
- 玩转手机摄影 nubia Z9 mini新品首测
-
1Z9系列新品nubiaZ9mini发布会开始之前的邀请函总能透露出很多内容,或者说我们总会特意解读出很多内容。nubia此前发出的3月26日智能手机新品发布会的邀请函很显然再一次着重强调了其产品...
- 影院看片怕座位不好?那买个盒子在家看
-
着消费者对高清播放器的需求的不断增加,高清播放器的功能也在不断得到提升。以前看电影的时候相信很多人更喜欢去电影院里观看,但是有时候去电影院的人太多买不到好位子也会让不少人感到扫兴。现在随着技术的革新,...
- 今天你买了么?不入后悔的8款平板推荐
-
随着高考大战的落幕,对于广大学生朋友们来说正真的暑假终于来了!这个假期想要外出旅行或是居家畅玩,没有一款便携式全能娱乐利器的平板电脑怎么能叫放假呢?正直京东618购物季即将到来的日子,相信你也不会错过...
- Cursor使用指南:释放AI编程的无限潜能
-
Cursor简介...
- 谁说轻薄本缺乏生产力?没体验过别乱说
-
笔记本电脑轻薄化一直是各大厂商们不断努力的方向,不过早前的轻薄笔记本电脑会受制于技术方面的限制,无法将高能耗的CPU以及显卡塞入轻薄的机身内。为了能给这些芯片散热、供电,制造商们不得不对这些芯片的功耗...
- 通告ImageMagick再爆核心漏洞 站长小心
-
目前所有版本的GraphicsMagick和ImageMagick都支持打开文件,当文件名的第一个字符为“|”,则文件名会被传递给shell程序执行,导致(可能远程)代码执行。文件打开操作位于源代码文...
- 《玻璃之花与坏掉的世界》再曝新宣传片
-
雨文冰璃发表于昨天22:56【新闻】《玻璃之花与坏掉的世界》再曝新宣传片http://comic.qq.com/a/20151122/016784.htmPONYCANYON和A-1Pictu...
- 7 招教你轻松搭建以图搜图系统
-
作者|小龙责编|胡巍巍当您听到“以图搜图”时,是否首先想到了百度、Google等搜索引擎的以图搜图功能呢?事实上,您完全可以搭建一个属于自己的以图搜图系统:自己建立图片库;自己选择一张图片到...
- 一周热门
- 最近发表
- 标签列表
-
- mydisktest_v298 (34)
- document.appendchild (35)
- 头像打包下载 (61)
- acmecadconverter_8.52绿色版 (39)
- word文档批量处理大师破解版 (36)
- server2016安装密钥 (33)
- mysql 昨天的日期 (37)
- parsevideo (33)
- 个人网站源码 (37)
- centos7.4下载 (33)
- xlsx.full.min.js下载 (32)
- mysql 查询今天的数据 (34)
- intouch2014r2sp1永久授权 (36)
- 先锋影音源资2019 (35)
- jdk1.8.0_191下载 (33)
- axure9注册码 (33)
- pts/1 (33)
- spire.pdf 破解版 (35)
- shiro jwt (35)
- sklearn中文手册pdf (35)
- itextsharp使用手册 (33)
- 凯立德2012夏季版懒人包 (34)
- 反恐24小时电话铃声 (33)
- 冒险岛代码查询器 (34)
- 128*128png图片 (34)