1. 程式人生 > >文件系統基礎及ext文件系統創建及管理詳解、文件系統的使用及卸載、fstab文件格式及自動掛載系統的

文件系統基礎及ext文件系統創建及管理詳解、文件系統的使用及卸載、fstab文件格式及自動掛載系統的

文件系統

創建文件系統--分區格式化

格式化:

低級格式化:

劃分磁道

高級格式化:

創建文件系統,按照某種特定的標準,將整個分區劃分為大小相同的若幹小的邏輯編址單元,每個這樣的單元稱為塊(block)【windows中稱為簇】;


劃分塊的標準:

在Linux的文件系統中,主要的塊的劃分標準就是:每個塊包括2^1或2^2或2^3個扇區;即塊大小可以是1024字節或者是2048字節或者是4096字節;


註意:

1.被劃分出來的塊,每一個只能存放一個文件的內容,一個文件可以存儲在多個塊上;

2.如果在某個分區中要創建大量的小文件,就將塊大小設置的小一些;反之,如果在某個分區中要創建大量的大文件,就將塊大小設置的大一些;

3.如果分區的空間較大可以將塊設置的大一些;



FHS--文件系統的層級標準


對於數據的管理:

平面分類管理:

遍歷數據;

空間分類管理(層次化)

邏輯編址:創建文件系統實際上就是給分區進行存儲空間的邏輯地址;

特點:僅需要經過有限次且有效的查找即可定位到目標文件;



在一個分區中創建了文件系統的步驟:

1.首先,文件系統會將分區劃分成大小相等的若幹塊數據塊;

元數據塊:

存放文件的屬性信息(大小,權限,所有權,時間戳,數據塊指針【直接指針、間接指針】);


存放每個文件的元數據的固定的存儲空間,稱為index node,簡稱inode;

在Linux的文件系統中,每個inode大小一般是128字節;每個iNode都有其對應的inode編號;


位圖:

inode位圖

塊位圖


數據塊:

存放文件中所包含的流式數據的內容;

日誌塊:斷點續傳,根據日誌傳輸數據,保證數據的一致性;



特殊文件:

只占據元數據塊中的inode,而不占據數據塊;

設備文件:

block special

character special


此類文件是將元數據區域inode中的數據塊指針換成了設備號來保存;


符號鏈接文件:

symbolic link


此類文件是將inode中數據塊指針換成了另一個文件的訪問路徑;


隨著磁盤空間越來越大,劃分出來的塊的數量越來越多,管理難度越來越大;通過劃分塊組來解決此問題;

塊組來解決此問題:

塊組:

每個快組中有獨立的元數據塊和數據塊;

存放數據的時候,以塊組內的數據優先選擇,如果塊組內的數據塊不夠,可以通過文件系統的存儲策略來申請多個塊組協同存儲;


超級塊:

主要定義了在整個分區中有多少個塊組,及每個塊組的邊界;

為了防止超級塊發生故障導致整個文件系統崩潰,文件系統會自動對超級塊進行備份;


為了防止數據的不一致,在文件系統中引入日誌塊的概念;

日誌塊:對於數據的寫入操作做日誌記錄的塊;


數據不一致通常是由不潔關機、不潔斷電導致;


一個完整的Linux系統:

超級塊,inode,inode bitmap,block bitmap,data block,journal block


想要查找/var/log/message文件的內容,是怎樣的查找過程?

目錄:內容是文件名;

每個文件名是文件的特有的標識,每個文件名都對應一個inode;




Linux支持的文件系統:

位於內核空間中的文件系統驅動路徑:/usr/lib/modules/KERNEL-VERSION/kernel/fs/

文件系統可以是內核的一部分,也可以是內核的模塊;


位於用戶空間中的文件系統管理程序:

管理命令:


Linux支持的文件系統:

1.Linux專屬的文件系統:

ext系列:ext(極不穩定)->ext2(核心)、ext3(引入日誌塊,解決數據不一致)、ext4(從centos6開始默認使用)

ext4特性:

單個分區最大可達到50TB;

單個文件最大可達到64EB;

可以在根分區上設置文件系統;

可以在啟動分區上設置文件系統;

2.xfs:(擴展的文件系統)

最大分區支持500TB;

默認在centos7中使用;

3.reiserfs:文件恢復性較強(沒落ing)

4.btrfs:2016年正式發行,之前都是技術預覽版;無須分區,直接存放文件,數據負載均衡;

5.ISO9660:光盤文件系統

6.FAT(Linux中支持windows文件系統FAT):Linux中寫法多:vfat

7.NTFS:默認不支持,可以通過調整內核參數以獲得支持;

8.網絡文件系統:NFS、CIFS

9.集群文件系統:gfs2、ocfs2

10.分布式文件系統:

內核級:ceph

用戶空間(應用級):mogilefs、moosefs、glusterfs

11.Unix的文件系統:ufs、FFS、JFS、zfs(終極文件系統)

12.偽文件系統:proc、sys、tmpfs、hugepagefs;

並非管理磁盤數據的文件系統,而是管理內存數據的文件系統;


對於不同的發行版本的Linux,都有其默認使用的文件系統;

RHEL或centos系列:

5:ext3

6:ext4

7:xfs



管理文件系統:

創建文件系統:

使用文件系統(掛載文件系統):

停止使用文件系統(卸載文件系統):

文件系統的檢測和修復;


創建文件系統的用戶空間工具:

mkfs - 創建一個 Linux 文件系統

mkfs [ -V ] [ -t 文件系統類型 ] [ fs-選項 ] 文件系統 [ 塊 ]


RHEL或centos系列發行版本中,可以使用mkfs.ext4,mkfs.btrfs,...等工具來代替mkfs來創建文件系統


示例:

mkfs -t ext4 /dev/sdb1

mkfs.ext4 /dev/sdb2


註意:

1.不要使用磁盤設備名稱或擴展分區設備名稱作為mkfs命令的參數;如果使用磁盤設備或擴展分區設備名稱作為mkfs命令的參數,則所有分區都將被刪除;

2.只有主分區和邏輯分區才能使用mkfs命令創建文件系統;

3.如果要創建的目標文件系統是ext系列文件系統,那麽可以使用mke2fs命令;

mke2fs命令:

mke2fs - create an ext2/ext3/ext4 filesystem

常用選項:

-b block-size:在創建文件系統時,指定每一個塊的大小;默認值是4096字節,單位是字節;調整時,只能寫1024,2048及4096;

-i bytes-per-inode:在創建文件系統時,指定inode與字節的比率;即多少個字節創建一個inode,默認值是16384;

-j:創建有日誌功能的文件系統,即:ext3;

-m reserved-blocks-percentage:在創建文件系統時,指定為管理員保留的磁盤空間的百分比;默認值是5;

-n:並非真正創建文件系統,而好似顯示在創建文件系統時所做的操作;

-N number-of-inodes:在創建文件系統時,直接指明在此文件系統中創建的inode的數量;

-O [^]feature[,...]:在創建文件系統時,關閉或開啟文件系統特性;

-t fs-type:在創建文件系統時,指定文件系統類型;


修改ext系列文件系統的卷標:

e2label命令

e2label - Change the label on an ext2/ext3/ext4 filesystem

e2label device [ new-label ]


註意:如果不加new-label參數,則是查看指定設備的卷標;如果添加了new-label參數,則直接將設備的卷標設置為new-label,而不考慮原來是否有卷標或者原卷標是什麽;


修改ext系列文件系統的屬性,可以使用tune2fs命令:

tune2fs - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems

在ext2/ext3/ext4文件系統上調整那些

常用選項:

-l:顯示超級塊的內容;

-j:將ext2文件系統修改調整為ext3文件系統(該過程是單向的);

-m reserved-blocks-percentage::調整文件系統中文件預留空間的百分比;

-r reserved-blocks-count:調整文件系統中預留的磁盤空間的塊數;

-L volume-name:修改卷標;

-O [^]feature[,...]:修改文件系統特性是否打開;


文件系統的檢測和修復工具:

fsck - 檢查並修復Linux文件系統

fsck [ -ar ] [ -t fstype ] [filesystem ... ]

常用選項:

-t fstype:指定要檢測的文件系統的文件系統類型;

-a:無須交互,自動修復檢測到的所有問題;

-r:交互式修復檢測到的問題;


ext系列文件系統專用的檢測工具:

e2fsck

e2fsck - check a Linux ext2/ext3/ext4 file system

格式:e2fsck [-y] [-f] device

常用選項:

-y:在交互式過程中所有的問題都以“yes”來回答;

-f:強制檢測並修復;即使文件系統處於clean狀態也修復;


blkid

blkid - locate/print block device attributes

格式:

blkid -L label | -U uuid


blkid [-dghlv] [-c file] [-o format] [-s tag]

[-t NAME=value] [device ...]


blkid -p [-O offset] [-o format] [-S size] [-s tag]

[-n list] [-u list] device ...


blkid -i [-o format] [-s tag] device ...


常用選項:

-L label:根據指定的卷標進行塊設備查找定位;

-U UUID:根據指定的UUID進行塊設備查找定位;


findfs:

findfs - find a filesystem by label or UUID

LABEL=<label>

Specifies filesystem label.


UUID=<uuid>

Specifies filesystem UUID.




swap文件系統:

前提:分區的類型必須是swap類型,即:分區的系統id必須是82;

修改方法:在fdisk交互模式中,使用t命令將指定的分區類型修改為82即可;


創建swap文件系統:

mkswap

mkswap - 建立一個linux交換區

格式:mkswap [-c] [-vN] [-f] device

常用選項:

-f,--force:強制執行;

-L LABEL:設置交換分區的卷標;

-U UUID:指定交換分區的UUID,建議不使用此選項而是讓系統自動生成;


示例:mkswap /dev/sdb3


利用一個大文件創建交換分區:

示例:


~]# dd if=/dev/zero of=/tmp/swapfile bs=1024 count=1024000

~]# mkswap /tmp/swapfile



使用文件系統--掛載:

掛載:對於Linux系統來說,文件系統只能有唯一的一個原初訪問入口,此訪問入口被稱為“根文件系統”;其他所有的文件系統都必須通過某種特定的方式關聯至根文件系統或者根文件系統的子目錄中,而此關聯過程被稱為“掛載”;用於關聯根文件系統和其他文件系統的目錄,就被稱為“掛載點”;


掛載點:mount point,通常是一個目錄,該目錄在成為掛載點後,就是其他文件系統的訪問入口;如:/boot

要求:

1.作為掛載點的目錄必須事先存在(不存在則掛載必定失敗);

2.作為掛載點的目錄應該是沒有被使用或不能被其他進程占用的目錄,換言之,必須是空閑目錄;

3.作為掛載點目錄,一旦掛載其他文件系統,則失去原系統中的特性;簡單說,如果一個目錄中有文件名,一旦掛載了其他文件系統,則原來的文件名不可見,這樣的目錄中新的內容是新文件系統中的文件名;這個過程會一直持續到新文件系統被卸載;


完成掛載操作,使用mount命令;

mount - mount a filesystem

格式:mount [-lhV]

mount -a [-fFnrsvw] [-t vfstype] [-O optlist]

mount [-fnrsvw] [-o option[,option]...] device|dir

mount [-fnrsvw] [-t vfstype] [-o options] device dir

常用選項:

-r,--read only:以只讀方式掛載目標文件系統;通常用於光盤掛載;

-w, --rw, --read-write:以可讀可寫的方式掛載目標文件系統,默認掛載方式;

-n, --no-mtab:默認情況下,所有掛載塊設備的操作都會被自動記錄在/etc/mtab文件中,如果使用了-n,--no-mtab選項,即表示即便掛載成功,也不會將掛載信息記錄在/etc/mtab文件中;

-t, --types vfstype:在掛載文件系統時,指明目標文件系統的類型;如果省略該選項,mount命令會通過blkid來判斷要掛載的目標文件系統的類型;

-L, --label label:通過指定的文件系統的卷標來掛載目標文件系統;

-U, --uuid uuid:通過指定的文件系統的UUID來掛載目標文件系統;

-a, --all:根據/etc/fstab文件中所指定的文件系統進行自動掛載;

-o, --options opts:在掛載目標文件系統時,可以調整掛載參數選項;

FILESYSTEM INDEPENDENT MOUNT OPTIONS:

sync/async:同步/異步掛載選項;

atime/noatime:文件或目錄被訪問時,是否更新訪問時間戳;

diratime/nodiratime:目標被訪問時,是否更新訪問時間戳;

ro/rw:是以只讀/可讀可寫方式來掛載文件系統;相當於-r/-w選項的功能;

dev/nodev:在此文件系統中是否允許創建設備文件;

exec/noexec:在此文件系統中,是否允許執行程序文件,包括各種二進制文件和各種腳本;

auto/noauto:在掛載此文件系統時,是否可以使用-a選項進行掛載;

user/nouser:是否允許普通用戶掛載此文件系統;

uid/nouid:在此文件系統中,是否允許程序文件上的suid和sgid特殊權限生效;

relatime/norelatime:在此文件系統中,是否參考inode訪問時間來修改其修改時間戳和改變時間戳;

remount:對於目標文件系統不需要卸載就可以應用新的掛載選項;

acl:只在ext系列文件系統或xfs文件系統中使用,可以使用文件系統的發出來、功能;

defaults:默認選項,其中包括:rw,suid,dev,exec,auto,nouser,and async.

loop:使用環回設備,將鏡像文件當做文件系統掛載至指定的掛載點;

-B,--BIND:將某個已經掛載的文件系統綁定至另一個掛載點;

示例:# mount -B|--bind mount_point1 mount_point2


示例:# mount /dev/sdb1 /mnt/db1

# mount -o remount,ro /mnt/db1


卸載已經掛載的文件系統:

umount命令:

umount - 卸載文件系統

umount -a :卸載當前已經掛載的文件系統中的所有可卸載的文件系統;

umount {dir|device}...:通過指定的掛載點或設備文件名稱,卸載指定設備;


掛載光盤:

在虛擬機中,需要保證光盤鏡像文件被放入虛擬機的光驅,並且保證虛擬機的光驅處於“已連接”的狀態;需要實現創建掛載點(/mnt/cdrom)

# mount -r /dev/sr0 /mnt/cdrom


掛載交換分區:

swapon:


卸載交換分區:

swapoff:


swapon.swapoff - enable/disable devices and file for paging and swapping

-a,--all:自動掛載/etc/fstab文件中被正確定義的所有的交換分區;


/etc/fstab文件的格式:

共6個字段,默認使用空白字符(制表符)作為字段分隔符;留個字段的含義分別為:

1.要掛載的設備或文件系統名稱,也可以是卷標或UUID;

如果要使用卷標必須使用:LABEL="label"

如果要使用UUID必須使用:UUID="uuid"

2.掛載點:

swap設備或文件無需掛載點,在此字段寫swap即可;

3.文件系統類型:

4.默認的文件系統掛載選項:想要指定多個選項時,使用逗號分隔的列表;

5.轉儲頻率:

使用dump命令自動備份分區數據的頻率:

0:表示不備份;

1:每天備份一次:

2:每兩天備份一次,即:每隔一天備份一次;

...


6.自檢次序:

0:不自檢

1:優先自檢,通常僅設置在根文件系統上;

2:次級自檢;

...

9:最低優先級自檢;


/etc/fstab文件的作用:

在系統啟動過程中,會自動掛載該文件中所有被正確列出的文件系統;


文件系統基礎及ext文件系統創建及管理詳解、文件系統的使用及卸載、fstab文件格式及自動掛載系統的