mount 一個ipv6 nfs
項目在docker里mount 一個nfs來讀寫,而現在需要支持ipv6,所以先寫了各小demo,最后成功mount,這里記錄一下
#include <sys/mount.h>
#include <errno.h>
#include <stdio.h>
int main(){
const char* src = "[2001:db8:1::1]:/root/nfsshare/zone1";
const char* opt = "addr=2001:db8:1::1,clientaddr=2001:db8:1::242:ac11:3";
const char* des = "/mnt";
int ret = mount(src,des,"nfs4",0,opt);
if(ret != 0){
perror("mount");
}
}
說明:
- addr=2001:db8:1::1 是服務端地址
- clientaddr=2001:db8:1::242:ac11:3 是客戶端地址
解決思路
- 先確保了網絡連通,這里的server 地址實際是在主機中看到的docker0的地址,nfs server監聽在所有的地址上
- 在bash中使用mont 命令成功mount
- 使用strace 追蹤mount 命令,然后看到系統調用mount 的參數,也就是我們需要的參數了
- 使用到的strace 選項-f 追蹤子進程,-s 1024 顯示調用的字符串長度,默認長度比較短導致顯示不完整
