sheepdog 源码学习(1)

最近比较忙,做毕设(sheepdog),要在sheepdog的基础上做点东西,也就是说要改sheepdog源码。我只有一个月时间,所以最近一直都在读sheepdog源码。C 语言太菜,里面好多用法都不会,基本都是现边看边查。。。

sheepdog 可以干什么,首先,你需要启动sheep,启动的命令可以用下面这个。当然可以用 test 目录下的测试脚本来启动一个 虚拟的 sheepdog 集群。何谓虚拟呢?就是这个脚本可以在你的主机上启动5个sheep进程,每个sheep进程占用不同的端口,这样这5个sheep进程就组成了一个sheepdog集群了。这样,你也就拥有一个sheepdog集群了。之后,你就可以用dog命令来看一些东西了,比如: dog node list, dog vdi list. 之类的,具体是什么意思就需要你去 sheepdog github 去读点文档啦。。。和系统相关的先说这些吧,这只是个开始,但并不是我重点。再罗嗦一点,这样默认启动后,sheepdog 的 日志 目录是在 /tmp/sheepdog/ 目录下。这个目录下面有这样几个子目录。首先可能是 0/ 1/ 2/ 3/ ... 以数字命名的目录,这表示这是 node ID 的log 目录。因为你是再 主机上虚拟出的几个 sheep,每一个sheep 都要有一个 log 目录,这是自然的啦。。。进入任意一个目录,就拿0/作比方吧,进去可以看到有这样几个文件,obj/ sheep.log epoch sock config 等文件。其中 obj 就是用来存放 数据块的 目录哦,如果你给你创建的vdi 写入了比较多的东西,那么这个目录下应该有很多文件,并且每一个 都是 4M。哈哈,不信你可以试一下。当然,要读系统debug 日志的话,打开 sheep.log 读就可以了。

sheep /tmp/sheepdog/4 -z 4 -p 7004 -c local -n -y 127.0.0.1 -d
# 当然,这是我从 test 目录下的脚本里偷出来的哈。。。
dog 是 sheepdog 中很重要的一个组成部分,它提供了一系列的系统命令。要分析整个系统的功能,我们当然可以从这里入手,顺藤摸瓜。。。好吧。开始吧。首先我们找到这个文件,会是谁呢,当然是 dog.c 啦,还能有谁啊,打开它啊,从哪里对呢,当然是从 main开始啊。开始看吧。

下面是 dog.c 的main函数部分。当然,有些内容我省略掉了。首先是这个 init_commands(&commands) 这个函数,我们需要注意下,我们跟进去,看看这个函数具体在干什么。

int main(int argc, char **argv)
{
	int ch, longindex, ret;
	unsigned long flags;
	struct option *long_options;
	const struct command *commands;
	const char *short_options;
	char *p;
	const struct sd_option *sd_opts;
	uint8_t sdhost[16];
	int sdport;
	install_crash_handler(crash_handler);

	init_commands(&commands);

	if (argc < 2)
		usage(commands, 0);

	flags = setup_commands(commands, argv[1], argv[2]);

	optind = 3;

	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值