1-3 建立ext3档案系统
在上个小节中,我们了解了ext3档案系统的优点及內容,所以在这个小节中,我们将說明如何建立ext3,以加強读者的实际操作经验,而建立ext3主要的步骤分为磁碟分割和格式化为ext3。
1-3-1 以fdiSk分割磁碟
「fdisk」是种功能強大的磁碟分割工具,管理员可在作业系统安装期间或是完成后使用,它的指令语法如下:
fdisk/dev/装置名称
上式的「装置名称」必需视实际的环境而定,本书在此以分割第一颗IDE硬碟上的Master为例,因此输入的指令及出现的讯息如下:
[root@ns1 root] # fdisk/dev/hda
The number of cylinders for this disk is set to 5005
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1)software that runs at boot time (e.g.,old versions of LILO)
2)booting and partitioning software from other Oss
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help):
在输入fdisk指令后,该程式会自动侦测硬碟上的磁柱(Cylinder)数量,若磁柱的数量大於1024,则系统会出现以上的警告讯息,其中說明一些开机时执行的软体(例如旧版的LILO),或是由其中的作业系统分割磁碟时(DOS FDISK或OS/2 FDISK),可能会產生问题,但是
以Fedora Core 而言,您可以忽略这些讯息。
在执行fdiSk后,游标会停留在「Command (m for help):」的讯息处,建议您先输入」「m」指令,以参考所有可用的选项說明。下表为笔者整理的中文选项說明:
在了解fdiSk指令的基本顯示功能後,接下來本書將說明如何利用fdisk來新增分割區,以下是詳細的步驟及說明:
在開始進行磁碟分割前,建議您先按「p」鈕,以顯示目前存在的分割區內容:
在了解目前的分割區狀況後,您可在「Command(m for help):」
處按「n」鈕以新增分割區,若是在系統中目前並未擁有其他分割區則fdisk程式會出現類似以下的訊息:
Command(m for help):n
Command action
e extended
p primary partition(1-4)
在出現以上的訊息後,此時您有 2 種選擇 :
◆ e :若按「e」(Extended),則表示要新增延伸分割區。
◆ p :若按「p」(Primary),則表示要新增主要分割區。
Command(m for help):n
Command action
1 logical (5 or over)
p primary partition(1-4)
若是在系統中目前擁有其他分割區,則會出現以下的訊息 :
Command(m for help):n
Command action
1 logical (5 or over)
p primary partition(1-4)
◆ I :若按「1」(Logical),則表示要新增邏輯分割區。
◆ p :若按「p」(Primary),則表示要新增主要分割區。
本書以新增一個主要分割區為例,首先輸入「p」後再按 Enter 鈕, fdisk 程式可能會出現以下的訊息:
p
Partition number (1-4) : 1
Partition 1 is already defined. Delete it before re-adding it.
Command (m for help):
在以上訊息中的「Partition number(1-4)」表示 fdisk 要求您指定主要分割區的編號,而筆者在此輸入「1」但卻出現 Partition 1 is already defined。Delete it before re-adding it.」 , 並且跳離開分割區的新增工作。這表示在硬碟上已存在其他分割區,而它們的主要分割區編號為 1 ,所以若要再新增其他的主要分割區,必須使用其他的編號。
以下的范例我们将新增一个编号为4的主要分割区,其讯息如下:
Command (m for help) : n
Command action
e extended
p primary partition (1-4)
p
partition number (1-4): 4
First cylinder (1-5005,default 1):1
Last cylinder or +sizeM or +sizeK (1-653,default653): 653
在上例中,笔者先指定分割区的编号为4,则fdisk程式会出现以下的讯息:
First cylinder (1-5005), default 1)
此处需输入分割区起始磁柱的值, fdisk 程式也会自动显示允许输入的值 (1-5005) ,並且会以允许范围的第一个数字为预设值 (1) ,所以输入预设值与直接按 Enter 钮的功能相同。
Last cylinder or +size or sizeM or +sizeK (1-653, default 653)
此处需输入分割区结束磁柱的数值, fdisk 程式也会自动显示允许输入的值 (1-653) ,並且会以允许范围的最后一个数字为预设值 (653) ,所以输入预设值与直接按 Enter 钮的功能相同。而除了使用磁柱来设定分割区的结束位置外,您也可以使用下表中的格式来进行指定:
注意:
在建立主要分割区时,你可以先建立编号 2 的主要硬碟分割,再建立编号 1 的主要硬碟分割。而在逻辑分割区中,第一个建立的逻辑分割区编号一定是 5 ,但如果在建立了编号 5 和编号 6 号两个逻辑分割区后,接着刪除编号 5 的逻辑分割区,则原先编号 6 的分割区会变成编号 5.
◆ 在新增 Linux 分割区后很重要的一点是,必须指定分割区的类型,以 ext2 或 ext3 而言,分割区的类型值为「83」。欲指定分割区的类型,您可以在「Command (m for help) :」处按「 t 」钮,则 fdisk 程式会出现类似以下的讯息:
Command (m for help): t
Partition number (1-4) : 4
Hex code (type L to list codes) : 83
Changed system type of partition 3 to 83 (Linux)
在上述出现的讯息中,首先指定欲变更类型的分割区编号,本书的范例为「4」然后在「Hex code(type L to list codes)」选项中输入「83」以表示 Linux 分割区。
如果刪除了错误的分割区,或是分割的规划並不满意,按「q」钮就可以离开fdisk程式,並且不储存任何的变更。若是決定储存新的分割区內容,您应按「w」钮以离开fdisk程式同时储存变更,但这些变更的內容需在下次开机时才可生效。
Command (m for help)
The partition table has been altered!
Calling ioct1 () to re-read partition table.
syncing disks.
1-3-2 以mkfs格式化ext3档案系统
在利用fdisk完成磁碟分割区的建立后,接下来必须将此分割区格式化为ext3档案系统,此处可使用的指令为「mkfs」,它的语法如下:
mkfs -t ext3 /dev/hdxy
上述语法中的/dev/hdxy表示以分割的磁区,例如本书上例中新增的为第一颗IDE Master上的第4个分割区,则需写成/dev/hda4。注意一鲇,利用mkfs指令进行格式化时,会刪除此分割区上的所有资料,所以需留意备份的工作。以下是本书执行的范例:
为了存取此分割区的內容,我们必须进行掛载的工作,本书在此假设将此分割区掛载於/test目錄下,以下是一个简单的范例:
[root@nsl root]# mkdir/test
#新增欲挂载的目录
[root@nsl root]# vi /etc/fstab
/dev/fda4 /test ext3 defaults 1 2
注意:
有关掛载的详细說明,请参考稍后「系统掛载- mount」小节內容。
1-4 档案系统基本指令操作
现在我们对於Linux上的档案系统已有整体性的了解,接下来就可开始使用系统中的各个档案功能,但因为Linux的档案系统包含许多不同的阶层目錄,所以必须先学习如何在不同的目錄及档案问游刀有余,然后才可正确的找出所需的资料。在本小节中,我们将介绍一些基本的档案系统指令操作,这也是每位使用者都必须具备的基本知识。
▓ 显示目前工作目錄 - pwd (Print Working Directory)
这个一个非常常用的指令,它唯一的功能是显示出目前的工作目錄,因为您常会在目錄中切換的次数太多,而忘了目前目錄的位置。它的用法很简单,只要直接输入指令名称即可:
[jack@nsl jack]$ pwd
/home/jack
▓ 列出目錄內容 – ls (List)
「1s」指令也是管理员天天都会使用的指令,它的功能是显示出目錄的內容,就好像在Windows上利用滑鼠双擊任何资料夹的动作一樣,也等於是DOS中的「dir」指令功能。在目前的工作目錄下直接输入「ls」可得到以下的结果:
从以上的结果我们可以清楚的了解,目前这个目錄中包含许多档案,但是先前我们曾提过目錄也是属於档案的一种,因此我们无法由以上的资讯来得知何者为目錄。若是要得到类似的详细资料,您可以使用「-l」参数,它是表示以「Long Format」的格式显示,同时也可以配
合「-a」(A11)参数以显示隐藏档:
在显示的內容中共包含7个栏位,这些栏位的說明如下:
◆ 使用权限
此栏位是由 10个字母所组成,第一个字母若是「d」(Directory),则表示该记錄为一目錄,「-」表示为档案,而「l」(Link)表示为连结档,其余的9个字母分別代表拥有者(Owner)、群组(Group)和其他人(Other)对该档案的使用权限,有关权限的說明我们将在下一小节介绍。
◆ 档案数目
若是档案的话,则此数字通常为1,如果是目錄,则此数字表示该目錄中包含的子目錄数目(包括隐藏的子目錄)。
◆ 拥有者
通常指的是该档案的建立者。
◆ 使用群组
指拥有者所属的群组,在Linux中的群组可以包含许多使用者,而每个使用者也可以隸属多个群组,这必须依照管理上的需求而定。
◆ 档案大小
这个栏位通常是指用位元组(Bytes)为单位的档案或目錄大小,而目錄大多以4096来表示。
◆ 建立日期
以「月份日期时间」的格式来表示该档案建立的日期。
◆ 档名
该档案的档名,若是以「.」为开头的档案或目錄都具有隐藏的属性,其中档名为「.」代表该该目錄本身,而「..」叫代表上一层的目錄。
虽然可以使用ls指令来检视目錄中的內容,但若是该目錄中包含的档案或子目錄数目眾多时,您可能会因此而眼花撩乱,此时您可以配合「-F」的参数使用,以利用顏色及符号来显示不同的档名。
▓ 目錄切換 – cd (Change Directory)
因为不同的档案可能存放在档案系统中的不同位置,所以在执行程式或系统管理工作时,管理员都必须在不同的目錄问切換,此时您就可以使用「cd」指令。「cd」指令的使用很简单,以下是几个常用的方法:
▓ Linux档案路径
在此我们要介绍Linux的档案路径表示法,因为它沒有微软產品的「磁碟机」观念,也就是說在Linux的世界里沒有所谓的磁碟机C,磁碟机D…等等的表示法,它完全是利用目錄与子目錄的阶层式(Hierarchical)观念来表示档案的储存位置,因此您需先建立这个新观念,否则可能会因为先前的观念而造成您学习Linux的障碍。一般来說,Linux的档案路径分为二类:絕对路径和相对路径。
所谓「絕对路径」,就是指由根目錄( / )为起始鲇来表示,例如/etc/ppp/peers/isdn/avm就是絕对路径,也就是說,若是一个路径表示法是以根目錄( / )开头者,都是属於絕对路径,若非以根目錄开头者就称为相对路径。
而「相对路径」是指由目前的目錄开始算起,我们以刚才的絕对路径为例,若您现在的工作目錄为/etc/ppp,此时相对路径的表示法为「/peers/isdn/avm」(也可省略为peers/isdn/avm)。因为系统会自动於此路径前加上目前的工作目錄位置,所以适时的使用相对路径可以节省您输入的时间,並避免错误產生。
▓ 档案的复制 / 移动 / 刪除 – cp/mv/rm
不论使用何种作业系统,档案的复制、移动与刪除可說是档案系统中最基本的操作技巧,因此您应该多多熟练这些操作,以加速管理时的效率。以下我们就利用几个范例来說明这些操作:
◆ 档案复制
如果要将/testl目錄下的filel复制到/test3目錄,並将档案名
称改为files2,您可输入以下的cp (Copy) 指令:
[root@nsl root]# cp/test1/file1/test3/file2
若是要将/dirl目錄下的所有档案,包括子目錄都复制到/dir2目錄 (变成/dir2/dirl),並变更档案系统格式,则可以输入以下的指令:
[root@nsl root]# cp -ax /dir1/dir2
上述指令的参数「-a」是指archive的意思,也就是指复制所有的目錄,並包含子目錄,而「-x」是用来指定复制后,此档案的格式变为和目的地磁区的档案系统相同,例如由ext3
变为Windows中的FAT32。
◆ 档案移动 (更名)
档案的移动和复制很相似,其差別只是在档案移动后,原始位置上的档案会被刪除,也就是等於复制加上刪除的功能。其实档案移动的指令 -mv (Move),常用来当成档案更名之用,因为Linux的指令中沒有更名的指令(在DOS中的更名指令为「ren」),所以我们可以利用mv来变更档案名称。
如果要将/testl目錄下的filel移动至/test3目錄,並将档案名称改为files2,您可输入以下的指令:
[root@nsl root]# mv /test1/file1 /test3/file2
◆ 档案刪除
若是某些档案已不再需要,您可以使用「rm」(Remove)指令来刪除它,如果要将/testl目錄下的filel档案刪除,您可输入以下的指令:
[root@nsl root]# rm /test1/file1
在刪除档案时需注意权限的问题,如果使用者的权限不足以刪除该档案,则系统会出现以下的错误讯息:
[jack@nsl jack]$ rm/test/file1
rm : 是否移除有防写保护的普通档案 ˋfile1ˋ ? y
rm :cannot remove ˋfile1ˋ :拒绝不符权限的操作
▓ 目錄的新增/刪除 – mkdir/rmdir
◆ 新增目錄
有时为了集合某些特定的资讯,例如传真档案,我们可以新增一个专用的目錄(Directory),它就像是Windows中的「资料夹」(Folder),以下是利用mkdir(Make Directory)指令来新增一个名为「/fax」目錄的方法:
[root@nsl root] # mkdir/fax
◆ 刪除目錄
若要刪除某一目錄,可以使用「rmdir」(Remove Directory)的指令,但是执行之前,必须确保此目錄中沒有任何档案,否则系统会出现错误讯息。如果您要強制刪除目錄及其中的档案,您可以使用」「rm -rf」指令:
[root@nsl root ]# rmdir/fax
rmdir : [root@nsl root ]# rmdir/fax
rmdir : ˋ/faxˋ:目录不是空的 →目录中尚有档案
[root@nsl root]# rm -rf fax →强制删除目录及其中的档案
在上例中的「-r」参数是指递回說它会使刪除的动作持续的进行,而「-f」参数是指强制(Force)刪除所有的档案。
但在执行「rm -rf」指令时需特別注意一鲇,因为它会強制刪除指定目錄及其下的所有档案及子目錄,而且目錄一经刪除就无法回复,所以若是您在输入目錄名称时发生错误,例如
将「/testl 」目錄输入为「/」目錄,则对系统產生的危害实在很大,所以在使用此指令前希望能格外的小心。
▓ 建立连结档案 - ln
相信大家都知道,执行原始档案和Windows中的「捷径」都可以得到相同的结果,因为「捷径」会将指令引导到原始的档案,而使用它最大的好处就是节省硬碟空间。例如我们若将一个l MB的档案利用cp指令复制到另一个目錄中,则对整个硬碟空问来說便減少了1MB,但是若建立此档案的连结档案,可以只要花费几个Bytes的空间,这对大型伺服器
而讠可減少硬碟的消耗量,並且可提升执行的效能,而Linux中的「连结档案」与Windows中的「捷径」在观念上很类似。
其次是,若对连结档案进行修改,则这些变更也会自动更新原始档案的內容,但如果使用复制的方式,则需对所有副本及原始档案进行修改,这会花费许多的时间,而且有时也会產生档案內容不同步的问题。
如果要在 /test3目錄中建立 /testl/filel档案的连结,假设它的名称为filel .1n,则可使用以下的1n (Link)指令:
[root@nsl root]# ln -s /test1/file1 /test3/file1.ln
[root@nsl root]# ls -l /test3
总计 4
lrwxrwxrwx 1 root root 12 11月 3 10:55 file1 .ln -> /test1/file1
.........
上例中的参数「-s 」表示欲建立的是Symbolic Link(也称为Soft Link),同时您也可以看到此符号连结只佔12 Bytes,而在最后的档名部份会看到「->」的符号,表示这是一个指向原始档案的连结档案,而且系统会以浅蓝色来显。
若在使用ln指令时沒有输入参数「-s 」,则这种连结就称为「HardLink」,同时每增加一个Hard Link,则档案系统就会新增一个i-node,並且利用指标来指向原始档案的位置,所以Hard Link愈多则產生的指标也愈多,同时佔用硬碟的空间也会呈现倍数增加。
在这种情形下,如果要从硬碟上移除这个档案,则必须要将它关联到的所有的Hard Link都刪除。若是在上例中我们使用Hard Link,则其最后的档名部份並不会出现「->」的符号而且系统会以一般档案使用的白色来显示。
[root@nsl root]# ln /test1/file1 /test3/file1.ln
[root@nsl root]# ls -l /test3
总计 8
-rw-r--r-- 2 root root 0 11月 3 10:53 file1.ln
.........
注意:
Hard Link必须建立在同一个磁区中,而且不能使用在目錄上,但Soft Link则可以跨越磁区,同时也可运用在档案和目錄。
▓ 检视档案內容 - cat
熟悉DOS与Windows指令的使用者应该都了解「type」指令的用法,它是用来显示档案的內容,而Linux中的「cat 」(Concatenate)指令除了具备「type」指令的基本功能外,还包括由键盘读取资料、将多个档案合併,以及其他的功能。假设要检视 /etc/passwd档案的內容,
则可输入以下的指令:
[root@nsl root]# cat/etc/passwd
root: x : 0 :0 : root : /root: /bin/bash
bin : x : 1 : bin : /bin : /sbin/nologin
daemon : x : 2 : 2 : daemon : /sbin : /sbin/nologin
adm : x : 3 : 4 : adm : /var/adm : /sbin/nologin
...........
您可以利用cat指令直接在键盘中输入內容,並且将內容储存为档案。假设要在键盘中输入一些资料,並将这些资料存放在 /test1 目錄中,同时使用file2.txt的档名,则可输入以下的指令:
[root@nsl root]# cat> test1/file2.txt
I Love Linux!
It is a very good O.S. → 在此必须按一次 Enter钮
→ 按Ctrl+C 以结束输入工作
上例中的「->」表示Linux中的「导向」,这是很重要的一项功能,我们将在稍后的小节中介绍。在输入完毕之后按Ctrl+C以结束输入工作,但须注意一鲇,在输入最后一行后必须按一次Enter钮,否则最后一行的內容不会显示出来。
若是显示的內容很冗长,此时您可以加入「-b」参数,则系统会在每一行(空白行除外)前加入编号以利辨识。
[root@nsl root]# cat -b /test1/file2.txt
1 I Love Linux!
2 It is very good O.S.
您也可以同时将多个档案內容合併显示出来,只要将每个档案的档名都输入指令中,以下的范例是将 /testl/filel.txt、/test1/file2.txt和 /testl/file3.txt三个档案內容同时显示出来:
[root@nsl root]# cat /test1/file1.txt/test1/file2.txt/test1/file2.txt
若要将多个档案內容合併为一个新的档案,例如希望将 /testl/filel.txt和 /testl/file2.txt的档案內容合併为new.txt,则可输入以下的指令:
[root@nsl root]# cat /test1/file1.txt/test1/file2.txt> /test1/new.txt
▓ 一页一页显示档案內容 - more
相信各位在使用cat指令检祝文字档案內容时,一定会经常遇到一个问题,那就时档案內容太长,往往只能看到最后一页的內容,这实在是非常的不便,要解決这个问题,可以使用「more 」指令,它可以将档案內容以一次一页(或一行)的方式来显示,例如我们要逐页检视
/etc目錄中的imrc档案內容,则可输入以下的指令:
[root@nsl root]# more /etc/imrc
#####################################
# Config file for lmlib #
#####################################
在输入上述的指令后,系统会开啟该档案的第一页內容,並且在视窗下方出现类似「--More-- (19%)」的讯息,它表示目前显示的內容为整个档案的19% (这个数字依档案的大小不同会有不同)。若您此时按一下空白键(Space),则整个画面会显示下一页的內容,如果按的是Enter键,则只会向下多显示一行的內容。
若是档案內容包含许多行,而您已知需要的讯息在第几行的位置,此时可以使用「+行数」的参数来快速到达该行,例如要显示档案中由第9页起的內容,则可输入以下的指令:
[root@nsl root}# more +9 /etc/imrc
more另一个很有用的参数是「+/字串」,它的功能是帮助您在档案中寻找出某个字串,然后由该页开始显示,例如我们要显示档案中第一个do字串出现的页次及之后的內容,您可以输入以下的指令:
[root@nsl root]# more +/do/etc/imrc
▓ 互动式操作显示档案內容 - less
less指令的功能与more很相似,但是less具有更高的互动能力,您可以使用方向键来控制浏览的上下左右画面,並且可以使用热键(HotKey)来执行特定的功能,例如按「H」键会出现線上使用說明,而「Q」键可以离开浏览模式。
以下是以less指令检视 /etc目录中imrc档案内容的方法:
[root@nsl root]# less/etc/imrc
▓ 辨识档案类型 - file
file指令可以帮助我们在Linux档案系统中,辨识许多种类的档案类型,若为文字档,它会区分不同的文字档,例如ASCII、English和International等,如果是执行档,则可再细分为ELF、Bourne-Again Shell Script、Bourne Shell Script等类型,以及其他的类型如:符号连结档、图形档、备份档和压缩档等。
以下是利用file指令检视 /etc目錄下所有档案类型的部份內容,在讯息结果的左侧表示档案名称,而右侧则为对应的档案类型:
▓ 输出档案內容前面与后面的部份 - head和tail
有时开啟一份数十页的档案时,您可能只需要浏览最前面的部份,此时使用cat指令就不是很适合,因为一下子出现太多的內容反而会令人无从找起。为了避免这个问题,可以使用head指令,如果沒有加上任何参数,head指令只会显示档案的前10行,但也可以用「-行数」
的参数来指定显示的行数,以下是显示 /usr/share/magic档案前3行內容的范例:
和head指令相反的指令是「tail」指令,它可以指定显示档案內容的最后行数,例如要显示/usr/share/magic档案的最后3行內容,则可输入以下的指令:
和head指令不同的是,您可以在tail指令中使用「+行数」的参数来指定由第几行显示至档案结尾的內容,以下的范例表示显示由 /etc/passwd档案的第5 1行到结尾內容的指令用法: