亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 22410 | 回復: 0
打印 上一主題 下一主題

[其他DFS] FastCFS POSIX API簡介 [復制鏈接]

論壇徽章:
4
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT運維版塊每日發(fā)帖之星
日期:2016-08-11 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-08-15 06:20:00
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2022-03-10 15:42 |只看該作者 |倒序瀏覽
剛發(fā)布的FastCFS V3.2提供系統(tǒng)調用API(如 open、write、writev、read、readv、close 等)和 C API(如fopen、fwrite、fread、fclose等)兩大類POSIX API,應用程序可以通過這兩類API使用FastCFS存儲。FastCFS在POSIX API名稱前面加上前綴 fcfs_,比如 fcfs_open、fcfs_read等等,函數原型及用法和POSIX API完全一致。

FastCFS可以通過FUSE mount為本地文件目錄,為什么還要推出POSIX API呢?應用程序直接調用FastCFS提供的POSIX 接口,主要有兩大好處:1. 減少FUSE這個中間環(huán)節(jié),部署和運維更加簡單方便;2. 直接在用戶態(tài)調用接口,不存在FUSE在用戶態(tài)和內核態(tài)的交互行為,性能更高,CPU占用明顯降低(fused進程對CPU消耗比較大)。單機實測發(fā)現(xiàn)隨機寫IOPS提升 20+%,隨機讀大約提升 5%。


C/C++使用FastCFS POSIX API

FastCFS提供的動態(tài)庫和頭文件,可以采用裝包或者源碼編譯方式,推薦使用裝包方式。CentOS 和 RHEL下包名為 FastCFS-api-devel,Debian和Ubuntu下包名為 fastcfs-api-dev。動態(tài)庫為/usr/lib64/libfcfsapi.so,你的程序在編譯時需要增加動態(tài)庫選項 -lfcfsapi。源碼需要引用兩個頭文件,如下所示:
#include "fastcfs/api/std/papi.h"
#include "fastcfs/api/std/capi.h"


程序初始化調用:
//必須放置在daemon_init, fork或clone調用之后
fcfs_posix_api_init_start();


或者:
//可以放置在daemon_init, fork或clone調用之前
fcfs_posix_api_init();

//必須放置在daemon_init, fork或clone調用之后
fcfs_posix_api_start();

程序退出前需要調用 fcfs_posix_api_stop() 完成收尾工作。示例程序參見FastCFS項目下的 src/api/tests/test_papi_copy.c

不修改程序代碼的情況下,可以使用FastCFS提供的preload動態(tài)庫訪問FastCFS存儲。使用示例如下:
LD_PRELOAD=/usr/lib64/libfcfspreload.so ls -l /opt/fastcfs/fuse

或者:
export LD_PRELOAD=/usr/lib64/libfcfspreload.so
ls -l /opt/fastcfs/fuse

注意:第二種方式下環(huán)境變量LD_PRELOAD一直生效,除非退出終端或者執(zhí)行:
unset LD_PRELOAD

動態(tài)庫使用的配置文件默認為/etc/fastcfs/fcfs/fuse.conf,可以通過環(huán)境變量 FCFS_PRELOAD_CONFIG_FILENAME 設置。

受限于glibc實現(xiàn)方式,preload機制對于部分Linux命令會失效,比如 md5sum、dd。因此我們提供的這種方式是試驗性的,感興趣的朋友可以進行測試和驗證。下面列舉preload機制失效的4種場景:
  1. 靜態(tài)編譯(不采用動態(tài)庫方式);
  2. 程序設置了 suid 標志;
  3. 通過匯編調用函數(比如glibc打開文件通過匯編調用syscall);
  4. 采用了內聯(lián)函數(比如glibc的 feof_unlocked 和 ferror_unlocked等函數)。

感興趣的朋友請點擊FastCFS開源項目,歡迎大家測試和體驗。

友情提示
  * CentOS 7下內核對FUSE文件屬性緩存無效,CentOS 8(Linux Kernel 4.18)沒問題。推薦使用 Linux Kernel 4.18及更高版本;
  * Linux內核在每次寫入時都會去獲取文件的擴展屬性(xattr)security.capability,這將明顯影響文件寫入性能。除非應用程序真正需要文件擴展屬性(如調用了setxattr、getxattr或listxattr等API),否則不要將FastCFS的fuse.conf中的配置項xattr_enabled設置為true!


您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP