CentOS / RHEL Cachefiles 加速網絡文件系統NFS訪問速度
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永久緩存到本地磁盤。
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 |
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 |
8. 測試
在沒有使用cachefiles情況下:
在使用cachefiles情況下:
第一次耗時長,是由于第一次沒有緩存。
轉載請注明來自運維生存時間: http://www.ttlsa.com/html/4130.html