Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103695104
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-05-06 12:54:09

 作者: wehen | 来源:

GNU/Linux目錄的结构

在GNU/Linux里面,所有的目錄都是从 /(root)根目錄所扩展的树状结构。也许有些朋友会问,如果有很多颗硬盘,那不就有很多根目录吗? 事实不是这样的!那些硬盘的某个分割区不会像MS Windows一樣,分割成C槽、D槽和E槽等等,而都是在那个根目錄或底下的某个子目錄,只是把某个分割区掛载(mount)到那个目錄罢了,也就是說在Microsoft Windows的X槽对应到GNU/Linux的话,就是掛载在某一个目錄底下。

如果这樣的掛来掛去,总要有个初始化源头让我们掛吧? 所以至少要有一块分割区给根目錄/(root),其它的目錄就会以此为基础续掛在根目錄的某个子目錄下。如此就会形成一个如下图4-1的树状结构。

GNU/Linux的发行版太多了,在早期每个发行版都有自己首选的目錄分配方式,不同的版本有不一样的目录分配,因此而造成很多使用者的困扰。为了平息这樣的乱局,Filesystem Hierarchy Standard(FHS:)就出面制定了一些标準,让各个发行版有个纲要可以知道哪个目錄要放什麼樣的东西。当前FHS定义的是每个目錄的大纲,所以很多细部配置文件的文件名或许还是有所不同,但是几乎都放在同一个目錄底下了。这樣用户在寻找的时候,应该是容易许多了。所以Ubuntu也遵循这樣的命名结构,图4-1在別的发行版也适用。

我们了解了上面的內容之后,知道在安装时必需有一个/(root)根目錄,其它目錄是依附在它下面。这些其它的目錄所使用的实体硬盘空间可以是独立出来在另外一颗硬盘或同一颗的其它分割区或者甚至不用独立出来。如果沒有独立出来的话,就是使用 /(root)根目錄分割区的空间或者在上一层的实体分割区空间。





根据表4-1读者可以自行评估哪一个目錄比较重要,然后決定是否独立出来,这樣子可以拿来当成损害控管之用。后面也会有一些比较容易看懂的实际例子。





硬件设备的代号

在GNU/Linux裡面有个很好玩的特色,就是所有硬件设备都是可以看成是某个文件来操作。这樣有个好处是,应用软件只要管好对那个文件要如何操作,而不必要管实际上硬件的运作。其中代表设备的文件和实际运作的硬件中间的关连,就是GNU/Linux kernel所需要负责的。

对於IDE硬盘来說,常常组装计算机的人应该都知道主机板上最多只有两个IDE插槽,而每个插槽都可以通过排線接两个硬盘。主机板上第一个插槽就是IDEl (Primary),第二个插槽就是IDE2 (Secondary),每个插槽上可以接的两颗硬盘其中一颗是Master,另外一颗就是Slave,至於怎樣判断可以通过硬盘上的jumper来得知。若是硬盘上的jumper插在cable selection的话,那麼从排線前端数过来第一颗就是Master,如表4-3,我们可以得知插在第一个插槽的Master硬盘,它的文件别名位置就是/dev/hda,若光盘机是装在第二个插槽且jumper预设是Slave的话,这时候光盘机的文件代号的位置就在 /dev/hdb。

对於SCSI,SATA和随身碟则都是 /dev/sd [a-z],但是它们会依照顺序排下去,理论上会先排SCSI,然后是SATA,最后才是随身碟,不会有重疊的部份。因为现在很多新的计算机都採用SATA硬盘,所以请记得这些SATA硬盘的别名都是和SCSI用一樣的。举例来說,若你有两台SATA硬盘,但是沒有SCSI设备,那麼第一颗SATA硬盘的文件位置别名就是/dev/sda,第二颗就是 /dev/sdb,就是这么简单。





分割区概述(Partition)

前面已经提到了,在MicroSoft Windows中同一颗硬盘的各个槽其实就代表了不同的分割区。一般人通常都喜欢把硬盘分割成C区和D区,若需要重新安装系统的时候,就会把所有数据和文件都放在D区,只要把系统碟C区格式化刪除,再重装系统,如此数据就不用备份出来,可以很容易完成重装且保存数据。同樣地,在GNU/Linux也是一樣,我们喜欢把重要的目錄分別放在不同的分割区,这樣子系统出了问题也能很容易来救援。


我们来一个比喻,我们把硬盘想像成是一间很大的办公室,如图4-2所示,门口部份有一个柜子让你放办公室相关的消息。那个柜子就叫作主要开机扇区(MBR,Master Boot Recorder) ,而柜子裡面有两个抽屜,一个是放置开机管理程序(boot loader),另外一个就是放置磁盘分割表(partition table),这个磁盘分割表就是纪錄整个办公室隔间隔局的地方。





因为磁盘分割表的空间有限,所以我们只能存储最多四间隔间的信息,若你沒有在这四个隔间把整个坪数划分完,那麼多出来的空间就不能使用的。而整间办公室能隔成的房间总共有两种,一种是主分割区(Primary) ,另外一种是扩展分割区(Extended),且规定扩展分割区最多只能有一间。那麼扩展分割区是要拿来做什麼用的呢?其实扩展分割区是不能直接使用的,可以看成它是另外一种房间,前面也有柜子存储扩展分割区底下的信息,但是因为裡面沒有家俱,所以沒办法直接使用。所以扩展分割区还要再分割成逻辑分割区(Logical),从扩展分割区再分割的逻辑分割区最多可以分割到12个,故最后可用的最多分割区数会有3个主分割区+12个逻辑分割区=15个分割区,那就满足使用了。





每个分割区在GNU/Linux都有它的设备文件别名,它的别名就是硬盘设备代号后面加上数字。例如我们把4个分割区都分割成主要分割区,那麼就会如图4-3所示,给的分割区别名分別是hdal到hda4。但是这个时候如果想要超过4个分割区呢? 那就得要使用扩展分割区。我们可以把图4-3最后一个主分割区換成扩展分割区,再把那个扩展分割区分割成3个逻辑分割区,最后会如图4-4,会有6个分割区可以用。

逻辑分割区一定是从hda5开始,而前面刚好有hdal到hda4这4个别名,就是给主分割区和扩展分割区瓜分的,至於扩展分割区是不能直接用的,最多也只有一个,要扩展分割区裡面的逻辑分割区才可以直接被使用。





当然我们也可以用一个主分割区配上一个扩展分割区,如图4-5来达到和图4-4一樣有6个分割区的效果,但是我们实务上比较喜欢先把主要分割区用完,再来搭配扩展分割区使用。不管怎樣,只要记得一个规则,主要分割区加扩展分割区最多只能有4个,其它的都随使用者来发挥。





在linux中一定要被独立划分出来的分割区有 /(root)和swap,若你只要这樣基本的分割法,那麼安装的时候选自动分割就是採用这种作法,但是对於有特殊需求的人,可以使用手动规划方式。


● /(root)分割区:所有的目录都是根目录的子目录,所以这个分割区一定要有。

● swap分割区:swap分割区是做什麼用的呢?其实它可大可小,尤其是在内存大家都装768MB或1 GB的年代。它的功能类似微软Windows XP的虚存,不过在Windows XP裡面虚存是单独一个文件存放在C区,但是在GNU/Linux內则是独立成为一个分割区。通常swap是在跑大程序时候,若需要用到的内存比系统拥有的主記憶存还大时,才会先把一些不常用的数据放到虚存裡面,然后等要用到时,再把它叫出来。而依照一般旧制经验法则,swap是主記憶存的两倍,但是笔者建议是和主記憶存一樣大就好或者干脆512 Mb的swap就很夠用了。


文件系统格式概述

在Microsoft Winsows的世界,硬盘可以格式化成NTFS、FAT32、FATl6等等不同的格式。同樣地,在GNU/Linux底下也是有很多不同的文件系统格式可供选择。当前在GNU/Linux底下,比较常用的有这几种格式:Ext2/Ext3、ReiserFS、XFS和JFS等数种。当然各种格式都有其优缺点,所以我们将做一些简单的介绍。

除了Ext2以外,其它几种都是日誌型文件系统。那什麼是日誌型文件系统呢? 就是系统会多用一些额外的空间纪錄硬盘的数据状态,因而在不正常开关机后,不需整个硬盘重新扫描来恢复正常的系统状态。

● Ext2:此为一非常老旧且不支持日誌系统的文件系统格式,早期的Linux玩家应该还记得吧,在每次不正常关机后,重新开机时错误检查会需要很久,而且在不正常关机下,常常会让你一次不见很多文件,现在已经很少人使用这类文件系统了。

● Ext3:为Ext2个改良版,所以Ext2可以直接升级成为Ext3而不必重新格式化,这也可以让旧的Ext2系统更加稳定。而主要和Ext2的差別是增加了日誌系统(metadata),所以在不正常开关机后,可以迅速使系统恢复。而因为它与旧有的文件系统兼容,因此很多发行版都缺省使用Ext3。但是在实际测试上,它的硬盘使用率其实不佳,大概只有真正空间的93%会被使用到,至於其它性能测试表现则为中等。在格式化与创建文件系统的时间也是其它文件系统的数十倍。

● ReiserFS::採用日誌型的文件系统,为Hans Reiser所创,因此以他的名字来命名。技术上使用的是B*-tree为基础的文件系统,其特色为从处理大型文件到眾多小文件都可以用很高的效率处理。实务上ReiserFS 在处理文件小於1k的小文件时,效率甚至可以比Ext3快約10倍,所以ReiserFS专长是在处理很多小文件。而在一般操作上,它的性能表现也有中上的程度。

● XFS::绘图工作站公司SGI为了高级绘图处理器系统IRIX所设计的文件格式,也是属於日誌型文件系统。而SGI亦将其移植到GNU/Linux上。因为原本是针对高性能绘图设计,且为高阶工作站所使用,所以在稳定性和效率上是无雍置疑的。论其在实务上的表现,它在处理各种文件尺寸混合的情況下效率最好,並且在一般使用上有
不错的表现。

● JFS::为全球最大计算机供应商IBM为AIX系列设计的日誌型文件系统,技术上使用的是B+-tree为基础的文件系统和ReiserFS使用B*-tree不同。IBM AIX服务器在很多金融机构上使用,所以稳定性是沒话說的。而它最重要的特色是在处理文件I/O的时候是所有文件系统里面最不佔CPU资源的,也就是CPU使用率最低。而且在这樣节省使用CPU的情況下,它的效率表现还有中上以上的程度。

虽然Ext3性能不好(在日誌型文件系统中效率上算是最糟糕的) ,那为何还有那麼多人使用?那是因为当时Ext3可以直接从Ext2升级,而不需要先备份数据,然后格式化后再把文件复制回去,所以使用人数最多。但这也不能全然怪它,因为它为了和Ext2兼容,所以背负了很多的历史包袱。因此我推荐新的电脑考虑使用ReiserFX、XFS或JFS。若是以性能为考虑,则可以选择ReiserFS或XFS。若是系统资源不多,要使用最低的CPU使用率,那麼可以选择JFS,因为它有著最好的性能资源比。

在网络上有一些文件系统性能评估,这裡列出来给大家参考一下:










开始规划你的硬盘

随著任务的不同,你可以有各种不同的硬盘规划。笔者假设你使用80 GB的IDE硬盘,内存512 MB,因此规划swap是512 MB,硬盘设备别名是hda。


以下是几种不同的硬盘规划,分別是适合入门,高级和服务器所需要,大家可以视需求自行参考。不过你在进行分割之后,有可能会因为換算的关系,少了个几MB,那是沒有关系的,只要不要太离谱,都应该是沒问题的。





每个分割区都是可以存放独立的文件系统,互相不影响,所以大家也可以在hdal安装Windows XP,然后hda2安装GNU/Linux,再通过MBR上的bootloader来选择要用哪个分割区来开机。如果读者真的想要使用双系统的话,推荐是先安装Windows XP,並且在安装时留下剩下的空间来做额外的分割区给Ubuntu使用,如此在安装Ubuntu以后,Ubuntu的bootloader-GRUB将会自动设置成启动的时候可以有双系统供你选择。请记得最好不要先安装Ubuntu再安装Windows XP,这樣GRUB的设置会被Windows XP洗掉,那你就得要手动重新安装GRUB到MBR了。

若是你真的不想重装Windows XP,可以先重整硬盘,然后用SPFDISK这个工具程序把硬盘的分割表更改尺寸,这樣就可以挤出空间来装Ubuntu,但这个方法特別留意,並不一定会成功,而且也许会造成你的数据遗失。


阅读(210) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~