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 閱讀(2153) 評論(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熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 吉安市| 苏尼特左旗| 济源市| 佛坪县| 桐梓县| 陆河县| 盐亭县| 万全县| 郓城县| 洛隆县| 扎兰屯市| SHOW| 安溪县| 益阳市| 华亭县| 南昌市| 厦门市| 通海县| 大理市| 安顺市| 鄂州市| 宁德市| 图们市| 长春市| 木兰县| 长武县| 丰顺县| 乐亭县| 灵山县| 保德县| 陇西县| 孟州市| 镇沅| 伊川县| 屯门区| 利辛县| 个旧市| 遵化市| 开封市| 荥阳市| 招远市|