Knoppix|镜像格式二十年:系统镜像的螺旋进化
_原题为 镜像格式二十年:系统镜像的螺旋进化
众所周知 , Docker 始于2013年的 dotCloud , 迄今刚刚七年 , 如果你刚好在圈中经历了2013-2015年这段早期岁月的话 , 自然应该知道 , 最初的 Docker = LXC + aufs , 前者就是所谓的 Linux 容器了 , 而后者则是我今天要聊的镜像 。千禧年:惊艳的 Live CD
说到 Linux distro , 除了做差异化的界面主题之外 , 核心差异一般都在于:
- 如何更方便地安装;
- 如何更方便地升级;
第一次见到 liveCD 时我内心是震惊的……这我当然是赞同的 , 那时我也是震惊的同学之一 , 要知道 Knoppix 在 2000 千禧年就来到了世界 , 而它所基于的著名的 Debian , 直到2005年6月 , Sarge (3.1) 发布的时候才正式在 stable release 里带上了图形界面的安装程序 debian-installer (简称 d-i) , 此前版本的安装还在用文本菜单 。 就在这个年代 , 这样一个开光盘即用、启动起来就是图形界面的系统 , 给我们这些玩家带来的震撼 , 当然是可想而知的 。 那时候的 Live CD 就是十三年后的 Docker , 绝对配得上“惊艳”两个字 。
文章图片
要知道 , 一张 700MB 左右的光盘里塞下个完整的操作系统并不容易(当然有人开头之后也不太难 , 后来我爱的 DSL 可以做到 50MB) 。 Knoppix 有个很棒的想法——把装好的操作系统给压缩一下 , 放在光盘里 ,随用随解压 , 这样 , 一张 700MB 光盘里可以放下大约 2GB 的根文件系统 , 这样就跑 KDE 桌面也就没啥问题了 , 当时 , distrowatch.com 上可以看到 , 一大片 distro 都是基于 Knoppix 魔改的 , 足见其影响力 。
进化:可读写层与 UnionFS Knoppix 在诞生之初的一个执念是“绝不碰本地存储一根指头” , 而光盘 , CD-ROM , 所使用的 ISO9600 文件系统也是只读的 , 这无疑暗合了当今流行的“不可变基础设施”的潮流 , 但是 , 即使在今天 , 没有可写文件系统对于很多 Linux 软件仍然是非常困难的 , 毕竟随随便便一个程序也要写一点配置文件、状态信息、锁、日志之类的嘛 。 而诞生之初的 Knoppix 是不可写的 , 那么 , 要有什么东西要罗盘 , 就得手工挖掘出本地硬盘来挂上 , 或者是挂个 NAS 到 /home 或其他挂载点上来 , 当你不想只是做个紧急启动盘的时候 , 这就有点麻烦了 。
如果我们从今天穿越回去 , 毫不费力就可以指出 , 用 overlayfs 加上一个 tmpfs 做可写层嘛 。 但是 , overlayfs 要到2010年才首次提交 patchset , 2014年才被合并到 3.18内核(这中间 , 当时的淘宝内核组也有不少贡献和踩坑呢) 。 当然 , 比 overlay 早的类似的 unionfs 还是有的 , Docker 最早采用的 Aufs 就是其中之一 , 它是2006年出现的 , 这里 AUFS 的 A , 可以理解成 Advanced , 但它最早的意思实际是 Another——是的 , “另一个 UFS” , 而它的前身就是 UnionFS 。
在2005年5月 , 也就是十五年前 , Knoppix 创造性地引入了 UnionFS , 而在一年半以后的 5.1 版本中 , Knoppix 引入了当年诞生的更稳定的 aufs , 此后 , 包括大家熟悉的 Ubuntu LiveCD、Gentoo LiveCD 全都使用了 aufs 。 可以说 , 正是 Live CD 们 , 提前了8年 , 为 Docker 和 Docker Image 的诞生 , 做好了存储上的准备 。
这里简单说一句给不了解的人听 , 所谓 union fs , 是指多个不同文件系统联合(堆叠)在一起 , 呈现为一个文件系统 , 它和一般的 FHS 规定的那种树装组织方式是不同的 , 如下图 , 对于左边的标准的目录树结构 , 任何一个文件系统 , 挂载在树上的一个挂载点 , 根据路径 , 就可以指到一个确定的文件系统 , 比如 , 下图中 , 所有的 /usr/local/ 下面的路径都在一个文件系统上 , 而其他 /usr 就会在另一个文件系统上;而 UnionFS 是多层堆叠的 , 你写的文件会停留在最上层 , 比如图中 , 你修改过的 /etc/passwd 就会在最上的可写层 , 其他的文件就要去下面的层中去找 , 也就是说 , 它允许同一个目录中的不同文件在不同层中 , 这样 , Live CD 操作系统跑起来就像真正的本地操作系统一样可以读写所有路径了 。
文章图片
块或文件:Cloop 与 SquashFS 让我们把目光放在只读层上 , 这一层是 Live CD 的基础 , 在 Live CD 还没有 union FS 来做分层的时候就已经存在这个只读 rootfs 了 。 对 Knoppix 来说 , 这一层是不能直接放完整、无压缩的操作系统的 , 因为在21世纪初 , 大家都还在用 24x 到 40x 速光驱的时代 , Knoppix Live CD 面临的一个大问题是 700MB 的光盘和庞大的桌面操作系统之间的矛盾 。
推荐阅读
- Windows|Windows 10 19042/20201最新官方ISO镜像开始提供
- IT之家:微软:Win10 20H2 ISO官方镜像还在路上IT之家2020-08-26 16:29:590阅
- Windows|全新开始菜单上线 Win10 20H2正式版本号曝光:ISO镜像马上来
- 镜像娱乐|环球音乐版权X拳头游戏:创作营推动游戏音乐的“双向翻译”
- |青岛市市场监管局加大电子商务平台合同格式条款监管力度 维护网络交易环境
- 减肥餐搭配|因翻菜被批评没礼貌后,有谁留意到赵丽颖的回应?格式大小一目了然
- Linux|[图]Ubuntu 20.04.1 LTS发布:安装镜像已开放下载
- |北京链家“五星经纪人”党晶晶:不被“格式化” 讲求“方法论”
- 北京链家|北京链家“五星经纪人”党晶晶:不被“格式化” 讲求“方法论
- 一些企业通过格式条款提高门槛阻碍消费者维权
