Wednesday, May 13, 2009

使用不同IP去mount NFS空间

NFS服务器是使用IP去区别哪些机器可以mount它export出来的空间的.

现在, 有这样的需要:

1. NFS服务器只export了一个指定的可用的IP, 不方便修改(Boss管的就是烦)

现在需要把此IP迁移到另一台服务器上. 此服务器已经存在一个可用IP

使用这个指定export IP有两种方法:
1. 使用独立的ethernet interface
2. 作为interface的一个别名(alias)

使用上面两种方法绑定IP后, 新的问题:
#mount -t nfs Source:/Path /Target
上面的命令是使用哪个IP的呢?

在不作任何配置前, mount是不会使用新的IP去通信的, 也就是说, mount时会出现:
deny Permission之类的Error

解决方式是修改route表, 强制数据的流向

现服务器默认的route表:

jessinio@pdc:/mnt/Share$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.20.239.0 * 255.255.254.0 U 0 0 0 eth0
localnet * 255.255.254.0 U 0 0 0 eth0
default 10.20.238.1 0.0.0.0 UG 100 0 0 eth0

增加记录:
$sudo route add -host 192.168.18.38 gw 10.20.238.1 dev eth1

其中, eth1就是指定export IP的网卡
192.168.18.38为NFS服务器

意思是说: 所有到192.168.18.38的数据包, 都使用eth1发送.

这是使用多一个网卡去完成的. 当使用同一个网卡时怎么处理?

# route add -host 192.168.18.38 gw 10.20.238.1 dev eth0:0

如上, 只是dev的参数成为了eth0:0(别名), 如下:


jessinio@pdc:/mnt/Share$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:10:5c:fc:66:42
inet addr:10.20.239.95 Bcast:10.20.239.255 Mask:255.255.254.0
inet6 addr: fe80::210:5cff:fefc:6642/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:18501 errors:0 dropped:0 overruns:0 frame:0
TX packets:13880 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2422289 (2.4 MB) TX bytes:2936218 (2.9 MB)

eth0:0 Link encap:Ethernet HWaddr 00:10:5c:fc:66:42
inet addr:10.20.239.194 Bcast:10.20.239.255 Mask:255.255.254.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.