日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

soalris文件系統(tǒng)logging詳解

看到一篇好文章,發(fā)給大空共享!

Solaris中的logging功能的應(yīng)用
在Solaris7及其以后版本的系統(tǒng)中有一種稱為logging的功能 。它不但易于安裝和使用,并且對于數(shù)據(jù)安全非常有用 。
UFS是存在于Sun工作站的幾乎所有硬盤分區(qū)(swap等個別分區(qū)除外)上的一種標準的文件系統(tǒng)類型 。而logging功能是UFS文件系統(tǒng)的一個掛接選項,它可以被設(shè)置在包括/在內(nèi)的各個硬盤分區(qū)上 。
Solaris的UFS logging通過使用系統(tǒng)中的空白數(shù)據(jù)塊來工作 。所有對文件系統(tǒng)數(shù)據(jù)(metadata,或稱為元數(shù)據(jù))的修改都被寫在這些空白的區(qū)域 。這些Metadata包括目錄和inode信息,不包括文件中的數(shù)據(jù)本身 。比如創(chuàng)建文件時,目錄結(jié)構(gòu)被修改并且系統(tǒng)為這個新文件分配一個新的inode 。以上這些行為被寫入做logging的空間中 。一旦數(shù)據(jù)的修改行為被寫入做logging的區(qū)域,系統(tǒng)就可以接著對文件系統(tǒng)做其它的操作了 。在后臺,存在于logging中的信息將被同步到文件系統(tǒng)中,并自動更新相應(yīng)的目錄和I節(jié)點,最終完成文件系統(tǒng)的操作 。數(shù)據(jù)也陸續(xù)被寫入硬盤 。因此這種做logging并在后臺寫入數(shù)據(jù),比通過隨機的I/O訪問直接對分布在硬盤上的各種管理信息進行修改的方式速度要快得多 。用來做logging的空間的大小取決于文件系統(tǒng)的大小 。每1GB磁盤分區(qū)空間的logging空間為1MB,最多不超過64MB 。這部分logging空間被循環(huán)使用:當log空間即將裝滿時,暫停新的metadata數(shù)據(jù)寫入,直至log空間被清空 。當log中記錄的關(guān)于文件系統(tǒng)的修改都被應(yīng)用于文件系統(tǒng)后,那部分空間又重新可以作為log空間來存放新的metadata數(shù)據(jù)了 。
通常對于UFS來說,如果操作系統(tǒng)在任何文件系統(tǒng)操作中崩潰,整個文件系統(tǒng)都需要用fsck命令做一致性檢查 。這個命令的執(zhí)行可能需要幾分鐘的時間,因為它需要檢測所有的metadata和文件的數(shù)據(jù)以確認文件系統(tǒng)的完整性:包括當前已經(jīng)用的空間、未用的、inode的數(shù)量等,修復(fù)其中不一致的地方 。出現(xiàn)比較大的問題時還需要人工干預(yù) 。在做檢查的過程中有可能會丟失文件,甚至目錄 。這決定于crash發(fā)生時,該操作進行到了哪種程度 。如果采用logging功能,情況就完全不同 。因為metadata的修改首先被寫在log空間而不是文件系統(tǒng)中 。如果系統(tǒng)崩潰,對文件系統(tǒng)一致性的檢測可以僅僅限于log中記錄的那部分,這樣會更簡單、更有效 。系統(tǒng)檢查logging的數(shù)據(jù),以決定在上一次的文件系統(tǒng)中,哪種修改已經(jīng)做過了,哪種修改即將做,哪種修改正在做,做過的和即將做但還沒有做的操作被系統(tǒng)從log中刪掉,而那些做了一部分的會被接著做完或完全取消掉 。如果在log中記錄了足夠的數(shù)據(jù)來完成這一操作,該操作會被繼續(xù)完成 。否則,這種改變會被取消 。熟悉數(shù)據(jù)庫操作的用戶會發(fā)現(xiàn)這和數(shù)據(jù)庫軟件中的事務(wù)處理過程非常相似 。最終的結(jié)果是:文件系統(tǒng)能夠最大限度地保持一致,不需要進行徹底的文件系統(tǒng)檢測,整個文件系統(tǒng)檢測過程只需要花幾秒鐘時間 。從Solaris 7開始, mount命令和/etc/vfstab文件中也有了一個新的logging選項 。
為了驗證logging選項對系統(tǒng)性能的貢獻,我們做一個腳本文件,它要創(chuàng)建1000個目錄 。這種操作將對系統(tǒng)中的metadata的處理帶來非常大的壓力 。實驗在一臺運行Solaris7的Ultra 5機器上進行:

# more logging-test
#!/bin/ksh
# Test ufs logging performance

# Get to the right place and make a test Directory
cd /big
mkdir test

# Create 1000 directorIEs
integer i=0
while ((i < 1000))
do
mkdir test/test${i}
i=i 1
done

# chmod a x logging-test 給文件加上執(zhí)行權(quán)限

第一次做實驗時不采用logging選項(Solaris 7和8的文件系統(tǒng)缺省狀態(tài)下都不采用這種選項) 。

推薦閱讀