2009年12月23日星期三

IP地址子网掩码位数换算方法及解释子网掩码的作用

IP地址子网掩码:
子网位    /主机位         子网掩码           子网最大数       /主机最大数 
2         /22         /10 | 255.192.0.0           2           /4194302 
3         /21         /11 | 255.224.0.0           6           /2097150 
4         /20         /12 | 255.240.0.0           14          /1048574 
5         /19         /13 | 255.248.0.0           30          /524286 
6         /18         /14 | 255.252.0.0           62          /262142 
7         /17         /15 | 255.254.0.0           126         /131070 
8         /16         /16 | 255.255.0.0           254         /65536 
9         /15         /17 | 255.255.128.0         510         /32766 
10        /14         /18 | 255.255.192.0         1022        /16382 
11        /13         /19 | 255.255.224.0         2046        /8190 
12        /12         /20 | 255.255.240.0         4094        /4094 
13        /11         /21 | 255.255.248.0         8190        /2046 
14        /10         /22 | 255.255.252.0         16382       /1022 
15        /9          /23 | 255.255.254.0         32766       /510 
16        /8          /24 | 255.255.255.0         65536       /254 
17        /7          /25 | 255.255.255.128       131070      /126 
18        /6          /26 | 255.255.255.192       262142      /62 
19        /5          /27 | 255.255.255.224       524286      /30 
20        /4          /28 | 255.255.255.240       1048574     /14 
21        /3          /29 | 255.255.255.248       2097150     /6 
22        /2          /30 | 255.255.255.252       4194302     /2 


子网掩码的快速算法      

大家都应该知道2的0次方到10次方是多少把?也给大家说一下,分别是:
  1 2 4 8 16 32 64 128 256 512 1024。
  如果你希望每个子网中只有5个ip地址可以给机器用,那么你就最少需要准备给每个子网7个ip地址,因为需要加上两头的不可用的网络和广播ip,所以你需要选比7多的最近的那位,也就是8,就是说选每个子网8个ip。好,到这一步,你就可以算掩码了,这个方法就是:最后一位掩码就是256减去你每个子网所需要的ip地址的数量,那么这个例子就是256-8=248,那么算出这个,你就可以知道那些ip是不能用的了,看:0-7,8-15,16-23,24-31依此类推,写在上面的0、7、8、15、16、23、24、31(依此类推)都是不能用的,你应该用某两个数字之间的IP,那个就是一个子网可用的IP,怎么了?是不是不相信?太简单了。
  我再试验一下,就拿200台机器分成4个子网来做例子吧。
  200台机器,4个子网,那么就是每个子网50台机器,设定为192.168.10.0,C类的IP,大子网掩码应为255.255.255.0,对巴,但是我们要分子网,所以按照上面的,我们用32个IP一个子网内不够,应该每个子网用64个IP(其中 62位可用,足够了吧),然后用我的办法:子网掩码应该是256-64=192,那么总的子网掩码应该为:255.255.255.192。不相信?算算:0-63,64-127,128-191,192-255,这样你就可以把四个区域分别设定到四个子网的机器上了,是不是很简单?不需要软件算了吧。


/24就是255.255.255.0~子网掩码哦。

一个10进制的255~就是2进制的8个1

三个255.255.255`就是24个1~所以写24


比如我ip是:218.77.26.114/255.255.255.192应该怎么换算成缩略子网掩码方式  


255.255.255.192 换算成二进制:
11111111.11111111.11111111.11000000

前三组都是8bit, 第四组 192 -> 11000000 表示2bit (左起11) 用做subnet(子网)
那末这个子网掩码中共有8+8+8+2 = 26 bit 是用作网络标识。

结果:
218.77.26.144/255.255.255.192 => 218.77.26.144/26


--
Alex Tu
-----------------------------------------------------------
ShangHai,China

fssnap & ufsdump

昨天下班前在捣鼓关于如何使用更好的zone更快捷和方面,从目前已知的角度而言在
zoneadm -z test_zone export > test_zone.conf后会到出已经设置好的zone文件,那我们现在将这个文件导出之后,进行修改。

root@cnnjx026 # more cnnjx026z011.conf 
create -b
set zonepath=/local/zones/cnnjx026z011
set autoboot=true
set ip-type=shared
add fs
set dir=/app
set special=/app
set type=lofs
add options rw
add options nodevices
end
add fs
set dir=/env
set special=/env
set type=lofs
add options rw
add options nodevices
end
add fs
set dir=/var/home
set special=/var/home
set type=lofs
add options rw
add options nodevices
end
add net
set address=147.128.38.11/24
set physical=nxge0
set defrouter=147.128.38.1
end
add rctl
set name=zone.max-swap
add value (priv=privileged,limit=2147483648,action=deny)
end
add attr
set name=machine
set type=string
set value=sun4v
end
add dedicated-cpu
set ncpus=1
end
add capped-memory
set physical=2G
end

按照这个设置,只需要稍微改下里面的系统文件在run一下zonecfg -z 123 -f cnnjx026z011.conf 就能产生一个新的zone,然后就能换能up and running了。免去了大量配置的麻烦。

捣鼓完批量安装后,是捣鼓备份。 最近有位同事被开了,主要还是备份的原因,做IT还是得好好备份天天向上啊。
用fssnap创建snapshot的时候出现错误

# fssnap -F ufs -o bs=/snaps/usr.back.file /usr  snapshot error: Invalid backing file path
根据sun网站上的说法是因为使用了大分区,而不是对各个文件实现单独的文件系统分区,所以单独的创建snapshot备份是不行了。 那就只能用ufsdump来备份了


ufsdump相对来说比较便利,但是需要我去手动停掉需要备份的空间,会有些不利。之后用ufsresore.

bash-3.00# ufsdump 0f /var/zone.ufsdump /opt/zone/zone
  DUMP: Date of this level 0 dump: Wed Dec 23 11:27:20 2009
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/rdsk/c1t0d0s0 (ecnshpcnserv:/) to /var/zone.ufsdump.
  DUMP: Mapping (Pass I) [regular files]
  DUMP: Mapping (Pass II) [directories]
  DUMP: Writing 32 Kilobyte records
  DUMP: Estimated 6469068 blocks (3158.72MB).
  DUMP: Dumping (Pass III) [directories]
  DUMP: Dumping (Pass IV) [regular files]
  DUMP: 6422974 blocks (3136.22MB) on 1 volume at 9635 KB/sec
  DUMP: DUMP IS DONE

但是在ufsrestore的情况下就出现了点问题,主要是交互式的比较麻烦
bash-3.00# ufsrestore -xf /var/zone.ufsdump /opt/zone/zone
Warning: ./opt: File exists
You have not read any volumes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume #: 1

set owner/mode for '.'? [yn] set owner/mode for '.'? [yn] y
Directories already exist, set modes anyway? [yn] y

首先是不能恢复到原目录,只能恢复到另外的目录,还需要在研究下

--
Alex Tu
-----------------------------------------------------------
ShangHai,China

2009年12月17日星期四

Solaris Zone

闲来无事,开始折腾Solaris的机器,虚拟化一直是作为之后几年的首要卖点,当然啊了,从整体的应用角度而言,确实是这样。 越来越多的end-user开始自己安装或者通过老外的requirement开始进行zone的deploy,目前手上就遇到大概2个case. 而且在过一段时间,等ip address assignment结束,还有一个case也将开始使用zone.
早先在CSS team里其实接触过zone,但是更多的表现是已webzone的方式使用的,完全不知道是何物。今天初装,有半天领悟。
 
#zonecfg -z yourzonename
#zonecfg:yourzonename> create -b
set zonepath=/local/zones/yourzonename
set autoboot=true
add fs
set dir=/app  --->做这个之前确保是localdisk而不是nfs。
set special=/app
set type=lofs
add options rw
add options nodevices
end
add fs
set dir=/env
set special=/env
set type=lofs
add options rw
add options nodevices
end
add fs
set dir=/etc/home
set special=/etc/home
set type=lofs
add options rw
add options nodevices
end
add net
set address=137.58.166.216/24 --->确保你有IP,而非DHCP。netmask是跟着主机的netmask走的. 之后在里面设置会导致报错。
set physical=bge0
set defrouter=137.58.166.1 -->取保你的router是走的通的,跟主机保持一致。
end
add attr
set name=machine
set type=string
set value=sun4u
end
set
add capped-cpu --->cpu
set ncpus=1
add capped-memory -->memory
set physical=2048m
set swap=2048m
end
commit
exit
如果实在记不住,可以考虑使用help查看,而且每次set后也可以查看。
 
#/usr/sbin/zoneadm list -civ
ID NAME             STATUS     PATH                           BRAND   
IP   
  0 global           running    /                              native  
shared
  - yourzonename          configured /local/zones/yourzonename            native  
shared
#zoneadm -z yourzonename  install
#zoneadm -z yourzonename boot
#zlogin -C -z yourzonename -->这点很好重要,之前我有很多服务没起来,是因为忽视掉了这一步。用console登录后还有些配置,已经机器的完成启动。

--
Alex Tu
-----------------------------------------------------------
ShangHai,China