免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 938 | 回复: 0

二、磁盘与文件系统的管理 [复制链接]

论坛徽章:
0
发表于 2009-04-01 23:20 |显示全部楼层

在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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP