Linux文件系統(tǒng)的歸納總結(jié)
類型
索引式文件系統(tǒng)(EXT2 3 4, XFS),即inode + block的模式, inode里面存儲了block的地址;
閃存一般是FAT格式,無inode,類似鏈表結(jié)構(gòu),存數(shù)據(jù)之余會指向下個數(shù)據(jù)塊,容易出現(xiàn)內(nèi)存碎片,需要碎片整理;
-
文件系統(tǒng)其他格式細(xì)分(cat /proc/filesystems可查看目前已加載的系統(tǒng)類型)
- 傳統(tǒng)文件系統(tǒng):ext2 minix fat
- 日志式文件系統(tǒng):ext3 ext4 xfs windowsNTFS
- 網(wǎng)格文件系統(tǒng):nfs smbfs
索引式文件系統(tǒng)結(jié)構(gòu)
block:xfs的block基礎(chǔ)大小為4kb,支撐最大單一文件2tb;單一block只放一個文件的數(shù)據(jù)
inode table:記錄文件屬性(文件權(quán)限歸屬等)& 文件數(shù)據(jù)所存放的block地址,inode大小固定為128bytes,xfs可改為256;
superblock:記錄整個文件系統(tǒng)元數(shù)據(jù),有多少inode(即最多有多少文件)、多少block & 他們的使用情況
block bitmap & inode bitmap:幫助尋找那些block和inode是未被使用的
數(shù)據(jù)存放區(qū)域:block & inode table;中介資料(metadata):superblock & bitmap
日志文件系統(tǒng)新增文件流程
第一步確定用戶對于新增文件是否有w & x權(quán)限,有才能完成新增操作;
確認(rèn)有權(quán)限后,日志區(qū)域記錄“開始新增的操作記錄”;
根據(jù)bitmap找合適的inode和block,開始正式寫入數(shù)據(jù)(inode寫入文件權(quán)限等元數(shù)據(jù),block塞實際數(shù)據(jù)和超出12個block地址的額外地址);
完成寫入后,更新bitmap表示已占用,再跟新superblock,最后在日志區(qū)域?qū)懭搿耙淹瓿伞薄?/p>
軟鏈接、硬鏈接的inode關(guān)系
硬:共用一個inode,inode的連接數(shù)+1,刪除原文件不影響新文件;
軟:會新增inode,刪除原文件后新文件也不可用
目錄 & 文件
目錄會分配給目錄一個inode、至少一個block,inode僅記錄權(quán)限和屬性等metadata,block則記錄目錄下的具體文件的inode和文件名稱(也可能是子目錄);
文件則會被直接分配一個inode和若干block,block根據(jù)文件大小決定,若文件100KB的話需要25個blocks存儲數(shù)據(jù),但因為inode僅夠記錄12個block地址,所以還需要一個額外的block記錄區(qū)塊號碼,共計26個block
文件系統(tǒng)的運作
所有數(shù)據(jù)需從磁盤(disk)加載到內(nèi)存(memory)后才可被cpu處理,編輯過程中處理完的數(shù)據(jù)有需要寫回disk,基于disk讀寫很慢,所以會耗時很久;
-
linux使用異步處理提升效率
- 系統(tǒng)加載一個文件到memory后,若文件未被變更過,則文件設(shè)為clean;若文件數(shù)據(jù)經(jīng)cpu處理變化了,則標(biāo)記為dirty文件;
- 上述動作都在memory中操作,速度較快。系統(tǒng)會不定時把memory中的dirty文件寫回disk,保持memory和disk數(shù)據(jù)一致性(也可用sync強制寫入disk);
- 系統(tǒng)會把常用文件數(shù)據(jù)放在主存儲器的緩沖區(qū),加速文件系統(tǒng)讀寫,因此物理內(nèi)存可能被會被耗光,可手動sync釋放部分內(nèi)存,正常關(guān)機也會喚起sync
掛載點:lsblk或者df -hT可查看
XFS介紹
- CentOS 7開始使用該文件系統(tǒng),原ext對于文件格式化,采用了預(yù)先規(guī)劃 inode block metadata的量,不支持動態(tài)配置這會使得格式化時很耗時;
- xfs幾乎具備了ext全部功能,但更適合高容量磁盤;
- xfs具體文件系統(tǒng)結(jié)構(gòu)
- 資料區(qū)data section:包括了ext的inode,block & superblock;
- 日志區(qū)log section:記錄文件系統(tǒng)的變化;
- 實時運作區(qū)realtime section:文件被創(chuàng)建時,xfs會找若干extent區(qū)塊,將文件放入。等分配完畢后,再寫入data section的inode和block里
開機自啟動
-
掛載:/etc/fstab
根目錄時必須掛載的,且要先于其他掛載點完成;
該文件cat后獲得第一列是磁盤裝置文件名,第二列是掛載點(比如/apprun),第三列是文件系統(tǒng)類型;
-
服務(wù)
-
vim /etc/rc.d/rc.local,該目錄是可寫入啟動或使用一堆腳本內(nèi)容; - chkconfig: 寫腳本xxx.sh,放置于/etc/init.d/,然后執(zhí)行chkconfig --add /etc/init.d/xxx.sh,最后重啟server --> init 6
- systemctl: 使用
systemctl enable xxx.service即可,需新建文件/usr/lib/systemd/system/xxx.service
-