1. 程式人生 > >linux系統分割槽與掛載的關係

linux系統分割槽與掛載的關係

linux系統分割槽和掛載淺談。

一 Linux的安裝

 Linux的安裝是比較簡單的,整個過程和安裝XP差不多。首先BIOS中設定從光碟機啟動,(不知道怎麼設定?那你還是先裝虛擬機器玩玩吧!)會要你選安裝模式,直接回車用圖形介面;然後Linux安裝程式會有一個檢查光碟的過程,這裡可以選擇跳過【Skip】;然後等待初始化工作,系統就可以進入到安裝介面了;進入安裝介面後就可以進行一些設定(區域,語言,時間,密碼,分割槽等),設定完成後選擇要安裝的元件,安裝完成就一切OK了。

二 Linux系統分割槽

這裡我說的是指在分割槽時採用手動分割槽,而不是自動分割槽。Linux分割槽和Windows有很大的區別,你無法在Linux中看到諸如Windows中的C盤,D盤。這確實會讓我們這些用慣了WIN作業系統的人感到很不習慣。其實理解了Linux分割槽結構後就很清晰了。

1: 硬碟分割槽

首先我們來看硬碟分割槽,分割槽是和作業系統沒有任何關係的,因為她是在安裝作業系統之前進行了。我們可以簡單的認識,分割槽就是把硬碟分割為不同的區域。在談具體分割槽前,有個比較簡單的問題想問下大家:硬碟問什麼要分割槽?.....哈哈!怎麼樣,不是很好回答吧,首先是因為作業系統在啟動時會通過MBR來獲得作業系統檔案所在的分割槽,所以一個可引導分割槽是不能缺少的。這也是為什麼新買的硬碟不能直接用的原因。而且進行多個分割槽是為了提高管理效率,所有東西放在一個分割槽,OS管理其起來效率比較低,因為每次要檢索的東西太多。

下面我們簡單看下硬碟的分割槽結構:

硬碟主引導扇區 = 硬碟主引導記錄(MBR)+ 硬碟分割槽表(DPT),一共是512個位元組,其中MBR是446,分割槽表一共64位元組,然後是2個位元組的結束標誌。引導扇區儲存在硬碟的0頭0道1扇區,也就是Boot Sector。(如圖1)

作業系統在啟動時通過BIOS(BIOS實際是一個基礎輸入輸出系統,用於和硬體打交到)程式把Boot Sector讀入記憶體,然後執行其中MBR,這個時候BIOS就把啟動交給MBR控制;MBR作用是在4個分割槽表中搜索標誌為活動的分割槽,找到後把活動分割槽的第一個扇區讀入記憶體,然後開始執行它,執行特定系統的啟動程式(LILO,GRUB,NT Loader);這個時候啟動的啟動就交給了作業系統的載入程式來控制了。然後作業系統進行一系列的初始化,最後把系統交給系統核心進行管理。

2:分割槽型別

上面介紹了硬碟分割槽結構和系統啟動,下面就看下各個分割槽。硬碟分割槽一共有3種,主分割槽,擴充套件分割槽和邏輯分割槽(如圖2)

主分割槽上可以安裝作業系統,因為MBR中記錄的主分割槽資訊,系統啟動時會到主分割槽來查詢作業系統引導檔案,所以作業系統的引導檔案必須在主分割槽中,否則系統就無法啟動了。而最多隻支援4個主分割槽(由於硬碟僅僅為分割槽表保留了64個位元組的儲存空間,而每個分割槽的引數佔據16個位元組,故主引導扇區中總計可以儲存4個分割槽的資料。作業系統只允許儲存4個分割槽的資料。所以為了建立更多的邏輯磁碟供作業系統使用,系統引入了擴充套件分割槽的概念)。

 擴充套件分割槽並不是一個真實存在的分割槽,它只是記憶體管理連結串列中的一個指標,指示出那一塊區域是擴充套件分割槽。上面也提到出現擴充套件分割槽的原因。所以一個擴充套件分割槽也是一個主分割槽。而通過在擴充套件分割槽中在劃分邏輯分割槽對系統分割槽進行擴充套件。實際上所有的邏輯分割槽都是在一個分割槽類,只是邏輯上分開,這也是叫邏輯分割槽的原因。但對使用者來說一切都是透明瞭,我們看起來系統中有很多分割槽。

3:Linux分割槽

其面介紹了硬碟分割槽結構和分割槽型別,這裡就要講講Linux系統中分割槽的表示了。首先回顧下WINDOWS下分割槽的情況。在WINDOWS系統裡,我們看到,每個分割槽都有一個名字,C,D,E,F....實際這是OS使用的一種對映。通過作業系統中看到的這些碟符和分割槽聯絡起來,然後我們就可以在這些碟符下讀寫檔案,作業系統負責把檔案寫入到硬碟分割槽。在WINDOWS中碟符名稱和分割槽是對應了。

我們在來看看LINUX下的情況,在Linux下使用/dev/hda,hdb..這樣來標識硬碟,具體硬碟上的分割槽就用/dev/hda1,hda2,來表示.最後的數字代表分割槽號,主分割槽是1-4,邏輯分割槽是5以後的數字。Linux中最大的區別就是我們在也看不到所謂的碟符了。Liunx採用樹形的檔案管理系統,也就是在Linux系統中,可以說已經沒有分割槽的概念了。分割槽在Linux和其他裝置一樣都只是一個檔案。要使用一個分割槽必須把它載入到檔案系統中。這可能難於理解,繼續往下看。

Linux中樹形的檔案結構,最頂層是/ 目錄。在安裝系統時,你必須選擇把一個主分割槽掛載在/ 目錄下,因為系統需要安裝在/掛載的主分割槽下。否則系統會提示你。這裡又一次提到了掛載。所以掛載就是把目錄和分割槽連線起來,和上面說的WINDOWS下的對映關係是一樣的。不同的是WINDOWS是把分割槽對映到一個碟符,而LINUX下是對映到一個目錄。 這是理解他們不同最重要的地方,而導致不同的是因為檔案系統結構不同。

4:Linux檔案系統

上面說了Linux的檔案系統是樹形的,安裝的系統必須是在/ 目錄下,因為/目錄下掛載了一個主分割槽。/目錄是樹形的根,其他所有目錄都是他的子節點。

我們看上圖3 可以更好的理解, Linux整個系統結構如上, 我們安裝系統的時候已經把分割槽1掛載到 / 目錄下了. 而這個時候沒有掛載其他任何分割槽,所以/ 目錄下的所有其他目錄都在這個分割槽下,也就是說,我在任何目錄下讀寫操作實際都是操作的這個1號分割槽。

如果我們想使用其他分割槽,就必須把這個分割槽掛載到一個目錄下(而這個目錄必定是以  /  為根目錄的目錄樹的一個子目錄),這個目錄可以是已經存在的目錄,比如/home,也可以是我們自己建立的目錄,比如/oracle。當然有些目錄比如/lib, /dev, /etc, /usr這些都不能掛載其他分割槽,因為他們都存放著系統需要的檔案,一旦被掛載其他分割槽,那沒OS就無法找到所需的檔案,系統就會崩潰。比如我們把分割槽2掛載到 /usr/X11 目錄下時,系統就無法通過 X11 目錄找到分割槽1上的檔案,這個時候系統圖形介面就無法使用了. 雖然檔案還在硬碟上。前面說過,目錄 --- 分割槽 是通過掛載吧他們聯絡起來。你更換了分割槽,也就破壞了聯絡,就無法在找到之前的檔案了。我們在看分割槽5和分割槽6,我們把它掛載到/home/ftp 和 /oracle目錄下,這個時候我們在操作這2個目錄是,就是操作對用的分割槽了.

而WINDOWS就沒這麼複雜,她不是採用樹形的結構,每個分割槽對應一個碟符,一旦建立對映關係就無法在修改。實際上,LINUX的每個掛載了分割槽的目錄就相當於WINDOWS系統中的碟符,比如上面的,/home/ftp 和 /oracle目錄我們就可以把她看做一個碟符和一個分割槽關聯,只是因為LINUX檔案系統,使得她更加靈活,所以也更復雜和難以理解。

三    Linux中的設定

1:檢視Linux分割槽資訊

前面介紹完了Linux檔案系統和分割槽的關係,大家應該對分割槽有很清楚的認識了。下面我們就關注下Linux系統中如何檢視分割槽情況。

在Linux系統中我們使df -u 命令就可以看到系統目前分割槽情況

  1. Filesystem             容量      已用          可用        已用%           掛載點
  2. /dev/hda1              21G       6.7G         13G         35%             /
  3. none                   506M       0           506M        0%              /dev/shm
  4. /dev/hda2              11G       5.2G         5.0G        52%             /home
  5. /dev/hda5              16G       9.3G         5.1G        65%             /oracle
  6. /dev/hda6              19G       201M         18G         2%              /usr1

從中我們可以看到目前系統載入了4個分割槽,其中2個主分割槽(hda1,hda2)和兩個邏輯分割槽(hda5,hda6)。也可以看到他們的載入點。其中hda1分割槽是系統分割槽,上面安裝了作業系統。而/home,/orace,/usr1分別載入了其他3個分割槽。

而通過fdisk -l 命令可以看到目前系統中所有分割槽的資訊,如下表

  1. Disk /dev/hda: 80.0 GB, 80026361856 bytes
  2. 255 heads, 63 sectors/track, 9729 cylinders
  3. Units = cylinders of 16065 * 512 = 8225280 bytes
  4.    Device Boot      Start         End      Blocks   Id  System
  5. /dev/hda1   *           1        2677    21502971   83  Linux
  6. /dev/hda2            2678        4079    11261565   83  Linux
  7. /dev/hda3            4080        9729    45383625    5  Extended
  8. /dev/hda5            4080        6080    16073001   83  Linux
  9. /dev/hda6            6081        8581    20089251   83  Linux
  10. /dev/hda7            8582        9729     9221278+  82  Linux swap

可以看到hda3是一個主分割槽,但實際上他是一個擴充套件分割槽,前面我們介紹了擴充套件分割槽,她實際會佔用一個主分割槽,因為MBR只能記錄4個分割槽資訊. 由一個比較特殊的是hda7,她是一個交換分割槽,在WINDOWS系統中就是虛擬記憶體檔案. 所以用df命令是檢視不到她的.

這裡順便說下為什麼標識為/dev/hda,前面簡單提到過,LINUX下所有裝置都被認為是檔案,而/dev目錄存放所有系統裝置檔案的,而一個分割槽就是一個檔案,名字就是分割槽的名字.

2:Linux分割槽掛載

常用的掛載和解除安裝分割槽及檔案系統的命令是mount和umount ,比如 mount /orace  /dev/hda5,就是把5號分割槽掛載到/oracle目錄下。具體的命令格式就不介紹了,網上很多,也可以使用man來檢視。我們這裡主要講講自動掛載。並經每次都要使用命令手動掛載確實很麻煩,我們可以通過編輯/etc/fstab檔案來讓系統開機時自動載入(這裡介紹的是系統安裝好後,使用fdisk分割槽後,進行載入)

vi /etc/fstab 就可以看到一下資訊:

  1. # This file is edited by fstab-sync - see 'man fstab-sync' for details
  2. LABEL=/                     /                   ext3    defaults        1 1           
  3. none                        /dev/pts            devpts  gid=5,mode=620  0 0           
  4. none                        /dev/shm            tmpfs   defaults        0 0           
  5. LABEL=/home                 /home               ext3    defaults        1 2           
  6. none                        /proc               proc    defaults        0 0
  7. none                        /sys                sysfs   defaults        0 0
  8. LABEL=/oracle               /oracle             ext3    defaults        1 2
  9. LABEL=/usr1                 /usr1               ext3    defaults        1 2
  10. LABEL=SWAP-hda7             swap                swap    defaults        0 0
  11. /dev/hdc                /media/cdrom            auto    pamconsole,fscontext=system_u:object_r:removable_t,exec,no  auto,managed 0 0

這個檔案第一列就是具體的分割槽,第2列是分割槽掛載的目錄,第3列是檔案格式,第4列是掛載規則,第5列是備份;0為從不備份,或顯示上次至今備份之天數;第7列是啟動時fsck檢查順序,0為不檢查, “/”永遠為1;

瞭解了各個欄位我們就具體來看下,其中/ 目錄系統會自動寫到這個檔案中,因為不載入系統如何啟動??那幾個none掛載的我還不太清楚。我們具體看看我們實際分割槽的掛載。我們可以在linux中使用fdisk 來進行分割槽。比如我們用fdisk劃分了hda2,5,6,7這4個分割槽。但我們想使用他們的時候,我們必須手動新增。

我們可以通過一下命令來完成自動載入

  1. mkfs.ext3 /dev/hdax
  2. e2lable /dev/hda2    /home 
  3. LABEL=/home          /home               ext3    defaults        1 2     //修改Fstab

分割槽要使用首先要格式化,目前使用較多的是ext3檔案格式, 他相對於ext2更安全,更快,但是比較浪費空間了,我80G硬碟用ext3後,可用的只有67G左右,XP下 NTFS和FAT32可是有70G左右的.

格式話之後就可以給分割槽設定一個標籤名(一般和要掛載的目錄名字相同),然後在fstab檔案中新增一行。大家可能有疑問,第一列不是標識分割槽嗎,這裡為什麼要用標籤,其實你也可以用  /dev/hda5 ,這裡LABLE是一個分割槽的標籤,你可以把它當作分割槽的名字。

以上就是對一個新建分割槽自動載入的過程。開機後我們可以通過 vi /etc/mtab檢視已經載入的分割槽和檔案系統。

3:關於交換分割槽

目前計算機記憶體越來越大,LINUX和VISTA都使用了記憶體做快取,cached和buffers的區別在於一個是讀一個是寫。目前系統最大的開銷都是I/O操作,通過buffers先把檔案讀到記憶體,這樣就減少了I/O,而使用cached就是把要寫入的檔案放到快取中,作業系統一次寫入磁碟,減少I/O。而交換分割槽是為了解決記憶體不足,而目前交換分割槽使用的很少,所以不需要給她分配過大的空間。當然作為小記憶體機器還是很有用。

我們可以單獨劃分一個分割槽作為交換分割槽,比如我們使用前門的hda7作為交換分割槽。因為他是交換分割槽,所以檔案系統不能是ext3格式,必須是交換分割槽格式.

  1. mkswap -v1 -L SWAP-hda7 /dev/hda7
  2. swapon -a
  3. LABEL=SWAP-hda7     swap       swap    defaults        0 0    //修改Fstab

用以上的mkswap命令就可以把一個分割槽格式化為交換分割槽檔案系統,其中-L 引數是設定分割槽的LABLE名。然後使用swapon -a來關在系統中所有交換分割槽。最後修改fstab,加入這一句, 開機就可以自動載入交換分割槽了。

4:載入其他檔案系統

除了載入Linux系統分割槽以外,我們還可以載入光碟機,軟碟機,USB儲存裝置,設定是WINDOWS檔案系統。方法和上面完全一樣,這裡就不廢話了。

最後要注意的是修改fstab要注意,如果設定的不正確,可能導致系統無法啟動.所以編輯時要小心.

參考資料: