首页 > 代码库 > OSX: 逻辑卷管理系统Core Storage(1)

OSX: 逻辑卷管理系统Core Storage(1)

Mac高大上嘛?

Mac因为贵就高大上了?Mac因为没有这个哪个就不高大上了?本文没有结论,只是回归技术本源,是不是高大上还要大家自己评说。


大多数Mac用户可能并不在乎苹果的OS X操作系统缺少一个有效的逻辑卷管理(LVM)系统的事实,只要使用上没有妨碍就好。最早从10.7的狮子系统开始,OS X就带有一个叫做核心存储的功能,因为Apple并没有大力宣传,所以知道的人并不多,究其没有公开的原因,从后面的讲述来看,可能主要是因为它并不完善,或者从历史上看,Apple是不是还在犹豫如何处理,抑或是忙于iOS系统的开发完善了吧,毕竟那才是Apple得以生存发展和利润的增长来源,也是它的重点发展方向。


为什么?

随着计算机技术的发展,如何有效地管理/存储/备份和恢复越来越多的数据成为了一个瓶颈,随着各种技术的出现,其中逻辑卷管理的使用和发展,可以灵活管理巨量存储的强大功能,给管理越来越大的磁盘(们)带来了生机。

古老的磁盘管理技术已经不适应当前的技术发展。大家都熟悉,比如Windows使用MBR的方式,在磁盘的0扇区存储最多四个主分区,来把物理的一整块磁盘,分成多个分区供用户使用。在Windows中用户可以看到的C:, D:的。当初之所以要给磁盘分区,因为磁盘空间很大,而数据相对来说小,那么把磁盘分成区块把数据分区存储是一个自然的思路。一方面,旧有的技术无法有效管理越来越大的物理磁盘空间,比如你的Windows电脑可能不识别4TB的硬盘,只能使用2TB,需要别的技术来访问所有空间;另一方面,磁盘的物理空间的增长无法满足数据的暴增式增长,比如超大的数据库,比如象Yahoo和Google那样如何管理PB(1PB=1024TB)的数据;另外磁盘空间的管理不灵活,比如在不破坏数据的情况下扩展空间或者把两个分区合并为一个,而Windows下面的subst命令以及在类Unix中使用mount,将一个分区连接到一个子目录上的方式只是不得已的解决方式,无法根本解决灵活性的要求。所以多方面的因素迫使操作系统来解决这些发展的需求。

上图是解释MBR管理磁盘空间的图解,来源http://www.karbosguide.com/hardware/module6a6.htm

上图是解释MBR管理磁盘空间的图解,来源http://www.karbosguide.com/hardware/module6a6.htm


于是逻辑卷管理作为一种存储虚拟化被广泛地得到业界的接受,并已经应用与好多的系统,虽然他们目前主要是在大型机器或者服务器上使用,不过普通用户同样可以得益于这个技术。


温故知新

众所周知的, 当代的OSX系统使用Apple开发的HFS+作为系统默认文件系统,其实它早在OS X之前1998年的OS 8.1中就存在了,为什么有个+呢,因为它的前任叫HFS, 是1985年开始使用并替代MFS,MFS最终被苹果在OS 8.0是完全摒弃;HFS一直被支持到10.6开始不能写和创建HFS为止,HFS+完全取代了HFS,到了2002年日志功能(Journaling)才被添加到HFS+中,于是有了现在的JHFS+, 后来在10.3中支持了Unicode,10.4中支持了ACLs,以及10.6添加了压缩功能(不过应用很少),直到10.7系统,苹果终于引入了部分的逻辑卷管理功能。


另外一方面,Apple很早使用EFI固件并支持GPT(GUID分区表),这使得Apple系统可以更好地支持大硬盘空间以及分区表冗余,这方面Apple用户比PC世界中的要幸运,这个些方面苹果确实走在Windows系统前面的,虽然在逻辑卷管理方面落后,这可能是因为Windows有着更强的面向企业的服务器方面的需求,而Apple一直是致力于个人市场。

上图显示MBR和GPT的区别,来自于:http://technet.microsoft.com/en-us/library/cc739412(v=ws.10).aspx

事实上,Windows在接受GPT方面与OS X不尽相同,Windows Vista/7/8安装到GPT分区上并启动(必须是基于64位的UEIF系统)还是有些麻烦。虽然理论上来说两者都是支持GPT的操作系统,理论上他们两个可以同时存在与基于EFI的硬件和GPT分区之上,但就目前来说,基于Apple和PC的硬件环境的不同,OSX依赖于Apple硬件, Mac也没有BIOS, 不用BootCamp仅使用GPT同时安装OS X和Windows在Mac上,无论从最后的功能上(Windows不支持XP模式等等)还是实际安装操作上似乎都不现实,毕竟在安装驱动的时候Windows还是需要BootCamp的嘛。

在向前和广度兼容方面,微软做了相当大的努力,也正是因为这个兼容承诺,Winodws在某些方面无法大踏步地前进,与用户同时付出了性能等方面的牺牲。在Apple来说,由于硬件和固件方面的私有性,在操作系统兼容性上要简单得多,基于Apple系统的支持列表上,随着新系统的发布,它正在稳步地淘汰更旧的Mac硬件。


核心存储(Core Storage)的由来:

这个东东有啥用处?举个实例,大家可能听说过Fusion Drive和FileVault v2吧,它们的核心技术就是Core Storage。


逻辑卷管理早已经被流行的操作系统所采用,无论是基于UNIX的IBM的AIX和HP的UX,Linux2.2的核心,Sun的SunOS和Solaris等等,比如在Windows世界里,最早2000年时在Windows 2000中引入了LDM,在Window 8和server 2012中又被更先进的Storage Spaces取代,而Storage Spaces是对于逻辑卷管理的更高一层的抽象。而Sun的ZFS是这些实现技术中的佼佼者,它被广泛地移植到了很多系统上,不仅因为提供的功能多强大,而且也开源,当时有一种把ZFS移植到所有系统中的热潮。


虽然说在很早前,大概2001年OS X 10.1的时候,就提供了对软件RAID0和1的支持,它在服务器上使用的比较广,普通用户极少涉及,可是支持逻辑卷管理系统到10年后的10.7系统才算真正开始,而这之前,Apple经历了一段曲折的道路。


当初10.5的时候,OSX系统支持在命令行上对于ZFS的只读功能,当时Apple员工说考虑将会引入128位的ZFS作为OS X的逻辑卷管理系统,后来Apple宣称会在10.6的服务器版本中支持对ZFS的读写(1)。2007年的时候,在Apple的Mac OS Forge上提供了没有安装程序的Mac版本的ZFS移植源码,但在2009年Apple宣布将会关闭ZFS项目,原来的关于ZFS的讨论也被删除。于是,在10.6的发布中ZFS没有出现在众多的特性列表中,Apple也没有给出官方的解释。后根据数据存储专家Robin Harris的叙述(2),是因为ZFS的东家Sun(当时Oracle还没有收购Sun)坚持使用CDDL协议(它准许使用开源和私有专利保护的软件,所以一般来说它和GPL不兼容,这也使商业使用和后续开发变得相对复杂),含有商标和专利保护,这促使Apple最终放弃了ZFS。从OpenZFS上来看,它们也不打算将CDDL授权协议转移到兼容GPL的框架下。双方来说这不是一个双赢的结局,对最终用户也是一个缺憾,不管怎么说这些都是5年前发生令人遗憾的事情。


当初Apple的那些代码被保留了下来,并作为开源项目运作中,目前来说,可用的OSX版本的ZFS有开源的openZFSonOSX,和MacZFS(ZFS-OSX)等。ZEVO是第一个商业化的ZFS for Mac软件,ZEVO是由原来工作在Apple20多年的资深软件工程师Don Brady组织的公司开发的,他是HFS+项目的团队领导和ZFS项目的发起和主要架构设计者。他的离开是和Apple最终决定放弃ZFS相关,作为一个热爱自己从事技术项目的技术人员,我钦佩于他那份追求梦想的信念。


但是如果没有操作系统内置的支持,依然不能算是一个最终解决方案,比如如果存储在ZFS的数据,在灾难恢复的时候相比较于OS X的时间机器(Time Machine)来说,系统和数据的恢复就比较麻烦。

于是我们迎接来了不完善但已经是相当稳定的操作系统内置的卷管理器,也就是Core Storage.


本图大概解释了传统的与支持LVM的文件系统的区别

待续…...


参考:

1. http://www.macrumors.com/2008/08/08/zfs-and-snow-leopard-to-speed-up-solid-state-drive-performance/

2. http://www.macrumors.com/2009/09/01/lack-of-zfs-file-system-support-in-snow-leopard-due-to-licensing-issues/


Logical volume management

Features new to Windows 8

Storage Spaces: FAQ

Windows 安装程序:使用 MBR 或 GPT 分区类型安装

示例:使用 Windows PE 和 DiskPart 配置基于 UEFI/GPT 的硬盘驱动器分区

启动到 UEFI 模式或传统 BIOS 模式

Mac OS X Lion Adds CoreStorage, a Volume Manager (Finally!)

Mac OS X, Mac OS X Server: How to Use Apple-Supplied RAID Software

ZFS on Wikipedia | MacZFS |OpenZFSonOSX | OpenZFS

What is ZFS, Oracle Solaris 11 ZFS Technology

Mac OS X 10.7 Lion: the Ars Technica review

ZFS Comes to OS X Courtesy of Apple‘s Former Chief ZFS Architect