Linux內(nèi)所有的數(shù)據(jù)都是以文件的形式存在,所以Linux系統(tǒng)中最重要的地方就在于目錄樹(directory tree)結構。
目錄樹結構如下:

掛載
掛載就是利用一個目錄當成進入點,將磁盤分區(qū)的數(shù)據(jù)放置在該目錄下,進入該目錄即可讀取該分區(qū),這個動作我們稱為掛載。這個進入點的目錄我們稱為掛載點。掛載點一定是目錄。

從圖中可以看出可以將不同的目錄掛載在不同的分區(qū)上。
可以在
/etc/fsta里修改開機掛載內(nèi)容。同時又以下限制:
-
/目錄必須掛載,并且要先于其他掛載點掛載; - 其他mount porint必須為已創(chuàng)建的目錄,可任意指定,但一定要遵守必須的系統(tǒng)目錄架構原則(FHS);
- 所有的mount point在同一時間之內(nèi),只能掛載一次。
文件屬性和權限
改變權限命令:
- chgrp:改變文件所屬群組;
- chown:改變文件擁有者;
- chmod:改變文件的權限。
-R為遞歸,文件次目錄的所有文件都會變更。
也可以使用chown user.group file的方式同時改變擁有者和群組。
cp命令會將文件擁有者屬性和權限都復制過去。
文件權限數(shù)字表達為:r:4; w:2;x:1
符號類型改變文件權限:擁有者表達方式u=user, g=group, o=other a=all權限則用+ - =來表示添加、刪除和賦予。
文件種類與擴展名
文件種類
- 普通文件,第一個字符為
-,包含文本、二進制文件、數(shù)據(jù)格式文件等; - 目錄:
d - 鏈接文件:
l - 設備文件
- 區(qū)塊設備文件,
b - 字符設備文件,
c
- 區(qū)塊設備文件,
- 數(shù)據(jù)接口文件:socket
s - 管道文件(pipe):FIFO(first in first out)
p
linux文件目錄
/bin:可執(zhí)行文件目錄,該目錄的指令可在單人維護模式下被執(zhí)行。
/boot: 放置開機啟動文件,包括linux kernel和開機菜單、開機所需配置文件等。kernel文件名為vmlinuz
/dev:設備與周邊設備存放目錄;
/etc:系統(tǒng)主要配置文件目錄。只有root用戶可修改。
/lib:系統(tǒng)函數(shù)庫存放文件,驅(qū)動文件也放在這;
/media /mnt:媒體存放目錄以及掛載目錄;
/opt:第三方軟件存放目錄;
/srv:一些www ftp等服務數(shù)據(jù)存放目錄
/tmp:一般使用者或正在執(zhí)行的程序暫放文件的地方。任何人都可以讀取,需要定期清理;
/home:默認使用者主文件夾;
/root:root用戶主文件夾;
/last+found:ext2/3/4文件格式會產(chǎn)生的一個目錄,當文件系統(tǒng)發(fā)生錯誤時,一些遺失的片段會放置在該目錄下。
/proc:進程信息、設備狀態(tài)、網(wǎng)絡狀態(tài)目錄
/usr:unix software resource縮寫,
文件默認權限umask來查看和修改。顯示的是被減去的權限。
文件系統(tǒng)存放
superblock:記錄文件系統(tǒng)的整體信息,包括inode/block的總量、使用量、剩余量以及文件系統(tǒng)的格式和相關信息;
inode:記錄文件的屬性,一個文件占用一個inode,同時記錄文件的數(shù)據(jù)所在的block號碼;
block:實際記錄文件的內(nèi)容,可能占用多個block。
EXT2
EXT2文件系統(tǒng)劃分了多個block group,每個區(qū)塊有獨立的inode/block/superblock系統(tǒng)。ext2系統(tǒng)所支持的block大小為1K/2K/4K(Bytes)這三種。block的大小導致了文件系統(tǒng)磁盤容量的大小不同

ext2文件系統(tǒng)的block的限制如下:
- block大小和數(shù)量在格式化完后就固定了;
- 每個block內(nèi)最多只能放置
一個文件的數(shù)據(jù); - 如果文件大于block的大小,則一個文件占用多個block數(shù)量;
- 如果文件小于block,則該block的剩余容量就不會被其他文件占用。
當小文件過多(日志文件)時,格式化成4K的block會浪費很大空間;而大型文件假如格式化成1K的block時則需要占用數(shù)量更多的block,則inode也要記錄更多block號碼,會導致文件系統(tǒng)不良的讀寫性能。因此要針對是什么服務器進行專門區(qū)分。
inode
inode記錄的數(shù)據(jù):
- 該文件的讀取模式;
- 文件的擁有者和群組;
- 文件的容量;
- 文件的創(chuàng)建或狀態(tài)改變時間ctime;
- 最近一次讀取時間atime;
- 最近一次修改時間mtime;
- 定義文件特殊的flag;
- 文件真正指向pointer;
inode特點: - 每個inode 大小固定為128Bytes(最新系統(tǒng)可到256)
- 每個文件僅占用一個inode;
- 文件系統(tǒng)能夠創(chuàng)建的文件數(shù)量和inode數(shù)量相關;
- 系統(tǒng)讀取文件先找到inode,然后分析權限,最后讀取block內(nèi)容。
superblclock
superblock記錄了整filesystem相關信息:
- block和inode總量;
- 未使用與已使用inode、block數(shù)量;
- block和inode的大小;
- filesystem的掛載時間、寫入時間、檢驗磁盤時間等;
- 一個vaild bit數(shù)值(掛載為0,未掛載為1)
查詢superblock命令dumpe2fs
鏈接
在linux下面鏈接文件有兩種,一種類似Windows快捷方式的軟鏈接,一種是通過文件系統(tǒng)的inode鏈接來產(chǎn)生新文件名,而不產(chǎn)生新文件,這種稱為硬鏈接。
二文件名只與目錄相關,而文件內(nèi)容則與inode相關。使用hard link設置鏈接文件時,磁盤的空間與inode的數(shù)目都不會改變,hard link只是某個目錄下block多寫入一個關聯(lián)數(shù)據(jù),既不會增加inode也不消耗block數(shù)量。
hard link限制
- 不能跨file system;
- 不能link 目錄;
hard link相比symbolic link安全,因為其中一個目錄的文件被刪掉,另外目錄存放的數(shù)據(jù)還是安全的。
ln命令用法
ln [-sf] 源文件 目標文件
-s:symbolic link,不加任何參數(shù)的話則默認hardlink
-f:如果目標文件存在,則將目標文件移除后再創(chuàng)建
磁盤管理
觀察分區(qū)
lsblk:list block device列出系統(tǒng)上的所有磁盤列表;
parted:列出磁盤的分區(qū)表類型與分區(qū)信息;
gdisk和fdisk:MBR分區(qū)使用fdisk,GPT使用gdisk,不要對正在使用的分區(qū)進行分區(qū)操作,需要先將分區(qū)卸載掉,然后在進行分區(qū)操作。
mkfs make filesystem格式化分區(qū)。