Linux文件系統與磁盤管理
有哪些文件系統:
FAT:微軟在Dos/Windows系列操作系統中共使用的一種文件系統的總稱。
exFAT(Extended File Allocation Table File System,擴展FAT,即擴展文件分配表):是擴展文件分配表主界
面 Microsoft在Windows
Embeded 5.0以上(包括Windows CE 5.0、6.0、Windows Mobile5、6、6.1)中引入的一種適合於閃存的
文件系統,為了解決FAT32等不支持4G及其更大的文件而推出。
對於閃存,NTFS文件系統不適合使用,exFAT更為適用。
NTFS(New Technology File System):是 WindowsNT 環境的文件系統。
CDFS:大部分的光盤的文件系統,只有小部分光盤使用其他文件系統。這些文件系統只能在CD-R或CD-RW
上讀取。
RAW:沒有被NT文件系統(FAT或NTFS)格式化的磁盤分區
Ext(Extended file system):是為linux核心所做的第一個文件系統。采用Unix文件系統(UFS)的元數據結
構,以克服MINIX文件系統性能不佳的問題。它是在linux上,第一個利用虛擬文件系統實現出的文件系統,
在linux核心0.96c版中首次加入支持。
Ext2:GNU/Linux 系統中標准的文件系統,其特點為存取文件的性能極好,對於中小型的文件更顯示出
優勢,這主要得利於其簇快取層的優良設計。
Ext3:一種日志式文件系統,是對ext2系統的擴展,它兼容ext2。日志式文件系統的優越性在於:由於
文件系統都有快取層參與運作,如不使用時必須將文件系統卸下,以便將快取層的資料寫回磁盤中。因
此每當系統要關機時,必須將其所有的文件系統全部shutdown后才能進行關機。如果在文件系統尚未
shutdown前就關機 (如停電) 時,下次重開機后會造成文件系統的資料不一致,故這時必須做文件系
統的重整工作,將不一致與錯誤的地方修復。然而,此一重整的工作是相當耗時的,特別是容量大的文
件系統,而且也不能百分之百保證所有的資料都不會流失。為了克服此問題,使用所謂‘日志式文件系統
(Journal File System) ’。此類文件系統最大的特色是,它會將整個磁盤的寫入動作完整記錄在磁盤的某
個區域上,以便有需要時可以回溯追蹤。由於詳細紀錄了每個細節,故當在某個過程中被中斷時,系統
可以根據這些記錄直接回溯並重整被中斷的部分,而不必花時間去檢查其他的部分,故重整的工作速度
相當快,幾乎不需要花時間。
Ext4:Ext3 的改進版,修改了 Ext3 中部分重要的數據結構,而不僅僅像 Ext3 對 Ext2 那樣,只是增加
了一個日志功能而已。Ext4 可以提供更佳的性能和可靠性,還有更為豐富的功能
Btrfs:它被稱為是下一代 Linux 文件系統。據說它采用了很多先進的文件系統設計,不僅解決了 ext2/3 的擴
展性問題,還讓人們看到了下一代文件系統所具有的許多其他特性。
ZFS:源自於Sun Microsystems為Solaris操作系統開發的文件系統。ZFS是一個具有高存儲容量、文件系統
與卷管理概念整合、嶄新的磁盤邏輯結構的輕量級文件系統,同時也是一個便捷的存儲池管理系統。
ReiserFS:一種文件系統格式,作者是Hans Reiser及其團隊Namesys,1997年7月23日他將ReiserFS文件
系統在互聯網上公布。
JFS(JOURNAL FILE SYSTEM):一種字節級日志文件系統,借鑒了數據庫保護系統的技術,以日志的形式
記錄文件的變化。JFS通過記錄文件結構而不是數據本身的變化來保證數據的完整性。這種方式可以確保在
任何時刻都能維護數據的可訪問性。
VMFS(VMware Virtual Machine File System) :一種高性能的群集文件系統.
XFS: Silicon Graphics,Inc. 於 90 年代初開發的文件系統。它至今仍作為 SGI 基於 IRIX 的產品(從工作
站到 超級計算機)的底層文件系統來使用。現在,XFS 也可以用於 Linux。
UFS:基於BSD高速文件系統的傳統UNIX文件系統,是Solaris的默認文件系統。默認啟用UFS 日志記錄功能。
VxFS(VeritasFileSystem):首個商業日志記錄文件系統。通過日志記錄功能,元數據更改首先寫入到日志,然
后再寫入到磁盤。
ReFS(Resilient File System,彈性文件系統):在Windows 8.1和Server 2012中新引入的一個文件系統。ReFS
是與NTFS大部分兼容的,其主要目的 是為了保持較高的穩定性,可以自動驗證數據是否損壞,並盡力恢復數據。
linux文件系統:
文件系統指文件存在的物理空間,linux系統中每個分區都是一個文件系統,都有自己的目錄層次結構。
linux會將這些分屬不同分區的、單獨的文件系統按一定的方式形成一個系統的總的目錄層次結構。一個
操作系統的運行離不開對文件的操作,因此必然要擁有並維護自己的文件系統。
Llinux文件系統使用索引節點來記錄文件信息,作用像windows的文件分配表。
索引節點是一個結構,它包含了一個文件的長度、創建及修改時間、權限、所屬關系、磁盤中的位置
等信息。一個文件系統維護了一個索引節點的數組,每個文件或目錄都與索引節點數組中的唯一一個
元素對應。系統給每個索引節點分配了一個號碼,也就是該節點在數組中的索引號,稱為索引節點號。
linux文件系統將文件索引節點號和文件名同時保存在目錄中。所以,目錄只是將文件的名稱和它的索引節
點號結合在一起的一張表,目錄中每一對文件名稱和索引節點號稱為一個連接。
對於一個文件來說有唯一的索引節點號與之對應,對於一個索引節點號,卻可以有多個文件名與之對
應。因此,在磁盤上的同一個文件可以通過不同的路徑去訪問它。
可以用ln命令對一個已經存在的文件再建立一個新的連接,而不復制文件的內容。
連接有軟連接和硬連接之分,軟連接又叫符號連接。
它們各自的特點是:
硬連接:原文件名和連接文件名都指向相同的物理地址。
目錄不能有硬連接;硬連接不能跨越文件系統(不能跨越不同的分區)
文件在磁盤中只有一個拷貝,節省硬盤空間;
由於刪除文件要在同一個索引節點屬於唯一的連接時才能成功,因此可以防止不必要的誤刪除。
符號連接:用ln -s命令建立文件的符號連接符號連接是linux特殊文件的一種,作為一個文件,它的數據
是它所連接
的文件的路徑名。類似windows下的快捷方式。
可以刪除原有的文件而保存連接文件,沒有防止誤刪除功能。
整個Linux系統都通過虛擬文件系統交換(Virtual FileSystem Switch, VFS)的核心功能去讀取文件系統,即整
個Linux認識的文件系統都是VFS在管理,用戶並不需要知道每個分區上的文件系統是什么,VFS會主動幫個
用戶做讀取工作。所以,系統管理員只要設置好各主要文件系統對應的文件系統模塊,核心的VFS會主動接
管該文件系統的訪問模式。用戶在不知道每個文件系統是什么的情況下,就能自由運用系統上的各種文件系
統。
Linux常見的支持的文件系統有:
傳統文件系統:ext2/minix/MS-DOS/FAT/iso9660
日志式文件系統:ext3/ReiserFS/Windows的NTFS, IBM的JFS/SGI的XFS
網絡文件系統:NFS/SMBFS
查看支持的文件系統:cat /proc/filesystems
磁盤管理相關命令:
du:查看使用空間的,默認顯示目錄下每個文件的大小,但是與df命令不同的是Linux du命令是對文件和目錄磁
盤使用的空間的查看
選項:
-a或-all 顯示目錄中個別文件的大小。 -b或-bytes 顯示目錄或文件大小時,以byte為單位。 -c或--total 除了顯示個別目錄或文件的大小外,同時也顯示所有目錄或文件的總和。 -k或--kilobytes 以KB(1024bytes)為單位輸出。 -m或--megabytes 以MB為單位輸出。 -s或--summarize 僅顯示總計,只列出最后加總的值。 -h或--human-readable 以K,M,G為單位,提高信息的可讀性。 -x或--one-file-xystem 以一開始處理時的文件系統為准,若遇上其它不同的文件系統 目錄 則略過。 -L<符號鏈接>或--dereference<符號鏈接> 顯示選項中所指定符號鏈接的源文件大小。 -S或--separate-dirs 顯示個別目錄的大小時,並不含其子目錄的大小。 -X<文件>或--exclude-from=<文件> 在<文件>指定目錄或文件。 --exclude=<目錄或文件> 略過指定的目錄或文件。 -D或--dereference-args 顯示指定符號鏈接的源文件大小。 -H或--si 與-h參數相同,但是K,M,G是以1000為換算單位。 -l或--count-links 重復計算硬件鏈接的文
df:顯示磁盤分區上的可使用的磁盤空間。默認顯示單位為KB。可以利用該命令來獲取硬盤被占用了多少空間,目
前還剩下多少空間等信息。
選項:
-a或--all:包含全部的文件系統; --block-size=<區塊大小>:以指定的區塊大小來顯示區塊數目; -h或--human-readable:以可讀性較高的方式來顯示信息; -H或--si:與-h參數相同,但在計算時是以1000 Bytes為換算單位而非1024 Bytes; -i或--inodes:顯示inode的信息; -k或--kilobytes:指定區塊大小為1024字節; -l或--local:僅顯示本地端的文件系統; -m或--megabytes:指定區塊大小為1048576字節; --no-sync:在取得磁盤使用信息前,不要執行sync指令,此為預設值; -P或--portability:使用POSIX的輸出格式; --sync:在取得磁盤使用信息前,先執行sync指令; -t<文件系統類型>或--type=<文件系統類型>:僅顯示指定文件系統類型的磁盤信息; -T或--print-type:顯示文件系統的類型; -x<文件系統類型>或--exclude-type=<文件系統類型>:不要顯示指定文件系統類型 的磁盤信息;
linlin@ubuntu:~/linlin/c_code$ df df: /mnt/hgfs: Protocol error Filesystem 1K-blocks Used Available Use% Mounted on udev 478860 0 478860 0% /dev tmpfs 99828 12560 87268 13% /run /dev/sda1 19478204 6301620 12164104 35% / tmpfs 499124 212 498912 1% /dev/shm tmpfs 5120 4 5116 1% /run/lock tmpfs 499124 0 499124 0% /sys/fs/cgroup tmpfs 99828 80 99748 1% /run/user/1000
其中:
Filesystem:表示該文件系統是在哪個分區,所以列出設備名稱
1k-blocks:表示下面單位是1KB, 可利用-h或-m改變容量
Used:已使用的硬盤空間
Available:剩下的磁盤空間大小
Use%: 磁盤使用率
Mounted on:磁盤載入的目錄所在(載入點)
在磁盤規划中,每個磁盤最多允許4個主分區,其他分區就放在擴展分區中。
mknod: 創建Linux中的字符設備文件和塊設備文件。
字符設備:按塊為單位,隨機訪問的設備
塊設備:按字符為單位,線性設備
語法格式:mknod 選項 NAME TYPE 主/次
選項:
-Z:設置安全的上下文;
-m:設置權限模式;
blkid:查詢系統的塊設備(包括交換分區)所使用的文件系統類型、LABEL、UUID等信息
fdisk:用於觀察硬盤實體使用情況,也可對硬盤分區。它采用傳統的問答式界面。
語法格式:fdisk 選項 參數
選項:
-b<分區大小>:指定每個分區的大小;
-l:列出指定的外圍設備的分區表狀況;
-s<分區編號>:將指定的分區大小輸出到標准輸出上,單位為區塊;
-u:搭配"-l"參數列表,會用分區數目取代柱面數目,來表示每個分區的起始地址;
管理命令:
p:顯示當前磁盤上的分區
n:創建新分區
p,主分區
e,擴展分區
d:刪除分區
w:保存退出
q:不保存退出
t:修改分區類型
l:顯示所支持的所有類型
文件系統管理命令:
mkfs:創建文件系統,mkfs本身並不執行建立文件系統的工作,而是去調用相關的程序來執行。
常用選項:
-t<文件系統類型>:指定要建立何種文件系統;
fsck:檢查並修復Linux文件系統
常用選項:
-t 文件系統類型:指定文件系統類型
-a:自動修復
管理ext系列文件系統:
mke2fs:創建磁盤分區上的“etc2/etc3”文件系統。
語法格式:mke2fs 選項 參數
常用選項:
-j:創建ext3類型文件系統 -b 塊大小:指定塊大小,默認為4096 可取值:1024 2048 4096 -L label:指定分區卷標 可用卷標指定文件系統 -m NUMBER:指定預留給超級用戶的塊數百分比 -i 字節數:指定多少個字節一個iNode,這里給出的數值應該為2^n倍 -N NUMBER:指定iNode個數 -F:強制創建文件系統 -E:用戶指定額外的文件系統屬性
e2label: 查看或定義卷標
語法格式:e2label 設備文件 卷標
tune2fs: 調整文件系統的相關屬性
常用選項:
-j:不損壞原有數據的情況下,將ext2升級為ext3 -L label:用於設定或修改卷標 -m NUMBER:調整預留百分比 -r 數字:指定預留塊數 -o:設定默認掛載選項
dumpe2fs:顯示文件系統信息。
-h:只顯示超級快信息
e2fsck:專用於修復ext類型文件系統
-f:強制檢查
-p:自動修復
