一、Linux磁盤磁盤類型node
機械式磁盤:緩存
track 磁道:磁道可劃分扇區,磁盤外則性能好些網絡
sector 扇區:用於存數據,通常一個扇區512byte數據結構
cylinder:柱面 相同編號的磁道是分區的基本單位,從最外至裏異步
劃分分區:每一個分區可劃分獨立的文件系統:分區是邏輯邊界async
MBR:主引導扇區 (0磁道,0扇區)master boot record 512byte全局,獨立OS分佈式
446byte:boot loader 引導某分區操做系統ide
64byte:filesystem allocation table (每16個字節標記一個分區)函數
2byte:Magic Number 55AA(MBR標記是否有效)其它標記無效工具
全部系統磁盤的劃分由 MBR決定(一個磁盤受4個主分區限制、2.2TB空間限制)
主分區+擴展小於=4個當中,取出部分爲指針,指向擴展分區 (另外更大的空間)
擴展分區只可以有一個,剩餘的空間都會分配到擴展分區中。
GPD:全局惟一標識分區表(GUID Partition Table,縮寫:GPT)代替MBR,支持大於2TB的空間
SSD式磁盤:
基於閃存的固態硬盤是固態硬盤的主要類別,其內部構造十分簡單,固態硬盤內主體其實就是一塊PCB板,而這塊PCB板上最基本的配件就是控制芯片、緩存芯片和用於存儲數據的閃存芯片。
二、VFS:(Virtual File System 虛擬文件系統)
VFS 是一種軟件機制,也許稱它爲 Linux 的文件系統管理者更確切點,與它相關的數據結構只存在於物理內存當中。因此在每次系統初始化期間,Linux 都首先要在內存當中構造一棵 VFS 的目錄樹,實際上即是在內存中創建相應的數據結構。VFS 目錄樹在 Linux 的文件系統模塊中是個很重要的概念,但願讀者不要將其與實際文件系統目錄樹混淆,在筆者看來,VFS 中的各目錄其主要用途是用來提供實際文件系統的掛載點,固然在 VFS 中也會涉及到文件級的操做,本文不闡述這種狀況。下文提到目錄樹或目錄,若是不特別說明,均指 VFS 的目錄樹或目錄。
VFS 目錄樹結構:
三、Linux文件系統支持的類型:
基本文件系統:Ext2, Ext3, Ext4, Reiserfs(支持小文件), xfs(支持大文件), btrfs(CentOS7.0之後), JFS, vfat(支持WindowsFAT32), NTFS
交換分區:swap
集羣文件系統:GFS2(全局文件系統), OCFS2
網絡文件系統:NFS, smbfs(CIFS) Common Internet File System
光盤:iso9660
分佈式文件系統:ceph,moosefs, mogilefs, hdfs, gfs, glusterfs
Unix: ffs, ufs, jfs, jfs2
(1)日誌型文件系統:
非日誌型文件系統:ext2
日誌型文件系統:ext3
(2)swap: 交換分區
建立文件系統:相似於Windows的虛擬內存,就是當內存不足的時候,把一部分硬盤空間虛擬成內存使用,從而解決內存容量不足的狀況。
四、文件系統管理工具:
在分區上執行格式化(高級格式化):
要使用某種文件系統需知足兩個條件:
內核中:支持此中文件系統。
用戶空間:有文件系統管理工具。
1.建立工具:
mkfs、mke2fs、e2label、blkid、dumpe2fs、tune2fs、fsck、e2fsck
mkfs命令(make filesystem)
功能:
建立文件系統
格式:
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
經常使用選項:
-t fstype 指定要建立何種文件類型
-c 在製作檔案系統前,檢查該分區是否有壞道
-fs 指定創建文件系統時的參數
實例:
# mkfs -t ext4 /dev/sdb1
Ext4: mkfs -t ext4 = mkfs.ext4 = mke2fs -t ext4
mke2fs命令
功能:
建立ext系列文件系統,支持ext二、ext三、ext4
格式:
mke2fs [OPTION]... DEVICE
經常使用選項:
-t {ext2|ext3|ext4}
-j : 至關於-t ext3
-L Label:卷標
-b {1024|2048|4096}:指定塊大小
-i #: #個字節給預留一個inode
-N #: 直接指定預留多少個Inode
-I #:Inode大小
-m #:預留管理員的空間百分比,默認爲5
-O:指定分區特性
配置文件: /etc/mke2fs.conf
//實例:
新建的sda3分區,並將其格式化爲ext4格式
blkid命令
功能:
查看設備的屬性,UUID和TYPE
格式:
Blkid /dev/SOMEDEVICE:
實例:
//查看剛剛新建的sda1分區的文件系統類型、卷標、UUID
e2label命令
功能:
查看分區的卷標和爲分區設定卷標
格式
e2label /dev/SOMEDEVICE: 查看卷標
e2label /dev/SOMEDEVICE 新卷標名
實例:
//使用e2label命令查看sda1的卷標,並把卷標修改成database
dumpe2fs命令
功能:
用於查看ext文件系統的超級塊和快組信息
格式:
dumpe2fs[ OPTIONS ]... device
經常使用選項:
-h: 僅查看超級塊中保存的信息
tune2fs命令
功能:
用於調整"ext2/ext3"文件系統中的可改參數
格式:
tune2fs [ OPTIONS ]... device
經常使用選項:
-l: 查看超級塊中的信息
-L 卷標名: 設定卷標
-m: 預留管理員的空間百分比,默認爲5
-r: 設定文件系統保留塊的大小
-j: 若是原來的文件系統爲ext2, -j可以將其提高爲ext3
-O [^] feature[,...]: 調整分區特性
-o [^] mount-options[,...]: 設定其默認掛載選項
async: 異步I/O
sync: 同步I/O
noatime/atime: 是否更新訪問時間戳,建議noatime
auto/noauto: 是否可以被mount -a選項自動掛載;
diratime/nodiratime: 是否更新目錄的訪問時間戳;
exec/noexec:是否容許執行其中的二進制程序;
_netdev: 在網絡設備啓用以前禁止嘗試掛載網絡設備
remount: 從新掛載
acl: 啓用facl 文件訪問控制列表
ro:掛載爲只讀
rw:掛載爲可讀寫
user/nouser: 是否容許普通掛載此設備
fsck命令
功能:
用於檢查而且試圖修復文件系統中的錯誤,當文件系統發生錯誤時,可用fsck指令嘗試加以修復
經常使用選項:
-t fstype
-a:自動修復文件系統,不詢問任何問題
-r: 交互式修復錯誤
-A:依照/etc/fstab配置文件的內容,檢查文件內所列的所有文件系統
-P:當搭配"-A"參數使用時,則會同時檢查全部的文件系統
-v:執行時顯示詳細的信息
e2fsck命令
功能:
用於檢查文件系統的完整性,經過適當的選項能夠嘗試修復出現的錯誤
經常使用選項:
-f: 強制檢測
-y: 對問題自動回答爲yes
-b<superblock>:指定superblock,而不使用預設的superblock
-B<區塊大小>:指定區塊的大小,單位爲字節
-v:執行時顯示詳細的信息
e2fsck執行後的傳回值及表明意義以下:
0 沒有任何錯誤發生。
1 文件系統發生錯誤,而且已經修正。
2 文件系統發生錯誤,而且已經修正。
4 文件系統發生錯誤,但沒有修正。
8 運做時發生錯誤。
16 使用的語法發生錯誤。
128 共享的函數庫發生錯誤。
交換分區:
虛擬內存並非真正的內存,它是在硬盤上劃分出一塊區域,將其格式化成物理內存相同的格式。一旦發生了物理內存不足的狀況,就能夠將物理內存頁框中的數據移動到虛擬內存上。而物理內存空間被從新釋放後,又能夠將虛擬內存頁框中的數據移動回去,這個過程就好像是在交換數據同樣,故這一區域被稱爲交換分區(swap)
mkswap命令
功能:
用於在一個文件或者設備上創建交換分區。在創建完以後要使用sawpon命令開始使用這個交換區。
經常使用選項:
-c:創建交換區前,先檢查是否有損壞的區塊
-L label
另外兩個相關命令:
swapon
-a #標記全部的交換分區都爲啓用狀態
-p #: 在啓用的時候指定其優先級
swapoff
-a #禁用全部
實例:
//建立一個空間爲6G的分區/dev/sdb2,而後把該分區建立爲交換分區
2.文件系統的掛載和使用
將額外文件系統與根文件系統某現存的目錄創建關聯關係,進而使得此目錄做爲其餘文件系統訪問入口的行爲,稱之爲掛載,解除此關係關係的過程稱爲卸載。
掛載點:mountpoint,設備掛載至目錄:
注意:掛載點在掛載後,其內部原有的文件會被暫時隱藏,建議使用空目錄做爲掛載點
相關命令:mount、umount、fuser、free、df、du
mount命令
功能:
用於掛載文件系統到指定的掛載點
mount:不跟任何參數,可顯示當前系統全部已掛載的設備
格式:
mount[options] [-t fstype] [-o option] 設備 掛載點
經常使用選項:
-tfstype 掛載的文件系統格式
-a:加載文件「/etc/fstab」中描述的全部文件系統
-o [^]:文件系統默認掛載選項的啓用或關閉
async:異步模式
sync: 同步模式
atime/noatime:是否更新訪問時間戳;
diratime/nodiratime:是否更新目錄的訪問時間戳;
auto/noauto: 是否容許此設備被自動掛載;
exec/noexec:是否容許執行此文件系統上應用程序;
dev/nodev:是否支持在此設備上使用設備文件;
suid/nosuid:
remount:從新掛載
ro:掛載爲只讀
rw:掛載爲可讀寫
user/nouser: 是否容許普通掛載此設備;
acl:是否支持此設備上使用facl;
defaults:rw,suid, dev, exec, auto, nouser, and async
如掛載時沒有設定特性,可以使用tune2fs修改:
# tune2fs -o mount-option 設備默認掛載屬性
# tune2fs -o ^mount-option 取消默認掛載屬性
幾個關鍵的配置文件:
/etc/rc.d/rc.sysinit:系統初始化腳本
/etc/mtab:記載的是如今系統已經裝載的文件系統,包括操做系統創建的虛擬文件等;
/etc/fstab:是開機後系統自動掛載的文件系統。
此文件中定義的文件系統掛載表:
每行定義一個文件系統:(每行包含的內容)
要掛載的設備或僞文件系統 |
掛載點 |
文件系統類型 |
掛載選項 |
轉儲頻率 |
自檢次序 |
1、要掛載的設備或僞文件系統
設備文件、LABEL=、UUID=、僞文件系統名稱
2、掛載點
3、文件系統類型
4、掛載選項,多個選項間使用逗號分隔;
defaults
5、轉儲頻率
0: 從不備份
1: 每日備份
2: 每隔一天轉儲
6、自檢次序
0: 不自檢
1: 首先自檢,一般只有/纔有1;
umount命令
功能:
卸載已掛載的分區,(當設備空閒時才能夠被卸載)
格式:
umount DEVICE
umount MOUNT_POINT
fuser命令
功能:
查看佔用掛載的設備的進程:
經常使用選項:
fuser-v 掛載點: 查看當前正在訪問該掛載點的進程
fuser-km 掛載點: 終止全部正在訪問該掛載點的進程:
free命令
功能:
查看內存空間使用狀態:
經常使用選項:
-m: 顯示結果以MB爲單位
-g: 顯示結果以GB爲單位
內核映射文件中內存的相關信息:
# cat/proc/meminfo
df命令
功能:
查看當前系統上已掛載的分區,及其空間使用信息、inode信息等
經常使用選項:
-a或--all:包含所有的文件系統
-h或--human-readable:以可讀性較高的方式來顯示信息
-i或--inodes:顯示inode的信息
-T或--print-type:顯示文件系統的類型
實例:
du命令
功能:
統計文件或目錄的實際大小
經常使用選項:
-a或-all: 顯示目錄中個別文件的大小
-h或--human-readable: 以K,M,G爲顯示單位
-L<符號連接>或--dereference<符號連接>: 顯示指定符號連接的源文件大小
-S或--separate-dirs: 顯示個別目錄的大小時,並不含其子目錄的大小
-c或--total: 除了顯示個別目錄或文件的大小外,同時也顯示全部目錄或文件的總和
-s或--summarize: 僅顯示總計,只列出最後加總的值
-k或--kilobytes: 以KB(1024bytes)爲單位輸出
-m或--megabytes: 以MB爲單位輸出
-l或--count-links:重複計算硬件連接的文件
-L<符號連接>或--dereference<符號連接>: 顯示選項中所指定符號連接的源文件大小
-D或--dereference-args: 顯示指定符號連接的源文件大小
實例:
練習:
建立一個10G的文件系統,類型爲ext4,要求開機可自動掛載至/mydata目錄
1、使用fdisk命令,建立一個10G的分區
2、使用partx命令更新分區表讓內核可以識別到新建立的分區
3、使用e2fs命令爲此分區建立文件系統,類型爲ext4
4、在根目錄下建立mydata目錄,並使用mount命令掛載分區
5、使用blkid命令查看該分去的UUD,把該值複製下來,編輯/etc/fstab配置文件,添加一行該分區的信息,下次開機後系統將會自動掛載該分區