veritas官網(wǎng)1程序員參考指南_第1頁
veritas官網(wǎng)1程序員參考指南_第2頁
veritas官網(wǎng)1程序員參考指南_第3頁
veritas官網(wǎng)1程序員參考指南_第4頁
veritas官網(wǎng)1程序員參考指南_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Veritas File System 程序員參考指南本手冊所述軟件是根據(jù)版本 6.0.1文檔版本 6.0.1 Rev 0協(xié)議而提供,僅可按該協(xié)議的條款使用。法律Copyright © 2012 Symantec Corporation. © 2012 Symantec Corporation所有。Allrights. 保留所利。Symantec、Symantec 徽標(biāo)、Veritas、Veritas Storage Foundation、CommandCentral、NetBackup、Enterprise Vault 和LiveUpdate 是Symantec Corp

2、oration 或其附屬公司在美國和其他/地區(qū)的商標(biāo)或商標(biāo)。“Symantec”和“賽門鐵克”是Symantec Corporation在中國的商標(biāo)。其他名稱可能為其各自所有者的商標(biāo),特此。本文檔中介紹的根據(jù)限制其使用、分發(fā)和反編譯/逆向工程的協(xié)議分發(fā)。Symantec Corporation 及其特許人(如果存在)事先,不得以任何方式任何形式本文檔的。本文檔按“現(xiàn)狀”提供,對于所有明示或暗示的條款、陳述和保證,包括任何適銷性、針對特定用途的適用性或無知識產(chǎn)權(quán)的暗示保證,均不提供任何擔(dān)保,除非此類免責(zé)的范圍在法律上視為無效。Symantec Corporation 不對任何與提供、執(zhí)行或使用本

3、文檔相關(guān)的伴隨或后果性損害負責(zé)。本文檔所含信息更改,恕不另行通知。根據(jù) FAR 12.212 中的定義,的軟件和文檔被視為“商業(yè)計算機軟件”,受 FAR 第52.227-19 節(jié)“Commercial Computer Software - Restricted Rights”(商業(yè)計算機軟件受限權(quán)利)和 DFARS 第 227.7202 節(jié)“Rights in Commercial Computer Software or Commercial Computer Software Documentation”(商業(yè)計算機軟件或商業(yè)計算機軟件文檔權(quán)利)中的適用規(guī)定,以及所有后續(xù)中規(guī)定的權(quán)利的制

4、約。美國僅可根據(jù)本協(xié)議的條款對的軟件和文檔進行使用、修改、發(fā)布Symantec Corporation 350 Ellis StreetMountain View, CA 94043http:、執(zhí)行、顯示或披露。技術(shù)支持Symantec 技術(shù)支持具有全球性支持中心。技術(shù)支持的主要任務(wù)是響應(yīng)有關(guān)特性和功能的特定。技術(shù)支持小組還負責(zé)編寫我們的聯(lián)機知識庫文章。技術(shù)支持小組與 Symantec 內(nèi)的其他相互協(xié)作,及時解答您的問題。例如,技術(shù)支持小組與工程和 Symantec 安全響應(yīng)中心協(xié)作,提供警報服務(wù)和服務(wù)。Symantec 提供的維護服務(wù)包括:定義更新 一系列支持服務(wù),使您能為任何規(guī)模的選擇適用

5、的支持服務(wù) 通過和 Web 支持快速響應(yīng)并提供最新信息 升級保證可保證軟件順利升級 全天候提供全球支持高級功能,包括“客戶管理服務(wù)”有關(guān) Symantec 維護計劃的http:信息,請我們的:/support/index.jsp與技術(shù)支持具有有效維護協(xié)議的客戶可以通過以下技術(shù)支持信息:http:在/support/index.jsp技術(shù)支持之前,請確保您的計算機符合文檔中所列的系統(tǒng)要求。而且您應(yīng)當(dāng)坐在發(fā)生問題的計算機旁邊,以便需要時重現(xiàn)問題。技術(shù)支持時,請準(zhǔn)備好以下信息: 版本信息 硬件信息 可用內(nèi)存、磁盤空間和 NIC 網(wǎng)卡信息 操作系統(tǒng) 版本和補丁程序級別 網(wǎng)絡(luò)結(jié)構(gòu) 路由器、網(wǎng)關(guān)和 IP

6、地址信息 問題說明: 錯誤消息和日志文件Symantec 之前執(zhí)行過的故障排除操作 最近所做的軟件配置更改和網(wǎng)絡(luò)更改與如果您的 Symantec需要或/證密鑰,請我們的技術(shù)支持網(wǎng)頁:客戶服務(wù)可從以下http:獲得客戶服務(wù)信息:/support/index.jsp客戶服務(wù)可幫助您解決一些非技術(shù)性問題,例如以下幾類問題: 有關(guān)或序列號的問題更新(例如,更改地址或名稱)信息(功能、可用的語言、當(dāng)?shù)亟?jīng)銷商) 更新和升級的最新信息 一般 有關(guān) 有關(guān)升級保障和維護合同的信息 Symantec 采購計劃的相關(guān)信息 有關(guān) Symantec 技術(shù)支持選項的建議 非技術(shù)性的售前問題 與光盤或手冊相關(guān)的問題維護協(xié)議

7、如果想就現(xiàn)有維護協(xié)議事宜聯(lián)絡(luò) Symantec,請通過以下方式聯(lián)絡(luò)您所在地區(qū)的維護協(xié)議管理部門:/地區(qū)電子郵件800 810 8826-陸0080 1611 391-中國800 963 421-中國特別行政區(qū)文檔您對文檔的反饋對我們很重要。請改進建議和有關(guān)錯誤或疏漏的報告。請在您的報告中包括所報告的文本內(nèi)容的文檔標(biāo)題和文檔版本(位于第二頁上)以及章節(jié)標(biāo)題。 請將反饋doc_fee到:如需最新 HOWTO 文章、文檔更新的信息,或詢問有關(guān)文檔的問題,請Symantec Connect 上的 Storage and Clustering Documentation(和集群文檔)。/connect/

8、storage-management/ forums/storage-and-clustering-documentation關(guān)于 Symantec ConnectSymantec Connect 是為 Symantec 企業(yè)客戶提供的點對點技術(shù)社區(qū)。 參與者可以與其他用戶聯(lián)絡(luò)并共享信息,包括發(fā)布帖子、文章、博客和提出建議,并可與Symantec行評分,成員可憑其貢獻獲得團隊和技術(shù)支持進行交流。 內(nèi)容會由社區(qū)進。http:/connect/storage-management目錄技術(shù)支持3第 1 章Veritas File System 軟件開發(fā)工具包11關(guān)于軟件開發(fā)工具包11File Sys

9、tem 軟件開發(fā)工具包的功能11API 庫接口11文件更改日志12多卷支持12Veritas File System I/O13軟件開發(fā)工具包RPM13所需的庫和頭文件13編譯環(huán)境14使用不同的編譯器重新編譯14第 2 章文件更改日志17關(guān)于文件更改日志文件17的更改17使用文件更改日志文件18文件更改日志的激活19文件更改日志文件布局20類型22特殊23典型序列23文件更改日志可調(diào)參數(shù)24可調(diào)參數(shù)如何處理文件更改日志增長的大小25文件更改日志的應(yīng)用程序編程接口26易于使用26向后兼容26API 函數(shù)27文件更改日志34文件更改日志39Veritas File System 和文件更改日志的升

10、級和降級43反向路徑名稱查找44Inode45vxfs_inotopath_gen458目錄第 3 章多卷支持47關(guān)于多卷支持47多卷支持的用途48卷應(yīng)用程序編程接口48管理卷集48文件系統(tǒng)的卷集49修改文件系統(tǒng)內(nèi)的卷49封裝和取消封裝卷50分配策略應(yīng)用程序編程接口50指示文件分配51創(chuàng)建并指派策略52已定義的策略52強制執(zhí)行策略53數(shù)據(jù)結(jié)構(gòu)53使用策略和應(yīng)用程序編程接口54定義并指派分配策略54使用卷應(yīng)用程序編程接口55第 4 章指定數(shù)據(jù)流57關(guān)于指定數(shù)據(jù)流57指定數(shù)據(jù)流的用途58指定數(shù)據(jù)流應(yīng)用程序編程接口58列出指定數(shù)據(jù)流60指定數(shù)據(jù)流名空間60其他系統(tǒng)調(diào)用中的行為更改60指定數(shù)據(jù)流61應(yīng)

11、用程序編程接口62命令參考資料62第 5 章Veritas File System I/O63關(guān)于 Veritas File System I/O63凍結(jié)和解凍63緩存顧問65直接 I/O66并行 I/O66無緩沖的 I/O67其他顧問67擴展區(qū)68擴展區(qū)屬性68保留:為文件預(yù)分配空間69固定擴展區(qū)大小70目錄9擴展區(qū)屬性的應(yīng)用程序編程接口70分配標(biāo)志71用于固定擴展區(qū)大小的分配標(biāo)志73如何使用擴展區(qū)屬性 API73設(shè)置固定擴展區(qū)大小73第 6 章精簡回收75關(guān)于精簡75關(guān)于精簡回收75精簡回收應(yīng)用程序編程接口75vxfs_ts_reclaim 返回值77索引7910目錄1Veritas Fi

12、le System 軟件開發(fā)工具包 關(guān)于軟件開發(fā)工具包 File System 軟件開發(fā) 軟件開發(fā)工具包RPM 所需的庫和頭文件工具包的功能 編譯環(huán)境關(guān)于軟件開發(fā)工具包Veritas File System (VxFS) 軟件開發(fā)工具包 (SDK) 為開發(fā)提供了使用應(yīng)用程序編程接口 (API) 修改和調(diào)整 Veritas File System 的各種功能和組件的必要信息。這些 API 隨 VxFS 軟件開發(fā)工具包一起提供。VxFS 4.0 版本及其后續(xù)版本中提供了本文檔所涉及的大多數(shù) API。File System 軟件開發(fā)本節(jié)提供可使用 SDK工具包的功能的 VxFS 功能的概述。API

13、庫接口此 SDK 中提供的重要的 API 庫接口是 vxfsutil 庫和 VxFS IOCTL 指令。 該庫包含API 調(diào)用的集合,應(yīng)用程序可以使用這些調(diào)用來利用 VxFS 文件系統(tǒng)的功能。 所有API 接口均提供有手冊頁。12Veritas File System 軟件開發(fā)工具包File System 軟件開發(fā)工具包的功能表 1-1 列出了 VxFS API 庫中提供的 API 調(diào)用和功能。庫 API 和功能表 1-1VxFS API 庫 vxfsutil,可于 Veritas File System安裝。 此庫通過使用stubs 庫和動態(tài)庫組合來實現(xiàn)。 使用 stubs 庫 libvxf

14、sutil.a 編譯應(yīng)用程序,使應(yīng)用程序可移植到任何 VxFS 目標(biāo)環(huán)境。 隨后應(yīng)用程序就可以在 VxFS 目標(biāo)上運行, stubs 庫將找到隨 VxFS 目標(biāo)一起提供的動態(tài)庫。stubs 庫使用vxfsutil.so 動態(tài)庫位置的默認路徑。 大多數(shù)情況下,應(yīng)使用默認路徑。 但可以通過將環(huán)境變量 LIBVXFSUTIL_DLL_PATH 設(shè)置為 vxfsutil.so 庫的路徑來改寫默認路徑。 此結(jié)構(gòu)使得部署應(yīng)用程序時出現(xiàn)的、與其他版本 VxFS 兼容的問題減至最低限度。文件更改日志VxFS 文件更改日志 (FCL) 跟蹤對文件系統(tǒng)中文件和目錄的更改。 應(yīng)用程序(如, 備份、Web crawl

15、er、搜索和索引引擎以及副本軟件)可以使用文件更改日志, 它們通常掃描整個文件系統(tǒng),搜索自上一次掃描以來的修改。請參見第 17 頁的“關(guān)于文件更改日志文件”。多卷支持多卷支持 (MVS) 功能允許 VxFS 文件系統(tǒng)使用多個 Veritas Volume Manager(VxVM) 卷作為基礎(chǔ)。 管理員和應(yīng)用程序可以控制文件的位置,從而最大化有效性能,同時將開銷降至最低。 此功能只能在 Veritas Volume Manager 中使用。 此外,某些功能需要提供附加的請參見第 47 頁的“關(guān)于多卷支持”。證密鑰。API功能inotopathInode-to-pathnattr指定數(shù)據(jù)流FCL

16、文件更改日志MVS多卷支持Caching AdvisoriesIOCTL 指令ExtentsIOCTL 指令Freeze/ThawIOCTL 指令Veritas File System 軟件開發(fā)軟件開發(fā)工具包13工具包RPMVeritas File System I/OVxFS 遵循系統(tǒng) V 接口定義 (SVID) 要求并支持用戶通過網(wǎng)絡(luò)文件系統(tǒng) (NFS) 進行訪問。 其他文件系統(tǒng)中不能提供所要求的性能功能的應(yīng)用程序,可利用 VxFS 增強版。工具包RPMVRTSfssdk RPM由 SDK 組成。VRTSfssdk RPM包含庫、頭文件和示例程序的源代碼及二進制文件格式,說明了 VxFS

17、API 接口在開發(fā)和編譯應(yīng)用程序時的用法。VRTSfssdk RPM也包含本指南和 API 手冊頁。VRTSfssdk RPM的目錄結(jié)構(gòu)如下:軟件開發(fā)src的主題提供有示例程序和基于GNU包含若干子目錄,并針對每個感的 Makefile 文件。bin包含指向源目錄中所有示例程序的符號件。,以便于輕松二進制文include包含 API 庫和 ioctl 接口的頭文件。lib包含預(yù)編譯的 vxfsutil API 接口 stubs 庫。libsrc包含 vxfsutil API 接口 stubs 庫的源代碼。可以單獨從VxFS RPM獲取VRTSfssdk RPM。要運行應(yīng)用程序或示例程序,具有授

18、權(quán)的 VxFS 目標(biāo)必不可少。此外,應(yīng)在目標(biāo)系統(tǒng)上安裝所需功能的 VxFS證。所需的庫和頭文件VRTSfssdk RPM安裝在 /opt 目錄中。關(guān)聯(lián)的庫和頭文件安裝在以下位置: /opt/VRTSfssdk/6.0/lib/libvxfsutil.a /opt/VRTSfssdk/6.0/include/vxfsutil.h /opt/VRTSfssdk/6.0/include/sys/fcl.h /opt/VRTSfssdk/6.0/include/sys/fs/vx_ioctl.h還提供有從以下標(biāo)準(zhǔn) Veritas 路徑指向這些文件的符號:/opt/VRTS/lib 和/opt/VRTS

19、/include。在最新版本的 VxFS 和VxFS SDK 中,標(biāo)準(zhǔn)路徑是默認路徑。14Veritas File System 軟件開發(fā)編譯環(huán)境工具包編譯環(huán)境SDK RPM將示例程序與編譯后的二進制文件一同安裝。運行示例程序的要求如下: 裝有 VRTSvxfs 適用版本的目標(biāo)系統(tǒng) Root 權(quán)限,這對某些程序而言是必不可少的 已裝入的VxFS 6.0 或更高版本的文件系統(tǒng)。某些程序可能要求在Veritas Volume Set 上裝入文件系統(tǒng)。注意:某些程序可能要求特殊的卷配置(卷集)。此外,某些程序要求在卷集上裝入文件系統(tǒng)。使用不同的編譯器重新編譯重新編譯 src 或 libsrc 目錄所

20、需的工具如下: gmake 或 make 命令 gmake 命令 gmake 命令 gmake 命令 gcc 編譯器或 cc 命令 gcc 編譯器 gcc 編譯器 gcc 編譯器重新編譯 src 和 libsrc 目錄123編輯 make.env 文件并用指向您編譯器的路徑對其進行修改。轉(zhuǎn)至 src 或 libsrc 目錄,然后運行 gmake 命令:在寫入應(yīng)用程序后,請對其進行如下編譯:# gcc -I /opt/VRTSfssdk/6.0/include-L /opt/VRTSfssdk/6.0/lib -ldl -o MyApp MyApp.c libvxfsutil.aVeritas

21、File System 軟件開發(fā)工具包編譯環(huán)境15要編譯 src 或 libsrc 目錄,請按以下操作編輯 /opt/VRTSfssdk/6.0/make.env 文件:1在本地系統(tǒng)上選擇編譯器路徑。將 CC 變量設(shè)置為系統(tǒng)上的此路徑:CC=/opt/bin/cc#CC=/usr/local/bin/gcc使用適合您的編譯器的路徑。轉(zhuǎn)至 src 或 libsrc 目錄,然后鍵入:2# gmake或# make16Veritas File System 軟件開發(fā)編譯環(huán)境工具包2文件更改日志 關(guān)于文件更改日志文件 類型 文件更改日志可調(diào)參數(shù) 文件更改日志的應(yīng)用程序編程接口 反向路徑名稱查找關(guān)于文件

22、更改日志文件VxFS 文件更改日志 (FCL) 跟蹤對文件系統(tǒng)中文件和目錄的更改。以使用 FCL 為代表的應(yīng)用程序通常需要執(zhí)行以下任務(wù): 掃描整個文件系統(tǒng)或子集 發(fā)現(xiàn)自上一次掃描以來的更改這些應(yīng)用程序可能包括: 備份實用程序、webcrawler、搜索引擎和副本程序。注意:FCL 跟蹤數(shù)據(jù)更改的時間并更改類型,但不跟蹤實際的數(shù)據(jù)更改。 由應(yīng)用程序負責(zé)檢查文件以確定更改過的數(shù)據(jù)。的更改文件更改日志 創(chuàng)建下列文件系統(tǒng)更改:18文件更改日志關(guān)于文件更改日志文件 取消 重命名 數(shù)據(jù)附加 數(shù)據(jù)重寫 數(shù)據(jù)裁截 擴展屬性的修改 打孔 其他文件屬性更新注意:僅磁盤布局版本 6 及更高版本支持 FCL。在文件系

23、統(tǒng)命名空間中,F(xiàn)CL 在稀疏文件中更改,也稱為FCL 文件。 FCL 文件總是位于 /mount_point/lost+found/changelog。 FCL 文件行為類似于普通文件,但一些用戶級操作(例如寫)會被。 標(biāo)準(zhǔn)系統(tǒng)調(diào)用 open(2)、lseek(2)、read(2) 和 close(2) 可FCL 文件中的數(shù)據(jù)。 所有其他系統(tǒng)調(diào)用,如 mmap(2)、unlink(2) 和 ioctl(2) 在 FCL 文件上則不被允許。警告:為與將來的 VxFS 版本兼容,F(xiàn)CL 文件可能被取出命名空間,這些標(biāo)準(zhǔn)系統(tǒng)調(diào)用可能不再有效。因此,Symantec 建議使用編程接口來開發(fā)所有新的應(yīng)用

24、程序。請參見第 26 頁的“文件更改日志的應(yīng)用程序編程接口”。使用文件更改日志文件VxFS 通過向 FCL 文件附加與文件系統(tǒng)更改相關(guān)的信息,來跟蹤對文件系統(tǒng)所做的更改。這樣,您就可以執(zhí)行以下操作: 使用 FCL 確定通常在文件系統(tǒng)上進行的或在一個特定即時點之后在特定文件上進行的操作序列。例如,增量備份應(yīng)用程序可掃描 FCL 文件,確定自文件系統(tǒng)上一次備份后哪些文件被添加或修改。 配置FCL 跟蹤其他信息(例如,文件打開、I/O 統(tǒng)計信息)和用戶 ID)。然后,可使用此信息收集下列數(shù)據(jù): 空間使用量統(tǒng)計信息,用于確定不同類型數(shù)據(jù)的空間使用方式。信息(例如,文件更改日志關(guān)于文件更改日志文件19

25、針對不同用戶在文件系統(tǒng)中使用不同文件的用法配置文件,可幫助確定最近過的數(shù)據(jù)及者??臻g使用量當(dāng)文件系統(tǒng)接近滿時,可使用 FCL 文件跟蹤空間使用量。 可搜索 FCL 文件查找最近創(chuàng)建的文件(文件創(chuàng)建)或?qū)懭氪_定新增的文件或最近增大的現(xiàn)有文件。根據(jù)應(yīng)用需要,可對整個 FCL 文件進行搜索,或者對與特定時間范圍對應(yīng)的部分FCL文件進行搜索。此外,您可以查找用特定名稱創(chuàng)建的文件。例如,如果用戶正在占用過多空間的 *.mp3 文件,可FCL 文件查找用名稱 *.mp3 創(chuàng)建的文件。減少全面系統(tǒng)掃描VxFS 為在啟用 FCL 的文件系統(tǒng)上執(zhí)行的每個更新操作創(chuàng)建并記入 FCL。 這些操作包括創(chuàng)建、刪除、重命

26、名、模式更改和寫入。因此,增量備份應(yīng)用程序或根據(jù)文件名、文件屬性或者內(nèi)容維護文件系統(tǒng)索引的應(yīng)用程序,可以通過FCL 文件,檢測自從上一次備份或上一次索引更新以來發(fā)生更改的文件,來避免全面系統(tǒng)掃描。文件歷史跟蹤您可以通過掃描 FCL 文件和整合文件的 FCL序列來跟蹤文件的歷史。 還可以使用與文件的創(chuàng)建、屬性更改、寫入和刪除相關(guān)的FCL,以跟蹤文件的歷史。文件更改日志的激活默認情況下,停用 FCL 日志,但可以使用 fcladm 命令針對每個文件系統(tǒng)激活日志。請參見 fcladm(1M) 手冊頁。激活FCL日志關(guān)閉 FCL 日志后,新的FCL將在文件系統(tǒng)發(fā)生更改時被附加到FCL 文件。后,將進一

27、步停止,但是 FCL 文件仍然為/lost+found/changelog。使用 fcladm 命令,您只能刪除 FCL 文件。FCL 文件中包含一個表示布局或是 FCL 文件的內(nèi)部表示形式的關(guān)聯(lián)版本,以及在FCL 文件中的列表。每當(dāng)發(fā)布 VxFS 的新版本時,將會出現(xiàn)下列情況: 在 FCL 文件中可能有的其他 FCL 文件的內(nèi)部表示形式可能會發(fā)生更改20文件更改日志關(guān)于文件更改日志文件通過這種方式FCL 文件版本獲得更新。例如,在VxFS 4.1 中,默認版本是版本 3。但是,由于VxFS 5.0 及更高版本會版本 3 中不可用的其他集(例如,文件打開),因此,VxFS 5.0 及更高版本中

28、的默認版本是版本 4。為了向VxFS 4.1 上開發(fā)的應(yīng)用程序提供向后兼容,VxFS 5.0 及更高版本提供了一個用于在激活過程中指定 FCL 版本的選項。根據(jù)指定的版本,可以允許或錄。新類型的日志記對于大多數(shù)在VxFS 5.0 及更高版本中新添加的的日志(例如,文件打開和I/O 統(tǒng)計數(shù)據(jù))都是可選的,默認情況下處于關(guān)閉狀態(tài)??梢允褂?fcladm 命令的set 和 clear 選項來啟用或禁用這些包含文件系統(tǒng)狀態(tài)、版本以及被跟蹤的。集的FCL 元數(shù)據(jù)信息,在重新啟動前后,以及文件系統(tǒng)卸載或裝入時都是持久性的。版本和信息在重新激活FCL 日志記錄前后也是持久性的。文件更改日志文件布局在VxFS

29、 4.1 中,F(xiàn)CL 文件的內(nèi)部布局對用戶是透明的,并且應(yīng)用程序可使用標(biāo)準(zhǔn)文件系統(tǒng)接口(例如,open(2)、read(2) 和 lseek(2))來FCL 文件。不過,此方法可能會導(dǎo)致將來的兼容性問題,這是因為如果基本的FCL 布局和FCL 版本發(fā)生了更改,則必須更改和重新編譯應(yīng)用程序,以適應(yīng)這些更改。VxFS 5.0 引入了一個新的編程接口,即使磁盤上的FCL 布局發(fā)生更改,該接口也會提供改進的兼容性。有了該API,對于應(yīng)用程序來講,F(xiàn)CL 布局變得不再那么重要。因此,本節(jié)僅提供了對 FCL 布局的簡要說明。FCL 文件通常是一個包含F(xiàn)CL 超級塊和FCL的稀疏文件。FCL 文件中的第一個

30、信息塊是FCL 超級塊。此塊可以后接一個可選孔,以及包含有關(guān)文件系統(tǒng)中更改信息的 FCL。圖 2-1 描述了 FCL 文件格式。FCL 文件格式圖 2-1偏移 0x0第一次偏移文件系統(tǒng)塊界限文件系統(tǒng)塊界限最后一次偏移超級塊文件更改日志關(guān)于文件更改日志文件21文件更改日志超級塊對文件系統(tǒng)中文件和目錄的更改將為 FCL件中的第一個塊)描述了 FCL 文件的狀態(tài)。超級塊指明下列操作: 是否啟用 FCL 日志 它是何時激活的 第一條和最后一條 FCL的當(dāng)前偏移 FCL 文件版本。 超級塊(當(dāng)前在 FCL 文 當(dāng)前被跟蹤的集的掩碼 上次更改掩碼的時間使用 fcladm on 命令首次激活 FCL 時,將

31、創(chuàng)建僅包含超級塊的 FCL 文件。 使用fcladm rm 命令刪除 FCL 文件時,僅刪除超級塊。使用 fcladm on 激活 FCL 時,超級塊中的狀態(tài)及其激活時間將發(fā)生更改。 只要任何文件系統(tǒng)活動導(dǎo)致被附加到 FCL 文件,最后一個偏移就會獲得更新。當(dāng) FCL 文件增大時,根據(jù)文件系統(tǒng)可調(diào)參數(shù) fcl_maxalloc 和 fcl_keeptime,在FCL 文件開頭的最舊將在第一個偏移獲得更新時被丟掉,以一些空間。 使用 fcladm 命令的 set 或 clear 選項更改在 FCL 文件中被跟蹤的集掩碼更改件掩碼和掩碼更改時間也將隨之更新。掩碼更改還會導(dǎo)致掩碼更改)被在 FCL

32、文件中。(包含舊掩碼更改和新文件更改日志FCL包含有關(guān)這些典型更改的信息:更改后的文件的 inode 編號請參見第 45 頁的“Inode”。更改的時間更改的類型基于根據(jù)類型的可選信息類型, FCL還可能包括下列信息: 父級 inode 編號 文件刪除、 文件打開 I/O 統(tǒng)計信息和相似的操作的文件名令名的實際統(tǒng)計信息請參見第 20 頁的圖 2-1。22文件更改日志類型類型表 2-1 列出了生成 FCL類型的操作。FCL表 2-1類型VX_FCL_LINK添加指向現(xiàn)有的文件或目錄的附加寫入到文件VX_FCL_DATA_EXTNDWRITE創(chuàng)建文件或目錄VX_FCL_CREATE創(chuàng)建指定數(shù)據(jù)流目

33、錄VX_FCL_CREATE創(chuàng)建符號VX_FCL_SYMLINK在共享和可寫入模式下對文件執(zhí)行mmap 操作VX_FCL_DATA_OVERWRITE從檢查點提升文件VX_FCL_UNDELETE在文件中打孔VX_FCL_HOLE_PUNCHED刪除文件或目錄VX_FCL_UNLINK刪除指定數(shù)據(jù)流目錄VX_FCL_UNLINK重命名文件或目錄VX_FCL_RENAME將文件重命名為現(xiàn)有的文件名VX_FCL_UNLINKVX_FCL_RENAME設(shè)置文件屬性(分配策略、ACL 和擴展屬性)VX_FCL_EATTR_CHG設(shè)置文件擴展區(qū)保留VX_FCL_INORES_CHG設(shè)置文件擴展區(qū)大小VX

34、_FCL_INOEX_CHG設(shè)置文件組所VX_FCL_IGRP_CHG設(shè)置文件模式VX_FCL_IMODE_CHG設(shè)置文件大小VX_FCL_DATA_TRUNCATE設(shè)置文件用戶所VX_FCL_IOWN_CHG設(shè)置文件的 mtimeVX_FCL_MTIME_CHG裁截文件VX_FCL_DATA_TRUNCATE創(chuàng)建 FCL的操作類型文件更改日志類型23注意:表 2-1 列出了當(dāng)fcladm on 命令激活FCL 日志(除 fileopen 和 filestat 之外)。時,默認的所有的信息。使用fcladm 命令的set信息。默認情況下,也這些中每個選項可以打開信息、I/O 統(tǒng)計數(shù)據(jù)和請參見

35、fcladm(1M) 手冊頁。這些類型屬于fcl_chgtype.t. fcl_chgtype.t,它是在fcl.h 頭文件中定義的枚舉。請參見第 38 頁的表 2-2。特殊下列類型通過 API 不再是可見的: VX_FCL_HEADER VX_FCL_NOCHANGE VX_FCL_ACCESSINFO典型序列在文件系統(tǒng)中,文件從創(chuàng)建到刪除的生命周期在 FCL 文件中。創(chuàng)建文件時,下列是寫入日志的 FCL的典型序列:VX_FCL_CREATEVX_FCL_FILEOPEN (if tracking file opens is enabled) VX_FCL_DATA_EXTNDWRITEVX

36、_FCL_IMODE_CHG寫入文件時,會將下列其中一項FCL寫入到每次寫操作的日志中。該取決于是在當(dāng)前文件末尾寫入還是在文件內(nèi)寫入。創(chuàng)建 FCL的操作類型寫入到文件的現(xiàn)有的塊VX_FCL_DATA_OVERWRITE打開文件VX_FCL_FILEOPEN將文件的 I/O 統(tǒng)計數(shù)據(jù)寫入到 FCLVX_FCL_FILESTATS更改在 FCL 中跟蹤的集VX_FCL_EVNTMSK_CHG24文件更改日志文件更改日志可調(diào)參數(shù)VX_FCL_DATA_EXTNDWRITEVX_FCL_DATA_OVERWRITE以下顯示了當(dāng)文件 a 重命名為 b 并且這兩個文件均位于文件系統(tǒng)中時,寫入日志的FCL的

37、典型序列:VX FCL_UNLINK(適用于文件 b,如果它已經(jīng)存在)VX_FCL_RENAME(適用于將文件 a 重命名為 b)文件更改日志可調(diào)參數(shù)您可以使用 vxtunefs 命令設(shè)置四個 FCL 可調(diào)參數(shù)。請參見 vxtunefs(1M) 手冊頁。下列是四個可用 FCL 可調(diào)參數(shù):指定 FCL在它們可以被清除之前在 FCL 文件保留的持續(xù)時間(以fcl_keeptime秒為)。最舊的將第一批被清除,這些位于文件的開頭。此外,如果對 FCL 文件的分配超過 fcl_maxalloc 字節(jié)數(shù),則將清除文件開頭的。 默認值為 0。 請注意,fcl_keeptime 的優(yōu)先級高于 fcl_max

38、alloc。 如果 FCL 文件超過 fcl_maxalloc 字節(jié)數(shù),但最舊的的生命周期尚未到達 fcl_keeptime 秒,則打孔。調(diào)整建議 只有當(dāng)管理員希望確保在 FCL 中的保留時間達到fcl_keeptime 時,才需要調(diào)整 fcl_keeptime 可調(diào)參數(shù)。 應(yīng)將fcl_keeptime 參數(shù)設(shè)置為大于 FCL 掃描時間間隔的任意值。 例如, 如果 FCL 每 24 個小時掃描一次,則可以將 fcl_keeptime 設(shè)置為 25個小時。 這樣可以防止在和處理 FCL之前將其清除。指定要分配給 FCL 文件的最大空間量(以字節(jié)為fcl_maxalloc)。 當(dāng)分配的空間超過fc

39、l_maxalloc 時,將在文件的開頭打孔。 結(jié)果,將清除并更新 FCL 超級塊中的第一個有效偏移。 fcl_maxalloc 的最小值是4MB。 默認值是 fs_size/33。指定FCL 為同一inodefcl_winterval多次重寫、擴展寫入或裁截之前所經(jīng)歷的時間(以秒為)。 這樣可以減少 FCL 中重復(fù)的數(shù)。fcl_winterval 超時基于每個 inode。 如果 inode 出現(xiàn)緩存不足并返回,則其寫入時間間隔將重置。這樣,在同一寫入時間間隔內(nèi),該文件會有多條寫入 。 默認值為 3600 秒。調(diào)整建議 應(yīng)該將 fcl_winterval 可調(diào)參數(shù)設(shè)置為小于 FCL 掃描時間

40、間隔的值。 例如,如果 FCL 每 24 個小時掃描一次,則可以將fcl_winterval 設(shè)置為少于 24 個小時。 這樣可以確保在兩次掃描期間對于將要被重寫、擴展或裁截的每個文件,在 FCL 中至少有一條記錄。文件更改日志文件更改日志可調(diào)參數(shù)25指定后續(xù)打開文件的操作不生成其他 FCLfcl_ointerval的時間間隔(以秒為單位)。 這有助于減少在 FCL 中的重復(fù)性文件打開數(shù),特別是在經(jīng)常通過 NFS 進行的情況下。 如果還啟用了信息的跟蹤,則在fcl_ointerval 內(nèi)的后續(xù)文件打開可能會生成一條(如果后面的打開是由另一個用戶執(zhí)行的)。 與 fcl_ointerval 類似,

41、 如果inode 緩存不足并返回,或存在FCL 同步,則在同一打開時間間隔內(nèi)可能會有多個文件打開 。 默認值為 600 秒。調(diào)整建議 如果使用文件打開掃描 FCL 以來是否有任何用戶的應(yīng)用程序只需要知道,自從它上次了文件,則可以將 fcl_ointerval設(shè)置為兩次掃描之間的時間范圍內(nèi)的一個時間段。如果應(yīng)用程序關(guān)注對每次進行跟蹤,則可以將可調(diào)參數(shù)設(shè)置為零。在通過NFS 大量文件系統(tǒng)的情況下,根據(jù)具體的平臺和NFS 實施,將可能大量的文件打開。在此情況下,建議將可調(diào)參數(shù)設(shè)置為更高的值,以避免 FCL 中存在大量的重復(fù)性??烧{(diào)參數(shù)如何處理文件更改日志增長的大小圖 2-2 顯示了當(dāng) FCL 文件增

42、大時清除的示例。左邊的 FCL 文件包含 8K 的塊且沒有打孔。 當(dāng)文件系統(tǒng)發(fā)生活動時,便將活動在 FCL 中,這導(dǎo)致右邊的 FCL 文件增大。當(dāng) FCL 文件大小到達 fcl_maxalloc 可調(diào)參數(shù)指定的所允許的最大大小時,將會清空間。 FCL 功能只清除其時間早于 fcl_keeptime 指定的時間除更舊的并的那些。 被的空間始終以一個內(nèi)部孔大小為。圖 2-2 顯示了在 FCL 文件中以 8K 為當(dāng) FCL 文件首次超過最大分配時,舊的空間的文件系統(tǒng)。數(shù)是 20K,程序?qū)⑶宄?16K 的。這樣會在 FCL 超級塊后面留下一個 16K 的孔。 FCL 超級塊中的第一個有效偏移將更新為

43、24K。26文件更改日志文件更改日志的應(yīng)用程序編程接口FCL圖 2-2偏移 0x0清除示例偏移 0x0第一次偏移 = 8K16K 孔洞第一次偏移 = 24KBFCL 前:沒有孔洞FCL 后:在偏移 8K 處存在 16K 孔洞文件更改日志的應(yīng)用程序編程接口除通過 libvxfsutil:vxfs_fcl_sync 提供的現(xiàn)有編程接口之外,VxFS 5.0 及更高版本還提供了一組新的編程接口,可替換通過標(biāo)準(zhǔn)系統(tǒng)調(diào)用(比如 open(2)、lseek(2)、read(2) 和 close(2))集FCL 文件的機制。此 API 提供了以下改進:易于使用API 減少了寫入其他代碼以FCL 條目的需求。

44、大多數(shù)磁盤上的FCL的大小都是固定的,并且僅包含默認的信息,例如,inode編號或時間戳。但是,有些的大小是可變的,例如,文件刪除或重命名記錄。這些包含其他信息,例如,被刪除或重命名的文件的名稱。若要確保任何文件系統(tǒng)塊開頭的少數(shù)字節(jié)始終是有效的FCL(如果文件名塊邊界),可以跨磁盤上的多條對文件系統(tǒng)塊進行拆分。以前,您需要寫入其他代碼來組合這些以獲得文件名?,F(xiàn)在,VxFS 5.0 及更高版本中的API 提供了單個組合邏輯。這使得應(yīng)用程序?qū)?API 的應(yīng)用更容一種機制,可以直接易。通過 API,應(yīng)用程序還可以指定一個篩選器,以指示所關(guān)注的子集并僅返回所需。向后兼容通過API,應(yīng)用程序可不受FCL

45、 布局更改影響的FCL。 例如,考慮這樣一個方案,應(yīng)用程序可直接并解釋磁盤上的FCL。 如果下一個VxFS版添加超級塊超級塊文件更改日志文件更改日志的應(yīng)用程序編程接口27或更改了在FCL文件中的了新方式,則應(yīng)用程序需要重新編寫或至少重新編譯,以適應(yīng)這種更改(在先前的 VxFS 版本中)。通過中間API,磁盤上的FCL 布局對于應(yīng)用程序是隱藏的,因此,即使FCL 的磁盤布局發(fā)生了更改,API 也會在內(nèi)部轉(zhuǎn)換數(shù)據(jù),并向用戶返回期望的輸出。 用戶應(yīng)用程序仍可以繼續(xù)運行而無需重新編譯或重新編寫。這了FCL 布局更改對程序的影響,并為現(xiàn)有的應(yīng)用程序提供更好的兼容性。API 函數(shù)API 使用下列類型的函數(shù)

46、:FCL的函數(shù) 尋找偏移和時間戳的函數(shù)文件更改日志的函數(shù)以下是FCL的常見函數(shù):vxfs_fcl_open打開 FCL 文件并返回進一步操作可以使用的句柄。 所有通過 API對 FCL 文件進行的后續(xù)都必須使用該句柄。vxfs_fcl_close關(guān)閉 FCL 文件并清除與該句柄關(guān)聯(lián)的vxfs_fcl_getinfo返回 FCL 版本號以及 FCL 文件的狀態(tài)(打開/關(guān)閉)vxfs_fcl_read將用戶感的 FCL到用戶使用的緩沖區(qū)vxfs_fcl_copyrecFCL。如果源新的位置。包含指針,則會重這些指針以指向?qū)ふ椅募娜罩局械钠坪蜁r間戳的函數(shù)用戶可選擇根據(jù)他們停止使用的偏移尋找文件

47、更改日志中的特定點,或?qū)ふ抑付〞r間后的第一條。下列函數(shù)可以尋找 FCL 中的偏移和時間戳:vxfs_fcl_getcookie返回一個內(nèi)含當(dāng)前FCL 激活時間和當(dāng)前偏移的不透明的結(jié)構(gòu)(以下稱為 cookie)。 可以保存該 cookie,并稍后將其傳遞到vxfs_fcl_seek 中,以便從上次應(yīng)用程序停止的位置繼續(xù)。vxfs_fcl_seek從傳遞的 cookie 中提取數(shù)據(jù)并尋找指定的偏移。 cookie 中將內(nèi)含F(xiàn)CL 激活時間和文件偏移。vxfs_fcl_seektime尋找指定時間后 FCL 中的第一條。28文件更改日志文件更改日志的應(yīng)用程序編程接口vxfs_fcl_open以下是

48、vxfs_fcl_open() 函數(shù)的語法:int vxfs_fcl_open(char *pathname, int flags, void *handle);此函數(shù)可打開 FCL 文件,并且返回通過 API(例如,vxfs_fcl_read、vxfs_fcl_seek 等)對 FCL 進一步需要使用的句柄。vxfs_fcl_open 有兩個參數(shù):*pathname 和 *handle。*pathname 可以是一個指向 FCL 文件名或裝入點的指針。如果 *pathname 是一個裝入點,vxfs_fcl_open 將會自動確定是否激活裝入點上的 FCL 并打開與裝入點(當(dāng)前為mount_

49、point/lost+found/changelog)關(guān)聯(lián)的 FCL 文件。vxfs_fcl_open 然后確定它是否為有效 FCL 文件,以及 FCL 文件版本是否與庫兼容。然后,vxfs_fcl_open() 函數(shù)將有關(guān) FCL 文件的元數(shù)據(jù)信息提取到一個不透明的內(nèi)部數(shù)據(jù)結(jié)構(gòu)中,并用指針填充 *handle。就像 lseek(2) 和 read(2) 系統(tǒng)調(diào)用一樣,F(xiàn)CL 文件 *handle 中有一個內(nèi)部偏移, 用于指示文件中下次 開始的位置。成功打開FCL 文件后,將此偏移設(shè)置為FCL 文件中的第一個有效偏移。返回值成功完成后,將向調(diào)用方返回 0 并且句柄非空。 否則,API 返回一個

50、非零值,并且句柄設(shè)置為 NULL。 此外還將設(shè)置全局值 errno 以指明錯誤。vxfs_fcl_closevxfs_fcl_close 關(guān)閉句柄的 FCL 文件。 所有與該句柄一起分配的數(shù)據(jù)結(jié)構(gòu)將被清除。 調(diào)用 vxfs_fcl_close 之后不應(yīng)再使用該句柄。參數(shù)void vxfs_fcl_close(void *handle)*handle 是先前調(diào)用 vxfs_fcl_open 時返回的有效句柄。vxfs_fcl_getinfoint vxfs_fcl_getinfo(void *handle, struct fcl_info*fclinfo);vxfs_fcl_getinfo()

51、函數(shù)會返回有關(guān) fcl_info 所指向的 FCL 信息結(jié)構(gòu)中的 FCL文件的信息。它從 FCL 超級塊獲得此信息。struct fcl_info uint32_tfcl_version;文件更改日志文件更改日志的應(yīng)用程序編程接口29uint32_tfcl_state;能夠識別與每條關(guān)聯(lián)的類型的智能應(yīng)用程序,可以通過fcl_version 確定FCL 文件是否包含所需信息。例如,版本 3 FCL 文件從不包含信息以及 FCL 記錄。如果 fcl_state 為 FCLS_OFF ,則應(yīng)用程序可以推斷出,由于文件系統(tǒng)活動而沒有任何被添加到 FCL 文件。返回值0 表示成功;否則,將為錯誤設(shè)置錯誤

52、號,并返回一個非零值。vxfs_fcl_read通過此函數(shù),應(yīng)用程序可以實際文件或作為邏輯在FCL中的目錄更改信息。 每個都返回一個struct fcl_record 類型。通過 vxfs_fcl_read,應(yīng)用程序可以指定一個包含一組期望的篩選器。參數(shù)以下是 vxfs_fcl_read() 函數(shù)的語法:int vxfs_fcl_read(void *hndl, char *buf, size_t *bufsz,uint64_t eventmask, uint32_t *nentries);輸入此函數(shù)包含下列輸入: *hndl 是先前調(diào)用 vxfs_fcl_open 時返回的指針*buf 是指向緩沖區(qū)大小的指針,緩沖區(qū)大小至少為 *bufsz*bufsz 用于指定緩沖區(qū)的大小eventmask 是位掩碼,用于指定應(yīng)用程序感的集。它應(yīng)該是在 fcl.h頭文件中指定的掩碼集的“邏輯或”。例如,如果 eventmask 為(VX_FCL_CREATE_MASK | VX_FCL_UNLINK_MASK),vxfs_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論