Thursday, July 28, 2011

Mac OS X系统应该如何维护和保养

  Mac OS X系统的日常维护和保养究竟应该包括哪些内容,一直众说不一。Web上的文章更是花样百出,少则一页,多则十几页,甚至在某些问题上彼此矛盾,即使是苹果自己的知识库的文章都有相互矛盾的地方。比较全面的维护和保养的文章,一般都提及了以下内容:

1、运行日常维护脚本(Scripts);

2、清除缓存(Caches);

3、修理和备份属性文件;

4、清理磁盘碎片(Defragment);

5、修复磁盘权限;

6、检查并修理磁盘;

7、清理桌面;

8、重置Safari;

9、重建Spotlight数据库。

  更具体的,甚至规定了每日、每周、每月以及每季度用户应该如何如何。从内容上看,它们实际上包括了检修甚至是急救的内容,还包含一点系统优化的内容。而上面没有提到的内容,则包括日常备份、软件及固件的升级、笔记本电池软件的校正。

  实际上,从用户的日常使用来说,终归苹果电脑不是一辆车,不能象给车进行定期维修一样往修车店里送,而且除了某些基本的维护外,也没必要每次保养都上全活儿。更主要的,如果在日常使用中每天、每星期、每月、每季度甚至每年都要花费那么多的时间来进行维护和保养,这些时间累计起来恐怕比某些用户的用机时间都长。即使是系统管理员也不可能对所管理的所有机器都定期上全活。甚至,我怀疑那些洋洋洒洒大书特书Mac OS X维修和保养的人,对自己的机器也是那么保养的。

  维护和保养的目的其实应该以保证系统目前的性能为主,也就是说通过维护和保养,让你的Mac OS X能够保持目前的性能就已经足够了。这看起来很容易,但实际上并不是如此。换个说法就是,从系统和软件初装一切就续开始,通过一段时间的使用,3个月、半年、一年甚至更长时间,你Mac OS X系统还能跟初始安装时的性能相差无几,那就说明你的机器维护和保养做得相当充分。可是,有多少人能做到这点?

  首先,先来逐条研究一下经常提到的维护和保养措施,来看看应该在什么时候使用这些步骤,然后再归纳一下,看看用户日常应该做些什么。

1、运行日常维护脚本(Scripts)

  Unix系统下有几个脚本文件,最主要的位于/etc/periodic/下的文件夹中。以前,由于Unix系统往往做为公司或组织信息系统的核心,所以一般也不停机。这些脚本的设计目的,就是针对不停机的Unix进行一定的清理。

  每到夜里3点15分,系统就会开始运行每日清理脚本对系统进行清理。根据不同的Mac OS X系统,这些清理包括清除CrashReporter、tmp文件夹里的文件、清除垃圾文件、检查次系统状态、更新系统日志、备份NetInfo和asl日志等。清理完毕将在/var/log/文件夹下产生daily.out文件。每周六夜里3点15分,系统开始运行每周清理脚本进行每周清理。清理的内容包括重建locate和whatis数据库,并各种日志进行更替。最后在/var/log/文件夹下产生weekly.out文件。每月第一天夜里5点半,系统执行月清理脚本,更替安装日志和传真文件,最终生成monthly.out。在更替日志过程中,旧的日志文件被压缩,系统产生新的文件,这样就节约了磁盘空间。

  整个作用机制(Leopard)是,系统的cron或launchd首先在硬盘下的系统资源库里的LaunchDaemons文件夹里找到com.apple.weekly.plist、com.apple.monthly.plist、或com.apple.monthly.plist然后到usr/sbin/里启动periodic,periodic到/etc/defaults/下找到periodic.conf,然后根据该文件的设定,到/etc/periodic/下运行相应文件夹里的相应应用。应用启动的时间的设定在上述的plist文件中。Leopard以外的其它版本的Mac OS X的运作过程和清理内容与Leopard稍有不同。

  由于这些脚本文件是为不停机的系统编写的,因此,只有在预设的时间里,你的电脑没有关机或休眠时,它们才能如期完成任务。如果由于机器休眠或关机而错过了这些脚本的运行时间,下次什么时候运行就成了一个问题。在Leopard以前的版本,launchd是根据系统定时器来设定脚本运行时间的,而系统定时器不会计算机器的睡眠时间,因此会将定时的时间向后推迟,也就是说,如果你夜里1点15分机器处于睡眠,此时距离启动清理脚本的时间为2小时。当你早晨8点将电脑唤醒后,系统定时仍然以为需要两小时后才能进行清理,于是等到早上10点,你就会发现机器变得很慢,原因是此时机器自动启动了清理脚本。如果你每天只用1、2个小时的电脑,那将很难估计什么时候机器会做自动清理。因此,就不如没次开机或唤醒电脑后,主动运行这些清理脚本。运行这些脚本,可以通过终端的periodic命令也可以通过MacJanitor这个免费软件。使用终端命令,则需输入:

  sudo periodic 脚本名 回车

脚本名应该是daily、weekly或monthly。如果要同时运行三个维护脚本,则可输入:

  sudo periodic daily weekly monthly

第三方软件MacJanitor也具有这个功能。

  在Leopard上,情况有所变化。当机器从睡眠中唤醒后,一旦发现系统没有及时运行清理脚本,它会立即开始自动调用这些脚本。所以,Leopard的用户完全没必要考虑自己运行清理脚本的问题。

2、清除缓存(Caches)

  首先要弄明白什么叫缓存以及缓存是干什么用的,然后才能去考虑是否应该定期清除它。

  电脑里Cache到处可见,主板上有Cache,根据机型不同,可能是独立的硬件也可能在处理器上; 硬盘上有Cache; 文件系统里仍然有Cache,而应用,比如Safari,也有Cache。Cache本身是个法语词,表示的是临时储藏的地方。在电脑运行时,为了不让处理器等待数据,人们就建立起一个个临时存储数据的地方。总言之,由于Cache的存在,更由于系统和应用的相关数据储存在Cache中,系统和应用才会运行得快。换句话说,如果Cache是空的,在系统运行时,机器首先查看Cache,当没有发现相关内容时,再去调用相关应用,并将系统和应用的数据和状态存于Cache中,这个过程就比直接从Cache里能找到这些数据和状态慢得多。但是如果Cache里面的东西太多或空间不足,在调用新应用或者是应用产生的数据量过大时,部分内容需要从Cache中腾出去,才能在Cache中添加新的东西。这个腾挪的过程本身机器自己就可以控制。当然,如果要人为的清空缓存,可能比机器的清空速度要快些,但是在这么做的同时,你也将其它所有应用的缓存都清除了,这势必会影响那些应用的使用性能。主板上的Cache内存,在关机后,内容便消失了;而以文件形式保存到硬盘里的Cache,随系统或应用的使用情况而不同。

  可以说,只有少数情况下,需要人为地清除缓存。比如,缓存内的数据出现错误,造成系统或应用不能正常运行。当出现这种情况时,作为用户你可以感觉到系统或应用的不正常,此时,你可能采取其它的障碍排除的步骤,而清空缓存也是值得考虑的。

  通过上述的分析,不难看出,如果缓存内的数据没有错误,没必要来清空缓存,而清空缓存以后,反而会对性能产生负面影响。因此,这个做法应该看作是故障清除的手段,没必要日常定时进行。

  清空缓存的方法最好借助其它应用,而不是自己一步步地删除。可以采用Cocktail、Leopard Cache Cleaner或Tiger Cache Cleaner。Tiger的用户也可以使用AppleJack.

3、修理和备份属性文件(plist)。

  在系统资源库、硬盘资源库的Preferences和每个用户的Preferences文件夹内存在大量plist文件。这些文件里包含着系统或应用的设置,很多属性文件是在应用的使用中产生的。当应用出现故障或存在bug,通过删除这些属性文件,可以使应用恢复到初始状态。在某些情况下,用户通过应用界面下的预制或偏好设置(Preferences),将该应用个性化。这些个性化数据就存在相应应用的plist文件中。如果应用出现故障时,用户把它的plist文件删除,此时,应用可能得以恢复,但是,用户对该应用的个性化设置也丢了。这就是为什么需要备份属性文件的理由。

  但是,多数情况下,应用本身提供的可修改的属性是有限的,而且即使是个性化的信息很重要、很难记住,一旦该应用设置完毕,以后就都按这个设置进行了。因此,即使是备份,备份一遍也就够了,无须定期备份。因此,这不应该看作是日常维护的步骤。

4、清理磁盘碎片(Defragment)

  电脑在向磁盘读写数据的时候并不总是将数据写到持续的扇区。在电脑使用一段时间以后,经常编辑或变更的文件可能会一小片一小片地分散在硬盘各处。文件目录将硬盘上这些小片的位置通知给操作系统。对于操作系统来说,文件就象完整的一块儿一样。清理磁盘碎片则是将文件的所有片段复制、连接并转移到持续的扇区,然后重建文件目录。这样,就很便于操作系统对文件的查找。

  清理磁盘碎片对于Windows系统来说有其必要性,但是,对于Mac OS X系统来说,通常情况下是不需要的。这是因为苹果采用了若干技术尽可能地避免碎片的产生。首先,HFS+格式尽量避免磁盘空间的重复使用,其次,HFS+的宗卷可以延迟排布(Delayed Allocation),就是当某个磁盘段(block)面临书写数据时,为该数据所准备的磁盘空间大小不被算做自由空间,但是却没有列在自由空间表中,而这些数据则存于内存中,直到系统要清除缓冲或应用要求同步时,才一次性倾倒到硬盘上。除此之外,苹果系统还采用了”Hot-File-Adaptive-clustering”技术,即检查逐渐增加内容的文件,一旦发现该这些文件的碎片过多,系统就自动清理该文件的碎片。另外,由于现在的硬盘容量、缓存和速度的增加,许多应用对于添加和修改文件的处理,从以前的附加到文件上,改成现在的一次性重新书写改文件,这样就避免了碎片的产生。

  更应该注意的是,为了提高操作系统启动性能,苹果把一些文件放在一起,如果把它们挪到别的地方去,系统将运行缓慢。

  总之,除非进行影视文件的操作和编辑,需要大量的不间断的磁盘空间来储存文件,否则,很没必要对Mac OS X系统清理磁盘碎片。如果要清理碎片,可以使用TechTool Pro或iDefrag。

5、修理磁盘权限。

  使用磁盘工具修理权限会给人一种错觉,因为它并不能修理硬盘上所有的文件的权限。 对于使用苹果的安装软件(Installer)来安装的pkg文件,在软件安装后,会在硬盘下资源库Receipts文件夹里留下一些印记。在Mac OS 10.5以前的版本中,这个Receipts文件夹会将pkg文件存在该处,而对于使用Leopard的packageMaker软件所做的安装包来说,它在Receipts文件夹里只留下一个bom文件而不在保留pkg文件。 在使用磁盘工具修复权限时,系统要检查Receipts包里的文件,如果是pkg文件,它将检查包内的Archive.bom文件。bom文件里记录着应用安装时各个文件和文件夹的权限。磁盘工具的修理权限作用就是凭借bom文件来核对和修改文件权限。有些人甚至认为磁盘工具只能修复苹果自己的系统和应用文件,但苹果公司知识库文章25751中似乎说的是只要应用在Receipts文件夹中有bom文件这种收据,就可以检查该应用被安装后的文件或文件夹的权限。

  总之,用磁盘工具修理磁盘权限,所起的作用有限。一般情况下在安装软件更新或第三方软件时,由于所装的软件可能需要修改某些系统文件或文件夹的权限,并在安装结束时没有将所修改的权限更改回来,这可能会造成系统错误。另外,在突然停电、关机不当、或硬盘损坏等极端情况下,也可能出现错误,但如果是这种情况,整个系统都可能启动不了,就已经不是维护和保养的问题了。因此,在系统升级或用安装软件(第三方的安装软件或苹果的Installer-pkg文件)安装了新软件以后,需要做权限修复之外,就只有在故障发生时用来修复权限比较合适。当然,如果没事干,就去修复一下权限对磁盘也没多大坏处。

6、检查并修理磁盘

检查或修理磁盘并不能延长磁盘的使用寿命。而且,如果磁盘真的出现了严重问题,发生文件系统故障或操作系统故障以后,用户自然会在使用中感觉到系统不对。但是,如果磁盘中的文件系统出现了问题,可能会影响到以后存储的文件也出现问题。因此,定期检查磁盘状况是必要的。注意:这里所说的检查并修理磁盘,不是指磁盘的SMART状态,也不是磁盘的硬件情况,而主要是宗卷和文件系统的情况。如果你的系统在10.3以上,内置硬盘SMART不能通过验证,就应该赶紧备份系统和文件,并更换硬盘。

  Mac OS X中有很多检修磁盘的方法,最方便的是在启动系统时,按住shift键,用安全模式(Safe mode)启动。

  如果系统不是通过选择了”关机”(Shut down)或”重新启动”(Restart)而重新启动,比如Kernal Panic,停电或其它非正常因素造成的关机或重新启动,系统首先要调动fsck来修复硬盘。这也是为什么在出现异常以后,机器启动会比以往慢的原因。

  再有就是磁盘工具(Disk Utility)里的急救(First Aid)下的验证和修理磁盘功能。在验证磁盘时,可以使用启动硬盘内的磁盘工具对启动硬盘进行验证,也可以用系统安装盘启动,然后对磁盘进行验证。但是在修理磁盘时,则只能用系统安装盘启动。

  在终端下,可以采用diskutil或fsck_hfs对硬盘进行验证。diskutil是宗卷水平的工具,而fsck_hfs则是专门针对HFS或HFS+格式的磁盘的工具。使用diskutil时,应该输入:diskutil verifyDisk 或 verifyVolume 然后接路径。比如:

  diskutil verifyDisk /

将检查正使用的启动硬盘的状态。注意: 苹果公司知识库上的有关文章采用的是verify而不是verifyDisk或verifyVolume,显见没有及时更新。

用fsck_hfs时,要先用diskutil list或df -hl弄清楚盘符(Disk Identifier),然后输入:sudo fsck_hfs -l /dev/盘符。比如:

  sudo fsck_hfs -l /dev/disk0s2

  除此之外,就是在启动时,按住⌘和s键以单用户模式进入系统,然后使用fsck命令,对磁盘进行验证和修理。总之,以上的任何一种验证或修理方法并不花费很多时间,就可以达到维护的效果。

7、清理桌面

  这里说的清理桌面跟Mac OS 9里的重建桌面是两回事,后者是在操作系统出现故障时的一种紧急处理方式。而这里所说的清理桌面指的是桌面上不要放太多的东西,图标不要太多。因为每个图标都被操作系统看待成是Finder上的一个窗口,每个都会占有各自的一小块内存。这一点可以在安装了XCode以后,通过Utilities文件夹内Performance Tools里的Quartz Debug来检查Finder状况来得以验证。

  因此,如果桌面上文件太多肯定比干净的桌面所用内存要多。这是一个很简单而且很实用的技巧,也是一个良好的使用习惯。但是,一般情况下个人电脑桌面的空间也是有限的,而且如果在桌面上图标或文件过多,用户自己找不到这些文件,也将不得不清理。再有,就是要看电脑自身的配制,如果内存大,硬盘大,桌面上多几个图标并不防碍什么。至少,我的24” iMac外接17″苹果显示器上的延长了桌面都放满了文件,也没觉得性能降低多少。

  和桌面相比,硬盘里的文件量或自由空间多少其实更为重要,第三方应用,特别是那些免费应用会带来的系统故障和性能降低的可能性就更大。

8、重置/还原Safari (Reset Safari)

  Safari 3.0以前的版本,重置Safari是一步到位的过程,基本没有什么可选择的,一下就将Safari的历史和缓存等统统删除了。而Safari 3.0,允许用户选择所要清空的内容。从还原Safari的功能来看,可被清除的那些选项中存在的历史数据对用户的使用是有帮助的,而且其中若干选项可以通过修改Safari的偏好设置来调整机器自动清除文件的时间。只有在特殊场合下,用户或许需要立即清除这些项目中的某项或多项。将所有各项都清除的情况可能出现于Safari故障,或者在删除了Safari插件以后,强制Safari复原。还有就是便于网页开发员对网页的开发时,或许需要清除某些选项的内容。还原Safari本身并不能为整个系统提高性能带来多少帮助。而且,Safari最常见的故障往往源于第三方插件没有得到及时的更新,如果不完全将该插件拆除,仅还原/重置Safari,将不会帮助Safari的复原。

9、重建Spotlight数据库
  
  Spotlight做为系统的搜索工具对系统的影响是多方面,比如:Spotlight在做索引(Indexing)的时候要耗费系统资源。Spotlight数据库以及文件也占用一定的硬盘空间。该数据库不是一个文件,而是若干文件,位于系统硬盘下的隐含文件夹.Spotlight_V100里。

  在搜索时,有时会出现文件没有被搜到的情况,此时重建Spotlight数据库对Spotlight的正常使用会有所帮助。另外,有时用于为Spotlight做检索的mds和mdimporter会占用很多CPU,造成系统运行缓慢。占用大量的系统资源,有可能是Spotlight的数据库出现了故障,也有可能是在索引某个文件时,该文件有问题,造成spotlight无法按预定完成索引。如果是这样,那么即使重建Spotlight数据库,也不能根本地解决问题。此时,应该检查控制台(console)日志,看看是什么文件造成目前这种状况。当停电或非正常关机时,Spotlight数据库也有可能出现故障,在重新启动系统时,如果系统发现Spotlight数据库受损,就会自动试图将它重建,这使机器进入系统更加缓慢。

  重建Spotlight数据库的方法是到系统预置/系统偏好设置下,打开Spotlight偏好设置,然后到隐私(Privacy)里,将所要重建数据库的文件夹拉到列表里,然后再点击减号。从隐私列表里挪出某个文件夹,Spotlight便会对该文件夹进行重新检索,检索时间根据文件夹的内容而不等。

  通常情况下,重建Spotlight数据库对系统的性能没有多少好处。

  通过以上分析,我们不难看出人们经常提到的Mac OS X的维护和保养方法或可适用于故障清除,但真正能作为定期检查和保养的方法少而又少。其实,系统性能不外乎与电脑的这几个方面有关:CPU、内存、硬盘以及软件或应用质量和对系统资源的需求。新款苹果电脑上没有办法更换CPU和添加加速器,因此,在维护甚至是优化时,可将CPU排除在外。足够的内存是保证系统性能稳定的前提。由于Mac OS X系统采用部分硬盘做为缓存,因此硬盘的自由空间也影响着系统性能。当然,这些前提是以内存和硬盘正常无故障为基础的。内存在正常使用情况下一般不会损坏,但硬盘由于是磁化结构,可能会受到使用环境的影响而损坏,因此常规性的检查是必要的。内存和硬盘是系统的资源,而软件或应用则是这些资源的消耗者,它们要占用资源是应该的和必须的,但是占用多少,占用的是否合理,在很大程度上是取决于软件本身的质量和用户的使用。

  那么,应该如何对Mac OS X系统进行保养呢?

1、定期关机:长时间使电脑特别是应用处于运行状态,在调用应用时,由于有缓存的存在,调用速度会比开启应用时快。但是如果长时间不关机,系统的Swap文件就会增加,Swap文件是跟系统的虚拟内存相关(详见:活动监视器一文)。有些Swap文件其实可能已经用不着了,但是由于没有关机,系统不能即使将其清空,就会徒占硬盘。另外,关机还可以清理一下内存。大概要多长时间关机一次,应该根据用户的使用情况和需求以及机器的配置,但一般来说没一、两个星期最好关机一次。

2、检测磁盘:这可以定期进行,也可以偶尔进行,但如果是后者,则应该注意频度。你可以一个月检查一次,也可以2、3周检查一次。另外,在做系统软件升级前,最好先检查磁盘。可以采用本文关于”检查并修理磁盘”中的任何一种方法。检查即可,如果没发现磁盘错误,就没必要维修。另外,还应该通过系统概述(System Profiler)或磁盘工具检查以下磁盘的SMART状态,以及磁盘的使用量和自由空间。如果SMART状态显示为接近失败,应该及时备份并换盘。如果自由空间不足,应该删除或挪出一些非系统或应用文件。

3、运行维护脚本: 如果你用的是Leopard之前的Mac OS X系统,又不能保证每天夜里3:15以及每月第一天的5点15机器都处于运行状态,那就要自己及时运行维护脚本。方法见Mac OS X应该如何维护和保养(上)中的运行日常维护脚本部分。

4、软件及固件更新: 由于软件及固件的更新在多数情况下诣在修复bug,它是提高系统软件质量的一个方法。当然,更新不代表不会引入新bug。因此,更新前,要做好调查工作,到网上查查做了该更新后会出现什么样的问题。更新前要检查磁盘,更新后要检查磁盘权限。另外,如果有必要,或是不放心,在更新前可以做整盘克隆备份,以便更新出现问题后,及时恢复系统。备份注意事项和整盘克隆的方法在本站其它文章中有述。

5、校正电池: 笔记本用户应该注意每月按随机使用手册校正电池。这不仅仅保证了电池的寿命,同时也校正了系统内电池管理的软件,保证电池显示正常。

  除此以外,最为重要的一点是,养成良好的电脑使用习惯,这包括,不要在桌面上放太多的文件,及时清除或挪出不用的文件以保证磁盘有一定的自由空间,尽可能减少下载和安装一些不必要的软件、安装正版的软件等。免费软件,由于没有技术保障,所以应该尽量少装。另外,要记录安装和卸载软件的情况。这在“新机使用前做哪些准备会对以后的使用更有帮助”一文中有所提及。再有就是减少个性化。不少用户喜欢对桌面、Dock或应用的预制进行修改,如果这种修改本身为系统所支持的,通常情况不会发生问题,但是如果是通过heck系统设置或是没有苹果公司明文表示可以如此进行个性化的,在以后的系统软件升级时,可能会出现问题。

  还有一点不太容易做到的,就是要定期检查控制台(Console)日志,看看有没有系统或软件错误。之所以不容易做到,是因为这些错误信息一般用户看起来困难,不容易理解。如果能看个大概,并及时采取措施,比如卸载某些故障软件,也可以让系统的性能得到一定的保证。

  另外,一些设置上的修改也可能帮助提高系统的性能。比如,将大磁盘分区有助于系统从磁盘查找文件的速度。把Swap文件的存储地点挪到其它分区,这对于常年不关机的用户会有所帮助。把用户文件夹挪到单独的分区里,对产生大量文件的用户会有所帮助。但是,应该注意,这些设置并不适合所有的用户。

No comments:

Post a Comment