一,概述
文件系統是操作系統用于明確存儲設備或分區上的文件的方
法和數據結構;即在存儲設備上組織文件的方法。操作系統
中負責管理和存儲文件信息的軟件結構稱為文件管理系統,
簡稱文件系統。
從系統角度來看,文件系統是對文件存儲設備的空間進行組
織和分配,負責文件存儲并對存入的文件進行保護和檢索的
系統。具體地說,它負責為用戶建立文件,存入、讀出、修
改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,
加密等。
文件系統類型:
Linux文件系統:ext2(Extended file system), ext3,
ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(
AIX), swap
光盤:iso9660
Windows:fat32, ntfs
Unix: FFS(fast), UFS(unix), JFS2
網絡文件系統:NFS, CIFS
集群文件系統:GFS2, OCFS2(oracle)
分布式文件系統:ceph, moosefs, mogilefs, glusterfs,
Lustre
RAW:未經處理或者未經格式化產生的文件系統
文件系統分類:
根據其是否支持"journal"功能:
日志型文件系統: ext3, ext4, xfs, …
非日志型文件系統: ext2, vfat
文件系統的組成部分:
內核中的模塊:ext4, xfs, vfat
用戶空間的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虛擬文件系統:VFS
VFS就是利于開發人員的虛擬文件系統,開發過程中會操作很多文件系統,有了VFS,就不用去各個操作文件系統,直接通過VFS接口來訪問內核中的各個文件文通
查前支持的文件系統:cat /proc/filesystems
創建文件系統:
mkfs命令:
(1) # mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
(2) # mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL': 設定卷標
tune2fs:
tune2fs:重新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統超級塊信息;super block
-L 'LABEL':修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統屬性啟用或禁用, –O ^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl
-U UUID: 修改UUID號
dumpe2fs:
-h:查看超級塊信息,不顯示分組信息
查看超級塊什么信息
什么是超級快,超級塊就是一個分區有N個塊,將塊分為組來管理,這就是超級塊
每個超級快的頭為超級塊的信息,備份超級塊的信息在組的1,3,5,7,9
創建ext文件系統:
mke2fs:ext系列文件系統專用管理工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096}(指定塊的最小空間)
-L 'LABEL' (指定卷標)
-j: 相當于-t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i #: 為數據空間中每多少個字節創建一個inode;此大
小不應該小于block的大小
-N #:為數據空間創建個多少個inode
最小的inode號為10496,所以我們填寫的10240不能實現.
-I 一個inode記錄大小128—4096字節
-m #: 默認5%,為管理人員預留空間占總空間的百分比
預留的空間默認為總空間的百分之五,最小可為0.1,如
-O FEATURE[,…]:啟用指定特性
-O ^FEATURE:關閉指定特性
關閉has_journal特性,不帶^為啟用
文件系統標簽:
指向設備的另一種方法
與設備無關
blkid:塊設備屬性信息查看
blkid [OPTION]… [DEVICE]
-U UUID: 根據指定的UUID來查找對應的設備
-L LABEL:根據指定的LABEL來查找對應的設備
e2label:管理ext系列文件系統的LABEL
# e2label DEVICE [LABEL]
findfs :查找分區
findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>
文件系統檢測和修復
常發生于死機或者非正常關機之后
掛載為文件系統標記為“no clean”
注意:一定不要在掛載狀態下修復,否則將會導致文件系統損壞
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-a: 自動修復錯誤
-r: 交互式修復錯誤
FS_TYPE一定要與分區上已經文件類型相同
e2fsck:ext系列文件專用的檢測修復工具
-y:自動回答為yes
-f:強制修復
我們將一個硬盤的超級塊信息破壞.
掛載mount:
掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為
卸載:為解除此關聯關系的過程
把設備關聯掛載點:mount Point
mount
卸載時:可使用設備,也可以使用掛載點
umount
掛載點下原有文件在掛載完成后會被臨時隱藏
掛載點目錄一般為空
一個磁盤可以掛載多個目錄,但是一個目錄不能同時掛載多個磁盤。
mount /dev/sda3 /testdir
mkdir /testdir/self
mount /dev/sda3 /testdir/self
實驗證明同一個磁盤分區掛載到第一層目錄下的目錄,只能進入一層之后就是本身第二層目錄的內容
fuser -v /mnt/sdb1
查看誰在用這個磁盤分區
用mount命令掛載文件系統:
掛載方法:mount DEVICE MOUNT_POINT
mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備
mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要掛載的設備;
(1) 設備文件:例如/dev/sda5
(2) 卷標:-L 'LABEL', 例如-L 'MYDATA'
(3) UUID, -U 'UUID':例如-U '0c50523c-43f1-45e7-85c0-a126711d406e'
(4) 偽文件系統名稱:proc, sysfs, devtmpfs, configfs
dir:掛載點
事先存在;建議使用空目錄
進程正在使用中的設備無法被卸載
mount常用命令選項:
-t vsftype:指定要掛載的設備上的文件系統類型
-r: readonly,只讀掛載
-w: read and write, 讀寫掛載
-n: 不更新/etc/mtab,相當于#mount
-a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)
-L 'LABEL': 以卷標指定掛載設備
-U 'UUID': 以UUID指定要掛載的設備
-B, –bind: 綁定目錄到另一個目錄上
查看內核追蹤到的已掛載的所有設備:
cat /proc/mounts
-o options:(掛載文件系統的選項),多個選項使用逗號分隔
async:異步模式
sync:同步模式,內存更改時,同時寫磁盤
atime/noatime:包含目錄和文件
diratime/nodiratime:目錄的訪問時間戳
auto/noauto:是否支持自動掛載,是否支持-a選項
exec/noexec:是否支持將文件系統上運行應用程序
dev/nodev:是否支持在此文件系統上使用設備文件
suid/nosuid:不否支持suid和sgid權限
remount:重新掛載
ro:只讀
rw:讀寫
user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載
acl:啟用此文件系統上的acl功能
Defaults:相當于rw, nosuid, dev, exec, auto, nouser, async
mknod 拷貝硬件設備
原創文章,作者:Kartik,如若轉載,請注明出處:http://www.www58058.com/43740