一、什么是文件系統
文件系統是對一個存儲設備上的數據和元數據進行組織的機制。它使用文件和樹形目錄的抽象邏輯概念代替了硬盤和光盤等物理設備使用的數據塊的概念,用戶使用文件系統來保存數據而不必關心數據實際保存在硬盤(or光盤)的地址為多少數據塊上,只需要記住這個文件的所屬目錄和文件名。在寫入數據前,用戶也不必關系硬盤上的哪個塊地址沒有被使用,硬盤上的存儲空間管理功能由文件系統自動完成,用戶只需記住數據被寫入到了哪個文件中。
文件系統通常使用硬盤和光盤這樣的存儲設備,并維護文件在設備中的物理位置。但是,實際上文件系統也可能僅僅是一種訪問數據的界面而已,實際的數據是通過網絡協議,如NFS,SMB等提供的或者內存上,甚至可能根本沒有對應的文件,如proc文件系統。
嚴格地說,文件系統是一套實現了數據的存儲,分級組織,訪問和獲取等操作的抽象數據類型。
二、常見的文件系統:
-
Linux文件系統:
ext2,ext3,ext4,xfs,btr,reiserfs,jfs,swap
swap:交換分區:將磁盤當作內存使用
光盤:iso9660
-
windows:fat32(vfat),ntfs
-
unix:FFS,UFS,JFS2
-
網絡文件系統:NFS,CIFS
-
集群文件:GFS2,OCFS2
-
分布式文件系統:ceph
moosefs,mogilegfs,GlusterFS,Lustre
-
根據其是否支持“Journal”功能:
非日志型文件系統:ext2,vfat
日志型文件系統:ext3,ext4,xfs…
-
文件系統的組成部分
內核中的模塊:ext4
用戶空間的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat
-
Linux的虛擬文件系統:VFS
-
查看支持的文件系統:# cat /proc/filesystems
三、創建文件系統:
先創建一個環回設備用作臨時文件系統:
使用dd命令創建一個指定大小的用0填充的文件,并用losetup命令將一個環回設備與此文件關聯起來,使其作為一個塊設備而不是常規文件。
# dd if=/dev/zero of=file.img bs=1k count=10000 記錄了10000+0 的讀入 記錄了10000+0 的寫出 10240000字節(10 MB)已復制,0.0116915 秒,876 MB/秒 # losetup /dev/loop0 file.img
此時/dev目錄出現一個塊設備文件/dev/loop0
# ls /dev |grep loop0 loop0
命令:
1)mkfs
用法:1)mkfs [options] [-t type] [fs-options] device [size]
2)mkfs.ext3
選項:
[-b 塊大小] [-C 簇大小]
[-i 為數據空間中每多少個字節創建一個inode索引節點;該大小不應該小于block的大小]
[-N 為數據空間創建多少個inode]
[-m 為管理人員預留的空間占據的百分比]
[-L 卷標]
[-O 啟用制定特性[,…]]
[-t 文件系統類型]
[-U UUID]
# mkfs -t ext3 -L LOOP /dev/loop0 mke2fs 1.42.9 (28-Dec-2013) Discarding device blocks: 完成 文件系統標簽=LOOP OS type: Linux 塊大小=1024 (log=0) 分塊大小=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 2512 inodes, 10000 blocks 500 blocks (5.00%) reserved for the super user 第一個數據塊=1 Maximum filesystem blocks=10485760 2 block groups 8192 blocks per group, 8192 fragments per group 1256 inodes per group Superblock backups stored on blocks: 8193 Allocating group tables: 完成 正在寫入inode表: 完成 Creating journal (1024 blocks): 完成 Writing superblocks and filesystem accounting information: 完成
2)mke2fs:ext系列文件系統的專用管理工具
選項同mkfs
# mke2fs -t ext3 -L Loop /dev/loop0 mke2fs 1.42.9 (28-Dec-2013) Discarding device blocks: 完成 文件系統標簽=Loop OS type: Linux 塊大小=1024 (log=0) 分塊大小=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 2512 inodes, 10000 blocks 500 blocks (5.00%) reserved for the super user 第一個數據塊=1 Maximum filesystem blocks=10485760 2 block groups 8192 blocks per group, 8192 fragments per group 1256 inodes per group Superblock backups stored on blocks: 8193 Allocating group tables: 完成 正在寫入inode表: 完成 Creating journal (1024 blocks): 完成 Writing superblocks and filesystem accounting information: 完成
3)mkswap:創建一個交換空間
選項:
-c, –check 創建交換區前檢查壞塊
-f, –force 允許交換區大于設備大小
-p, –pagesize SIZE 指定頁大小為 SIZE 字節
-L, –label LABEL 指定標簽為 LABEL
-v, –swapversion NUM 指定交換空間版本號為 NUM
-U, –uuid UUID 指定要使用的 UUID
-V, –version 輸出版本信息并退出
-h, –help 顯示此幫助并退出
# mkswap /dev/loop0 mkswap: /dev/loop0: warning: wiping old ext3 signature. 正在設置交換空間版本 1,大小 = 9996 KiB 無標簽,UUID=1d6c45f5-bcd0-44fd-a39b-ec9826a8e008
四、修改文件系統
(1)blkid 顯示分區的屬性信息
blkid [option]… [device]
-U UUID:根據指定的UUID來查找對應的設備
-L LABEL:根據指定的LABEL來查找對應的設備
# blkid /dev/sda1: UUID="1ae50cbe-2f3d-4394-a8dd-38804695c18c" TYPE="xfs" /dev/sda2: UUID="fiizVI-1uF2-XfxN-qiZM-So42-8Hju-dx8mld" TYPE="LVM2_member" /dev/mapper/centos-root: UUID="98023b04-500a-451c-8db5-e9f77d4b8a7c" TYPE="xfs" /dev/mapper/centos-swap: UUID="6de8f2e9-70ad-4956-884e-60d3dc632659" TYPE="swap" /dev/loop0: LABEL="point1" UUID="df4b5931-cde8-4842-8807-e7eec08608d2" TYPE="ext3" /dev/loop1: UUID="5156094a-a26e-46ce-aa18-57ea46d5900f" TYPE="ext2"
(2)e2label:管理ext系列文件系統的LABEL
e2label DEVICE :查看設備的卷標
e2label DEVICE [LABEL]:修改設備的卷標
# e2label /dev/loop0 POINT1 && e2label /dev/loop0 POINT1
(3)tune2fs:重新設定ext文件系統的可調整屬性的值
-l:查看指定文件系統的超級塊信息:super block
-L ’LABEL‘:修改卷標
-m #:修改預留給管理員的空間百分比
-j:將ext2升級為ext3
-O:文件系統屬性的打開或禁用
-o:調整文件系統的默認掛載選項
-U UUID:修改UUID號
-i:設置相鄰兩次文件系統檢查的間隔時間
-c:設置檢查前文件系統最大加載次數
(4)dumpe2fs:
-h:查看超級塊信息
五、掛載文件系統
在linux中,將一個文件系統與一個存儲設備關聯起來的過程稱為掛載(mount)。
使用mount命令將一個文件系統附著到當前文件系統層次結構中(根)。在進行掛載時,要提供文件系統類型,文件系統和一個掛載點。
這里將loop0設備掛載到掛載點/mnt/point1。
# mkdir /mnt/point1 # mount -t ext3 /dev/loop0 /mnt/point1/ # ls /mnt/point1 lost+found
此時還可以重復進行掛載,比如在point1中繼續創建新文件,與一個新的環回設備關聯,再在上面創建另一個文件系統并掛載(詳細信息略)
# dd if=/dev/zero of=/mnt/point1/file.img bs=1k count=1000 # losetup /dev/loop1 /mnt/point1/file.img # mkfs.ext3 /dev/loop1 # mkdir /mnt/point2 # mount -t ext2 /dev/loop1 /mnt/point2 # ls /mnt/point2 lost+found
可見Linux的文件系統和環回設備是多么強大,可按照此種方法在文件上用環回設備創建加密的文件系統。在需要的時候使用臨時環回設備掛載文件,有助于保護數據。
注:資料來源(上課筆記、Wiki、IBM devloperworks、Linux命令大全等)
原創文章,作者:lichenhan,如若轉載,請注明出處:http://www.www58058.com/23141