1.应该修改的rabin.h不是在安装目录下的,而是在/usr/local/include/sfs-0.6/rabin.h的这个,继续修改.因为sfs,gmp都是已经安装好了的,所以安装目录已经没有太大的用处了,那么...我做的链接sfs,gmp是不是也不对?
2.在运行simple/server时出现"Could not find my principal",于是在Node.cc中node的构造函数中加入以下内容,查看运行结果
118 //change by york 119 //printf("\nmy_address.s_addr: %256c",my_address.s_addr); 120 //printf("\na.sin_addr.s_addr: %256c",a.sin_addr.s_addr); 121 printf("addrs match: %i",(my_address.s_addr==a.sin_addr.s_addr)); 122 printf("\nnode_id: %i",node_id); 123 printf("\nreq_port: %i",req_port); 124 printf("\nport: %i",port); 125 //change by york
运行的结果显示是因为my_address.s_addr和my_address.s_addr的地址不匹配导致的,现要输出这两个地址,把Node.cc改成
118 //change by york 119 printf("\nmy_address.s_addr: %ld",my_address.s_addr); 120 printf("\na.sin_addr.s_addr: %ld",a.sin_addr.s_addr); 121 printf("addrs match: %i",(my_address.s_addr==a.sin_addr.s_addr)); 122 printf("\nnode_id: %i",node_id); 123 printf("\nreq_port: %i",req_port); 124 printf("\nport: %i",port); 125 //change by york
输出的结果为:
my_address.s_addr: 16777343 a.sin_addr.s_addr: 838904000 addrs match: 0 node_id: -1 req_port: 0 port: 3669
可见的确是地址读取不正确,而且了解到"127.0.0.1"对应16777343,所以bft是把这个地址读进去了,这是本地环回网络的地址
输出host_name之后发现host_name是匹配的,ip地址不匹配
hostent这个结构负责获取和主机名对应的ip地址,查看/etc/hosts发现这个文件中bft_rh只对应127.0.0.1,于是在这一行前面加上ip地址 bft_rh就可以了
3.做完后make,./server,出错
Unable to join group: Invalid argument
找到这一行是在Replica.cc中,的确是因为不能加入group,因为我只用了单机来处理,接下来应该开五台机器来运行
4.使用cp命令cp出余下4台虚拟机..这应该是个很烂的办法,然后一台一台修改配置
/etc/hosts;
利用netconfig修改ip地址;
/etc/sysconfig/network修改主机名;
ntsysv 可以取消sendmail选项
还需要在启动时为每台虚拟机指定mac地址
正常启动
5.启动5台虚拟机,并进入simple文件夹,执行"./server &"命令,在打印出进程号之后又是unable to join group