FS-Cache 调研
最近需要使用到 FSCache,今天调研一下FS-Cache,主要记录一些索引,方便以后查阅:
RedHat 文档:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/ch-fscache (此文档讲解较为详细)
内核社区文档:https://www.kernel.org/doc/Documentation/filesystems/caching/fscache.txt
FS-Cache: A Network Filesystem Caching Facility:https://people.redhat.com/dhowells/fscache/FS-Cache.pdf
NFS 相关,请阅读:https://www.cnblogs.com/xuyaowen/p/NFS_install.html (之前写的关于nfs安装相关的内容)
使用NFS缓存减少IO https://blog.csdn.net/luckytanggu/article/details/78476634 (此篇文章较为实践,我也进行了相同的测试,显示fscache起作用,大家可以参考)
关于linux内核中对文件系统的cache大家可以参考此链接:https://www.kernel.org/doc/Documentation/filesystems/caching/ (内核文件系统cache详细文档)
FS-Cache 配置文件解析:
###############################################################################
#
# Copyright (C) , Red Hat, Inc. All Rights Reserved.
# Written by David Howells (dhowells@redhat.com)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version
# of the License, or (at your option) any later version.
#
############################################################################### dir /var/cache/fscache # 自定义缓存目录
tag mycache # 标签,用于区分多个缓存
brun % # 剩余空间大于这个设置值时,自动进行缓存
bcull % # 剩余空间大于这个设置值时,开始自动删除使用频率最低的缓存
bstop % # 剩余空间小于这个设置值时,缓存功能关闭 # 开头的参数则是按照文件数来计算%, 其原理与根据block数(剩余空间)计算是一样的。
frun %
fcull %
fstop % # Assuming you're using SELinux with the default security policy included in
# this package
secctx system_u:system_r:cachefiles_kernel_t:s0
brun N% (percentage of blocks) , frun N% (percentage of files)
If the amount of free space and the number of available files in the cache rises above both these limits, then culling is turned off.
bcull N% (percentage of blocks), fcull N% (percentage of files)
If the amount of available space or the number of files in the cache falls below either of these limits, then culling is started.
bstop N% (percentage of blocks), fstop N% (percentage of files)
If the amount of available space or the number of available files in the cache falls below either of these limits, then no further allocation of disk space or files is permitted until culling has raised things above these limits again.
cachefiles参数说明
三对参数应该满足的关系:
0 ≤ bstop < bcull < brun < 100
0 ≤ fstop < fcull < frun < 100
注意:Culling depends on both bxxx and fxxx pairs simultaneously; they can not be treated separately.
其他参考地址:/usr/share/doc/kernel-doc-version/Documentation/filesystems/caching/fscache.txt
关于nfs fsc 选项的说明(fsc选项):
阅读摘要:
- yum install cachefilesd;
- 挂载命令:直接mount服务端共享的目录到本地的/mnt目录,必须使用-o fsc参数选项;
- All access to files under /mount/point will go through the cache, unless the file is opened for direct I/O or writing;
- Opening a file from a shared file system for direct I/O automatically bypasses the cache. This is because this type of access must be direct to the server.
To avoid coherency management problems between superblocks, all NFS superblocks that wish to cache data have unique Level 2 keys. Normally, two NFS mounts with same source volume and options share a superblock, and thus share the caching, even if they mount different directories within that volume.
- Opening a file from a shared file system for writing will not work on NFS version 2 and 3. 因为没有足够的维持并发写的一致性信息;
Furthermore, this release of FS-Cache only caches regular NFS files. FS-Cache will not cache directories, symlinks, device files, FIFOs and sockets. 其只对文件数据进行cache的操作。
保持更新,资源来源自网络,此文章主要是用来索引,如果您有相关问题,请关注cnblogs.com/xuyaowen;
# 更新 12.3.2019
- cachefiles 为 fscache的后端;cachefs也是 fscache的后端;
- cachefiles 和 fscache都集成到了linux 内核中;作为单独的模块;好像 cachefs没有继承到内核之中,说明cachefiles较为常用,已经合并到内核之中,说明该功能模块,较为稳定。
- 对应的linux内核模块为 cachefiles.ko 和 fscache.ko,在 /lib/modules/内核版本/kernel/fs/之中;
- 同理,我们在相应的内核模块目录中,可以查看fuse的内核模块:cuse.ko; 使用modprobe -v 可以加载;rmmod和inmod 可以卸载和安装内核模块;具体其他操作,可以查找相应的手册;
FS-Cache 调研的更多相关文章
- vxWorks6.6 N270 D525 cpu的bsp配置总结
对硬盘的操作 使用SATA硬盘,分区,引导区(VxC:)必须格式化为FAT(FAT16)格式,所以该分区大小有限制,不能超过4G(4G大小带测试),设置C:为"活动的": 主机上安 ...
- Linux云计算运维-MySQL
0.建初心 优秀DBA的素质 1.人品,不做某些事情2.严谨,运行命令前深思熟虑,三思而后行,即使是依据select3.细心,严格按照步骤一步一步执行,减少出错4.心态,遇到灾难,首先要稳住,不慌张, ...
- linux分析、诊断及调优的必备“杀器”之一
下面分别列出linux分析.诊断及调优时用到的工具,并分别进行说明,以方便自己和其他同学参考学习,禁止转载. 1.top top - 02:06:59 up 4 days, 17:14, 2 user ...
- ES内存持续上升问题定位
https://discuss.elastic.co/t/memory-usage-of-the-machine-with-es-is-continuously-increasing/23537/ ...
- linux I/O stack cache 强制刷新
linux 存储子系统作为最为复杂的子系统之一,拥有很深的模块栈(如图),其中很多模块又有自己的缓存功能(如下图).实际应用中,用户下发的数据停留在哪个缓存中,是否已经写入磁盘,这些操作对用户来说是个 ...
- LINUX内核参数FS与VM相关
文件系统相关 fs.aio-nr = 0 当前aio请求数 fs.aio-max-nr = 1048576 最大允许的aio请求数 fs.file-nr = 3456 0 94159 已分配的文件ha ...
- Solr调研总结
http://wiki.apache.org/solr/ Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境 ...
- Operating System Memory Management、Page Fault Exception、Cache Replacement Strategy Learning、LRU Algorithm
目录 . 引言 . 页表 . 结构化内存管理 . 物理内存的管理 . SLAB分配器 . 处理器高速缓存和TLB控制 . 内存管理的概念 . 内存覆盖与内存交换 . 内存连续分配管理方式 . 内存非连 ...
- Linux Cache Mechanism Summary(undone)
目录 . 缓存机制简介 . 内核缓存机制 . 内存缓存机制 . 文件缓存机制 . 数据库缓存机制 1. 缓存机制简介 0x1: 什么是缓存cache 在计算机整个领域中,缓存(cache)这个词是一个 ...
随机推荐
- 每周一练 之 数据结构与算法(Dictionary 和 HashTable)
这是第五周的练习题,上周忘记发啦,这周是复习 Dictionary 和 HashTable. 下面是之前分享的链接: 1.每周一练 之 数据结构与算法(Stack) 2.每周一练 之 数据结构与算法( ...
- 为什么HashMap的加载因子是0.75?
说在前面 在HashMap中,默认创建的数组长度是16,也就是哈希桶个数为16,当添加key-value的时候,会先计算出他们的哈希值(h = hash),然后用return h & (l ...
- 6张图说清楚Tomcat原理及请求流程
前言 很多东西在时序图中体现的已经非常清楚了,没有必要再一步一步的作介绍,本文以图为主,然后对部分内容加以简单解释. 绘制图形使用的工具是 PlantUML + Visual Studio Code ...
- React一键复制
如题,我们怎么在React或者其他的框架中实现一键复制呢,实际上实现一键复制的代码与框架无关,因为他是用的是原生的API,下面我们用React来实现一下 效果: 核心代码: 直接将红框处改为需要 ...
- Bug复盘:接口异步返回的重要性
前言 最近接收了一个老项目,突然甲方 QA 报了一个 bug,连续请求 60 次,成功 8 次,后面的 52 次全部失败,而且成功的 case 返回时间普遍较长.看了日志,并非业务上的异常.这让刚毕业 ...
- 重载和重写的区别?构造器 Contructor 构造器是否可被 override?
重载 发生在同一类,方法名必须相同,参数类型不同,顺序不同,类型不同,方法返回值和返回类型可以不同 重写 发生在子父类,方法名.参数名参数列表必须相同.返回值范围小于等于父类,抛出异常范围小于等于父类 ...
- elementui移动dialog
1.在创建Vue对象时添加全局属性 Vue.directive('dialogDrag', { bind(el, binding, vnode, oldVnode) { const dialogHea ...
- VMware kali虚拟机环境配置
编译内核 (1)执行命令uname -r以查看内核版本. (2)执行命令apt-cache search linux-headers查看是否安装内核头文件. (3) 如果uname -r出现的内容在 ...
- Android 日期对话框 DatePickerDialog
private int year; private int monthOfYear; private int dayOfMonth; @Override protected void onCreate ...
- ORACLE数据库中执行计划出现INTERNAL_FUNCTION一定是隐式转换吗?
ORACLE数据库中,我们会使用一些SQL语句找出存在隐式转换的问题SQL,其中网上流传的一个SQL语句如下,查询V$SQL_PLAN的字段FILTER_PREDICATES中是否存在INTERNAL ...