【QNX】pps開發(fā)指南(3):持久性

????????????????????????????????????第三章: 持久性

? ? ? ? PPS在運(yùn)行時(shí)是在內(nèi)存中維護(hù)它的對(duì)象的。如有需要,它將:

? ? ? ? ? ?? (1)將其對(duì)象保存到持久存儲(chǔ)中,可以在運(yùn)行時(shí)按需保存,也可以在關(guān)閉時(shí)保存

? ? ? ? ? ?? (2)在啟動(dòng)時(shí)恢復(fù)其對(duì)象,或者立即恢復(fù),也可在第一次加載時(shí)(延遲加載)

? ?? ( 注:PPS也可以用于創(chuàng)建很少(或從未)被發(fā)布或被訂閱,但需要持久性的對(duì)象?!瓣P(guān)機(jī)”指的是PPS服務(wù)器進(jìn)程的有序退出。有序退出可以由SIGTERM、SIGINT或SIGQUIT觸發(fā)。由于其他信號(hào)(例如SIGKILL、SIGSEGV和SIGABRT)不會(huì)導(dǎo)致有序退出,因此它們不會(huì)構(gòu)成持久性目的的“關(guān)閉”。)


一:持久存儲(chǔ)

????????PPS支持跨重啟的持久存儲(chǔ)。這種存儲(chǔ)需要可靠的文件系統(tǒng)。

????????PPS使用的底層持久存儲(chǔ)依賴于一個(gè)可靠的文件系統(tǒng),例如:

? ? ? ? (1) disk — Power-Safe filesystem

? ? ? ? (2)NAND Flash — ETFS filesystem

? ? ? ? (3)Nor Flash — FFS3 filesystem

? ? ? ? (4)other — customer-generated filesystem

????????如果需要將對(duì)象持久化到專用的硬件,比如小型NVRAM(不支持文件系統(tǒng)),那么可以創(chuàng)建自己的客戶端,訂閱要保存的PPS對(duì)象。在每個(gè)對(duì)象更改時(shí),PPS將通知您的客戶端,允許客戶端實(shí)時(shí)更新NVRAM。

????????持久性和文件系統(tǒng)的限制

????????存儲(chǔ)PPS對(duì)象的持久性目錄使用與PPS根目錄完全相同的目錄層次結(jié)構(gòu)。因此,對(duì)象持久性受到路徑和文件名長(zhǎng)度以及底層文件系統(tǒng)的目錄嵌套限制的限制。

????????例如,QNX Neutrino NFS服務(wù)器支持最大嵌套深度為15個(gè)級(jí)別。此限制也適用于使用此服務(wù)的PPS。


二:保存對(duì)象

? ? ?? 在關(guān)閉時(shí),PPS總是將修改后的對(duì)象保存在一個(gè)持久的文件系統(tǒng)中。你還可以通過調(diào)用對(duì)象上的fsync()接口來強(qiáng)制PPS在任何時(shí)候保存對(duì)象。

? ? ?? 當(dāng)PPS將其數(shù)據(jù)保存在持久文件系統(tǒng)中時(shí),它將每個(gè)對(duì)象保存在自己的文件中,保存在復(fù)制PPS對(duì)象樹的層次結(jié)構(gòu)的目錄層次結(jié)構(gòu)中。例如,對(duì)于默認(rèn)配置,PPS對(duì)象/ PPS /example/object1存儲(chǔ)在/var/pps/example/object1.

? ? ?? PPS目錄的默認(rèn)位置是/var/pps.可以使用PPS -p選項(xiàng)更改此位置.

? ? ??您 可以編輯PPS文件的持久版本。如果安全性對(duì)您的系統(tǒng)很重要,您應(yīng)該讓PPS將其數(shù)據(jù)保存在加密的文件系統(tǒng)中。

? ? ?? 您可以設(shè)置對(duì)象和屬性限定符,使PPS不保存特定的對(duì)象或?qū)傩浴?/p>

? ? ?? 為持久存儲(chǔ)更改目錄

? ? ?? root PPS對(duì)象樹(默認(rèn)為/ PPS)看起來像這樣:


? ? ? PPS從持久化樹(默認(rèn)情況下為/var/PPS)填充根對(duì)象樹,其中存儲(chǔ)您希望持久化的對(duì)象和屬性。

? ? ?? 當(dāng)需要要指定一個(gè)不同的目錄作為持久存儲(chǔ)時(shí):

? ? ? (1)創(chuàng)建您自己的持久性目錄(如mkdir /myobjects)。

? ? ? (2)從不同的掛載點(diǎn)(例如/fs/ PPS)啟動(dòng)PPS服務(wù),并指定新的持久性目錄:

? ? ? ? ? ? ?? pps -m /fs/pps -p /myobjects


三:加載對(duì)象

? ? ?? 當(dāng)PPS啟動(dòng)時(shí),它會(huì)立即從持久文件系統(tǒng)上以已編碼的文件名構(gòu)建目錄層次結(jié)構(gòu)。

? ? ?? 在其默認(rèn)配置中,PPS到第一次訪問某個(gè)文件時(shí)才會(huì)延遲加載目錄中的對(duì)象。訪問對(duì)象可以通過對(duì)PPS對(duì)象的進(jìn)行open()調(diào)用,也可以是對(duì)PPS目錄的進(jìn)行readdir()調(diào)用。

? ? ?? 您可以通過在啟動(dòng)時(shí)提供-l(“el”)選項(xiàng)來更改配置,以擁有PPS。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容