很多从Windows转Linux的用户,面临的最大一个问题,就是Linux上没有还原精灵这种软件。众所周知,作为一个操作系统要想普及,绝不可能只针对懂IT的少部分年轻人,而是需要让不同年龄段,不同职业的群体都用上这个系统。比如让家里老年人使用电脑,就需要考虑病毒以及误操作导致系统崩坏的可能。杀毒软件只能解决病毒,但解决不了人为失误导致的系统损坏,这个时候还原精灵这类软件就是必须的了。
Linux不能普及,缺少还原精灵这种软件也是个很大的原因。
先来说说Windows上的还原精灵和影子系统都有哪些高级特性吧
1.不需要占用额外的外部存储
2.备份和还原基本都是秒级
3.理论上可支持上千个备份而不占用磁盘空间。
1.Linux真的没有还原精灵这种应用软件吗
据笔者所知,没有。
搜遍整个互联网,一提Linux还原,基本都是类似的说辞
直接 tar 打包根目录,恢复到新的硬盘以后改一下 fstab 更新一下 grub 就还原了。
这根本不是还原精灵。就算能起到备份还原的作用,其使用起来也太困难了,也不支持秒级还原和多副本。
有人说,和Linux类似的Mac系统有Time machine可以实现更高级的还原和备份,但是我们来看看Time machine能做什么。
Time Machine 是 Mac OS X 内置的备份工具,它可以自动按照每小时,每天或者每周的间隔来对你的 Mac 进行备份操作,你可以直接在外接的硬盘上进行备份,也可以在本地网络硬盘上进行备份。
![f0a643d4669d72e566d40965b33cce64.png](https://img-blog.csdnimg.cn/img_convert/f0a643d4669d72e566d40965b33cce64.png)
Time Machine
Time Machine 只能做到备份恢复的作用,而且需要用到外部存储来存储备份。Time Machine 进行的第一次备份,备份文件会很大,因此可能需要一段比较长的时间才能完成。但是当第一次备份完成后,后来的每个后续备份应该都比较小(备份也会更快),因为后面的备份只是增量备份。
这跟Windows上的还原精灵比差远了。windows上还原精灵的特性,它一个都不拥有。
说白了,Time Machine就是个高级版的压缩打包软件而已。Ubuntu上也有类似Time Machine的软件,但它连Time Machine都不如,更别提和还原精灵比了。
当然,在Windows上的一些还原精灵也有了Mac版,比如冰点还原精灵Mac版,但是它的工作原理和功能与Windows版本是不一样的。
2.Linux不需要还原精灵这种软件吗
有人说,Linux的设计思想不需要还原精灵这种系统软件。这显然是不对的。
Linux的配置更分散,也更脆弱,尤其是作为桌面系统使用,常常因为更新软件或驱动导致系统崩溃的,理论上来说是更需要还原精灵的。
还原精灵会带来性能损失吗?理论上会,但没有证据表明这种损失会影响到用户的正常使用。所以无论从哪个角度来说,不是Linux不需要还原精灵,仅仅是Linux 上没有这种软件而已。
Linux服务器一般不需要还原精灵这类软件,更多采用RAID和多副本机制来做备份,不能做到定点还原功能。
3.Linux上为什么没有还原精灵和影子类系统软件
这就要从还原精灵的原理说起了。还原软件要么是夺取南桥芯片的I0控制权(这种通常需要配合硬件使用),要么控制硬盘的INT13中断,要么改写硬盘的MBR(主引导记录)。
也有还原精灵利用驱动的形式加入操作系统的内核模块中来实现其还原功能的,它和硬盘原来的驱动是一种上下层的关系,也就是说所有对硬盘的访问首先得经过它的“过滤”然后再提交给硬盘原来的驱动处理,从而达到还原的目的,这种技术叫“过滤驱动程序”。
硬件还原卡可分两种类型,一种是普通的还原卡,物理上不直接接管硬盘读写。
普通还原卡安装在主板插槽里,在卡上有一片ROM芯片,根据PCI规范,该ROM芯片的内容在计算机启动时将最先得到控制权,然后它接管BIOS的INT13中断。将FAT、引导区、CMOS信息、中断向量表等信息都保存到卡内的临时储存单元中或是在硬盘的隐藏扇区中,用自带的中断向量表来替换原始的中断向量表;再另外将FAT信息保存到临时储存单元中,用来应付我们对硬盘内数据的修改;最后是在硬盘中找到一部分连续的空磁盘空间,然后将我们修改的数据保存到其中。这样,只要是对硬盘的读写操作都要经过还原卡的保护程序进行保护性的读写。
另一种是新型还原卡,物理上直接接管硬盘读写。
这种新型还原卡跟普通还原卡,原理上已经有了很大的不同,首先不完全依靠BOOTROM来取得控制权了,而是总线硬件直接获得控制权,这样更可靠地获得对计算机数据资源的控制;另外,因为直接控制了硬盘的物理读写能力,这样可以实现硬盘硬件读写的驱动和还原算法合二为一,也就是没有普通还原卡的过滤驱动了。这样就彻底避免了普通还原卡还原不可靠的问题。
这样看起来,似乎硬件还原卡和操作系统的关系不太大,理论上Linux也可以使用硬件还原卡。那软件还原呢?
软件还原的主要原理都是在操作系统的驱动上做文章。这就有个文件了,Windows上的文件系统都是集成的,而且格式固定,而Linux不是,Linux支持ext/fat/xfs/btrfs等多达十几种文件格式,文件管理系统的具体实现,Linux内核并不负责。
Windows 10自带还原功能,利用的卷影复制技术,而Linux呢,它所支持的文件系统,有的甚至连日志都不支持。
Linux并不是无法实现还原精灵和影子系统这类软件,而是由于其文件系统实现和内核分离,以及其驱动管理跟Windows不一致,导致没法实现统一的还原功能。
那Linux可以在内核驱动层面上实现还原精灵这样的功能吗?目前来看不大可能。
Linux其实也可以实现还原精灵和影子系统
前面说了,Linux文件管理系统的具体实现,Linux内核并不负责。也就是说,可以设计一个支持还原精灵的文件系统出来。这样的文件系统还真有,它就是Btrfs文件系统。
Btrfs 被称为是下一代Linux 文件系统,目标是取代Linux目前的ext3文件系统,改善ext3的限制,它是一种新型的写时复制 (COW) Linux 文件系统已经并入内核主线。Btrfs 设计实现高级功能的同时,着重于容错、修复以及易于管理。它由 Oracle, Red Hat, Fujitsu, Intel, SUSE, STRATO 等企业和开发者共同开发, Btrfs 以 GNU GPL 协议授权。
Btrfs有快照功能,其是基于COW(copy on write)实现的。
然而常见的主流Linux发行版都没有默认使用Btrfs文件系统,通常默认使用Ext4或XFS,主要是因为Btrfs会有一定的性能损失和丢文件风险。openSUSE对Btrfs支持则比较好。
![689b88fcee22dbe87245db55ff4c607a.png](https://img-blog.csdnimg.cn/img_convert/689b88fcee22dbe87245db55ff4c607a.png)
openSUSE上的快照还原软件
可以这么说,Btrfs实现了最接近于windows上的还原精灵和影子系统的一些特性。
那非openSUSE或者其他Linux文件系统可以享受到这种功能吗?可以的,只需要你把文件格式转为Btrfs即可。
总结
Linux上确实缺少Windows上的还原精灵和影子系统这样的应用软件,但是可以通过使用有COW特性的文件系统来实现类似功能。在Linux上,影子系统不是通过应用软件实现的,而是通过文件系统实现的。当然,和Windows上的实现比,还是有差距的。