最近有几个好友,多次询问我关于Linux下硬盘分区的一些心得体会。今天抽空,整理了这篇文章,与各位共同探讨如下。
 
  首先,我推荐大家使用 ext3 、ReiserFS 和 XFS 日志式文件系统。这两种文件系统格式在LINUX下运行安全性高,在突发的意外宕机情况下,不需要检查任何数据的一致性,使得系统恢复时间从几小时缩短为几秒钟,同时又能很好的保证数据的完好性,运行的速度也比较快。下面我来简单介绍一下这两个文件系统的相关知识、在Ubuntu系统下的安装目录用途以及我的一些分区经验与各位分享如下:
 
1、Ext3
  RedHat的缺省文件系统。相对于Ext2,增加了日志功能,PartitionMagic可兼容,建议新手使用此文件系统。Ext3的3种模式可用mount命令进行转换:
  (1) data=journal:文件数据和元数据均设置为日志方式,性能开销比较大
  (2) data=ordered (缺省设置):顺序写入,先写文件数据,再写元数据
  (3) data=writeback:提供最快的访问速度,但是牺牲了数据的一致性。元数据仍然被记录到日志,从而确保元数据的完整。文件数据会在系统崩溃之后恢复到原先的状态。
  
2、ReiserFS
  SUSE LINUX的缺省文件系统。但Red Hat Enterprise Linux AS不支持ReiserFS,推荐高手使用此文件系统,该文件系统有以下3个优点:
  (1) 有效地利用磁盘空间,与其他文件系统不同,ResierFS不依赖于数据块的大小。处理大量小文件存储操作很有优势,产生的磁盘碎片也很少;
  (2) 提高了可靠性和恢复速度;
  (3) 使用平衡树数据结构可以同时存储内容数据和安全元数据,使其获得更快的访问速度。
 
3、XfS
  XfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩性,非常健壮。所幸的是SGI将其移植到了Linux系统中。在linux环境下。目前版本可用的最新XFS文件系统的为1.2版本,可以很好地工作在2.4核心下。主要特性包括以下几点:
  (1) 数据完全性
   采用XFS文件系统,当意想不到的宕机发生后,首先,由于文件系统开启了日志功能,所以你磁盘上的文件不再会意外宕机而遭到破坏了。不论目前文件系统上存储的文件与数据有多少,文件系统都可以根据所记录的日志在很短的时间内迅速恢复磁盘文件内容。
  (2) 传输特性
   XFS文件系统采用优化算法,日志记录对整体文件操作影响非常小。XFS查询与分配存储空间非常快。xfs文件系统能连续提供快速的反应时间。经对XFS、JFS、Ext3、ReiserFS文件系统进行过测试,XFS文件文件系统的性能表现相当出众。
  (3) 可扩展性
   XFS 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间。对特大文件及小尺寸文件的支持都表现出众,支持特大数量的目录。最大可支持的文件大小为263 = 9 x 1018 = 9 exabytes,最大文件系统尺寸为18 exabytes。
   XFS使用高的表结构(B+树),保证了文件系统可以快速搜索与快速空间分配。XFS能够持续提供高速操作,文件系统的性能不受目录中目录及文件数量的限制。
  (4) 传输带宽
   XFS 能以接近裸设备I/O的性能存储数据。在单个文件系统的测试中,其吞吐量最高可达7GB每秒,对单个文件的读写操作,其吞吐量可达4GB每秒。
 
4、主分区、扩展分区和逻辑分区
    (1) 主分区:是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。在主分区中,不允许再建立其它逻辑磁盘。
  (2) 逻辑分区:由于硬盘仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总计可以存储4个分区的数据。操作系统只允许存储4个分区的数据,如果说逻辑磁盘就是分区,则系统最多只允许4个逻辑磁盘。对于具体的应用,4个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。
  (3) 扩展分区:严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。
  需要特别注意的是,由于主分区之后的各个分区是通过一种单向链表的结构来实现链接的,因此,若单向链表发生问题,将导致逻辑磁盘的丢失。
 
5、目录功能
   / :根分区 包含 /etc、/bin、/sbin、/lib 和 /dev,否则您将不能启动系统。
  /usr:包含所有的用户程序(/usr/bin),库文件(/usr/lib),文档(/usr/share/doc),等等。这是文件系统中耗费空间最多的部分。您需要提供至少 500MB 磁盘空间。总容量会依据您要安装的软件包数量和类型增长。宽松的工作站或服务器安装应该需要 4–6GB。
  /var:所有的可变数据,如新闻组文章、电子邮件、网站、数据库、软件包系统的缓存等等,将被放入这个目录。这个目录的大小取决于您计算机的用途,但是对大多数人来说,将主要用于软件包系统的管理工具。
  /tmp: 程序创建的临时数据大都存到这个目录。通常 40–100 MB 应该足够。一些应用程序 — 包括归档处理程序、CD/DVD 制作工具和多媒体软件 — 可能会使用 /tmp 临时保存映像文件。
  /home:每个用户将放置他的私有数据到这个目录的子目录下。其大小取决于将有多少用户使用系统,以及有什么样文件放在他们的目录下。根据规划的用途,应该为每个用户准备 100MB 空间,不过应该按您的需求调整。假如您在 home 目录下计划保存大量的多媒体文件(图片、MP3、电影),该预备更多的空间。
  /opt:附加的应用程序软件包。
 
6、分区经验
  (1) 最少得有 2 个分区,一个是 /swap 交换分区,一个是 / 根分区。
  (2) 近几年,硬盘的价格也越来越便宜了,花二三百块钱,就能买到很大的硬盘。我以25G的分区为例,其余多出来的磁盘空间,可在系统安装完成后,登陆系统后用分区管理工具划分即可,可用于专门的数据存储和备份空间。
  /   计算所得的剩余硬盘大小,主分区,启动标志开始,Ext3格式,5-10G;
  /HOME  5G,逻辑分区,Ext3格式;
  /USR   6G,逻辑分区,Ext3格式;
  /VAR   4G,逻辑分区,Ext3格式;
  /TMP   1G,逻辑分区,Ext3格式;
  /OPT   1G,逻辑分区,Ext3格式;
  swap 与内存大小一致,最大1G即可,主分区,结束,启动标志开始。
  
分割,没商量!--LINUX下的分区规划_第1张图片
 
 
7、XFS的安装、加载与设备:
  (1) 安装:
  从
[url]http://oss.sgi.com/projects/xfs/[/url] 获取下载两种补丁包:release 和 development tree,以及tools 文件包。我下载了development tree 的all补丁包和各个tools包,其中包含了xfs文件系统补丁、acl等,可以自己看一下。文件名是xfs-2.4.20-all-i386.bz2。然后就是例行公事:bzip2 -d xfs-2.4.20-all-i386.bz2,把解出来的东西放到kernel中执行patch -p1 < xfs-2.4.20-all-i386 。注意对应好正确的kernel 版本。
  make config ,在file system中把xfs系统加入,如果需要启动,那么就不能编译成模块,或是后期mkinitrd。这里需要加入的选项还有quota和acl,我相信任何人都不会拒绝的。还有其他选项可以不用,dmapi现在还没有什么linux应用;realtime 是提供了实时子卷的支持。确定好你需要的功能(这里注意,不要同时选择ibm的jfs系统。如果一定要用,需要补丁。),然后我们就可以保存退出。例行公事:make dep;make bzImage;make modules;make modules_install 。
  (2) 加载:
  重启以后,我们就拥有了一个支持xfs文件系统的linux。然后我们就可以把需要转化为xfs系统的mount点确定,我几乎选择了所有mount区,除了/,/boot。规划完毕后,备份你的系统和需要转换的mount点。然后,umount 你需要xfs的区。接下来我们就可以实现xfs了,mkfs.xfs -L volume [filesystem](具体察看man 手册,为了更好的性能,我们可以使用更多的控制,例如log size等。有时候调整是必须的,因为xfs毕竟是为高端服务器设置的。)。完成以后,修改fstab,重新mount 系统,恢复备份就可以使用了。
  (3) 设置:
  还记得我们在ext文件系统中对于细粒度控制的无可奈何吗?只有三个权限;对于quota反复的提问吗?现在我们不需要为这些烦恼了。
  acl:提供了细粒度的权限控制。通过几个工具:getfacl和setfacl。如我要在一个文件上加上某个用户的写权限,只需要setfacl -m u:user:w file。然后getfacl file,ok。其他问题man手册。
  quota:忘掉ext的quota 多么痛苦吧。两步就可以解决,在fstab中需要的mount点上加入quota,重新mount后,edquota user or group,保存退出,立即生效。
  还有一些其他的功能如:提供了一个附加的attr等等。