電腦忽然斷電,從新開機後發現有的程序沒法正常啓動,緣由是配置文件損壞了。感受奇怪,爲何在硬盤裏的文件會內容丟失?html
1.可能:寫數據的過程被中斷,只完成了一部分。可能會出現亂碼(由於只寫了幾個字節,不完整)、文件錯誤等。node
2.更大的可能:操做系統寫文件操做有個緩存,並不會直接寫入硬盤。web
內存可能有個緩存,磁盤也可能有個緩存,在數據會先保存在緩存中一段時間,累積到必定大小或者時間限度再一塊兒寫入磁盤中。centos
若是在這段時間內斷電,那麼緩存中的文件就丟失了,極端狀況是寫入了一部分數據,致使文件損壞。(能夠經過「sync」命令強制同步,寫入磁盤。)緩存
應對這種狀況,文件系統通常有幾種處理方式:安全
a)無論錯誤,沒有任何形式的日誌記錄。若是懷疑有錯,經過磁盤檢測功能恢復。app
這樣一旦斷電,頗有可能出現文件丟失或者數據不全(文件錯誤)的狀況;可是這種狀況下的寫性能是最好的。性能
b)只提供元數據日誌,而沒有完整數據日誌。在設計上保證文件系統結構上可恢復,但不保證用戶數據可恢復。centos7
保證了不會出現文件損壞的問題,可是不保證數據內容的正確和完整。spa
c)提供完整數據和元數據日誌記錄。能在用戶數據層面上保證數據的絕對正確。
也就是數據要麼是寫以前的,要麼是寫以後的數據,而不會出現混亂的狀況。
新建一個文件的步驟是:
1.inode bitmap 找到沒有使用的inode 號碼,寫入文件屬性;
2.根據block bitmap 找到沒有使用中的block 號碼,並將實際的資料寫入block 中,且更新inode 的block 指向數據塊;
3.將剛剛寫入的inode 與block 資料同步更新inode bitmap 與block bitmap,並更新superblock 的內容。
日誌型檔案系統會在日誌中記錄進行到了哪一步,萬一資料的紀錄過程中發生了問題,只要去檢查日誌記錄區塊, 就能夠知道哪一個檔案發生了問題。同時能夠保證整個操做要麼完成,要麼退回到開始操做以前。
過程示例如:http://www.cnblogs.com/youngerchina/archive/2012/01/15/5624631.html。
文件系統
引用至https://blog.csdn.net/u014743697/article/details/54089297
經過將硬盤劃分爲分區,數據會被分隔以及重組。當事故發生的時候,只有存儲在被損壞分區上的數據會被破壞,很大可能上其它分區的數據能得以保留。這個緣由能夠追溯到 Linux 操做系統尚未日誌文件系統、任何電力故障都有可能致使災難發生的時候。
使用分區也考慮到了安全和健壯性緣由,所以操做系統部分損壞並不意味着整個計算機就有風險或者會受到破壞。這也是當前採用分區的一個最重要因素。舉個例子,用戶建立了一些會填滿磁盤的腳本、程序或者 web 應用,若是該磁盤只有一個大的分區,若是磁盤滿了那麼整個系統就不能工做。若是用戶把數據保存在不一樣的分區,那麼就只有那個分區會受到影響,而系統分區或者其它數據分區仍能正常運行。
可是,擁有一個日誌文件系統只能在掉電或者和存儲設備意外斷開鏈接時提供數據安全性,並不能在文件系統出現壞塊或者發生邏輯錯誤時保護數據。對於這種狀況,用戶能夠採用廉價磁盤冗餘陣列的方案。
爲何要切換文件系統?
ext4 文件系統由 ext3 文件系統改進而來,然後者又是從 ext2 文件系統改進而來。雖然 ext4 文件系統已經很是穩定,是過去幾年中絕大部分發行版的默認選擇,但它是基於陳舊的代碼開發而來。另外, Linux 操做系統用戶也須要不少 ext4 文件系統自己不提供的新功能。雖然經過某些軟件能知足這種需求,但性能會受到影響,在文件系統層次作到這些能得到更好的性能。
文件系統主要用於控制全部程序在不使用數據時如何存儲數據、如何訪問數據以及有什麼其它信息(元數據)和數據自己相關等。
從centos7開始,默認的文件系統從ext4變成了xfs。xfs支持的文件數量和文件大小高於ext4。
centos查看文件系統類型:
df -T 命令能夠查看目錄的文件系統類型。
參考:
http://blog.csdn.net/a421701136/article/details/51802070
https://www.zhihu.com/question/55711728
掛載點,分區和系統目錄參考:
http://www.cnblogs.com/apprentice89/archive/2012/12/17/2821332.html
http://blog.csdn.net/imfinger/article/details/6071259/