迅雷X的“快速申请磁盘空间”是什么原理?

2019年08月06日 19:05| 70,469 次浏览| 发布者 强伊文| 56 评论

针对许多用户反馈创建文件较大的下载任务时,可能出现磁盘繁忙的问题。迅雷X10.1.16版本提供了“快速申请磁盘空间”的新方式,可以避免因为申请磁盘空间造成的“磁盘繁忙”。

这个功能推出后,引起了部分用户的好奇,想要更深入的了解这个功能。那我们得从微软推出Windows Vista引起的一个“问题”说起。

问题起因:

2006年11月,Windows Vista 发布,随之带来了“用户帐户控制功能(User Account Control,简称UAC)”

UAC功能对磁盘的权限控制给当时的迅雷带来了一个大麻烦。

没有管理员权限的情况下,申请磁盘空间并进行随机写入时,会触发Windows对所申请的磁盘空间进行初始化操作。

Windows之所以作出这个限制,可能是因为Windows的文件系统在删除文件时,并没有真的将磁盘上的文件数据擦除,而是给数据加上“已删除”标记了事。

但是Windows担心未经用户授权的程序访问到磁盘上被标记为“已删除”的内容,所以增加了初始化环节,其实就是擦除磁盘上标记为“已删除”的数据。

这个擦除过程就是把磁盘上对应的区块给写成零。写零这个过程就跟往磁盘里写数据一样,磁盘的写入性能决定了写零的速度。

比如迅雷要下载一个1000MB的文件,那么Windows就会初始化1000MB的磁盘空间,磁盘的写入性能是100MB/s,那么可知Windows对磁盘完成初始化需要10秒。

这10秒内,磁盘的写入性能将会100%被占用,导致磁盘繁忙,电脑卡顿。而且此时迅雷是无法向磁盘的这个区块写入任何数据的,也就导致迅雷没有任何下载速度。

解决这个问题的关键点,就是要找出一种方法,让迅雷申请磁盘空间时具有管理员权限。

解决方案A:

迅雷为了解决这个问题,首先想到的解决方案是每次启动迅雷都申请管理员权限。

UAC提示框

但是,让用户每次启动迅雷都弹一个UAC的提示框,体验实在太差。何况很多用户启动迅雷只是为了打开下载好的文件,并不进行下载。这种死板的做法就被否了。

解决方案B:

这时,我们有个比较熟悉Windows的开发想到,Windows的系统服务是可以直接获得管理员权限的,迅雷创建一个系统服务,专门用来帮忙申请磁盘空间不就好了吗?

于是迅雷就开发了“XLServicePlatform”服务,当迅雷需要申请大于100MB的磁盘空间时,就通过这个服务进行申请。

这样一来,就在不弹出UAC提示框的前提下,把问题解决了。

问题再现:

但是最近这段时间,我们发现越来越多的用户反映,用迅雷下载大文件的时候“电脑很卡、没速度、磁盘繁忙”等问题。

经过跟许多用户远程协助发现,他们的“XLServicePlatform”服务都被停止了。于是迅雷无法通过服务申请磁盘空间,导致下载大文件时,需要等待Windows初始化磁盘。

奇怪的是,用户都说自己没有手动停止过这个服务。

后来我们发现,这些用户都安装了“系统安全优化”类软件,经过我们测试发现,部分软件的“一键加速”功能会建议用户关闭“迅雷基础服务”,其实就是把“XLServicePlatform”服务停止了。。。

解决方案C:

既然很多用户的XLServicePlatform服务会被停止,那么迅雷就需要一个服务不能正常运行时的备份方案。

这个方案就是10.1.16版本上新增的“快速申请磁盘空间助手”功能,它的原理很简单,就是个独立的进程,在迅雷需要时启动它申请管理员权限,然后帮迅雷申请磁盘空间。

迅雷启动时,检测到自身不具有管理员权限,且XLServicePlatform服务没有正常运行,即判断当前需要“快速申请磁盘空间助手”帮助申请磁盘空间。但是此时并不会立刻弹出UAC提示框。

而是当迅雷需要下载大于100MB的文件时,先询问用户选择哪种申请磁盘空间的方式。

如果用户选择“快速方式”,这时才会拉起“快速申请磁盘空间助手”进程申请管理员权限(此时会弹一次UAC提示框),然后再由它帮迅雷申请磁盘空间。

这个方式虽然要弹一次UAC提示框,但是总好过方案A那种每次启动迅雷都弹,而且作为方案B的备用方案,用户体验也不算太糟糕。

Mac迅雷3.3.6.4138正式版发布!

2019年08月06日 16:43| 22,116 次浏览| 发布者 强伊文| 2 评论

下载链接:

http://down.sandai.net/mac/thunder_3.3.6.4138.dmg

更新内容:

  • 支持备份iOS迅雷的文件和下载记录并导入Mac迅雷;
  • 已完成列表支持更多格式筛选;
  • 批量创建文件时显示文件总数;
  • 支持对正在下载的文件进行重命名;
  • 优化应用页布局;
  • 解决3.3.3和3.3.4版本升级后无法创建BT任务的问题。

Mac迅雷 3.3.6.4136正式版发布!

2019年08月02日 19:29| 20,445 次浏览| 发布者 强伊文| 暂无评论

下载链接:

http://down.sandai.net/mac/thunder_3.3.6.4136.dmg

更新内容:

  • 支持备份iOS迅雷的文件和下载记录并导入Mac迅雷
  • 已完成列表支持更多格式筛选
  • 批量创建文件时显示文件总数
  • 支持对正在下载的文件进行重命名
  • 优化应用页布局

迅雷影音6.0.6.304测试版发布!

2019年07月31日 09:39| 14,247 次浏览| 发布者 强伊文| 2 评论

下载链接:

http://xmp.down.sandai.net/xmp/XMPSetup6.0.6.304xl.exe

更新内容:

  • 支持投屏播放、支持内挂字幕投屏
  • 播放列表新增缩略图模式
  • 硬件加速支持与画质增强、画面旋转、画面翻转同时使用
  • 支持加载外挂音轨
  • 支持将字幕输出到画面范围外
  • 优化网络播放时的拖动速度
  • 优化部分客户端异常退出问题

迅雷X 10.1.18.500正式版发布!

2019年07月23日 09:40| 47,473 次浏览| 发布者 强伊文| 21 评论

迅雷X 10.1.18版本开始,支持为新创建的任务组生成迅雷口令,比如使用迅雷下载的网游客户端,或者一大批视频文件,现在只需要一个迅雷口令,就可以分享给你的好友进行下载了。

试试复制这个口令【迅雷口令#Xb8514a28#】你就可以下载到免安装的《梦幻西游》

还有这个版本在下载含有文件夹的“BT任务、任务组”时,可以查看文件夹的下载进度了。比如当任务卡在99%时,可以一目了然的看出,是哪个文件夹还有文件没下载完成。

其它方面的优化也不少,有待您来体验!

下载地址:

http://down.sandai.net/thunderx/XunLeiSetup10.1.18.500.exe

更新信息:

  • 新创建的任务组可以生成“迅雷口令”,并保持目录结构
  • 下载含有文件夹的“BT任务、任务组”时,在文件列表中可以查看文件夹的下载进度
  • 优化界面主程序的流畅度,降低卡顿概率
  • 优化界面主程序的内存占用
  • 磁盘空间不足时,创建下载任务将自动切换为“手动下载”
  • 修正某些情况下,帐号自动登录失效的问题
  • 修正“正在下载”的任务资源数显示不准确的问题