RHEL中可能有成千上万的文件必须要存储在磁盘中;对系统管理者而言,如何管理好磁盘与文件系统,也是一门必备的学问。本章我们一起来学习RHEL的磁盘与文件系统必备的知识与技术。
2.1 磁盘的管理
2.1.1 动态磁盘参数
每一个磁盘都会提供一些参数,通过磁盘的参数,可以修改磁盘的结构与功能。查看磁盘的参数,可以使用hdparm :
hdparm device ...
下面我们来查询/dev/hda磁盘参数:
![](https://i-blog.csdnimg.cn/blog_migrate/527ed64123b26f4628cc53cfb002bbbe.jpeg)
hdparm除了可以用来查看磁盘的参数外,还可以用来设置磁盘的参数:
hdparm [options...] device
常用的options如下表所示: 注:下表在最后附件中有下载!
![](https://i-blog.csdnimg.cn/blog_migrate/3a0f66cc0162aaae72d0865e97853468.jpeg)
下面使用hdparm设置/dev/hda DMA状态的例子:
![](https://i-blog.csdnimg.cn/blog_migrate/2402eb448e924585b7884fccba633198.jpeg)
① /dev/hda开启了DMA功能。
② 使用hdparm关闭/dev/hda的DMA。
③ 再次查看是否关闭了/dev/hda的DMA。
2.2 管理分区
在RHEL系统中,有几项工具来管理磁盘中的分区。
fdisk : 这是最广为人知的分区管理工具。fdisk使用交谈的方式,来进
行分区管理的工作。
sfdisk : 其实是fdisk姊妹产品,只是fdisk是以交谈的方式管理分区
的;而sfdisk则是以命令列的参数方式来管理我们的分区。
parted : 这是GNU计划中分区编辑工具。与fdisk和sfdisk相比,parte
-d还允许调整分区的大小。
下面我仅以常用的fdisk作为分区管理工具来学习。
1、fdisk的语法:
fdisk简单语法为:
fdisk device
上面的device为要管理分区的硬盘设备文件名。
fdisk是一个交互式(Interactive)的分区管理工具,也就是在执行fdisk命令后,必须输入fdisk所提供的命令,fdisk才会执行指定的动作,fdisk执行后可使用的命令如下表所示: 注:下表在最后附件中有下载
![](https://i-blog.csdnimg.cn/blog_migrate/f57e51355816fbb44699206044d2f0a8.jpeg)
下面来看看执行fdisk的例子:
![](https://i-blog.csdnimg.cn/blog_migrate/b57d3c898f8192a302633e93b33754e3.jpeg)
① 执行fdisk时,没有指定参数,则显示其简短的使用说明。
![](https://i-blog.csdnimg.cn/blog_migrate/fa7c270749725c755ae32dd7dbdaca59.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/9a4725fa2c5d8d0955071eedb656f9c0.jpeg)
① 执行fdisk /dev/hda 时,以便于利用fdisk 管理/dev/hda。
② 执行fdisk期间,若不清楚该下一步输入什么命令,则输入m,就会显
示
fdisk的命令列表。
③ 输入q命令,则为退出且不保存。
2、查看分区
查看某一个硬盘的分区信息,用两种方式:
⑴ 执行fdisk后,再输入p命令。
⑵ 在shell中直接执行fdisk -l 命令。
![](https://i-blog.csdnimg.cn/blog_migrate/7dcc33bb8908084722a9e3d01c560b2f.jpeg)
① 执行fdisk查询。
② 使用p命令,显示/dev/hda磁盘的分区表。
③ 输入q命令,则为退出且不保存。
![](https://i-blog.csdnimg.cn/blog_migrate/65966c8bdb818dbf580a620888edd624.jpeg)
① 直接使用fdisk查询/dev/hda磁盘的分区表。
当查看分区资料时,fdisk会先显示下面的信息,此为该磁盘的基本信息。
![](https://i-blog.csdnimg.cn/blog_migrate/7b0df61d7dc0aa02cd60d1c15f6d93cd.jpeg)
① 硬盘的设备名称。
② 硬盘的实际大小。
③ 该硬盘有多少个磁面。
④ 该硬盘每个磁道有多少个扇区。
⑤ 磁柱的数量。
⑥ 每一个磁柱的大小,也可以视为分区数据表中每一个单位的大小。
3、添加分区
若要在一个磁盘上生成一个新的磁盘分区,可以在fdisk中使用n命令来添加磁盘分区。此时要提供下面两项信息。
⑴ 分区开始的磁柱编号。
⑵ 分区拥有的磁柱数量。
下面来用fdisk命令添加一个100MB的分区的例子:
![](https://i-blog.csdnimg.cn/blog_migrate/d0f6fa5bffdd11e9f864016d94bee254.jpeg)
① 执行fdisk /dev/hda,便于fdisk管理/dev/hda。
② 查询目前有哪些分区。
![](https://i-blog.csdnimg.cn/blog_migrate/2802479a3791a58613a0ec3f59379693.jpeg)
① 使用n命令,添加一个扩展分区。
② 再输入e,即为extended。
③ 输入该分区开始的磁柱编号。此处没有指定开始磁柱编号,而是回
车,意即为第一个可用的磁柱。也就是默认值1491。
④ 输入该分区的结束磁柱编号,此处也是回车,也就是默认值5221。
![](https://i-blog.csdnimg.cn/blog_migrate/22bcad09047ec4e89639fe2020cbdd44.jpeg)
① 使用p命令,显示/dev/hda磁盘的分区表。
② 验证了此分区是扩展分区。
![](https://i-blog.csdnimg.cn/blog_migrate/a3b638f7debe941cf2a8523e883c003a.jpeg)
①
使用n命令,在扩展分区中建立一个逻辑分区。
② 输入该分区开始的磁柱编号。此处没有指定开始磁柱编号,而是回
车,意即为第一个可用的磁柱。也就是默认值1504。
③ 输入该分区的结束磁柱编号,此处输入:+100M后,再回车。
分区的大小可以直接指定:
⑴ +size: 直接指定分区使用size个磁柱。
⑵ +sizek: 直接指定分区为size kB。
⑶ +sizeM: 直接指定分区为size MB。
注:若直接指定分区大小,一定要记得加上“+”这
个符号,否则fdisk将自动视为磁柱编号。若没有指定分区的大小,fdisk也会自动以可用磁柱的最后一个作为默认值。
④ 使用p命令,显示/dev/hda磁盘的分区表。
⑥ 验证了是否生成了正确的分区。
思考:如何添加一个分区为100MB,结果为⑤所示的分区。
![](https://i-blog.csdnimg.cn/blog_migrate/6187bea8385baac0904d71c2c4ed0c78.jpeg)
① 因为我们修改了分区数据表的内容,则必须使用w命令来将修改的数
据写入到磁盘中。
② 此处提示我们要重新启动系统,让刚刚生成的分区生效。
4、删除分区
fdisk中的d命令来删除分区,在此之前一定要确认该
分区没有重要数据,否则分区一经删除,该分区的上的文件可能就无法抢救。
下面来使用fdisk命令删除分区:
![](https://i-blog.csdnimg.cn/blog_migrate/3acc36fb38263b15c756aa9d7fd3f4e3.jpeg)
① 设备名为/dev/hda6 。
![](https://i-blog.csdnimg.cn/blog_migrate/e1e2becfdd19f3d8fb56a1030e92b245.jpeg)
① 输入d命令,告之fdisk要删除某一个分区。
② 输入要删除的分区编号,此处仅需输入号码即可。
③ 使用p命令,显示/dev/hda磁盘的分区表。
④ 验证是否真的删除了/dev/hda6 。
![](https://i-blog.csdnimg.cn/blog_migrate/06b197be1357947dffc3e47fd5bf46b9.jpeg)
① 最后当然是要保存且重启RHEL5,以便更新分区数据表。
5、修改分区系统标识符
不同的分区可以存储不同的操作系统的文件数据,
因此,每一个分区还得记录这个分区上存储的是哪一
种文件系统(File System)。这个用来记录分区用途
的信息,我们称之为分区系统标识符(Partition systemId)。目前的分区系统标识符是一个16进制的数值,如果想要知道fdisk工具支持哪些分区标识符,可以在fdisk中使用l命令,列出目前使用的fdisk支持的所有分区标识符清单。
![](https://i-blog.csdnimg.cn/blog_migrate/d8972bbbaa7e60640a78d3654692d175.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/d2023c689189271a4813fe7716f546e0.jpeg)
初看上面这么多系统标识符,其实常用的没有几个。如下表所示:
![](https://i-blog.csdnimg.cn/blog_migrate/4bf5cb1a34c161030dcba3e5545363bb.jpeg)
修改分区的系统标识符,先执行fdisk后,再输入t命令进行修改。
下面我们来看看如何修改分区系统标识符:
![](https://i-blog.csdnimg.cn/blog_migrate/5f3fa97f115f0e8b103392266f3c8172.jpeg)
① 此处的/dev/hda5这个分区的系统标识符是83,系统是Linux 。
![](https://i-blog.csdnimg.cn/blog_migrate/5c725e19a8ad8597036ee14bfcd06416.jpeg)
① 执行t命令。
② 指定要修改的分区编号。
③ 直接指定新的系统标识符是82。
④ fdisk提示新的标识符数据已经修改为82(Linux swap/Solaris)。
⑤ 验证系统标识符确实变成了82。
⑥ 最后保存且重启RHEL5后,则生效。
2.3 Linux常见的文件系统
目前的Linux内核支持了数十种文件系统,分类为:
⑴
Linux 专用文件系统
针对RHEL执行所需的环境量身打造的,归类为“Linux 专用文件系统”。
⑵ 支持其他平台的文件系统
为了让RHEL可以直接调用其他系统的文件,RHEL也提供一些其他平台的文件系统,如:msdos、vfat、ntfs、udf等。
⑶ 系统运行类的文件系统
为了满足RHEL的特殊功能而设计的,此类称之为“系统运行类的文件系统”。常见的有:procfs、devfs、tmpfs等。
⑷ 网络文件系统
通过网络调用另外一台PC的磁盘空间的文件系统,统称为网络文件系统。常见的有:NTFS、smbfs、AFS等。
2.4 制作文件系统
若磁盘没有提供文件系统,则RHEL就无法通过文件系统使用磁盘空间。因此,要使用磁盘空间,就必须在该磁盘空间上建立文件系统(Make File System)。
在制作文件系统过程中,会破坏原先磁盘中的文件系统数据,将使原先文件系统中的文件全部消失。故,在制作文件系统之前,确认磁盘空间中没有重要的资料。否则,损失就大了,请务必特别小心。
制作文件系统前必须准备下面两项内容:
一个磁盘空间:制作文件系统是以磁盘空间为单位的,必须要准备好一个磁盘空间,才能在上面制作文件系统。
决定要制作成为何种文件系统:必须在开始制作文件系统前,先决定好要在该磁盘上建立何种文件系统。
在RHEL中制作文件系统,使用mkfs命令,语法如下:
mkfs [-t fstype] [device] [blocks]
![](https://i-blog.csdnimg.cn/blog_migrate/00f158c05a82a42fc9facca5f8ad9754.jpeg)
下面我们来使用mkfs制作/dev/hda5的文件系统:
![](https://i-blog.csdnimg.cn/blog_migrate/ecb3a6383fdd458da72ab3fbefaf965c.jpeg)
① 用
mkfs将/dev/hda5制作文件系统,此处没有加任何参数,故mkfs采用默认值ext2文件系统且为hda5所有空间。
![](https://i-blog.csdnimg.cn/blog_migrate/9a604e654cb7d71f207add730819c0b3.jpeg)
① 加了
-t msdos参数,在/dev/hda5上建立msdos文件系统了。
2.5 挂载文件系统
在RHEL中,整个系统只会有一个根目录,不允许有第二个以外的根目录。故要在RHEL系统中使用某个磁盘空间的根目录与其中所有文件,就必须将该文件系统挂载到文件系统的某一个目录下。
挂载文件系统的命令是 mount,语法如下:
mount [-a]
或者
mount [-t fstype] [-o mount_options] [-device] [mount_pointer]
执行mount时,没有指定参数,则表示要查看目前的挂载数据表。mount常用参数见下表:
![](https://i-blog.csdnimg.cn/blog_migrate/e597bff8dd2bc60f7630790198074621.jpeg)
好啦,我们来看看如何使用mount命令:
![](https://i-blog.csdnimg.cn/blog_migrate/9317d72803aa191fc348d8c9b64baf69.jpeg)
① 建立/mnt/tmp/目录,作为挂载点。
② 查看/mnt/tmp/的内容,目前为空的,表示没有任何文件资料。
③ 使用mount命令,将/dev/hda5分区的文件系统挂载到/mnt/tmp/ 。
④ 再次查看/mnt/tmp/,结果显示有一个lost+found的目录,即存放在/dev/hda5分区中的文件系统。
2.5.1 挂载数据表
如何才能知道RHEL共挂载了哪些文件系统?其实非常简单,直接使用mount命令,不加任何参数即可。
![](https://i-blog.csdnimg.cn/blog_migrate/e26bbb2cf4938033025105fb120ef3a9.jpeg)
由上述数据,可知是以下列的格式显示文件系统的挂载信息。
device on mount_pointer type fstype (mount_options)
其中的每一个字段说明如下:
⑴ device : 文件系统的设备文件名。若device显示为
none : 则表示不是实体的磁盘空间。
⑵ mount_pointer : 挂载点的路径名称。
⑶ fstype : 文件系统的类型。
⑷ mount_options : 挂载时的参数。
除此之外,每挂载一个文件系统的时候,RHEL会自动将挂载的信息加入到/etc/mtab文件中;而卸载一个文件系统时,RHEL也会自动删除/etc/mtab中相关的记录。所以,另一种查看目前文件系统挂载信息的方法,就是直接读取/etc/mtab文件。
![](https://i-blog.csdnimg.cn/blog_migrate/b98e9eeaa25f1a03349bba5676291d43.jpeg)
不过,/etc/mtab会以/etc/fstab文件的格式显示目前的挂载信息。
2.5.2 挂载参数
使用mount挂载文件系统时,可以指定挂载的参数来修改文件系统的功能。挂载参数分为:共享挂载参数和文件系统特定的挂载参数。
1、共享挂载参数
共享挂载参数可以用在任何文件系统上,而且大部分是两两一组,同一组的参数通常是互斥的;也就是说如果你使用了其中一个,就不能使用同一组的另外一个参数。例如:ro/rw就是一组共享挂载参数,若使用ro,就不能使用rw 。
![](https://i-blog.csdnimg.cn/blog_migrate/5641af6245bc8d3926ded83959a58da2.jpeg)
另外,有一个名为defaults的共享挂载参数,即使用mount时没有加任何参数,defaults这个挂载参数等于rw、suid、dev、exec、auto、nouser、async几个参数的组合。
2、文件系统特定挂载参数
它仅适用于某文件系统,我们称之为文件系统特定挂载参数。
3、指定与修改挂载参数
改变文件系统参数有两种方式:
⑴ 执行mount时,直接指定 -o mount_options参数。
⑵ 使用mount -o remount,mount_options修改挂载参数。
方法⑴:仅适用新挂载文件系统时,若已经挂载,则先卸载,再使用方法⑴重新挂载一次;
方法⑵:不需要卸载,直接修改文件系统的挂载参数。
下面来举一个例子,修改挂载参数:
![](https://i-blog.csdnimg.cn/blog_migrate/d0993ddde0d8a2c5874f86ebc24f45a6.jpeg)
① 使用mount命令,直接把/dev/hda5挂载到/mnt/tmp/目录中,因未指定参数,故使用defaults作为挂载参数。由于defaults包含rw,所以/dev/hda5应为可读可写的。
② 验证/dev/hda5是否为rw的状态。显然是。
③ 当使用touch /mnt/tmp/file1时,没有报错信息,说明已经顺利建立了/mnt/tmp/file1 。
④ 卸载/dev/hda5文件系统后,再使用mount挂载/dev/hda5到/mnt/tmp/中。此时参数为ro,所以/dev/hda5的读写状态是只读取的。
⑤ 果然,挂载数据表中显示的的确是ro
⑥ 试着生成/mnt/tmp/file2文件,RHEL告诉我们这是一个只读文件系统,当然无法生成/mnt/tmp/file2文件了。
⑦ 那我们就用mount -o remount 的技巧,在不卸载/dev/hda5的情形下,直接修改/dev/hda5的挂载参数再度成为可读可写。
⑧ 修改后,/dev/hda5的挂载参数就变成了rw
⑨ 当然,/mnt/tmp/file3就可以被生成出来了。
转载于:https://blog.51cto.com/beyondhdf/151136