- 论坛徽章:
- 0
|
在LINUX的系统中,它的文件系统及结构与传统意义上的windows有着很大的区别,这应该也是LINUX的特色之一吧,下面是我在学习和使用LINUX磁盘管理及文件系统时的一些体会。
首先是linux系统中磁盘的命名,我们将几种常用的设备列出来
/dev/hd**, 代表这是PATA接口的磁盘设备,为了便于标识,LINUX为其增加了一个字母用于区分,即第一个IDE的磁盘为/dev/hda,第二块可能就是/dev/hdb等。
/dev/sd**, 代表这是一块SATA的硬盘,或是SCSI硬盘,以及我们经常使用的U盘也会识别成这个标识,同样也会附加一个字母来用来区分,形如/dev/sda , /dev/sdb等。
/dev/fd*, 代表是软盘,现在已经几乎见到了,其后面的标识可以使用0-7中的一个。
这里有一点要说明的是系统在启动时如何区分哪个是第一个硬盘,哪一个是第二个硬盘呢,除非用户手动在boot loader中指定内核去人为识别,否则系统则按照硬盘在主板上的连线决定,如IDE0主盘为/dev/hda,从盘为/dev/hdb; IDE1的主盘为/dev/hdc,从盘为/dev/hdd,等等。
磁盘的结构
至于磁盘中最基本的面、道,扇区及柱面的概念,想必可以在这里省下来了,实在太累了,不想写那么多的字,不了解的,可以翻翻计算机基础之类的书...
主引导记录(Master Boot Record),即常说的MBR,它是位于磁盘的0面0柱第0个扇区(以0编号应该明白,计算机中多以0开头而不是1),其中包含了一些很得要的信息:
初始程序加载器(IPL, Initial Program Loader), 它占用了446字节的空间,操作系统的内核存在于这个地方。
分区数据表(Partition Table),占用了64字节。一些windows平台的朋友,当系统分区出现问题的时候,常说的恢复MBR,其实就主要是指恢复这个分区表 (fdisk /MBR)。
另外还会有2个字节的验证码信息,这2个字节是用来存储初始程序加载器的检查码。
可以想像这个引导扇区的重要性,所以一旦这里出错,系统将可能无法使用,也许硬盘也无法使用。
这里提供一个备份与还原的主引导记录的方法,这是我从书上记录下来的,没有使用过,因为它要用到软盘,但本人电脑都不认识这上了年纪的东西。
.将一张空的软盘,放入第一台电脑的软驱中
.使用这个命令 #dd if=DEVICE NAME of=/dev/fd0 bs=512 count=1
.完成备份,取出软盘保存好。
其中dd这个命令,是一个用于复制文件的一个工具,if代表源目标,of则代表是目的目标,bs是代表块大小,即512字节,count就是数量为1.
由于我们的分区表只有64字节,而一条主要分区记录需要占用16字节的大小,所以一块硬盘最多只能有4个主要分区,一块硬盘中最多只能一个扩展分区,所以我们如果想要有最个分区数量时,经常会把硬盘分成3个主要区加一个扩展分区,在护展分区中再加以分为多个逻辑分区,实现更多的分区。当然这样做也不是没有限制的, IDE硬盘最多可以有60个逻辑分区,加上三个主分区,IDE硬盘最多可以分成63个分区。而SCSI硬盘最多可以有12个逻辑分区,加上三个主分区的话,最多可以15个分区。这就是有些书讲,IDE盘最多可分63个区,而SCSI盘最多可分15个区的原因。
下面就要讲一下LINUX的分区管理了:
在Red Hat Enterprise Linux中,常用的分区工具有好几种,比如fdisk, sfdisk及GNU计划的分区工具parted,用的人最多的想来应该是 fdisk这个工具了,本人最近想尝试使用parted这个工具,据说是可以调整分区的大小,不过,我们依然会以fdisk来说明linux的分区管理。
fdisk 最简单的语法就是: #fdisk DEVICE_NAME (如: #fdisk /dev/sdb1)
它有如下几个参数:
a 切换分区的启动标签
b 编辑BSD系统中的磁盘卷标
c 转换成DOS兼容的标签
d 移除一个分区
l 打印出系统支持的所有分区类型
m 用于显示帮助信息,即显示命令参数列表
n 新建一个分区
p 显示系统中所有的分区数据
以下是我输入fdisk /dev/sdb1的结果:
![]()
在命令执行过程中,如果有什么命令不知道的就打一个m,就会显示这张很详细的说明列表。
查看分区信息,可以这个分区过程中打一个p,就会显示一个完整的分区表,如果要是在shell中想查看分区信息,就打入如下命令:
.fdisk -l
其实写到这里本人犯难了,想做一个详细的分区讲解的,但限于时间有限,不在此介绍了。
当分区完毕后,请记得保存分区表,即在上图中的光标中打一个w,将所做更改写入分区表中,这个时候,分区才算是完成了,此时的分区其实并未生效,可以选则重启来重新加载分区表,但我们有一个更快捷的方法可以立即加载它,即在shell提示符处打入 partprobe,内核就会即时加载分区表了,可以使用fdisk -l查看新的分区信息。
但有时partprobe这个命令并不是一定会成功,必要时还是要重新启动系统以完成加载。
linux与windows在文件系统上也有很大的不同,不同的系统,一般都有属于它自己的专有文件系统,例如windows使用它们的fat32及NTFS等等,而linux及大多数的类unix系统使用ext文件系统,现在最流行的是ext2及ext3(带日志功能的ext2)。
下面我们来讲解一下linux的文件系统。
linux系统和其他系统一样采用数据块来存储数据,分块的大小是有一些讲究的,块太大访问速度会越快,但由于块中的文件如果不满一块,按一块处理,所以会造成空间上的浪费,块太小虽然节省了空间上的资源,但又让访问速度慢了好多,按实际需求取舍吧。
linux采用inode,即文件的索引节点来存储和定位一个文件的信息,这其中包括:
文件类型
权限
连接数
文件大小
文件拥有者
组拥有者
数据块的位置
等等。
一个inode,只能存储与一个文件相关的信息,一个inode本身会占用128B的空间,一个文件系统中有多少个inode,将会存储多少个文件,即使系统中有剩余空间,但应该也无法再存储更多的文件,因为即使存了,系统也会因为没有了inode,而无法定位到文件。
linux中,使用mkfs命令创建一个文件系统。
语法: mkfs [-t 文件系统类型][设备名][块数量]
如 :
![]()
其实我们不用加-t ext2的参数,默认也会创建这种文件系统类型。
文件系统的挂载
这里顺带说一下的是,windows的文件系统采用的每个盘中有一个根目录,而linux系统中只有一个根目录就是root “/” 目录,它是linux系统中所有文件的根,也就是说所有所有文件及目录都是它的枝和叶子。
redhat enterprise linux 5 中的/sbin, /bin, /dev, /etc, 及/lib这几个目录必须挂载在根文件系统中,其余的文件和目录可以在别的文件系统上。
挂载一个文件系统需要使用mount这个命令
语法: mount [-t 文件类型][-o 挂载选项][挂载设备名][挂载点] 如
![]()
我们可以使用命令来验证:
![]()
上一个命令是用来挂载我的U盘,因U盘在linux中被识别成scsi设备,即以sd开头的设备名,下面我们来做一个挂载光盘的实例,这在RHEL中变的更为简单,不用再加上那些is09660之类的属性参数,当一张光盘放入光驱中时,系统就会自动识别出是光盘而非其他介质。
![]()
我们可以查看是否已挂载呢?
由于我放入的一张RHEL5的安装光盘,内容太多一页显示不完,所以使用find命令显示其中类型为目录的文件用于测试我们是否已成功挂载。
![]()
我们可以看到,已经成功的在cd-com挂载点上列出来了光盘中的目录文件。
其余介质的挂载方式基本上是相通的。
在LINUX系统中,可移动介质是一定要经过卸载步骤才可以被移除的,否则会造成数据的丢失及其他故障,比如光盘介质,如果你没有经过挂载操作,按弹出按钮是无法弹出的,当然不要把这一现象认为是光驱在LINUX下不好用,呵呵。
我们以卸载光驱为例讲解如何卸载可移动介质,使用umount命令:
语法 #umount 挂载点|设备名 (这样写,应该知道,两种选项只可任选其一)
如图示:
![]()
这样子,我们就能正常退出光盘了,一般情况下都是可以正常卸载的,有时可能会犯一些低级错误,身处于挂载目录中,却拼命的执行卸载命令,无论如何也无法执行成功,呵呵,当然也有一些很特殊的情况,比如有人远程连入电脑正在访问光驱等等,其实,这时我们可以使用fuser -v,指定设备名,就可以看出哪些进程和用户访问驱动器,可以把这些访问进程在安全的情况上终结,就能正常操作了。
有一点要说明的,mount操作只能在当前环境下有效,即重启之后,只能重新执行操作才能正常使用,这样子是不是很烦琐呢,当然我们如此强悍的LINUX早为我们想到这一点了,可以非常高效的设置这些文件系统了。
/etc/fstab 这个文件用于简化mount及umount的操作,可以将设备或是文件系统配置成开机检查或自动挂载等。
下图则是fstab文件的内容了
![]()
其格式为: 设备名 挂载点 文件格式 备份频率 系统启动时的检查顺序
按照此格式信息写进去,就可以自动的执行mount命令了,比手动方便多了...
![]()
在最后添加了最后一笔记录后,重启之后就可以自动使用光盘,而无须自动挂载了。。。当然多数情况之下,我们不推荐对光驱和U盘等可移动设备做这们的操作,因为除非你放上去就不拿下来了,本例中,我没有多余的磁盘空间来示例,所以暂用了光盘,原理是一样的。
建立虚拟内存空间,即swap的创建,使用mkswap工具。
mkswap支持两种方式的虚拟内存创建军,以设备方式和文件方式两种。
第一种以设备方式创建
![]()
第二种以文件方式创建
1.先创建一个10M大小的文件用于示例。
![]()
2. 将新建立的文件设为虚拟内存swap类型
![]()
完成创建虚拟内存以后,并未真正启用这些空间,必须手动开启
swapon 设备名或虚拟文件名
此处的设备名或虚拟文件是指刚才创建的swap空间,这样子就可以真正启用虚拟文件了
如果想停用某个虚拟空间,则可以使用swapoff命令,格式同swapon命令
如果想查看当前系统的虚拟空间情况,则可以使用swapon -s
![]()
可以看到,刚才创建的/dev/sdb1及/tmp/swapfile都已经成功的加到了swap的行列,并且type处也都标明了他们的出身情况,呵呵,如果想永久的使用这些空间作为虚拟内存,则可以将他们添加到/etc/fstab中,让系统自动识别,这里就不再做演示了.
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/57352/showart_1887984.html |
|