CentOS / RHEL Cachefiles 加速網絡文件系統NFS訪問速度

jopen 10年前發布 | 21K 次閱讀 Cachefiles

NFS是一種經常使用到的網絡共享文件系統,在分布式環境下,多臺服務器的文件共享是一個問題。然而,對于這個問題,最常想到最 容易做到的那就非NFS莫屬了。那么如何來提高NFS文件的訪問性能呢?加上緩存唄。沒錯。在linux下,有一個緩存文件系統叫FS-Cache,來緩 存網絡文件系統,如NFS。 FS-Cache是在linux內核版本2.6.30及以上版本引入的。在RHCE6.x 、CentOS6.x版本下可用。

為了使FS-Cache工作,需要緩存后端來提供實際存儲。默認的緩存后端是cachefiles。因此,一旦設置了cachefiles,它會為NSF共享自動的啟用文件緩存。

FS-Cache是由David Howells開發的。當前的設計是對Andrew文件系統和網絡文件系統的操作。 需要開啟cachefilesd的守護進程來管理。該守護進程管理緩存文件和目錄,將網絡文件系統如AFS、NFS永久緩存到本地磁盤。

CentOS / RHEL Cachefiles 加速網絡文件系統NFS訪問速度

1. CacheFiles介紹
NFS是一種經常使用到的網絡共享文件系統,在分布式環境下,多臺服務器的文件共享是一個問題。然而,對于這個問題,最常想到最容易做到的那就非NFS莫 屬了。那么如何來提高NFS文件的訪問性能呢?加上緩存唄。沒錯。在linux下,有一個緩存文件系統叫FS-Cache,來緩存網絡文件系統,如 NFS。 FS-Cache是在linux內核版本2.6.30及以上版本引入的。在RHCE6.x 、CentOS6.x版本下可用。

為了使FS-Cache工作,需要緩存后端來提供實際存儲。默認的緩存后端是cachefiles。因此,一旦設置了cachefiles,它會為NSF共享自動的啟用文件緩存。

FS-Cache是由David Howells開發的。當前的設計是對Andrew文件系統和網絡文件系統的操作。 需要開啟cachefilesd的守護進程來管理。該守護進程管理緩存文件和目錄,將網絡文件系統如AFS、NFS永久緩存到本地磁盤。

2. CacheFiles前提條件
需要本地文件系統支持用戶自定義的擴展文件屬性,如xattr。因為cachefiles使用xattr存儲額外信息來維護緩存的。
ext4文件系統默認啟用xattr。
如果是使用ext3文件系統,需要加上user_xattr選項。按照如下步驟操作:


1
2
3
# vim /etc/fstab
/dev/sdb1 /data ext3 defaults,user_xattr 0 0
# mount -o remount /data
user_xattr針對緩存存儲分區而言的。

3. 安裝


1
# yum install cachefilesd.x86_64

4. 配置


1
2
3
4
5
6
7
8
9
10
11
12
# vim /etc/cachefilesd.conf
dir /var/cache/fscache
tag mycache
brun 10%
bcull 7%
bstop 3%
frun 10%
fcull 7%
fstop 3%
# Assuming you're using SELinux with the default security policy included in
# this package
secctx system_u:system_r:cachefiles_kernel_t:s0

說明:
dir: 緩存root目錄。默認/var/cache/fscache。
tag: 指定一個FS-Cache標簽,用來區分多個緩存。默認是”CacheFiles”。
secctx system_u:system_r:cachefiles_kernel_t:s0 : 開啟SELinux的話,需要更改安全上下文。
brun 10%, bcull 7%, bstop 3%, frun 10%, fcull 7%, fstop 3% : 緩存策略。

5. 緩存剔除規則:
緩存需要刪除來釋放空間,將最少使用的對象丟棄掉。cachefiles是基于訪問時間來清除緩存的。空的目錄如果不使用將刪掉。

(*) brun
(*) frun
如果剩余空間和緩存中可用的文件數超過了上面的限制,緩存剔除關閉。

(*) bcull
(*) fcull
如果可用空間或緩存中的可用文件數量低于上面的限制,緩存剔除將開啟。

(*) bstop
(*) fstop
如果可用空間或緩存中的可用文件數量低于上面任一限制,然后,沒有進一步的分配磁盤空間或文件被允許直到再次超過上面限制。

必須按照下面原則設置:
0 <= bstop < bcull < brun < 100
0 <= fstop < fcull < frun < 100

這些都是可利用的空間和可用的文件的百分比.

6. 緩存結構
cachefiles模塊將在緩存root目錄下自動創建兩個子目錄:cache和graveyard。
主動緩存對象存儲于cache目錄下。守護進程檢測graveyard目錄,并將刪除任何出現在該目錄中的緩存。

7. NFS掛載啟用fsc選項


1
2
# /etc/init.d/cachefilesd restart
# mount -t nfs 10.31.247.202:/data /data/nfs/ -o fsc,remount

查看緩存狀態
CentOS / RHEL Cachefiles 加速網絡文件系統NFS訪問速度
CentOS / RHEL Cachefiles 加速網絡文件系統NFS訪問速度

注意FSC列的值,如果是yes說明啟用,否則沒有。

8. 測試
在沒有使用cachefiles情況下:
CentOS / RHEL Cachefiles 加速網絡文件系統NFS訪問速度
在使用cachefiles情況下:
CentOS / RHEL Cachefiles 加速網絡文件系統NFS訪問速度
第一次耗時長,是由于第一次沒有緩存。

9. 查看cachefiles統計信息
CentOS / RHEL Cachefiles 加速網絡文件系統NFS訪問速度

轉載請注明來自運維生存時間: http://www.ttlsa.com/html/4130.html



項目主頁:
http://www.baiduhome.net/lib/view/home/1388546651766

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!