1. 程式人生 > >linux檔案系統管理---分割槽掛載篇

linux檔案系統管理---分割槽掛載篇

轉:HTTP://www.cnblogs.com/alantu2018/p/8461680.html

一,系統在初始化時如何識別硬碟 
1,系統初始時根據MBR的資訊來識別硬碟,其中包括了一些執行檔案就來載入系統,這些執行檔案就是MBR裡前面446bytes裡的啟動載入器程式,而後面的16X4的空間就是儲存分割槽表資訊的位置;如下圖
133_U3_1_1 
2,在分割槽表中,主要儲存了以下資訊:
(1)分割槽號,常見的分割槽號有以下幾種:其它編號可以使用fdisk指令,再執行l(小寫L)檢視

0x5(或0xf) 擴充套件分割槽
為0x82 Linux交換
0×83 Linux的
為0x8E Linux LVM
0xfd Linux RAID自動

 

(2)分割槽的起始磁柱;
(3)磁柱的總數;
所以在系統初始化時,就根據分割槽表中的這三項資訊來識別硬碟。

二,介紹硬碟分割槽的相關事項
1,當主分割槽都用完時,可以使用擴充套件分割槽來增加額外的分割槽,這已在前面介紹過了,但是在Linux的核心裡:
·IDE的硬碟最多可以支援到16個分割槽;
·
硬碟做多分割槽的好處:如下:
(1)從控制方面的考慮
將硬碟分成多個分割槽,就可以把應用程式,使用者的資料,或是一些需要有安全性的資料,分別放入不同分割槽中方便管理;


(2)從效率方面的考慮
因為硬碟在使用一段時間後,都分有區塊不連續的情況,如果一塊大容量的硬碟沒有劃分成多個小分割槽,那麼硬碟在搜尋資訊時,因為搜尋的範圍非常大,所以會比較久,如果將大容量的硬碟劃分多個小分割槽,在搜尋的時候相對就會快一些;
(3)為為使用磁碟配額的功能
因為配額只能對分割槽做設定,所以我們可以將/家庭目錄單獨做一個分割槽,然後 以對這個分割槽做配額;
(4)資料從備份恢復狀語從句:考慮
例如,/家庭這個目錄是專門用於存放使用者資訊的目錄,將這個目錄單獨設定一個分割槽,就可以定期就是個分割槽作備份工作,恢復的時候也比較方便。

三、介紹分割槽的管理
1、可以使用下面的指令來建立分割槽及檢視分割槽
fdisk

 /dev/hda 建立分割槽    
引數:-l 檢視分割槽
執行 fdisk 指令後,如下圖:
133_U3_3_1 
例1:在新建分割槽 ,輸入n,系統會要求輸入起始的磁柱編號,預設系統會指定一個最近的未使用的磁柱號,回車後,再輸入結束的磁柱號,不過根據磁柱號來算一個分割槽的容量不太方便,可以用“+數值K或+數值M (例:+1000M)” 這樣直接以容量的表示方式來設定,這樣直觀一些;再執行p,就可以看到新增加的分割槽了;
133_U3_3_1_1 
例2:刪除分割槽 ,輸入d,要求輸入要刪除的分割槽號,在DEVICE欄位列可以看到每個分割槽對應的編號,輸入想要刪除的分割槽號回車即可
133_U3_3_1_2 
以前所有操作認為沒有問題,輸入 w ,儲存退出即可。
這時主機螢幕上會提示:
The kernel still uses old table 表示目前系統還是在使用舊的分割槽表;
The new table will be used at the next reboot. 表示只有在下次重新開機後才會使用新的分割槽表;
2、使用下面的指令重新載入分割槽表到kernel中,這樣可以不用重新開機就可以啟用新的分割槽表。
    partprobe

四、建立檔案系統(對硬碟分割槽進行格式化)
1、格式化指令及指令語法:
    mke2fs [引數] 要格式化的分割槽
例如上面的例子中,格式化hda6這個分割槽 mke2fs /dev/hda6
2、格式化後,會出現一些分割槽的相關資訊,為了理解這些資訊,先了解一下分割槽的格式:
我們使用fdisk建立的分割槽,不能直接用來存放資料,必須先對這個分割槽做格式化的工作,格式化就是將分區劃分成一格一格的block及多少個Inode可以使用,而每個block就是檔案系統存取資料的最小單位,所以才可以將資料存放在這些block中,而且每多個 block 會組成一個 group;如下圖所示:除了boot sector 之外,第一個block 稱為 super block 用來記錄這個分割槽共有多少個block和inode 已經使用;多少block和inode等資訊;
133_U3_4_2_1 
如下圖所示:
13 block groups :表示這個分割槽被劃分出了13個block group;
8192 blocks per group:表示每個group中有8192個block;
2008 inodes per group:表示每個group中有8192個inodes;
如果super block 損壞,這個分割槽將無法訪問,所以每隔一段block 就會備份一次這個super block,如下圖:
superblock backups stored on block:下面的數值就是備份super block 所在的block的位置。
133_U3_4_2_2 
3、dumpe2fs 指令檢視分割槽的詳細資訊
dumpe2fs /dev/hda6 | more    檢視指定分割槽的資訊(前一頁半是super block的內容,後面是每個Group的詳細資訊),因為所顯示的內容很多所以加上了 | more 用於分頁顯示;
顯示資訊的部分說明:
Inode count:   Inode的總數量;
Block count:    Block的總數量;
Free blocks:    剩餘的block數量;
Fre inodes:     剩餘的Inode數量;
Filesystem features: has_journal表是為ext3檔案系統
4、mke2fs格式化指令格式及引數
格式:mke2fs [引數] 要格式化的分割槽檔名(例:/dev/hda6) 
mke2fs -j /dev/hda6 
引數:
·b:設定每個block的大小,預設為1024bytes(1K),最大4096bytes(4K),如果設定太大將使用4096bytes;
·c:格式化前檢查分割槽中是否有損壞的block;
·i :設定每個Inode的大小,例:mke2fs –i 4096 /dev/hda6
·N:直接設定Inode 的總數量;所設定的值只是接近而矣;
·m:設定在分割槽上,保留多少空間給root,預設保留5%;mke2fs –m 10 /dev/hda6
·L:設定分割槽卷標,預設不設定,通常習慣將卷標名稱設為同掛載點目錄名稱相同方便記憶;mke2fs –L data /dev/hda6
·j:建立成為ext3檔案系統,也就是加入日誌功能;

五、介紹將ext2格式的分割槽轉成ext3
1、ext2與ext3的區別如下:
(1)ext2和ext3的格式完全相同,只是在ext3硬碟最後面有一部分空間用來存放Journal(日誌)的記錄;
(2)在ext2中,寫資料到硬碟中時,先將資料寫入快取中,當快取寫滿時才會寫入硬碟中;
(3)在ext3中,寫資料到硬碟中時,先將資料寫入快取中,鞀快取寫滿時系統先通知Journal,再將資料寫入硬碟,完成後再通知Journal,資料已完成寫入工作;
(4)是否有Journal的差別:
在ext2中,系統開機時會去檢查有效位(Valid bit),如果值為1,表示系統上次有正常關機;如果為0,表示上次關機未正常關機,那系統就會從頭檢查硬碟中的資料,這樣時間會很長;
在ext3中,也就是有Journal機制裡,系統開機時檢查Journal的資料,來檢視是否有錯誤產生,這樣就快了很多;
(5)tune2fs –j /dev/hda6 將ext2轉換成ext3
2、在ext3裡有三個Journal的模式:
(1)ordered:預設模式,只記錄Inode-table裡的資訊;
(2)Journaled:記錄資料本身的資訊,需要大量空間來做記錄;
(3)writeback:不記錄資訊,可提供較好的效能;

六、介紹在分割槽裡設定相應的卷標 
1、前面分割槽的表示法一直在使用 hda1 或 sda1類似這樣的表示法,其實也可以用卷標的表示法,這樣更好便記憶。
2、設定及檢視卷標的指令格式及說明如下:
    e2label 指令:
例:e2label /dev/hda6    檢視hda6分割槽的卷標名稱;如為空白表示未設定卷標;
     e2label /dev/hda6 data 設定這個分割槽的卷標為 data;
注:在這裡先不要修改hda1~hda5的卷標,可能會造成無法開機,以後再做說明。

七、介紹mount指令掛載分割槽 
1、掛載的概念:當要使用某個裝置時,例如要讀取硬碟中的一個格式化好的分割槽、光碟或軟體等裝置時,必須先把這些裝置對應到某個目錄上,而這個目錄就稱為“掛載點(mount point)”,這樣才可以讀取這些裝置,而這些對應的動作就是“掛載”。
mount的詳細說明將在下一小節介紹
示例如下圖:
133_U3_7_1_1 
下面以卷標的方式進行掛載,注意:使用卷標掛載進必須加上 –L 的引數表示使用卷標掛載
133_U3_7_1_2

八、介紹mount指令及引數
1、mount 指令格式:
mount   [-t 檔案系統型別]   [-o 引數]   裝置名或卷標   掛載點目錄名
注:如果使用卷標方式掛載,必須使用 –L 引數。
(1)-t 後面設定所要掛載的檔案系統的型別,例如:vfat、ext2、ext3、iso9660(光碟),通常這部分不需要加kernel可以自己判斷
(2)-o 後面加一些設定引數:
· suid:允許掛載後的檔案系統可以使用suid、sgid的特殊許可權;
· dev:允許掛載的檔案系統建立裝置檔案,例如:/dev/hda6 下的 hda6 就是裝置檔案;
· exec:允許掛載檔案系統後,可以執行裡面的執行檔案;
· noexec:不允許執行檔案;
· auto:在電腦開機後自動掛載這個檔案系統;
· nouser:指只允許super user (也就是root)掛載這個檔案系統;
· async:設為不同步,就是電腦寫入資料時先寫入快取再寫到硬碟中;
· loop:用來掛載loopback裝置,例如光碟機就是loopback裝置;
· ro:掛載檔案系統後設定為只讀;
· rw:掛載檔案系統後設定為可讀可寫;
· remount :重新掛載檔案系統;
如果在掛載ext2或ext3時,預設會使用下面的引數設定:
rw,suid,dev,exec,nouser,async

九、介紹解除安裝檔案系統
1、使用mount指令檢視已掛載了哪些檔案系統;
解除安裝指令及格式如下:
umount 裝置檔名或掛載點
例如:上圖中已掛載到/data目錄的上裝置,可以使用 umount /dev/hda6 或 umount /data 進行解除安裝
2、如果檔案系統正在使用中,就無法正常解除安裝,可以使用下面的指令檢視並停止所有對這個檔案系統的操作,然後再進行解除安裝操作;
fuser -v 裝置檔名或掛載點       檢視有哪個服務或使用者正在對這個檔案系統做操作;
fuser –km 裝置檔名或掛載點        強制停止所有對這個檔案系統的所有操作;
3、可以使用 remount 這個引數來改變檔案系統的狀態;
例如:mount –o remount,ro /data     重新掛載檔案系統為只讀,這樣就不用先解除安裝再掛載了。

十、介紹一些掛載的範例
1、掛載一個不允許執行的檔案系統
mount –o noexec /dev/hda6 /data      noexec表示為不允許執行;
2、掛載一個檔案系統的映象檔案
mount –t iso9660 -o ro,loop boot.iso /iso      加loop引數是因為光碟是loopback裝置,boot.iso為映象檔名 ,/iso 為掛載點;

十一、介紹掛載網路上的共享資源 
1、在Unix 和Linux的網路資源主要分為兩種 NFS (Network File System)和SMB
·NFS:Linux/Unix和Unix/Linux之間用來共享資源的;
·SMB:Linux/Unix和Microsoft(windows)之間用來共享資源的;
2、共享NFS網路資源的主機稱為:NFS Server;
    共享SMB網路資源折主機稱為:Samba Server;
3、這些網路資源的連線方式:
(1)NFS部分的連線方式:
showmount –e IP地址     #檢視共享資源
mount ip地址:/共享目錄   /掛載點    #掛載網路資源
(2)SMB部分的連線方式:
smbclient –L ip地址 -N    #檢視指定Samba Server 上有哪些共享目錄;
mount //IP地址/共享目錄   /掛載點 -o username=使用者名稱%密碼     #掛載windows網路共享資源;

十二、介紹/etc/fstab 檔案的功能
1、fstab檔案的功能就是根據fstab檔案中設定的內容自動掛載裝置到指定的掛載點上;
2、下面就介紹fstab這個檔案內容的詳細說明:
如下圖:fstab檔案內容共分為6個欄位
133_U3_12_2_1 
下面對上圖中6個欄位分別說明:
(1)裝置名 :可以用“LABEL=”卷標表示法,也可以使用裝置名稱表示法“/dev/hda6”;
(2)掛載點 :掛載點目錄必須是已存在的目錄;
(3)檔案系統型別 :例如ext3,ext2等;
(4)掛載引數 :就是前面mount指令中 –o 後面的引數,defaults代表使用預設引數設定;例如如/dev/hdc(光碟)和/dev/fd0(軟盤)的這兩行設定,exec可以執行檔案,noauto 不會自動掛載,
(5)備份 :設定備份次數,0表示不備份,1表示每天做一次備份,2表示每兩天做一次備份;
(6)檢查順序 :設定檔案系統的檢查順序,0表示不檢查,1表示第一個檢查,2表示第二個檢查,以此類推檢查順序最多到9,如果值相同,按從上到下的順序檢查,通常根目錄的檢查順序排在第一位;
所以如果要在電腦開機後自動掛載檔案系統就可以修改fstab這個檔案的設定。
例如:可以將前面掛載的hda6寫入這個檔案中,當開機後自動掛載,設定方法如下,使用VI編輯fstab檔案將下面的一行設定加入到最後一行即可:
/dev/hda6          /data         ext3        defaults           0   0
2、在掛載光碟或軟盤時,只需要執行 mount /media/cdrom 或 mount /media/floppy 就可以了,而不用指定要掛載的裝置,這是因為在fstab檔案中有所設定,因為在掛載目錄和裝置時,如果未指定要掛載的裝置,電腦會先到fstab檔案中檢視,有沒有相對應的裝置及目錄掛載,如果沒有還會到mtab檔案(其實mtab檔案就是目前系統的掛載設定,所以在解除安裝時也檢視這個mtab檔案,解除安裝時也就只需要指定掛載點或裝置就可以了)中檢視。

十三、介紹auto-mounter自動掛載程式在使用網路共享時自動掛載網路共享資源 
1、automounter是一個daemon程式,automounters可以監控某個目錄,例如:監控/mnt/nfs目錄,當我們需要存取這個目錄時,使用cd /mnt/nfs 進入這個目錄時,這時automounter程式發現使用者要存取這個目錄時,就會按照設定自動將網路共享資源自動進行掛載,如果過一段時間(預設60秒)不使用也會自動解除安裝這個目錄,這樣可以減少對網路產生的負荷,使用網路的利用率更高。
2、automounter的設定,以例項說明,僅供參考:
(1)vi /etc/auto.master    編輯automount主要的設定檔案
(2)複製有--timeout=60那一行到下面,修改如下圖:
133_U3_13_2_2 
(3)建立auto.nfs設定檔案,預設/etc目錄下沒有這個檔案,需要自己建立;
可以由 auto.misc 做為模板複製得來,並重命名為auto.nfs,編輯auto.nfs修改如下:
133_U3_13_2_3 
(4)service autofs start    啟動automount服務,如果已經啟動可執行service autofs restart 或 service autofs reload重新啟動或重新載入配置檔案;
(5)使用cd /mnt/nfs 目錄,再執行ls 指令沒有未何檔案,
使用 cd server1 卻可以進入,這時已經進行自動掛載了,這時就可以檢視NFS伺服器上的共享檔案了。
使用mount可以檢視到剛剛掛載上來的NFS網路共享目錄。
注:我這裡還未建立NFS檔案伺服器,所以這裡只能做客戶端的設定,現在還無法試測; 

十四、介紹在ext2和ext3檔案系統裡有哪些屬性可以設定
1、在ext2和ext3的檔案系統裡,都支援一些特殊的屬性來控制檔案的特性:
·lsattr 指令:顯示檔案的屬性設定;
·chattr 指令:設定檔案的屬性;
格式:
chattr   +|-|=屬性[屬性…]   檔名[檔名…]
+
 :增加屬性
- :去除屬性
=:設定屬性
可以設定一個或多個屬性
常見屬性說明如下:
·A:當檔案被修改時,atime(存取時間)記錄不會被修改;
·a:讓檔案只可以附加內容,不允許原來的內容被覆蓋掉;
·d:讓系統在使用dump指令做備份時,可以不用備份這個檔案;
·i:讓檔案永遠不改變,不能刪除或更改檔名;
·j:讓系統將檔案本身的資訊記錄在ext3的日誌裡,就算ext3的檔案系統是掛載成ordered(有序)或writeback模式,都會將檔案本身的資訊記錄在ext3的日誌裡。
·S:當檔案被修改時,就做同步的動作,立刻將資料寫入硬碟中;
例:
chattr +a test   新增只允許附加內容的屬性
chattr = test   去除掉所有的屬性

十五、介紹如何使用劃分好的分割槽或檔案來當作虛擬記憶體(swap)
1、在Linux系統中虛擬記憶體稱為:SWAP;
2、SWAP分為兩種型別:
·用劃分好的分割槽作為SWAP;
·用檔案當作SWAP;
3、要建立SWAP的虛擬記憶體主要有以下幾個基本設定:
(1)建立SWAP的分割槽或是檔案,並且在建立SWAP的分割槽時分割槽的編號要設定為82;
(2)使用mkswap指令對swap分割槽或是swap檔案寫入一個特定的SWAP識別標誌;
(3)必須要在/etc/fstab檔案中加入適當的記錄,這樣才能讓系統在開機後能夠自動掛載SWAP;
(4)如果是SWAP的分割槽,要使用 swapon –a 指令啟用SWAP,其實 swapon –a 指令會去讀取 fstab 檔案,並根據 fstab 裡的記錄,來啟用所有的 swap 分割槽;
(5)如果是使用SWAP檔案,則使用 swapon 指令再指定要啟用哪個SWAP檔案;
(6)可以使用 swapon –s 來檢查SWAP的使用情況;
範例1如下: 
(1)使用分割槽作為SWAP
·fdisk /dev/hda 
·輸入n;新建一個分割槽,如果一直以前面的例子做下來,硬碟應該還有剩餘空間的,這裡建立一個100M的分割槽;
·輸入t;再輸入7(我這裡新建的分割槽是hda7,可以輸入p檢視到);再輸入 82 (82表示設定為swap分割槽型別);
·再輸入p;可以檢視到 hda7 的system(系統)已經變為Linux swap
·wq:儲存退出;
·執行“partprobe ”指令,讓kernel重新讀取分割槽表;
(2)mkswap /dev/hda7    對SWAP分割槽或是SWAP檔案寫入特定的標誌;類似於格式化成虛擬記憶體的格式;
(3)編輯/etc/fstab檔案新增記錄,這樣一會的swapon指令才可以在fstab檔案中找到相應的分割槽,在下次開機時也可以找到新的SWAP分割槽的位置;複製原來的SWAP那行記錄,將原來的卷標表示法修改為/dev/hda7的裝置表示法,其它保持不變;
(4)swapon –a 指令,根據fstab檔案啟動所有SWAP分割槽;為了驗證可以先使用 swapon –s 指令檢視當前SWAP的狀態;
133_U3_15_4_4 
範例2如下:使用檔案當虛擬記憶體這和windows下的虛擬記憶體使用方式非常相似
(1)建立SWAP檔案,這裡建立的是100M的SWAP檔案
指令:dd if=/dev/zero of=/swapfile bs=1M count=100
133_U3_15_4_5 
說明:dd:轉換並複製檔案;
        if:是inputfile的縮寫,if=/dev/zero 代表要把zero檔案當作輸入的檔案,zero檔案可以是當作都是零的檔案;
        of:是outputfile的縮寫,of=/swapfile 代表要輸入到/swapfile檔案上;
        bs:是block size的縮寫,表示強制設定swapfile的block的大小;
        count:代表要建立多少個block;
(2)mkswap /swaplife    為swapfile檔案寫入一個swap的標誌,相當於格式化成虛似記憶體的格式;設定成功將會出現提資訊;
(3)修改 /etc/fstab檔案,方式同上一範例相同,只是把 /dev/hda7改寫成 /swapfile ,其它不變;
133_U3_15_4_6 
(4)swapon –a 啟用swap檔案
在啟用前也可以用 swapon –s 檢視,等啟用後再次檢視SWAP是否載入進來了。

十六、介紹一些維護檔案系統的工具及一些重要的相關事項
1、如果檔案系統的檔案有丟失或毀損,可以使用fsck指令來維護檔案系統的一致性:
檢查某個分割槽前,分割槽必須處於未掛載狀態,如正在使用中,必須先進行解除安裝,再執行檢查工作;
格式: fsck -Y /dev/hda6      -Y參說表示中途提示問題都回答Yes;
2、系統在開機時就會檢查檔案有沒有丟失或損壞的,系統是根據/etc/fstab檔案中最後一欄的設定來決定檢查的先後順序的,這個欄位前面已做過介紹;
3、如果檢查出有問題檔案,就會先放到 lost+found 目錄中當作備分;所以當一個分割槽掛載成功後都會發現有這個目錄存在;
4、電腦在開機時,發生嚴重錯誤,系統會用sulogin的方式啟動,下圖例中我將fstab檔案中根目錄的卷標隨意的修改了一下,重新啟動後將會出現嚴重錯誤,就停在了下圖圖的位置:
133_U3_16_4_1 
5、將ext2檔案系統轉成ext3檔案系統,指令下如:
tune2fs -j /dev/hda6 將hda6分割槽轉成ext3檔案系統,轉換成功後將有提示資訊;這樣原有分割槽內的資料將不會丟失;
6、檢視檔案系統目前的狀態資訊
dumpe2fs -h   /dev/hda6     顯示hda6的分割槽資訊,這個指令前面已介紹過;
-h   可以顯示superblock的資訊

十七、如何加入一塊新硬碟
1、第一步當然是要將硬碟接在電腦上啦;
2、進入系統後,使用fdisk對硬碟進行分割槽,並設定好分割槽型別編號;例如:linux 為 83
3、建立好分割槽後,執行 patrprobe 重新載入分割槽,使用最新分割槽表;
4、建立完分割槽後,格式化分割槽,如果建立的是SWAP分割槽,需要為這個SWAP分割槽寫入一個SWAP標誌;
5、如果要使用卷標表示法,需要為分割槽建立卷標名稱;
6、建立新的掛載點,並將分割槽掛載上;
7、在/etc/fstab檔案中加入新分割槽的記錄,讓電腦以後可以自動掛載這個新建的分割槽;