fdisk, partx, kpartx, mke2fs, tune2fs, dumpe2fs, e2label, e2fsck, fsck, blkid, lsblk, df -ilh, du, mount, umount,
一、什么是文件系統(tǒng)?
文件系統(tǒng)是操作系統(tǒng)用于明確磁盤或分區(qū)上的文件的方法和數(shù)據(jù)結構睦霎;即在磁盤上組織文件的方法纽窟。也指用于存儲文件的磁盤或分區(qū),或文件系統(tǒng)種類。文件系統(tǒng)是對應硬盤的分區(qū)的,而不是整個硬盤康嘉,不管是硬盤只有一個分區(qū)魂贬,還是幾個分區(qū)蔓搞,不同的分區(qū)可以有著不同的文件系統(tǒng)!
二随橘、linux的文件系統(tǒng)的種類 VFS (virtual file system)
- linux 的文件系統(tǒng):
- ext2(無日志功能)
- ext3
- ext4
- xfs(企業(yè)級64位文件系統(tǒng))
- reiserfs(反刪除功能很好)
- btrfs(centos 7上)
- 光盤:
- iso9660
- 網(wǎng)絡文件系統(tǒng):
- cifs
- nfs
- 集群文件系統(tǒng):
- gfs2
- cofs2
- 內核級分布式文件系統(tǒng):
- ceph
- windows的文件系統(tǒng):
- vfat(fat32)
- ntfs
- 偽文件系統(tǒng):
- proc
- sysfs
- tmpfs
- hugepagefs
- unix的文件系統(tǒng):
- ufs
- ffs
- jfs
- 交換文件系統(tǒng):
- swap
- 用戶空間的分布式文件系統(tǒng):
- mogilefs moosefs
- flusterfs
三喂分、日志型文件系統(tǒng)的優(yōu)勢
在磁盤空間中新建或復制一個文件時,找一個日志區(qū)域机蔗,把元數(shù)據(jù)先放在日志區(qū)域中蒲祈,再分配磁盤塊存數(shù)據(jù),存儲完了后萝嘁,再把元數(shù)據(jù)移到元數(shù)據(jù)區(qū)梆掸,如果存儲過程中出了故障,系統(tǒng)會在下次啟動時自動檢查日志區(qū)牙言,把未移動到元數(shù)據(jù)區(qū)的元數(shù)據(jù)所對應的文件酸钦,再檢查一次其完整性。以此保證了數(shù)據(jù)損壞的情況咱枉。
四卑硫、日志型文件系統(tǒng)的弱點
會消耗系統(tǒng)性能
五、內核級文件系統(tǒng)的組成
- 文件系統(tǒng)驅動蚕断,即加載對應的模塊欢伏,完成對虛擬文件系統(tǒng)的支持。以便支持更多特性的文件系統(tǒng)
- 文件系統(tǒng)管理工具:由用戶空間的應用程序提供亿乳,完成各文件系統(tǒng)的管理
六硝拧、文件系統(tǒng)的組成部分
-
塊組
-
元數(shù)據(jù)區(qū)域(Inode區(qū)域)
- Inode(每個Inode都有一個編號)
- Inode包含大小、權限 葛假、屬主障陶、屬組、時間戳聊训、數(shù)據(jù)塊指針抱究、inode號
- Inode(每個Inode都有一個編號)
-
數(shù)據(jù)區(qū)域 (block區(qū)域)
-
bitmap(Inode位圖,單塊實現(xiàn)記錄魔眨,即在塊組中尋找一個塊記錄下相關信息)
- 記錄Inode的使用信息的索引媳维,快速定位那些Inode號碼沒有被使用酿雪,使用0遏暴、1標識
-
blockmap(塊位圖,單塊實現(xiàn)記錄指黎,即在塊組中尋找一個塊記錄下相關信息)
- 記錄block使用信息的索引朋凉,快速定位那些block號碼沒有被使用,使用0醋安、1標識
-
-
超級塊
- 包含了有多少塊組杂彭,每個塊組中有多少個塊墓毒,多少個inode號碼
- GDT,塊組描述符
- 超級塊會隨機放到各塊組中的一個塊亲怠,以實現(xiàn)冗余
三所计、什么是Inode
理解Inode要從文件存儲說起,文件存儲在硬盤上团秽,硬盤最小的存儲單元叫扇區(qū)"sector",每個扇區(qū)512byte(相當于0.5KB)主胧,內核讀取文件不會每個扇區(qū)讀取,這樣的讀取方式效率太低习勤,而是一次性讀取一個塊,取一個block踪栋。這種由多個扇區(qū)組成的塊是文件存儲最小的單元,"塊"的大小最見的是4KB图毕,即連續(xù)八個serctor組成一個block. 當有一個大文件寫入的時候夷都,內核會調用八個連續(xù)的塊標記寫入,當最后不能完全填充所有的塊時予颤,將把未使用的塊釋放出來囤官,以供后續(xù)的文件寫入時使用。當前期規(guī)則文件系統(tǒng)時蛤虐,可以根據(jù)生產(chǎn)需要來指定塊大小治拿,一般情況為:1024,2048笆焰,4096劫谅。Linux最小存儲單元為1KB,這種情況下嚷掠, 每次寫入則用二個sector捏检。
文件數(shù)據(jù)都儲存在"塊"中,那么很顯然不皆,我們還必須找到一個地方儲存文件的元信息贯城,比如文件的創(chuàng)建者、文件的創(chuàng)建日期霹娄、文件的大小等等能犯。這種儲存文件元信息的區(qū)域就叫做inode,中文譯名為"索引節(jié)點"犬耻。每一個文件都有對應的inode踩晶,里面包含了與該文件有關的一些信息
四、文件的存儲方式
存儲分為兩部分
-
元數(shù)據(jù)
- 即文件的本身的基本信息枕磁,也叫Inode信息渡蜻,包含文件的大小,權限 ,屬主茸苇,屬組排苍,時間戳,數(shù)據(jù)塊指針学密,Inode號淘衙、連接數(shù)等
-
數(shù)據(jù)
- 即在數(shù)據(jù)區(qū)塊占用的塊,并將數(shù)據(jù)寫入到塊中
五腻暮、目錄的存儲方式
-
元數(shù)據(jù)
- 即文件的本身的基本信息幔翰,也叫Inode信息,包含文件的大小西壮,權限 遗增,屬主,屬組款青,時間戳做修,數(shù)據(jù)塊指針,Inode號抡草、連接數(shù)等
-
目錄下的文件名
- 包含目錄下的文件名饰及、及文件名的inode號碼
-
根本身
- 根是自引用的,引內核掛載根文件系統(tǒng)康震,并記錄了根的位置燎含,并且將信息緩存至內存中
- 文件名是記錄在上級目錄中
六、硬盤的識別機制
-
Centos 5
- IDE硬盤
- hd[abc..]#
- SATA腿短、SCSI屏箍、USB、SAS
- sd[abc...]#
- IDE硬盤
-
Centos 6橘忱、7
- IDE赴魁、SATA、SCSI钝诚、USB颖御、SAS
- sd[abc...]#
- IDE赴魁、SATA、SCSI钝诚、USB颖御、SAS
七、硬盤的機制
1. 標識機制
/dev目錄中凝颇,創(chuàng)建一個硬件設備文件潘拱,并關聯(lián)到內核的驅動程序中,硬件設備文件如下特性:
- 設備文件本身也是一個文件拧略,他不占用磁盤塊
- 他以major芦岂、minor區(qū)分硬件類型
- major設備號區(qū)別設備類型
- minor設備號區(qū)別同一設備不同類型
2. 硬盤的分區(qū)機制
-
MBR分區(qū)機制
- 在硬盤的0磁道0扇區(qū)使用一個塊512byte來記錄如下信息
- 前446字節(jié):bootload主引導記錄
- 64字節(jié)存放分區(qū)信息,每個分區(qū)占用16字節(jié)辑鲤,故最多只能分四個分區(qū)
- 為了能使用更多的分區(qū)盔腔,最多可以使用3個主分區(qū)杠茬,一個擴展分區(qū)月褥,再到擴展分區(qū)上建立更多的邏輯分區(qū)
- 2字節(jié)標識MBR區(qū)域的有效性弛随,一般55AA為有效,否則無效
- 在硬盤的0磁道0扇區(qū)使用一個塊512byte來記錄如下信息
-
GPT分區(qū)機制
3. 硬盤的存儲單位
- sector (扇區(qū))宁赤,一般為512byte
- block(塊)舀透,最小文件存儲單元了1K,故最小需要兩個塊
- cylinder(柱面)决左,分區(qū)劃分是基于柱面的
4. 系統(tǒng)引用設備的方式
- 設備文件名
- 卷標
- UUID
5. 硬件設備的手動建立
`mknod` - make block or character special files
synopsis: mknod [option] … NAME TYPE [MAJOR MINOR]
options:
-m : 創(chuàng)建時指定mode,創(chuàng)建后的設備文件訪問權限
例:mknod testdev b 111 2 #建立testdev設備文件愕够,為塊設備,主設備號111 次設備號2
文件系統(tǒng)管理工具
一佛猛、創(chuàng)建文件系統(tǒng)
-
mke2fs命令:
mke2fs - - create an ext2/ext3/ext4 filesystem synopsis: mke2fs [option] device options: -t {ext2,ext3,ext4} :指明要創(chuàng)建的文件系統(tǒng)類型 -b {1024|2048|4096} : 指明文件系統(tǒng)的塊大小惑芭,不超過4096 -L LABEL :指明卷標 -j : journal,創(chuàng)建有日志功能的文件系統(tǒng)ext3 mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 = mkfs.ext3 = -i #: bytes-per-inode,指明inode與字節(jié)的比率,即每多少字節(jié)創(chuàng)建一個inode -N # : 直接指明要給此文件系統(tǒng)創(chuàng)建的Inode數(shù)量 -O :設置某種屬性继找,掛載時這些屬性將會繼承 mke2fs -O has_journal /dev/sda3 #啟用日志功能 mke2fs -O ^ has_journal /dev/sda3 #關閉已給定的日志功能 -m # : 指定預留的空間百分比遂跟;不需要加百分號
注意:mkfs.ext2 , mkfs.ext3 , mkfs.ext4 mkfs.xfs mkfs.vfat 可以完成mke2fs的所有功能
-
swap分區(qū)的建立
調整分區(qū)類型為82
使用mkswap命令進行格式化
使用swapon DEVICE命令開啟swap分區(qū)
-
修改fstab文件,讓系統(tǒng)自動加載swap交換分區(qū)婴渡,其格式為:
- 設備 掛載點 文件系統(tǒng)類型 掛載選項 自動轉儲頻率 開機自檢次序
- /dev/sdb6 swap swap defaults 0 0
-
使用swapoff DEVICE命令關閉swap分區(qū)
- 注意:mount -a 對swap掛載項無效
二幻锁、查看及修改文件系統(tǒng)
-
tune2fs命令:
`tune2fs` - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems synopsis: tune2fs [ option] device options: -j device : 從ext2升級到ext3,無損升級 -L LABEL : 修改或設置卷標 -m # : 調整預留空間的百分比 -O [ ^] Feather : 開啟或關閉某種特性,掛載時這些特性將繼承 -o [^]Mount_options : 開啟或關閉默認掛載選項調整 acl ^acl : 關閉或啟用用戶掛載的acl開啟和關閉 -l : 查看超級塊的內容,就是查看整個分區(qū)的Infomation -c # : 指定掛載多少次進行自檢边臼,0或-1表示關閉此功能哄尔,即查看超級塊中的Maximum Mount count值 -i # : 每掛載使用多少天后進行自檢,0或-1表示關閉此功能,即查看超塊中的Mount count值柠并。
-
dumpe2fs命令:
`dumpe2fs` - dumpe2fs - dump ext2/ext3/ext4 filesystem information synopsys: dumpe2fs [ -bfhixV ] [ -o superblock=superblock ] device optiosn: -h : 查看超級塊信息
三岭接、檢查文件系統(tǒng)
fsck命令
`fsck` - check and repair a Linux file system
synopsis: fsck [-sAVRTMNP] [-C [fd]] [-t fstype] [filesys...] [--] [fs-specific-options]
options:
-t fstype : 指明文件系統(tǒng)類型
fsck -t ext4 == fsck.ext4
-a : 自動修復所有錯誤(不建議自動加-a ,就是把沒有寫完的文件刪除。如果需要這個文件臼予,可以將已經(jīng)寫的文件找回來亿傅,刪除就沒有了)
-r :交互修復
e2fsck命令
`e2fsck` - check a Linux ext2/ext3/ext4 file system
synopsis: e2fsck [option] device
options:
-y : 對所有問題回答為yes
-f : 即使文件系統(tǒng)處于clean狀態(tài),也要強制進行檢測
四瘟栖、查看文件系統(tǒng)
blkid命令
`blkid` - command-line utility to locate/print block device attributes
synopsis: blkid
options:
-L LABEL : 查看誰在使用label這個卷標葵擎。
-U UUID : 根據(jù)UUID定位設備
df命令(查看硬盤分區(qū)使用情況)
`df` - report file system disk space usage
options:
-l : 查看本地的硬盤
-h : haman格式顯示,就是轉化存儲單位顯示
-i : 查看磁盤的Inode使用情況
du命令(查看文件占用空間大邪胗础)
`du` - estimate file space usage
options:
-s : 顯示總的文件大小
-h : haman格式顯示
lsblk命令(查看硬盤分區(qū)使用情況)
`lsblk` list block devices
* 以樹型結構顯示各分區(qū)使用情況
===================
掛載文件系統(tǒng)
為什么需要掛載酬滤?
根之外的文件系統(tǒng)需要被訪問,就需要『關聯(lián)』至文件系統(tǒng)下的某目錄來實現(xiàn)寓涨,此關聯(lián)過程即為掛載盯串。此目錄即為掛載點
掛載的特性
Mount_point當為文件的訪問入口時,需注意如下特性:
- 目錄需要事先存在的
- 應該使用未被或不會被其它進程所使用的目錄
- 掛載的目錄當有人訪問時戒良,目錄不能被卸載
- /etc/mtab是記錄了所有的mount設備
Mount命令
`mount` - mount a system
synopsis: mount [-lhV]
mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o option[,option]...] device|dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
options:
-r : readonly,只讀掛載
-w : read and write,讀寫掛載
-n : 不更新/etc/mtab文件体捏,默認掛載都會在掛載時記錄至/etc/mtab文件中。
-t : system type, 掛載設備上的文件系統(tǒng)的類型,多數(shù)可忽略
-L LABEL : 掛載時以卷標的方式指明設備
`mount -L LABEL DIR
-U UUID : 掛載時以UUID的方式掛載
`mount -U UUID DIR
-a :自動掛載/etc/fstab文件中的所有設備
-o OPTIONS : 掛載指明參數(shù)几缭,即掛載的選項
--bind OLDDIR NEWDIR : 將目錄掛載至另一個目錄
-o options:
async/sync : 異步或同步操作河泳,異步的方式是先將數(shù)據(jù)寫入至內存,再保存至硬盤年栓,同步是直接寫入硬盤拆挥,異步的性能會提升很多
atime/noatime : 立即更新訪問時間戳/關閉
diratime/nodiratime : 開啟/關閉目錄的訪問時間戳
remount : 重新掛載,在需要指明其他選項某抓,即不影響其他用戶訪問的情況下使用
acl : 支持使用facl功能
mount -o acl DEVICE DIR
tune2fs -o acl DEVICE :調整文件系統(tǒng)的默認屬性為支持掛載時開啟acl功能
ro : 只讀
rw : 讀寫
dev/nodev : 開啟/關閉在在此設備上創(chuàng)建設備文件功能
exec/noexec : 是否允許運行此設備上的二進制程序文件
auto/noauto : 是否支持mount -a 命令自動掛載
user/nouser : 是否允許普通用戶掛載此文件系統(tǒng)
suid : 是否允許SUID或SGID的程序生效
relatime : 是否參考atime mtime的時候來修改inode的訪問時間
loop : 鏡像文件
netdev : 在啟動如果連接不上網(wǎng)絡映射的盤纸兔, 就停止掛載其網(wǎng)絡系統(tǒng),適用于ext2文件系統(tǒng)。
-
注意: Mount不加參數(shù)的默認(defaluts)設置為:
-
rw否副, suid,dev,exec,auto,nouser,async,relatime
-
查看當前系統(tǒng)上所有掛載的設備
- mount
- cat /etc/mtab
- cat /proc/mounts
Mount的使用技巧
- 可以實現(xiàn)將目錄掛載到目錄上汉矿,作為其臨時訪問的入口
mount --bind 源目錄 目錄目錄
- 掛載光盤
mount -r /dev/cdrom DIR
- 掛載本地回環(huán)設備
mount -o loop /FILE /DIR
umount命令
`umount` - umount file system
synopsis: umount DEVICE|DIR
強制umount
1、查看目錄或者設備被誰使用
- lsof DIR|DEVICE
- 使用lsof命令查看目錄或設備被誰使用
- fuser -v DIR|DEVICE
- 使用fuser -v 參數(shù)查看目錄或設備被使用情況
2备禀、結束訪問目錄或設備的進程
- fuser -km DIR|DIVECE
- -k : kill
- -m : 指定要結束訪問進程的目錄或設備
/etc/fstab文件格式:
-
1负甸、要掛載的設備
- 可以是設備文件
- 可以是LABEL
- 可以是UUID
- 如果是設備文件可以直接寫,如果是uuid或者LABEL,需要在其前面加 "UUID=" 或者 "LABEL="
-
2痹届、掛載點
*目錄: swap的掛載點就是swap
-
3呻待、文件系統(tǒng)類型
- swap的文件系統(tǒng)類型為swap
-
4、掛載選項
- defaults: 使用默認的掛載選項队腐,如果需要指定多個掛載選項蚕捉,使用逗號分隔
-
5、轉轉儲頻率(即是備份)
- 0:從不備份
- 1: 每天備份
- 2 : 每隔一天
-
6柴淘、自檢次序(優(yōu)先級)
- 0 :不自檢
- 1 :首先自檢
- 2:次級自檢
- ....
- 9
Linux刪除文件邏輯:
1迫淹、將此文件inode所有指向的data block標記為未使用
2、將此文件的inode標記為未使用
3为严、下次在寫入數(shù)據(jù)時敛熬,再填充相應的data block塊
移動和復制文件
-
復制:就是新建文件
-
移動:只是修改文件路徑映射,inode還是同一個文件
- 在同一文件系統(tǒng)上移動第股,只是改變其路徑
- 在不同文件系統(tǒng)之間移動应民,復制數(shù)據(jù)至目標文件,并刪除原文件