返回列表    

[系统] 全球首发!Fusion Drive自己做!

本帖最后由 soul916 于 13/3/15 06:09 PM 编辑

我有一台2011版低配Mac Mini, 从ifixit订购了加装第二块硬盘的套装,装上60G的固态硬盘来加速应用,用户数据还是存放在机械硬盘中,最终性能并不十分满意。10月的苹果新品发布会后每天在都在网上搜寻关于FusionDrive的信息,周未前终于找到了答案,尝试配置了一下,目前状况良好,将心得分享给大家。
配置达到要求并且熟悉命令行喜欢折腾的朋友可以尝试一下,在绝大多数用户之前(新的imac还没卖,MacMini估计还没到货吧)享受苹果的新技术。

欢迎大家交流。如果哪位朋友成功的配置了FusionDrive,方便的话请分享一下使用的硬件和直观的性能感受,以备更多用户参考!

新手推荐下面这篇文章,图文并茂,易于操作
https://gist.github.com/4033374

1. Fusion Drive是什么?
苹果新品发布会后,有很多文章都试图解释FusionDrive的原理(请搜索),但都没有提供细节内容。10月25日苹果官网发布的KB: Mac mini (Late 2012) and iMac (Late 2012): About Fusion Drive终于透露了FusionDrive的秘密。

FusionDrive将固态硬盘和机械硬盘融合加速了磁盘访问,FusionDrive是一个纯软件的加速方案,苹果文档中的截屏透漏了FusionDrive技术基于Mac OS X 10.7版本加入的CoreStorage技术。

CoreStorage是一个硬盘逻辑卷管理系统,最新的版本会提升固态硬盘访问的优先级别,将常用数据块迁移到固态硬盘,并且优先在固态硬盘写入数据(10.7版本中CoreStorage只能用于单个硬盘的FileValut磁盘加密)。CoreStorage原理跟Linux中的LVM及其它企业级的硬盘逻辑卷管理系统概念非常近似,但是其它系统目前并未提供对固态硬盘的优先访问及常用数据自动迁移功能.

关于CoreStorage的细节信息请参考Mac OS X Lion Adds CoreStorage, a Volume Manager (Finally!)。文档中提到不能在两块物理硬盘上创建LV的限制在10.8.2中已经不存在了。更多关于逻辑卷管理技术的原理和细节可以参考Linux LVM。

苹果文档中提到10.8.2及以上的系统都可以使用TargetDisk模式远程访问FusionDrive所以理论上任何版本高于10.8.2的苹果系统都应该可以使用FusionDrive

在仔细研究了专为新硬件提供的10.8.2追加升级包中的diskutil工具后,发现没有新增加的参数,这才放心进行了尝试。感谢hanscaoyinan分享的文章Fusion drive on older Macs? YES!作者提供了详细的性能及数据自动迁功能测试,证实了自制的FusionDrive具备苹果官方宣传的主要功能,对于频繁使用的数据确实有自动迁移的能力,另外该作者也证实FusionDrive可以在USB硬盘外置硬盘进行创建,FusionDriver的自动数据迁移是数据块级的操作而不是苹果发布会上暗示的文件级操作。

已确认SSD Trim功能在Fusion Drive中是生效的。

2. Fusion Drive系统要求
操作系统必须是Mac OS X Mountain Lion 10.8.2及以上版本
苹果10.8.3已发布,新装系统建议使用最新版系统进行配置。
系统中需要至少有一块内置固态硬盘和一块内置机械硬盘(目前只有部分能够装双硬盘的机器可以支持,改造起来可能成本不低)

已成功配置的硬件列表:
MacMini 2011 + ifixit双硬盘套件 + Gskill 60G FM-25S2S-60GBP2 SSD + 原装500GHDD
MBP17寸2011 + 240GB SATA-3 SSD + 第三方HDD(安装在光驱位)看本站以前的贴子因SSD比HDD防震推荐将SSD放在光驱位内
MBP2010 + 128G三星SSD(安装在光驱位) + 1THDD
                感谢网友hanscaoyinan配有大图的共享贴:http://mac.pcbeta.com/thread-120506-1-1.html
Mac + 128GSATASSD + 750GUSBHDD
                http://jollyjinx.tumblr.com/
MBP2011 + 128G SSD(光驱位) + 500G HDD
               感谢yuanjs666

非常规的双硬盘方案,不保证能够正常工作,如想尝试请谨慎!
感谢hanscaoyinan分享的文章DIY Fusion Drive: an attempt to retrofit a pre-fall 2012 Mac with an SSD and a traditional hard disk, 步骤基本相同,证明了MacBookPro光驱位双硬盘方案可以配置!

有条件的同学也可以测试一下多块固态硬盘配置RAID后是否能为系统进一步提速

3. FusionDrive配置
苹果为新版硬件专门放出了一个10.8.2的追加升级包,跟FusionDrive有关的驱动及工具都已经被更新,新出售的机器应该已经带有这些更新,目前尚不清楚标准10.8.2中FusionDrive功能是否稳定,配置完成后请务必使用TimeMachine随时备份数据!
以下操作会清除所有系统数据!请务必做好备份工作!
苹果文档提到了图形界面的Disk Utility在新发布的Mac机器中是一个特殊的版本,请尽量不要用图形工具对FusionDrive做任何操作!

基本方法就是在安装系统前用diskutil命令行工具将固态硬盘和机械硬盘合并为一个LV并安装操作系统
因为没有图形界面的配置工具,不熟悉命令行的同学请慎重
以下的操作不会对硬件产生任何损伤

首先使用TimeMachine备份系统
使用10.8.2的安装U盘启动,制作方法请自行搜索

安装盘启动后打开Terminal使用以下命令将两块硬盘清空
  1. diskutil eraseDisk JHFS+ SSD <DiskNameOfSSD>
  2. diskutil eraseDisk JHFS+ HD <DiskNameOfHDD>
复制代码
创建LVG
  1. diskutil coreStorage create MyLVG <DiskNameOfSSD> <DiskNameOfHDD>
复制代码
显示LVG信息(在MyLVG下会有可用的容量及LVG的UUID下一步需要用到)
  1. diskutil coreStorage list
复制代码
创建LV
  1. diskutil coreStorage createVolume <LVG UUID> JHFS+ MyLV <LVG容量>
复制代码
显示LV信息:
  1. diskutil coreStorage list
复制代码
完成后退出终端并启动安装,选择MyLV做为系统安装目标即可
系统安装后使用TimeMachine恢复数据,FusionDrive升级完成!
26

评分次数

本帖最后由 soul916 于 12/11/1 07:52 AM 编辑

关于创建LV的方法,动手能力强的同学也可以考虑使用diskutil coreStorage convert命令进行单块硬盘的无损转换(请务必备份数据再进行操作),进行转换后,将新的硬盘加入LVG。根据网友hanscaoyinan的实验及网上搜索的结果,目前版本的coreStorage使用这种流程配置可能还是有BUG,因没有亲自尝试过不保证能够完成配置,请参照上面coreStorage文档继续

目前简单的测试表明大部分应用及常用的数据都是直接通过固态硬盘访问。
太大的文件如虚机的虚拟硬盘通过机械硬盘访问。
小规模的数据写入直接写入固态硬盘。
大规模的数据写入会优先在固态硬盘上,数据写入过多会使用机械硬盘继续写入。


另外发现在10.7系统中第三方固态硬盘自动休眠后死机的问题已经消失了,不确定是否因为系统升级修复。

在FusionDrive上安装系统后,安装程序没有创建恢复分区,无法从硬盘进入恢复模式。
估计苹果出售的系统也有这个问题,官方文档提到在机器出问题时需要进入Internet恢复模式

尝试使用图形的磁盘工具修复了权限,重启后未发现问题

使用了一段时间感觉系统中并没有很多的数据在两块磁盘间移来移去,目磁盘上的数据共有140G,固态硬盘有60G。

目前看起来FusionDrive会导致CPU和内存使用有所增加。

另外推荐一个软件Trim Enabler, 苹果机器上使用第三方SSD不会自动打开Trim功能,可以使用该软件开启。
http://www.groths.org/?page_id=322

发现系统初始化时先是在一个专门的分区上开始的。以下是diskutil list命令的输出
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:          Apple_CoreStorage                         499.2 GB   disk0s2
   3:                 Apple_Boot Boot OS X               650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *60.0 GB    disk1
   1:                        EFI                         209.7 MB   disk1s1
   2:          Apple_CoreStorage                         59.7 GB    disk1s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk1s3
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS MyLV                   *556.1 GB   disk2
系统在 安装时为每个硬盘都创建了 Apple_Boot Boot OS X, 这个分区应该是用来完成启动时的一些初始化工作的,应该也用于RAID的初始化。这个分区的内容:
.
├── System
│   └── Library
│       └── CoreServices
│           ├── PlatformSupport.plist
│           ├── SystemVersion.plist
│           └── boot.efi
└── com.apple.boot.P
    ├── Library
    │   └── Preferences
    │       └── SystemConfiguration
    │           └── com.apple.Boot.plist
    ├── System
    │   └── Library
    │       └── Caches
    │           ├── com.apple.corestorage
    │           │   └── EFILoginLocalizations
    │           │       ├── Lucida13.efires
    │           │       ├── battery.efires
    │           │       ├── disk_passwordUI.efires
    │           │       ├── flag_picker.efires
    │           │       ├── guest_userUI.efires
    │           │       ├── loginui.efires
    │           │       ├── preferences.efires
    │           │       └── unknown_userUI.efires
    │           └── com.apple.kext.caches
    │               └── Startup
    │                   └── kernelcache
    └── usr
        └── standalone
            └── i386
                └── EfiLoginUI
                    ├── Lucida13.efires
                    ├── battery.efires
                    ├── disk_passwordUI.efires
                    ├── flag_picker.efires
                    ├── guest_userUI.efires
                    ├── loginui.efires
                    ├── recoveryUI.efires
                    ├── recovery_user.efires
                    └── unknown_userUI.efires
可能因为FusionDrive的初始化需要一些时间,所以启动性能提升是1.7x,常规访问提升是3.5x
4

评分次数

我曾经有想过SSD+HDD,然后把/home挂载在HDD上,达到类似目的但是Fusion Drive应该是完美解决速度和容量的方法,而且系统里面也不会多出一块硬盘的图标。期待更多人参与进来,Mark一下!
技术贴,不错
技术贴要顶!
目前一块SSD够用了,暂时不考虑加一个HDD
其实这个跟英特尔的SRT还是有区别的...比较看的话还是SRT加速更彻底一些...fusion加速对象的规则单一了...SRT则是对全部文件进行加速...包括系统文件和各种零碎文件...
1

评分次数

本帖最后由 soul916 于 12/10/28 08:48 PM 编辑

6# xxjjyy
感觉SRT跟FusionDrive最终使用起来应该也不会相差太远。
基本上都是频繁使用的数据和数据写入优先使用SSD来完成。

目前还不清楚FusionDrive加速到底是文件级的还是数据块级的。
依照LVM的原理来看因为LV在文件系统的下层,FusionDrive很可能跟苹果发布会上所讲的不同,应该是一个数据块级的加速。
真牛逼啊,哈哈,看来苹果的技术这么快就被破解了啊,哈哈
退而结网
thanks for sharing
本帖最后由 hanscaoyinan 于 12/10/28 10:29 PM 编辑

等明天或后天ssd到了以后就试一下!

btw: thx for sharing
等明天或后天ssd到了以后就试一下!

btw: thx for sharing
hanscaoyinan 发表于 12/10/28 10:22 PM
期待更多的人报告
等明天或后天ssd到了以后就试一下!

btw: thx for sharing
hanscaoyinan 发表于 12/10/28 10:22 PM
期待期待
太棒了,一开始还以为苹果的这个技术是类似希捷的混合硬盘呢,看了楼主的文章很是激动。这下子很有自己组建一个fusion drive的冲动。
有朋友确认了笔记本不支持吗
本帖最后由 soul916 于 12/10/29 10:19 AM 编辑
有朋友确认了笔记本不支持吗
mousewolf 发表于 12/10/29 10:05 AM
之前的回复有问题

又重新搜索了一下,发现了MacBook Pro的双硬盘方案
http://www.cnbeta.com/articles/151826.htm

FuisionDrive必须要有两块硬盘才能配置,MacBook Air应该是无望了。
返回列表