最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenStack Ceilometer用MongoDB解決占用磁盤空間過大問題

 更新時(shí)間:2016年12月04日 15:02:37   作者:heaven619  
這篇文章主要介紹了OpenStack Ceilometer用MongoDB解決占用磁盤空間過大問題的相關(guān)資料,Ceilometer使用MongoDB作為數(shù)據(jù)庫(kù),不斷進(jìn)行采樣,導(dǎo)致數(shù)據(jù)量膨脹,占用過多的磁盤空間,這里提供解決辦法,需要的朋友可以參考下

OpenStack Ceilometer用MongoDB解決占用磁盤空間過大問題

背景:Ceilometer使用MongoDB作為數(shù)據(jù)庫(kù),不斷進(jìn)行采樣,導(dǎo)致數(shù)據(jù)量膨脹,占用過多的磁盤空間。

知識(shí)背景

1.數(shù)據(jù)庫(kù)文件類型

1.1. journal 日志文件

跟一些傳統(tǒng)數(shù)據(jù)庫(kù)不同,MongoDB的日志文件只是用來(lái)在系統(tǒng)出現(xiàn)宕機(jī)時(shí)候恢復(fù)尚未來(lái)得及同步到硬盤的內(nèi)存數(shù)據(jù)。日志文件會(huì)存放在一個(gè)分開的目錄下面。啟動(dòng)時(shí)候MongoDB會(huì)自動(dòng)預(yù)先創(chuàng)建3個(gè)每個(gè)為1G的日志文件(初始為空)。

1.2. namespace 表名文件 dbname.ns

這個(gè)文件用來(lái)存儲(chǔ)整個(gè)數(shù)據(jù)庫(kù)的集合以及索引的名字。這個(gè)文件不大,默認(rèn)16M,可以存儲(chǔ)24000個(gè)集合或者索引名以及那些集合和索引在數(shù)據(jù)文件中得具體位置。通過這個(gè)文件MongoDB可以知道從哪里去開始尋找或插入集合的數(shù)據(jù)或者索引數(shù)據(jù)。

1.3. 數(shù)據(jù)文件 dbname.0, dbname.1,… dbname.n

MongoDB的數(shù)據(jù)以及索引都存放在一個(gè)或者多個(gè)MongoDB數(shù)據(jù)文件里。第一個(gè)數(shù)據(jù)文件會(huì)以“數(shù)據(jù)庫(kù)名.0”命名,如 my-db.0。這個(gè)文件默認(rèn)大小是64M,在接近用完這個(gè)64M之前,MongoDB 會(huì)提前生成下一個(gè)數(shù)據(jù)文件如my-db.1。數(shù)據(jù)文件的大小會(huì)2倍遞增。第二個(gè)數(shù)據(jù)文件的大小為128M,第三個(gè)為256M。一直到了2G以后就會(huì)停止,一直按這個(gè)2G這個(gè)大小增加新的文件。

2.數(shù)據(jù)庫(kù)大小參數(shù)

2.1. dataSize

dataSize是最接近真實(shí)數(shù)據(jù)大小的一個(gè)參數(shù)。你可以用來(lái)檢查你的數(shù)據(jù)有多少。這個(gè)大小包括了數(shù)據(jù)庫(kù)(或者集合)的每條記錄的總和。注意每條記錄除了BSON文檔外還有header及padding這些額外開銷。所以實(shí)際大小會(huì)比真正數(shù)據(jù)所占空間會(huì)稍大。

2.2. storageSize

這個(gè)參數(shù)等于數(shù)據(jù)庫(kù)或者某個(gè)集合所有用到的Data Extents的總和。注意這個(gè)數(shù)字會(huì)大于dataSize因?yàn)镋xtent里面會(huì)有一些刪除文檔之后留下來(lái)的碎片。如果有新插入的文檔小于或等于碎片的大小,MongoDB會(huì)重新利用這個(gè)碎片來(lái)存儲(chǔ)新的文檔。不過在這之前這些碎片將一直會(huì)被保留在那里占用空間。由于這個(gè)原因,你刪除文檔的時(shí)候這個(gè)參數(shù)不會(huì)變小。

2.3. fileSize

這個(gè)參數(shù)只在數(shù)據(jù)庫(kù)上有效,指的是實(shí)際文件系統(tǒng)中用到的文件的大小。它包括所有的數(shù)據(jù)Extents的總和,索引Extent的總和,以及一些未被分配的空間。之前提到MongoDB會(huì)對(duì)數(shù)據(jù)庫(kù)文件創(chuàng)建時(shí)候進(jìn)行預(yù)分配,例如最小就是64M,哪怕你只有幾百個(gè)KB的數(shù)據(jù)。所以這個(gè)參數(shù)可能會(huì)比實(shí)際的數(shù)據(jù)大小會(huì)大不少。 這些額外未用空間是用來(lái)保證MongoDB可以在新的數(shù)據(jù)寫入時(shí)候快速的分配新的Extent,避免引起磁盤空間分配引起的延遲。

解決方案

1.減少預(yù)分配的大小(或禁用預(yù)分配)

從MongoDB的預(yù)分配機(jī)制考慮,可以減少預(yù)分配的大小,或者禁用預(yù)分配。但是這種方案是會(huì)影響數(shù)據(jù)庫(kù)行為的。如果數(shù)據(jù)庫(kù)沒有頻繁的大數(shù)據(jù)寫入動(dòng)作,可以采取這種方案。

2.數(shù)據(jù)壓縮

conpact命令可以對(duì)collection進(jìn)行壓縮,從而減少數(shù)據(jù)量的大小。

db.runCommand({compact:'CollectionName'})

這里需要注意的是:

1)操作進(jìn)行時(shí),會(huì)鎖住當(dāng)前操作的collection;
2)compact命令不會(huì)釋放磁盤空間的,但新的磁盤請(qǐng)求會(huì)使用整理出來(lái)的空間;

3.將數(shù)據(jù)導(dǎo)出再導(dǎo)入

mongodump作用是將數(shù)據(jù)庫(kù)導(dǎo)出,mongorestore是將導(dǎo)出的數(shù)據(jù)庫(kù)再導(dǎo)入,這個(gè)過程中會(huì)重建索引,所以如果數(shù)據(jù)庫(kù)之前進(jìn)行過刪除操作,空間沒有釋放,那么導(dǎo)入后,刪除的空間會(huì)被釋放。

4.定期刪除不用的數(shù)據(jù)

結(jié)合實(shí)際情況,ceilometer采取的sample在有效期過后是可以被消除的。

步驟:

1)通過改變/etc/ceilometer/ceilometer.conf的time_to_live參數(shù)指定sample的有效期;
2)運(yùn)行ceilometer-expirer刪除過期的sample;
3)重啟openstack-ceilometer-collector服務(wù);
4)刪除后,使用repairDatabase修復(fù)數(shù)據(jù)庫(kù)。

注意,repairDatabase操作所需要磁盤的空余空間為當(dāng)前數(shù)據(jù)總量再加上2G。如果當(dāng)前磁盤分區(qū)空間不足,可以嘗試用 –repairpath 參數(shù)指定一個(gè)空間足夠的分區(qū)路徑。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

最新評(píng)論

廊坊市| 巴青县| 晋城| 安乡县| 河北区| 宁安市| 陕西省| 盐津县| 武川县| 涞源县| 红桥区| 海晏县| 彰化县| 井陉县| 广元市| 忻城县| 郯城县| 庄河市| 木里| 新疆| 新宾| 墨脱县| 乌鲁木齐县| 峨山| 庄浪县| 海南省| 六安市| 收藏| 上蔡县| 建水县| 土默特左旗| 元阳县| 鸡西市| 鄯善县| 平乡县| 谷城县| 云南省| 兴安盟| 商水县| 揭东县| 梅州市|