RH133—Unit4 文件系統的管理node
1、系統在初始化時如何識別硬盤
一、系統初始時根據MBR的信息來識別硬盤,其中包括了一些執行文件就來載入系統,這些執行文件就是MBR裏前面446bytes裏的boot loader 程式,然後面的16X4的空間就是存儲分區表信息的位置;以下圖
二、在分區表中,主要儲存瞭如下信息:
(1)分區號,常見的分區號有如下幾種:其它編號可使用fdisk指令,再執行 l (小寫L) 查看 linux
0x5 (or 0xf) | 擴展分區 |
0x82 | Linux swap |
0x83 | Linux |
0x8e | Linux LVM |
0xfd | Linux RAID auto |
(2)分區的起始磁柱;
(3)磁柱的總數;
因此在系統初始化時,就根據分區表中的這三項信息來識別硬盤。windows
2、介紹硬盤分區的相關事項
一、當主分區都用完時,可使用擴展分區來增長額外的分區,這已在前面介紹過了,可是在Linux的kernel裏:
·IDE的硬盤最多能夠支持到16個分區;
·SCSI硬盤最多支持15個分區;
二、硬盤作多分區的好處:以下:
(1)從控制方面的考慮
將硬盤分紅多個分區,就能夠把應用程序、使用者的資料、或是一些須要有安全性的資料,分別放入不一樣分區中方便管理;
(2)從效率方面的考慮
由於硬盤在使用一段時間後,都分有區塊不連續的狀況,若是一塊大容量的硬盤沒有劃分紅多個小分區,那麼硬盤在搜索信息時,由於搜索的範圍很是大,因此會比較久,若是將大容量的硬盤劃分多個小分區,在搜索的時候相對就會快一些;
(3)爲爲使用磁盤配額的功能
由於配額只能對分區作設定,因此咱們能夠將/home目錄單獨作一個分區,而後能夠對這個分區作配額;
(4)從資料備份和恢復考慮
例如,/home這個目錄是專門用於存放用戶信息的目錄,將這個目錄單獨設定一個分區,就能夠按期就是個分區做備份工做,恢復的時候也比較方便。緩存
3、介紹分區的管理
一、可使用下面的指令來創建分區及查看分區
fdisk /dev/hda 創建分區
參數:-l 查看分區
執行 fdisk 指令後,以下圖:
例1:在新建分區,輸入n,系統會要求輸入起始的磁柱編號,默認系統會指定一個最近的未使用的磁柱號,回車後,再輸入結束的磁柱號,不過根據磁柱號來算一個分區的容量不太方便,能夠用「+數值K或+數值M (例:+1000M)」 這樣直接以容量的表示方式來設定,這樣直觀一些;再執行p,就能夠看到新增長的分區了;
例2:刪除分區,輸入d,要求輸入要刪除的分區號,在DEVICE字段列能夠看到每一個分區對應的編號,輸入想要刪除的分區號回車便可
之前全部操做認爲沒有問題,輸入 w ,保存退出便可。
這時主機屏幕上會提示:
The kernel still uses old table 表示目前系統仍是在使用舊的分區表;
The new table will be used at the next reboot.表示只有在下次從新開機後纔會使用新的分區表;
二、使用下面的指令從新載入分區表到kernel中,這樣能夠不用從新開機就能夠啓用新的分區表。
partprobe安全
4、創建文件系統(對硬盤分區進行格式化)
一、格式化指令及指令語法:
mke2fs [參數] 要格式化的分區
例如上面的例子中,格式化hda6這個分區 mke2fs /dev/hda6
二、格式化後,會出現一些分區的相關信息,爲了理解這些信息,先了解一下分區的格式:
咱們使用fdisk創建的分區,不能直接用來存放資料,必須先對這個分區作格式化的工做,格式化就是將分區劃分紅一格一格的block及多少個Inode可使用,而每一個block就是文件系統存取資料的最小單位,因此才能夠將資料存放在這些block中,並且每多個 block 會組成一個 group;以下圖所示:除了boot sector 以外,第一個block 稱爲 super block 用來記錄這個分區共有多少個block和inode 已經使用;多少block和inode等信息;
以下圖所示:
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的位置。
三、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文件系統
四、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文件系統,也就是加入日誌功能;服務器
5、介紹將ext2格式的分區轉成ext3
一、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
二、在ext3裏有三個Journal的模式:
(1)ordered:預設模式,只記錄Inode-table裏的信息;
(2)Journaled:記錄資料自己的信息,須要大量空間來作記錄;
(3)writeback:不記錄信息,可提供較好的效能;網絡
6、介紹在分區裏設定相應的卷標
一、前面分區的表示法一直在使用 hda1 或 sda1相似這樣的表示法,其實也能夠用卷標的表示法,這樣更好便記憶。
二、設定及查看卷標的指令格式及說明以下:
e2label 指令:
例:e2label /dev/hda6 查看hda6分區的卷標名稱;如爲空白表示未設定卷標;
e2label /dev/hda6 data 設定這個分區的卷標爲 data;
注:在這裏先不要修改hda1~hda5的卷標,可能會形成沒法開機,之後再作說明。async
7、介紹mount指令掛載分區
一、掛載的概念:當要使用某個設備時,例如要讀取硬盤中的一個格式化好的分區、光盤或軟件等設備時,必須先把這些設備對應到某個目錄上,而這個目錄就稱爲「掛載點(mount point)」,這樣才能夠讀取這些設備,而這些對應的動做就是「掛載」。
mount的詳細說明將在下一小節介紹
示例以下圖:
下面以卷標的方式進行掛載,注意:使用卷標掛載進必須加上 –L 的參數表示使用卷標掛載
ide
8、介紹mount指令及參數
一、mount 指令格式:
mount [-t 文件系統類型] [-o 參數] 設備名或卷標 掛載點目錄名
注:若是使用卷標方式掛載,必須使用 –L 參數。
(1)-t 後面設定所要掛載的文件系統的類型,例如:vfat、ext二、ext三、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工具
9、介紹卸載文件系統
一、使用mount指令查看已掛載了哪些文件系統;
卸載指令及格式以下:
umount 設備文件名或掛載點
例如:上圖中已掛載到/data目錄的上設備,可使用 umount /dev/hda6 或 umount /data 進行卸載
二、若是文件系統正在使用中,就沒法正常卸載,可使用下面的指令查看並中止全部對這個文件系統的操做,而後再進行卸載操做;
fuser -v 設備文件名或掛載點 查看有哪一個服務或使用者正在對這個文件系統作操做;
fuser –km 設備文件名或掛載點 強制中止全部對這個文件系統的全部操做;
三、可使用 remount 這個參數來改變文件系統的狀態;
例如:mount –o remount,ro /data 從新掛載文件系統爲只讀,這樣就不用先卸載再掛載了。
10、介紹一些掛載的範例
一、掛載一個不容許執行的文件系統
mount –o noexec /dev/hda6 /data noexec表示爲不容許執行;
二、掛載一個文件系統的鏡像文件
mount –t iso9660 -o ro,loop boot.iso /iso 加loop參數是由於光盤是loopback設備,boot.iso爲鏡像文件名 ,/iso 爲掛載點;
11、介紹掛載網絡上的共享資源
一、在Unix 和Linux的網絡資源主要分爲兩種 NFS (Network File System)和SMB
·NFS:Linux/Unix和Unix/Linux之間用來共享資源的;
·SMB:Linux/Unix和Microsoft(windows)之間用來共享資源的;
二、共享NFS網絡資源的主機稱爲:NFS Server;
共享SMB網絡資源折主機稱爲:Samba Server;
三、這些網絡資源的鏈接方式:
(1)NFS部分的鏈接方式:
showmount –e IP地址 #查看共享資源
mount ip地址:/共享目錄 /掛載點 #掛載網絡資源
(2)SMB部分的鏈接方式:
smbclient –L ip地址 -N #查看指定Samba Server 上有哪些共享目錄;
mount //IP地址/共享目錄 /掛載點 -o username=用戶名%密碼 #掛載windows網絡共享資源;
12、介紹/etc/fstab 文件的功能
一、fstab文件的功能就是根據fstab文件中設定的內容自動掛載設備到指定的掛載點上;
二、下面就介紹fstab這個文件內容的詳細說明:
以下圖:fstab文件內容共分爲6個欄位
下面對上圖中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
二、在掛載光盤或軟盤時,只須要執行 mount /media/cdrom 或 mount /media/floppy 就能夠了,而不用指定要掛載的設備,這是由於在fstab文件中有所設定,由於在掛載目錄和設備時,若是未指定要掛載的設備,電腦會先到fstab文件中查看,有沒有相對應的設備及目錄掛載,若是沒有還會到mtab文件(其實mtab文件就是目前系統的掛載設定,因此在卸載時也查看這個mtab文件,卸載時也就只須要指定掛載點或設備就能夠了)中查看。
十3、介紹auto-mounter自動掛載程序在使用網絡共享時自動掛載網絡共享資源
一、automounter是一個daemon程式,automounters能夠監控某個目錄,例如:監控/mnt/nfs目錄,當咱們須要存取這個目錄時,使用cd /mnt/nfs 進入這個目錄時,這時automounter程式發現使用者要存取這個目錄時,就會按照設定自動將網絡共享資源自動進行掛載,若是過一段時間(預設60秒)不使用也會自動卸載這個目錄,這樣能夠減小對網絡產生的負荷,使用網絡的利用率更高。
二、automounter的設定,以實例說明,僅供參考:
(1)vi /etc/auto.master 編輯automount主要的設定文件
(2)複製有--timeout=60那一行到下面,修改以下圖:
(3)創建auto.nfs設定文件,預設/etc目錄下沒有這個文件,須要本身創建;
能夠由 auto.misc 作爲模板複製得來,並重命名爲auto.nfs,編輯auto.nfs修改以下:
(4)service autofs start 啓動automount服務,若是已經啓動可執行service autofs restart 或 service autofs reload從新啓動或從新加載配置文件;
(5)使用cd /mnt/nfs 目錄,再執行ls 指令沒有未何文件,
使用 cd server1 卻能夠進入,這時已經進行自動掛載了,這時就能夠查看NFS服務器上的共享文件了。
使用mount能夠查看到剛剛掛載上來的NFS網絡共享目錄。
注:我這裏還未創建NFS文件服務器,因此這裏只能作客戶端的設定,如今還沒法試測;
十4、介紹在ext2和ext3文件系統裏有哪些屬性能夠設定
一、在ext2和ext3的文件系統裏,都支持一些特殊的屬性來控制文件的特性:
·lsattr 指令:顯示文件的屬性設定;
·chattr 指令:設定文件的屬性;
格式:
chattr +|-|=屬性[屬性…] 文件名[文件名…]
+:增長屬性
-:去除屬性
=:設定屬性
能夠設定一個或多個屬性
常見屬性說明以下:
·A:當文件被修改時,atime(存取時間)記錄不會被修改;
·a:讓文件只能夠附加內容,不容許原來的內容被覆蓋掉;
·d:讓系統在使用dump指令作備份時,能夠不用備份這個文件;
·i:讓文件永遠不改變,不能刪除或更改文件名;
·j:讓系統將文件自己的信息記錄在ext3的日誌裏,就算ext3的文件系統是掛載成ordered(有序)或writeback模式,都會將文件自己的信息記錄在ext3的日誌裏。
·S:當文件被修改時,就作同步的動做,馬上將資料寫入硬盤中;
例:
chattr +a test 添加只容許附加內容的屬性
chattr = test 去除掉全部的屬性
十5、介紹如何使用劃分好的分區或文件來看成虛擬內存(swap)
一、在Linux系統中虛擬內存稱爲:SWAP;
二、SWAP分爲兩種類型:
·用劃分好的分區做爲SWAP;
·用文件看成SWAP;
三、要創建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的狀態;
範例2以下:使用文件當虛擬內存這和windows下的虛擬內存使用方式很是類似
(1)創建SWAP文件,這裏創建的是100M的SWAP文件
指令:dd if=/dev/zero of=/swapfile bs=1M count=100
說明: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 ,其它不變;
(4)swapon –a 啓用swap文件
在啓用前也能夠用 swapon –s 查看,等啓用後再次查看SWAP是否加載進來了。
十6、介紹一些維護文件系統的工具及一些重要的相關事項
一、若是文件系統的文件有丟失或毀損,可使用fsck指令來維護文件系統的一致性:
檢查某個分區前,分區必須處於未掛載狀態,如正在使用中,必須先進行卸載,再執行檢查工做;
格式: fsck -Y /dev/hda6 -Y參說表示中途提示問題都回答Yes;
二、系統在開機時就會檢查文件有沒有丟失或損壞的,系統是根據/etc/fstab文件中最後一欄的設定來決定檢查的前後順序的,這個欄位前面已作過介紹;
三、若是檢查出有問題文件,就會先放到 lost+found 目錄中看成備分;因此當一個分區掛載成功後都會發現有這個目錄存在;
四、電腦在開機時,發生嚴重錯誤,系統會用sulogin的方式啓動,下圖例中我將fstab文件中根目錄的卷標隨意的修改了一下,從新啓動後將會出現嚴重錯誤,就停在了下圖圖的位置:
五、將ext2文件系統轉成ext3文件系統,指令下如:
tune2fs -j /dev/hda6 將hda6分區轉成ext3文件系統,轉換成功後將有提示信息;這樣原有分區內的資料將不會丟失;
六、查看文件系統目前的狀態信息
dumpe2fs -h /dev/hda6 顯示hda6的分區信息,這個指令前面已介紹過;
-h 能夠顯示superblock的信息
十7、如何加入一塊新硬盤 一、第一步固然是要將硬盤接在電腦上啦; 二、進入系統後,使用fdisk對硬盤進行分區,並設定好分區類型編號;例如:linux 爲 83 三、創建好分區後,執行 patrprobe 從新載入分區,使用最新分區表; 四、創建完分區後,格式化分區,若是創建的是SWAP分區,須要爲這個SWAP分區寫入一個SWAP標誌; 五、若是要使用卷標表示法,須要爲分區建立卷標名稱; 六、創建新的掛載點,並將分區掛載上; 七、在/etc/fstab文件中加入新分區的記錄,讓電腦之後能夠自動掛載這個新建的分區;