在家里的局域网搞了一个NAS,但是由于磁盘读存速率问题导致远程copy的速度只有15MB/s,而如果NAS中的文件已在内存中有缓存则远程copy的速度为50MB/s。

于是考虑利用内存建立虚拟硬盘:

https://www.bilibili.com/video/BV1te41127vd/?vd_source=f1d0f27367a99104c397918f0cf362b7

如何建立虚拟硬盘:

1)使用第三方工具;

2)Windows10/Windows11操作系统的磁盘管理工具自带功能;

虚拟磁盘和真实物理磁盘在读取性能上的原理区别:

如果大学是学计算机专业的,而且还学过操作系统这门课后学的还OK的话,那么就应该知道操作系统在读取和存储真实物理磁盘内容时本身采取的就是内存缓存映射的机制,而这里的虚拟硬盘也是使用同样的工资机制,因此从本质上来说二者的工作原理是完全一致的,二者的区别在于管理独立性问题上。如果使用操作系统直接对真实物理磁盘进行访问那么真实物理磁盘上的文件在内存中的映射是受操作系统直接管理的,也就是说整个电脑上所有的访问过的文件与内存的映射关系是受操作系统统一调配的,操作系统会根据所有打开文件的优先级权限来对某些文件取消映射关系的,而使用虚拟硬盘的话会单独划分一部分固定内存出来的,这部分内存是不受操作系统调配的,也就是说不会由操作系统收回的,因此对虚拟硬盘中的文件与内存的映射关系不由操作系统调配和管理而是由虚拟硬盘软件所管理,说直白些就是虚拟硬盘将操作系统对指定的磁盘文件与内存的映射关系的管理权限接管了过去,避免了与其他打开文件竞争映射关系的权限。

在实际工作中的区别:

虽然二者工作原理完全一致,但是在实际应用中还是有一定区别,根据操作系统的原理可以知道,磁盘在内存中的映射文件被修改后会同步写会到磁盘中的,但是虚拟磁盘在实际工作中往往在同步写会磁盘时的同步频率较真实硬盘文件读取情况要低,这也就意味着虚拟磁盘在突然掉电的情况下更有可能丢失数据,甚至丢失更多数据(真实文件映射内存的情况下,内存的修改内容往往会及时保存到磁盘,而虚拟磁盘往往为了加速读存性能而不会及时保存到磁盘中)。

丢失文件数据或损坏数据后的恢复:

真实物理磁盘读存的情况下,即使由于掉电等问题丢失数据,那么受影响的往往也只是部分文件(掉电是内存修改内容未来得及同步到磁盘的部分文件),而虚拟磁盘是在真实物理磁盘的上面用软件形式重新划分了一个磁盘空间,而这部分空间在真实物理磁盘的文件是一个文件形式,一般是 *.vhd 格式,也就是说掉电后不仅虚拟磁盘中的文件会丢失数据,甚至会导致这个 *.vhd 文件的基本格式受损,而导致整个划分出的虚拟磁盘都无法再次挂载,甚至需要专业的数据维护才可以挂载。而真实的物理磁盘在近10多年的时间里已经建立了比较完善的掉电保护机制,比如机械硬盘会安全的收回磁盘头而不损害磁盘,固态硬盘会设置继电电容或快照技术或恢复电源后的数据重组技术,总之真实的物理磁盘会在一定程度上保证掉电后即使丢失部分文件数据也不会损坏整个磁盘的文件结构和内容。

总结来说,不论真实物理磁盘存储还是虚拟磁盘,在掉电时都可能丢失数据,但是虚拟磁盘可能丢失更多的数据甚至损坏整个磁盘内容,因此安全性更差,不过这本身也是一个矛盾的问题,即使真实磁盘读存也是存在安全级别的,比如家用磁盘和企业级磁盘就存在很大区别,因此这个也需要看具体的使用场景的需求。

关于虚拟硬盘的缺点:

源自:https://diy.pconline.com.cn/cpu/reviews/1211/3065665_all.html

  虚拟硬盘争议最大就是“断电后数据自动丢失不可恢复”。虽然现在有一些RAMDisk软件提供断电恢复功能,也仅是把临时文件关机前写进硬盘,开机再从硬盘再次调进虚拟盘中,而每次开机\关机读写零碎文件数据时间会很长,很麻烦。

虚拟硬盘系统 —— Windows系统 磁盘加速软件 —— 优缺点以及与真实物理磁盘访问文件的区别的更多相关文章

  1. windows的磁盘操作之七——获取当前所有的物理磁盘号 加备注

     windows的磁盘操作之七--获取当前所有的物理磁盘号 2011-07-28 17:47:56 标签:windows API DeviceIoControl 物理磁盘 驱动器号 原创作品,允许转载 ...

  2. Linux下硬盘安装Windows系统。

    注意:本方法安装后会把Linux系统损坏,方法适用于完全不再需要Linux系统. 本方法在ubuntu 14.04,centos 6.5,debian 8测试成功. 安装方法是通过grub2引导Win ...

  3. 使用 windows 下的 secureCRT 软件的 通过 sftp 上传和下载文件到远端 linux 设备

    secureCRT 按下ALT+P就开启新的会话进行ftp操作. 输入:help命令,显示该FTP提供所有的命令 pwd:  查询linux主机所在目录(也就是远程主机目录) lpwd: 查询本地目录 ...

  4. golang---获取windows系统相关信息

    package main import ( "fmt" "net" "runtime" "strings" " ...

  5. 虚拟机中如何挂载物理磁盘(VMware操作)

    测试的时候难免会遇到,从真是机器拷贝东西到虚拟机中,虽说安装了VMware tools(Vm→Install VMware tools...),就可以将文件直接拖到虚拟机里面去,但是这样拷贝总是需要花 ...

  6. UEFI+GPT模式下的Windows系统中分区结构和默认分区大小及硬盘整数分区研究

    内容摘要:本文主要讨论和分析在UEFI+GPT模式下的Windows系统(主要是最新的Win10X64)中默认的分区结构和默认的分区大小,硬盘整数分区.4K对齐.起始扇区.恢复分区.ESP分区.MSR ...

  7. 如何在Windows版本的VMware虚拟机上安装苹果系统

    有时我想玩玩苹果系统,但自己有没有mac,只能在虚拟机上装一个苹果玩玩,但又由于某些原因虚拟机软件VMware不支持安装苹果系统,还在有大佬出于不明目的,在网上散布了适用于Windows版本的VMwa ...

  8. 转载请注明:Windows 系统必备好用软件&工具合集跟推荐 | 老D博客

    Windows 系统必备好用软件&工具合集跟推荐 97 63,371 A+ 所属分类:工具软件 一.浏览器 二.下载软件 三.播放软件 五.电子邮件客户端 六.图片/照片 浏览查看工具 七.文 ...

  9. Mac系统下使用VirtualBox虚拟机安装win7--第三步 在虚拟机上安装 Windows 7

    第三步 在虚拟机上安装 Windows 7 等待虚拟机进入 Windows 7 的安装界面以后,在语言,货币,键盘输入法这一面,建议保持默认设置,直接点击“下一步”按钮,如图所示

  10. zz Windows 10安装教程:硬盘安装Win10 系统步骤(适合32位和64位)

    Windows 10安装教程:硬盘安装Win10 系统步骤(适合32位和64位) Posted on 2015年01月28日 by 虾虾 22 Comments   最新的Windows 10 MSD ...

随机推荐

  1. php程序出现乱码

      // 1, PHP程序中的 中文乱码         //    php7.0以下程序,没有默认设定 编码格式 , 需要添加响应头         //    header("Conte ...

  2. 程序员面试金典-面试题 16.20. T9键盘

    题目: 在老式手机上,用户通过数字键盘输入,手机将提供与这些数字相匹配的单词列表.每个数字映射到0至4个字母.给定一个数字序列,实现一个算法来返回匹配单词的列表.你会得到一张含有有效单词的列表.映射如 ...

  3. kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ producer 实战

    1.MQTT介绍 MQTT (Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议,设计用于连接低带宽.高延迟或不可靠网络的设备. MQTT 是基于发布 ...

  4. knife4j/swagger救援第一现场

    1.前方来报,测试环境springboot项目无法启动,现场如下: Error starting ApplicationContext. To display the auto-configurati ...

  5. ABC347题解

    省流:输+赢 D 按位分析. 既然两个数异或后的结果是 \(C\),那就考虑 \(C\) 中为 \(1\) 的数中有几个是在 \(X\) 当中的. 假如 \(\text{a - popcnt(X) = ...

  6. Windows Server 2016 离线安装.NET Framework 3.5

    Windows Server 2016 离线安装.NET Framework 3.5 1.双击Windows Server 2016的ISO,会自动挂载,比如F盘. 2.右键开始菜单- 命令提示符(管 ...

  7. docker on windows v19 红色启动不了

    遇到: error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/containers/json: open //./ ...

  8. Selenium模块的使用(一)

    简介 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器, 完全模拟浏览器的操作,比 ...

  9. a标签的title属性 换行

    使用 title 属性,可以让鼠标悬停在超链接上的时候,显示该超链接的文字注释. <a href="#" title = "123">超链接< ...

  10. MySql 表数据的增、删、改、查

    数据表的增.删.改.查 前言 在学习 MySql 一定少不了对数据表的增.删.改.查,下面将详细讲解如何操作数据表. 前面已经建好了表 customer 列表如下: 插入数据 插入数据可以使用 INS ...