参考:

https://blog.csdn.net/will_awoke/article/details/25972361
http://ifeve.com/file-channel/

FileChannel对象是线程安全(thread-safe)的。多个进程可以在同一个实例上并发调用方法而不会引起任何问题,不过并非所有的操作都是多线程的(multithreaded)。影响通道位置或者影响文件大小的操作都是单线程的(single-threaded)。如果有一个线程已经在执行会影响通道位置或文件大小的操作,那么其他尝试进行此类操作之一的线程必须等待。并发行为也会受到底层的操作系统或文件系统影响。

同大多数I/O相关的类一样,FileChannel是一个反映Java虚拟机外部一个具体对象的抽象。FileChannel类保证同一个Java虚拟机上的所有实例看到的某个文件的视图均是一致的,但是Java虚拟机却不能对超出它控制范围的因素提供担保。通过一个FileChannel实例看到的某个文件的视图同通过一个外部的非Java进程看到的该文件的视图可能一致,也可能不一致。多个进程发起的并发文件访问的语义高度取决于底层的操作系统和(或)文件系统。一般而言,由运行在不同Java虚拟机上的FileChannel对象发起的对某个文件的并发访问和由非Java进程发起的对该文件的并发访问是一致的。

文件空洞(file hole)
在UNIX文件操作中,文件位移量可以大于文件的当前长度,在这种情况下,对该文件的下一次写将延长该文件,并在文件中构成一个空洞,这一点是允许的。位于文件中但没有写过的字节都被设为 0。
如果 offset 比文件的当前长度更大,下一个写操作就会把文件“撑大(extend)”。这就是所谓的在文件里创造“空洞(hole)”。没有被实际写入文件的所有字节由重复的 0 表示。空洞是否占用硬盘空间是由文件系统(file system)决定的。
用ls查看的文件大小是将空洞算在内的。
cp命令拷贝的文件,空洞部分不拷贝,所以生成的同样文件占用磁盘空间小。
用read读取空洞部分读出的数据是0,所以如果用read和write拷贝一个有空洞的文件,那么最终得到的文件没有了空洞,空洞部分都被0给填充了,文件占用的磁盘空间就大了。不过文件大小不变。
空洞文件作用很大,例如迅雷下载文件,在未下载完成时就已经占据了全部文件大小的空间,这时候就是空洞文件。下载时如果没有空洞文件,多线程下载时文件就都只能从一个地方写入,这就不是多线程了。如果有了空洞文件,可以从不同的地址写入,就完成多线程的优势任务。>

本次bug 最终以判断是否读完做了修改,期望不会引起其他问题。

nfs共享存储web项目集群的一次下载流为空FIleChannel空洞bug相关推荐

  1. Zabbix(六):项目实战之--自动发现nginx调度器及后端web服务集群、自定义参数监控...

    项目: 1.自动发现nginx调度器及后端apache构建的web服务集群: 2.使用自定义参数监控调度器上nginx服务的相关统计数据及速率数据: 3.使用自定义参数监控后端apache服务的相关统 ...

  2. [转]使用简单的 5 个步骤设置 Web 服务器集群

    文章来源:http://www.ibm.com/developerworks/cn/linux/l-linux-ha/index.html 使用简单的 5 个步骤设置 Web 服务器集群 使用 Lin ...

  3. Web服务器集群搭建

    Web服务器集群搭建 1.需求分析 1.1.整体需求 搭建一个高可用的网站服务器集群,能承受高并发请求,能抵御一般的网络攻击,任何一台服务器的退服不影响整个集群的运作,并且能对各服务器的运行情况作出实 ...

  4. Linux架构之NFS共享存储1

    第35章 NFS共享存储 35.1 NFS基本概述 NFS是Network File System的缩写及网络文件系统.NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录. 常见的文件 ...

  5. 基于NFS共享存储实现kvm虚拟主机动态迁移

    所有主机关闭防火墙与selinux [root@localhost ~]# iptables -F [root@localhost ~]# systemctl stop firewalld [root ...

  6. 利用LVS(Linux Virtual Server)系统实现Web服务器集群的负载均衡

    利用LVS(Linux Virtual Server)系统实现Web服务器集群的负载均衡 LVS系统结构与特点: 1. Linux Virtual Server:简称LVS.是基于Linux服务器集群 ...

  7. SurFS:共享式和分布式集群各取所长

    http://www.ccidnet.com/2016/0811/10168835.shtml 一个集群系统可以做成三层定义,也就是后端存储访问层.沟通协作层.前端数据访问层,如果愣是要给每个层起个洋 ...

  8. NFS共享存储(用于内网) httpd协议 nginx 两种上传方式 区别

    文章目录 NFS共享存储(用于内网) 什么是NFS 为什么使用NFS 常见的数据存储方式 NFS的作用 测试:nginx页面展示 NFS原理 NFS配置详解 开机自动挂载 案例(nginx上传) ba ...

  9. Openfiler的安装+ISCSI和NFS共享存储的基础配置

    Openfiler是一个操作系统,是一款商业化的的开源NAS/SAN解决方案,同时也是一款存储管理实用程序,提供了基于文件的网络附加存储和基于块的存储区域网络功能:具体功能不在此处阐述.Openfil ...

最新文章

  1. 使用mysql_使用MySQL
  2. 查看服务器配置信息prtdiag与systeminfo实用命令
  3. Autocad下载 安装 和谐 与 卸载
  4. oracle分区交换有啥好处,分区交换的速度为什么快?
  5. sql 合并相同条件的字段
  6. github快速通道
  7. 实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题
  8. cv::Mat转换RGB
  9. 动态规划——最大整除子集C++
  10. 马尔科夫matlab程序,马尔科夫链matlab代码
  11. python百度经纬度转google经纬度
  12. Python量化交易平台开发教程系列0-引言
  13. 睡眠伤害计算机硬件吗,电脑长时间睡眠、不关机对电脑有伤害吗?
  14. Qt之GIF录制工具
  15. 麦澜德医疗科创板上市:年营收3.4亿市值44亿 深耕盆底康复
  16. 九州量子黄蕾蕾:我们是冲着量子通信产业化来的
  17. 《孤尽班T31-01-架构理论笔记》
  18. 微博修改域名的服务器,新浪微博个性域名是什么 新浪微博如何修改个性域名...
  19. linux命令学习1
  20. 短视频直播平台第三方特效SDK完整接入教程

热门文章

  1. 《论韩愈 》——陈寅恪
  2. 网易互娱2017实习生招聘在线笔试(二)
  3. H264编码原理(无损压缩)
  4. python:panda
  5. THINKPHP网站漏洞怎么修复解决
  6. CSS - id选择器 和 类选择器
  7. tipask 3.5 出错get_class() expects parameter 1 to be object 解决方案及说明
  8. ImportError: sys.meta_path is None, Python is likely shutting down 解决方案
  9. 【YbtOJ 线段树 - 2】公园遛狗
  10. 小学计算机教案2018六年级,2017年小学六年级下册信息技术教学计划