posts - 262,  comments - 221,  trackbacks - 0
【1. 分区与目录概念理解】
 Linux的分区是物理上的概念,就像我们把一块硬盘分成C:,D:,E:三个区一样,物理上将存储空间分开
 Linux的目录是逻辑上的概念,Linux的目录树实际上是一个分区之间的数据逻辑结构关系,不是物理结构

【2. 分区与目录的关系】
 一个分区必须挂载到一个目录下才能使用。分区可以挂载到任何目录。比如说下面我们看到的例子(以RHEL4为例) 
[root@localhost ~]# df -lh
Filesystem            容量  已用 可用 已用%     挂载点
/dev/sda3             
6.4G  4.8G  1.3G  80%   /
/dev/sda1              99M  
8.4M   86M   9%  /boot
none                    494M  
0      494M   0%  /dev/shm
/dev/hdc              105M  105M     
0  100% /media/cdrom

df命令是用来汇报磁盘文件系统的空间使用情况的,参数l表示本地文件系统,h表示以人可识别的方式表示(实际上就是以M/G单位来表示,而不是纯粹的数字,难以理解)。我们看到上面命令的结果是:

①左边的信息代表了磁盘文件系统分区:/dev/sda1, /dev/sda3等
②右边的信息分别代表了容量,已用空间,可用空间,百分比,挂载点
③特别注意的是挂载点,它就是我们前面所说的将分区挂载到某一个目录的“那个目录”
④我们看到分区sda1挂载到/boot目录下,而分区sda3挂载到根目录/下

这里我们可以这样理解:

分区是真正存放数据的地方,只有一份数据
目录是分区数据的逻辑映射,就像Windows系统中的快捷方式一样
分区的数据可以挂载到任意多个不同目录,这些目录就像不同名的快捷方式,都指向同样的分区数据

例如下面这样:
[root@localhost /]# df -lh
Filesystem            容量  已用 可用 已用% 挂载点
/dev/sda3             
6.4G  4.8G  1.3G  80% /
/dev/sda1              99M  
8.4M   86M   9% /boot
none                  494M     
0  494M   0% /dev/shm
/dev/hdc              105M  105M     
0 100% /media/cdrom

   [root@localhost /]# cd /
[root@localhost /]# ls
bin   dev  home    lib         media  mnt  paul  root  selinux  sys  u01  var
boot  etc  initrd  lost+found  misc   opt  proc  sbin  srv      tmp  usr

   [root@localhost /]# mount /dev/sda1 paul
[root@localhost /]# ls paul
config-
2.6.9-5.EL  initrd-2.6.9-5.EL.img  message     System.map-2.6.9-5.EL
grub               lost+found             message.ja  vmlinuz-
2.6.9-5.EL

可以看到原来/dev/sda1分区是挂载到/boot目录下的,现在我把他也挂载到/paul目录下,这样我们就可以在/paul目录下看到和/boot目录同样的内容了,但实际上数据还是只有一份。

【3. 分区的mount和umount】
 前面我们提到分区必须挂载到某个特定的目录才能使用,那么假如我们把Linux最重要的分区boot分区和根分区/都不挂载到相应的目录,结果会如何呢?

 测试一:卸载/分区
[root@localhost /]# umount /
umount: /: device is busy
umount: /: device is busy

很明显,/分区是不能被umount的。那么boot分区呢?

测试二:卸载boot分区
[root@localhost /]# ls
bin   dev  home    lib         media  mnt  paul  root  selinux  sys  u01  var
boot  etc  initrd  lost+found  misc   opt  proc  sbin  srv      tmp  usr
[root@localhost /]# umount boot
[root@localhost /]#

测试成功,可见boot分区也是可以被umount的,而/实际上代表了硬盘,所以不能被umount。

【4. umount了boot分区还能再正常启动吗】
 前面我们看到了既然boot分区可以被umount掉,那么假如我们umount了boot分区后重启,会不会导致系统启动不了呢?答案是不会。

 我们可以到Linux下的/etc/fstab命令来查看Linux启动时的挂载情况及顺序
[root@localhost boot]# cat /etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
LABEL=/                    /                       ext3    defaults       1 1
LABEL=/boot             /boot                  ext3    defaults        1 2
none                       /dev/pts              devpts  gid
=5,mode=620  0 0
none                       /dev/shm             tmpfs   defaults        
0 0
none                       /proc                   proc    defaults        
0 0
none                       /sys                    sysfs   defaults        
0 0
LABEL
=SWAP-sda2    swap                   swap    defaults       0 0

# Beginning of the block added by the VMware software
.host:/                 /mnt/hgfs               vmhgfs  defaults
,ttl=5     0 0

# End of the block added by the VMware software
/dev/hdc                /media/cdrom          auto    pamconsole
,exec,noauto,m anaged 0 0
/dev/fd0                /media/floppy           auto    pamconsole
,exec,noauto,

可以看到在该文件中,已经定义了在启动时默认到/boot目录下去寻找启动文件,所以即便我们把boot分区umount掉了,重启后还是能够正常进入的。它是靠什么自动加载的呢?其实fstab 文件中的 defaults 就包含了 "auto" 功能,除非明确指定 noauto ,否则开机都会自动挂载。

注意:这里的前提条件是不改变fstab文件的内容,如果我们把/boot那一行注释掉了,那么就真的启动不了了。


-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2008-12-01 22:57 Paul Lin 阅读(2136) 评论(1)  编辑  收藏 所属分类: Unix / Linux


FeedBack:
# re: 【Linux学习笔记】分区与目录
2010-01-08 11:14 | sm-sun
您好,我是初学者,可能对目录与分区还是没能完全理解。

[sm@sm-sun ~]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 3.9G 3.7G 43M 99% /
tmpfs 250M 524K 249M 1% /dev/shm
/dev/sda1 248M 26M 210M 12% /boot
/dev/sda5 2.8G 274M 2.4G 11% /home
我当时装系统时分区的时候就分了 / boot home 这个三个。在这里看那这三个目录就应该该是分别对应不同的物理分区吧。

[sm@sm-sun ~]$ cd /
[sm@sm-sun /]$ ls
bin dev home lost+found mnt proc sbin srv tmp var
boot etc lib media opt root selinux sys usr
1.那看这里,那boot home这两个目录都是在/里面的,那是不是这两个目录的只是像两个快捷方式那样放在了/目录里面,而他们的实际分区是单独的,不是包含在/目录对应的分区里?
2.而其他的除了boot home 这两个目录外的其他目录是默认生成的,它们的对应的分区就是/目录对应的分区里的一部分吗?

  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(21)

随笔分类

随笔档案

BlogJava热点博客

好友博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜