挂载zookeeper到文件系统 (mount zookeeper)
挂载zookeeper到文件系统 (mount zookeeper)
zookeeper源码包中提供一个小工具zkfuse,可以用于将zookeeper挂载到文件系统,本文介绍编译及使用这个小工具的方法,并附有此小工具的部分改进及Bug修复代码。
编译使用zookeeper-3.4.6版本,从官网下载源码包:
wget http://apache.fayea.com/apache-mirror/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
解压后在
zookeeper-3.4.6/src/contrib/zkfuse
可找到zkfuse代码。进入zookeeper-3.4.6/src/contrib/zkfuse,查看README.txt,里面有如下提示:
ZooKeeper FUSE (File System in Userspace) =========================================Pre-requisites -------------- 1. Linux system with 2.6.X kernel. 2. Fuse (Filesystem in Userspace) must be installed on the build node. 3. Development build libraries:a. fuseb. log4cxxc. pthreadd. boost
根据上面的文字提示,编译zkfuse需要的依赖包有:fuse、log4cxx、pthread、boost
在ubuntu 14.04下,fuse、boost、log4cxx均可用apt-get快速安装,pthread为系统自带支持,无需安装:
sudo apt-get install libfuse-dev sudo apt-get install libboost-dev sudo apt-get install liblog4cxx-dev
以上软件包均有源码包下载,其他版本的Unix/Linux系统可如无快速安装方法,可使用源码安装。
安装Zookeeper C Api
zkfuse的编译需要依赖Zookeeper C Api,此步在
zookeeper-3.4.6/src/c
下完成cd zookeeper-3.4.6/src/c ./configure make sudo make install # 确保有足够权限
编译zkfuse
此步在
zookeeper-3.4.6/src/contrib/zkfuse
下,按README.txt中的提示做即可:Build instructions ------------------ 1. cd into this directory 2. autoreconf -if 3. ./configure 4. make 5. zkfuse binary is under the src directory
如果未安装autoreconf,则先
sudo apt-get install autoconf
安装好。cd zookeeper-3.4.6/src/contrib/zkfuse autoreconf -if ./configure make
自动生成的makefile可能会有点小问题,如果编译提示类似如下内容:
undefined reference to `ZOO_CHILD_EVENT' undefined reference to `ZOO_CREATED_EVENT' undefined reference to `zoo_exists'
则将
src/Makefile
中:LIBS = -lulockmgr -lnsl -lrt -lpthread -llog4cxx -lfuse
修改添加上
-lzookeeper_mt
:LIBS = -lulockmgr -lnsl -lrt -lpthread -llog4cxx -lfuse -lzookeeper_mt
再次make,就能编译成功。
生成的可执行文件在 src/zkfuse 下
使用zkfuse挂载zookeeper到文件系统
README.txt中有如下使用说明:
Testing Zkfuse -------------- 1. Depending on permission on /dev/fuse, you may need to sudo -u root.* If /dev/fuse has permissions 0600, then you have to run Zkfuse as root.* If /dev/fuse has permissions 0666, then you can run Zkfuse as any user. 2. Create or find a mount point that you have "rwx" permission. * e.g. mkdir -p /tmp/zkfuse 3. Run Zkfuse as follows:zkfuse -z <hostspec> -m /tmp/zkfuse -d-z specifies ZooKeeper address(es) <host>:<port>-m specifies the mount point-d specifies the debug mode.For additional command line options, try "zkfuse -h".
在
zookeeper-3.4.6/src/contrib/zkfuse
下,执行:# 本例中zookeeper部署在127.0.0.1:2181端口 su root mkdir -p /zkfuse nohup ./zkfuse -z 127.0.0.1:2181 -m /zkfuse -d >> zkfuse.log 2>&1 &
清除挂载的话,需要kill掉zkfuse进程,然后umount挂载点(本例中为:
umount /zkfuse
)zkfuse已知BUG修复
目前实测,zkfuse一处BUG:读取数值为NULL的结点会coredump挂掉 另外zkfuse只支持大小不超过1k的结点,这是在代码中一处宏定义决定的,所以此处对zkfuse做了一些改造和BUG修复,改动的文件如下,可直接拷贝到
zookeeper-3.4.6/src/contrib/zkfuse/src
覆盖源文件即可修复。
挂载zookeeper到文件系统 (mount zookeeper)相关推荐
- ZooKeeper学习第一期---Zookeeper简单介绍(转)
转载来源:https://www.cnblogs.com/sunddenly/p/4033574.html 一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术--分布式协调技 ...
- k8s部署zookeeper集群 运行 ZooKeeper, 一个 CP 分布式系统
本教程展示了在 Kubernetes 上使用 StatefulSets,PodDisruptionBudgets 和 PodAntiAffinity 特性运行 Apache Zookeeper. 准备 ...
- centos7 安装git_如何在 CentOS 7 上挂载 Amazon EFS 文件系统?
如何为数千个 Amazon EC2 实例提供大规模并行共享访问模式? 在本周,为大家做的分享是关于如何在 CentOS 7 上挂载 Amazon EFS 文件系统.Amazon EFS 可以让您的应用 ...
- Linux基础知识之挂载详解(mount,umount及开机自动挂载)
挂载概念简述: 根文件系统之外的其他文件要想能够被访问,都必须通过"关联"至根文件系统上的某个目录来实现,此关联操作即为"挂载",此目录即为"挂载点& ...
- [转载]Linux基础知识之挂载详解(mount,umount及开机自动挂载)
挂载概念简述: 根文件系统之外的其他文件要想能够被访问,都必须通过"关联"至根文件系统上的某个目录来实现,此关联操作即为"挂载",此目录即为"挂载点& ...
- oracle文件系统挂载点,挂载和取消挂载 Oracle Solaris 文件系统
挂载和取消挂载 Oracle Solaris 文件系统 ZFS 文件系统可自动进行挂载和取消挂载.通过挂载传统 UFS 文件系统可使该文件系统可用,这会将文件系统附加到指定挂载点的系统目录树.始终会挂 ...
- android文件系统挂载过程,有线挂载Android4.2文件系统
注意:在挂载Android4.2文件系统调试前,一定要将平板的Android系统中的"设置"功能中的"wifi"功能选择"关闭",如图所示 ...
- linux文件挂载和卸载命令,Linux基础命令(八)——挂载、卸载文件系统
前言:在Linux系统中,对各种存储设备中的资源访问(如读取.保存文件等)都是通过目录结构进行的,虽然系统核心能够通过"设备文件"的方式操纵各种设备,但是对于用户来说,还需要增加一 ...
- 【转】ZooKeeper学习第二期--Zookeeper命令操作
一.Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互.他们大多数是查询命令,用来获取Zookeeper服务的当前状态及相关信息.用户在客户端可以通过telnet或n ...
最新文章
- CUMCM:05B DVD在线租赁
- python取出字典中的所有值的两种方法
- [转载] 列表、元组及通用序列操作
- nginx负载均衡分发请求的几种方式
- 如何用libpng输出一个编辑后的png图片?
- 阿里云安装宝塔打不开 已经开放安全组_centOS7 apache安装PHPMYADMIN
- 记录一个很好用的截图软件greenShot
- 输入文本自动生成图像,太好玩了!
- 用javaScript制作星空特效
- Android TV 焦点控制
- SwiftUI 控件
- java自动发图文微博_自动发带图的微博
- Python加密与解密
- java 从控制台输入一个正整数_编程输出该正整数各位数字之和_C语言 从键盘上输入一个正整数,计算并输出该数的各位数字之和...
- [转]看恐怖片能减肥
- Netty下的消息群发
- 使用CStdioFile操作文件和filetxt.cpp报错和filecore.cpp报错
- iOS 集成FaceId和TouchID
- php办公网聊天室,使用phpFreeChat在您的网站上运行聊天室 | MOS86
- java发展的前景到底如何?
热门文章
- DirectX11--实现一个3D魔方(1)
- shell学习之查找当前目录下文件以及文件夹大小-'du'命令和'df'命令
- java.lang.UnsupportedClassVersionError: org/apache/activemq/spring/ActiveMQConnectionFactory : Unsup
- 被全球过度炒作的Spotify敏捷部落制,连Spotify公司自己都不用
- 扩充C盘(将D盘的内存分给C盘)
- QQ2013协议分析(解密篇)
- GVS视声引入睿住资本,完成A轮融资
- 对web网站模拟压力测试
- 清华非全日制计算机硕士,2021年清华大学硕士招生分析,专硕非全日制占比高达67%...
- 边城科技“区块链+溯源”平台助力坪朗豆腐品牌升级