為什么要在你的Linux系統(tǒng)上啟用barrier?
大多數(shù)當(dāng)前流行的Linux文件系統(tǒng),包括EXT3和EXT4,都將文件系統(tǒng)barrier作為一個(gè)增強(qiáng)的安全特性。它保護(hù)數(shù)據(jù)不被寫入日記。但是,在許多情況下,我們并不清楚這些barrier是否有用。本文就為什么要在你的Linux系統(tǒng)上啟用barrier做出了解釋。
Linux日志和barrier功能
要理解barrier,你首先需要理解文件系統(tǒng)日志功能。常用的文件系統(tǒng)使用日志功能來保證文件系統(tǒng)的完整性。該功能背后的思路很簡單:在寫入新的數(shù)據(jù)塊到磁盤之前,會先將元數(shù)據(jù)寫入日志。預(yù)先將元數(shù)據(jù)寫入日志可以保證在寫入真實(shí)數(shù)據(jù)前后一旦發(fā)生錯(cuò)誤,日志功能能很容易地回滾到更改之前的狀態(tài)。這個(gè)方法確保了不會發(fā)生文件系統(tǒng)崩潰的情況。
單獨(dú)使用日志功能不能保證沒有任何差錯(cuò)?,F(xiàn)在的磁盤大都有大容量的緩存,數(shù)據(jù)不會立即寫入到磁盤中,而是先寫入到磁盤緩存中。到這一步,磁盤控制器就能更加高效地將其復(fù)制到磁盤中。這對性能來說是有好處的,但是對日志功能來說則相反。為了保證日志***可靠,它必須絕對保證元數(shù)據(jù)在真實(shí)數(shù)據(jù)寫入之前被預(yù)先寫入。這就是我們要介紹文件系統(tǒng)barrier的原因。
我們很容易理解使用barrier的根本原因:barrier本身禁止在barrier之后寫入數(shù)據(jù),真實(shí)的數(shù)據(jù)塊將在barrier被寫入之前完全寫入磁盤。使用barrier可以確保文件系統(tǒng)的完整性,因?yàn)閎arrier功能在EXT4文件系統(tǒng)中是默認(rèn)啟用的(除非你的操作系統(tǒng)更改了這個(gè)默認(rèn)設(shè)置)。
檢查Linux文件系統(tǒng)的barrier:啟用還是禁用?
你可以通過/proc/mounts文件來監(jiān)控文件系統(tǒng)barrier的當(dāng)前狀態(tài);對于每一個(gè)掛載的文件系統(tǒng),打開這個(gè)文件都能看到所有的掛載選項(xiàng)。如果你看到barrier=1,那么你的文件系統(tǒng)就正在使用barrier功能。下列信息是一個(gè)文件系統(tǒng)的例子:
/dev/sda1 /boot ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0/dev/mapper/luks-3e67401f-44c6-4a27-a1bf-cdf0dcf45f65 /home ext4 rw,seclabel,noatime,barrier=1,data=ordered 0 0
文件系統(tǒng)barrier何時(shí)不工作?
Barrier的問題在于,它不能應(yīng)用于所有條件下。如果設(shè)備映射器作為存儲層的優(yōu)先級使用,那么文件系統(tǒng)barrier就無法工作了,因?yàn)樵O(shè)備映射器不支持barrier。所以,哪怕你的文件系統(tǒng)默認(rèn)支持barrier,還是無法在邏輯卷、軟RAID或者多路徑磁盤上運(yùn)行該功能(RED HAT和所有相關(guān)的Linux版本都將barrier作為默認(rèn)選項(xiàng))。
解決這個(gè)問題的方案之一就是避免使用設(shè)備映射器。所以在安裝服務(wù)器時(shí),你需要充分考慮配置選項(xiàng)。首先,你不該使用LVM安裝服務(wù)器,而應(yīng)該選擇用傳統(tǒng)的分區(qū)方式。接著,你不能使用和設(shè)備映射器配合工作的多路徑磁盤,它會在SAN上創(chuàng)建多個(gè)冗余路徑。某些情況下,SAN供應(yīng)商會提供一個(gè)專有驅(qū)動(dòng)器作為選擇,但不是所有供應(yīng)商都提供該選項(xiàng)。***的辦法是采用智能硬件。
使用barrier保護(hù)的風(fēng)險(xiǎn)之一是,在系統(tǒng)中斷時(shí),數(shù)據(jù)會留在緩存中,而永不會寫入文件系統(tǒng)。一個(gè)簡單的電池備份控制器可以避免這個(gè)問題。當(dāng)服務(wù)器使用的這個(gè)控制器出故障了,磁盤控制器仍然能保證變更操作,這充分排除了barrier使用的需要。
使用barrier的另一個(gè)不利之處在于,你需要付出降低性能的代價(jià)。如果你需要***的性能,那么你可以用掛載選項(xiàng)-o barrier=0來關(guān)閉barrier功能,比如:mount /dev/sda2 -o barrier=0 /data。
文件系統(tǒng)barrier功能非常有用,但是不能和設(shè)備映射器配合工作。如果你需要使用這類設(shè)備,但是又想要保證文件系統(tǒng)完整性,那么你可以用電池備份磁盤控制器。如果你的硬件不支持這個(gè),那么你只能避免使用設(shè)備映射器,這樣才能用barrier功能來保障文件系統(tǒng)完整性。還有,如果你希望得到更好的系統(tǒng)性能,***也不要開啟barrier功能,它會降低系統(tǒng)運(yùn)行速度。
原文連接:http://www.searchsv.com.cn/showcontent_46628.htm
【編輯推薦】