-
spoolsv病毒
2008-07-02 12:28:43
是从网上复制过来的比较有水平的方法。
下面是关于病毒的一些资料:
启动项 c:/windows/system32/spoolsv/spoolsv.exe -printer
cfs2…… 相关文件、目录:
%System%\wmpdrm.dll
%System%\1116\
%System%\msicn\msibm.dll
%System%\msicn\ube.exe
%System%\msicn\plugins\
%System%\spoolsv\spoolsv.exe
%System%\spoolsv\spoolsv.exe,有一个启动项:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"spoolsv"="%System%\spoolsv\spoolsv.exe -printer"
运行后会调用%System%\msicn\msibm.dll,创建%System%\1116\目录,备份用。
%System%\1116\目录是备份目录,里面是%System%\wmpdrm.dll、%System%\msicn\和%System%\spoolsv\spoolsv.exe的备份。
%System%\msicn\msibm.dll,会插入多个指定进程,大约每4秒钟监视恢复文件(从%System%\1116\目录)和注册表信息(启动项、BHO):
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"spoolsv"
[HKEY_CLASSES_ROOT\CLSID\{0E674588-66B7-4E19-9D0E-2053B800F69F}\InprocServer32]
@="%System%\wmpdrm.dll"
注:"spoolsv"的数据不会被监视,所以修改它的数据也不会被恢复,只有删除"spoolsv"才会被恢复。
还可能会从远程服务器下载文件:
http: file://liveupdate.ourxin.com/secp.exe
secp.exe是个安装程序,安装以下文件:
%System%\wmpdrm.dll
%System%\msicn\ube.exe
%System%\msicn\plugins\(目录里4个dll文件)
%System%\wmpdrm.dll是一个BHO,%System%\msicn\ube.exe像是卸载程序。
另外,在%System%\和%System%\msicn\目录里还有有一些从远程下载来的cpz、vxd文件,比如:
ava.vxd
guid.vxd
plgset.vxd
safep.vxd
%System%\wmpdrm.dll作为BHO被调用后,会尝试调用%System%\spoolsv\spoolsv.exe和%System%\msicn\msibm.dll。
注:如果%System%\spoolsv\spoolsv.exe没有被运行或被调用,也就不会备份还原,好像它就是用来备份的。
另外……
在“开始菜单”>>“程序”里 可能 会有一项“NavAngel”,里面有个快捷方式NavAngel.lnk,指向:
%System%\spoolsv\spoolsv.exe -ctrlfun:4,3
“添加/删除程序”里有一项“NavAngel”,对应命令是:
%System%\spoolsv\spoolsv.exe -ctrlfun:4,2
还有一项“WinDirected 2.0”,对应命令是:
%System%\spoolsv\spoolsv.exe -uninst
还可能会有mscache\目录,从名字看像是存放临时缓存文件的。
BHO相关注册表信息:
[HKEY_CLASSES_ROOT\CLSID\{0E674588-66B7-4E19-9D0E-2053B800F69F}]
[HKEY_CLASSES_ROOT\wmpdrm.cfsbho]
[HKEY_CLASSES_ROOT\wmpdrm.cfsbho.1]
[HKEY_CLASSES_ROOT\TypeLib\{8B200623-3FC5-4493-8B49-DC2AD4830AF4}]
[HKEY_CLASSES_ROOT\Interface\{4A775183-9517-420E-9A13-D3DA47BB8A84}].
spoolsv.exe和windows的打印服务spoolsv.exe很类似,不要被它迷惑了,打印服务spoolsv.exe的目录是系统文件夹(以XP为例)system32\spoolsv.exe而此病毒的路径为system32\spoolsv\sploosv.exe
根据病毒信息提供偶得查杀方法:
1。进入系统目录system32删除文件夹spoolsv和miscn以及1116
2。开始菜单运行regedit打开注册表编辑器,找到
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"spoolsv"="%System%\spoolsv\spoolsv.exe -printer" 删除该项
3。在注册表编辑器中打开下面的分支并使用组合键ctrl+f进行查找如下内容:
[HKEY_CLASSES_ROOT\CLSID\{0E674588-66B7-4E19-9D0E-2053B800F69F}
[HKEY_CLASSES_ROOT\wmpdrm.cfsbho
[HKEY_CLASSES_ROOT\wmpdrm.cfsbho.1
[HKEY_CLASSES_ROOT\TypeLib\{8B200623-3FC5-4493-8B49-DC2AD4830AF4}
[HKEY_CLASSES_ROOT\Interface\{4A775183-9517-420E-9A13-D3DA47BB8A84}
找到以后进行删除 -
RAR注册文件代码
2007-09-12 12:42:30
RAR registration data
Alexander Aymanov
Single PC usage license
UID=dc1d9fdb26f9be064d83
64122122504d83d04ee243231738b88600fb267f1d3b9632421295
d1048b98780395138be06035c6ab9048e2c5c62f0238f183d28519
aa87488bf38f5b634cf28190bdf438ac593b1857cdb55a7fcb0eb0
c3e4c2736090b3dfa45384e08e9de05c58609e0915bfdc561003a6
755c95e82155892c0f36e7ff4b3d62f55230e8ad51b6756d092d0b
89e5c480d3449cc0c7d9ab1d3d4abb32baf07ebabe0e145e608494
e628198aaef1e665f9d63f719cb57ef19f3443f31a830478060233
将以上代码COPY到文本文档,将文件名改为RARREG.KEY即可... -
Windows 2003 Server 网络负载均衡
2007-06-04 18:12:34
一、设置Windows 网络负载均衡(Load Balance)以本地 Administrators 组成员身份登录计算机才能完成此过程。
1.在前端网络接口卡 (NIC) 上设置静态 IP。要这样做,请执行下列操作:
1.1.单击“开始”,指向“控制面板”,再单击“网络连接”。1.2.用鼠标右键单击“前端 NIC”,再单击“属性”。
1.3.在“此连接使用下列选定的组件”区域中,选中“Internet 协议 (TCP/IP)”复选框。
1.4.单击“属性”。
1.5.选中“使用下列 IP 地址”。
1.5.1.在“IP 地址”框中,键入分配的前端静态 IP: 100.100.100.150。1.5.2.如果需要,在“子网掩码”框中,键入分配的前端子网掩码:255.255.255.0。
1.5.3.如果需要,在“默认网关”框中,键入分配的前端网关:100.100.100.243。
1.6.选中“使用下列 DNS 服务器地址”。
1.7.在“首选 DNS 服务器”和“备用 DNS 服务器”框中,键入适当的 IP:100.100.100.6和100.100.100.7。
1.8.单击“高级”。
1.9.在“IP 设置”选项卡上的“IP 地址”节中,单击“添加”。
1.10.在“IP 地址”框中,键入虚拟 IP 地址:100.100.100.201。
1.11.在“子网掩码”框中,键入子网掩码:255.255.255.0。
1.12.单击“添加”,再单击“确定”。
注释:虚拟 IP 地址是负载平衡的IP 地址,它是指向服务器场的条目。
2.“LAN 连接属性”对话框上的“此连接使用下列选定的组件”区域中,选中“网络负载平衡”复选框。
3.单击“属性”。
4.在“群集参数”选项卡上,执行下列操作:
4.1.在“IP 地址”框中,键入群集 IP :100.100.100.201。
群集 IP 是虚拟 IP 地址,它是指向服务器场的条目。
需要将此 IP 地址映射到 DNS 项,以便可以在 Microsoft Internet Explorer 中键入群集名称,而不用键入 IP 地址。
4.2.在“子网掩码”框中,键入子网掩码:255.255.255.0。
将 IPCONFIG /ALL 报告的此 NIC 的子网掩码用于此 NIC。4.3.在“完整 Internet 名”框中,键入 DNS 名称:ams.dtsjy.cn。
注释:如果使用了 Microsoft Windows Internet 名称服务 (WINS) 解析,请输入 WINS 名称,无需输入域扩展
例如,应输入 server_farm 而不是 server_farm.organization.com。4.4.在“群集操作”节中,单击“单播”(默认选项)。
4.5.保留“允许远程控制”复选框为其默认设置(清除)。
5.在“主机参数”选项卡上,执行下列操作:
5.1.在“优先级”框中,对第一台前端 Web 和搜索服务器输入 1,对第二台前端 Web 和搜索服务器输入 2。
5.2.在“专用 IP 配置”区域的“IP 地址”框中,键入初始分配给此前端 NIC 的地址:100.100.100.150。
注释:要为前端 NIC 分配两个 IP 地址。5.3.在“子网掩码”框中,键入初始分配给此前端 NIC 的子网掩码:255.255.255.0。
5.4.请勿更改“初始主机状态”节中的任何设置。
6.在“端口规则”选项卡上,单击“编辑”。
7.在“筛选模式”节中,单击“多个主机”。
8.在“关系”组中,单击“无”;负载量选择“相等”或输入负载的比例(百分比),可按照“二八”比例分配负载量。9.单击“确定”,然后再次单击“确定”。
注释:如果显示一个对话框,提示您必须在 TCP/IP 组件中输入新地址,则说明您没有完成之前的所有步骤。请单击“确定”,然后在继续操作之前执行下列步骤:
9.1.在前端 NIC 的“属性”对话框的“常规”选项卡上,单击“Internet 协议 (TCP/IP)”,再单击“属性”。
9.2.单击“高级”。
9.3.在“IP 设置”选项卡上的“IP 地址”节中,单击“添加”。
9.4.在“IP 地址”框中,键入虚拟 IP 地址:100.100.100.201。
9.5.在“子网掩码”框中,键入子网掩码: 255.255.255.0。
9.6.单击“添加”,再单击“确定”。
10.重新启动服务器。
11.在所有前端 Web 和搜索服务器上重复前面的步骤。请确保更改每一台服务器的优先级设置,使其唯一。
12.测试网络负载平衡:
12.1.打开命令提示符,然后从服务器场之外的客户端计算机 ping 服务器场的虚拟名称。
例如,如果 server_farm 是输入的完整 Internet 名,或者使用了 WINS,则应该键入 ping server_farm。
在本示例中 Server_farm 是虚拟服务器场名称。
12.2.请确认是否收到答复。
如果未收到答复,请使用服务器场的虚拟 IP 地址 ping 服务器场。虚拟 IP 地址是在前面的步骤中指定的群集 IP 地址。
如果未收到答复,请与负责 DNS/WINS、路由和静态 IP 支持的网络操作联系人联系。
12.3.键入 ping virtual_server_farm_name -t。
此命令将执行连续的 ping 操作。
12.4.在第一台前端 Web 和搜索服务器上执行下列操作:
12.4.0. 在任务栏上,单击“开始”,指向“控制面板”,再指向“网络连接”,然后单击与网络负载平衡相关的 NIC 的“本地连接”。
12.4.1. 在“常规”选项卡上,单击“禁用”。12.5.在第二台前端 Web 和搜索服务器上执行下列操作:
12.5.0. 在任务栏上,单击“开始”,指向“控制面板”,再指向“网络连接”,然后单击与网络负载平衡相关的 NIC 的“本地连接”。
12.5.1. 在“常规”选项卡上,单击“禁用”。
12.6.在连续 ping 服务器场的虚拟名称的客户端计算机上,应该会出现一条消息,说明请求超时。
12.7.在第一台前端 Web 和搜索服务器的任务栏上,单击“开始”,指向“控制面板”,再指向“网络连接”。
然后用鼠标右键单击与网络负载平衡相关的 NIC 的“本地连接”,再单击“启用”。
12.8.在连续 ping 服务器场的虚拟名称的客户端计算机上,应该会在 10 秒钟内显示对 ping 的答复。
如果未显示答复,请确认网络负载平衡配置和网络配置是否正确。
12.9.在第一台前端 Web 和搜索服务器上执行下列操作:
12.9.0.在任务栏上,单击“开始”,指向“控制面板”,再指向“网络连接”,然后单击与网络负载平衡相关的 NIC 的“本地连接”。
12.9.1.在“常规”选项卡上,单击“禁用”。
12.10.在连续 ping 服务器场的虚拟名称的客户端计算机上,应该会出现一条消息,说明请求超时。
12.11.在第二台前端 Web 和搜索服务器的任务栏上,单击“开始”,指向“控制面板”,再指向“网络连接”。
然后用鼠标右键单击与网络负载平衡相关的 NIC 的“本地连接”,再单击“启用”。
12.12.在连续 ping 服务器场的虚拟名称的客户端计算机上,应该会在 10 秒钟内显示对 ping 的答复。
如果未显示答复,请确认网络负载平衡配置和网络配置是否正确。
12.13.在第二台前端 Web 和搜索服务器上执行下列操作:
12.13.0.在任务栏上,单击“开始”,指向“控制面板”,再指向“网络连接”,然后单击与网络负载平衡相关的 NIC 的“本地连接”。
12.13.1.在“常规”选项卡上,单击“禁用”。
12.14.在连续 ping 服务器场的虚拟名称的客户端计算机上,应该会出现一条消息,说明请求超时。
12.15.在第一台前端 Web 和搜索服务器的任务栏上,单击“开始”,指向“控制面板”,再指向“网络连接”。
然后用鼠标右键单击与网络负载平衡相关的 NIC 的“本地连接”,再单击“启用”。
12.16.在第二台前端 Web 和搜索服务器的任务栏上,单击“开始”,指向“控制面板”,再指向“网络连接”。
然后用鼠标右键单击与网络负载平衡相关的 NIC 的“本地连接”,再单击“启用”。
12.17.在连续 ping 服务器场的虚拟名称的客户端计算机上,按下 Ctrl+C 中断 ping 循环。
二、设置DNS设置DNS服务,域名:ams.dtsjy.cn,解析为对应的虚拟 IP :100.100.100.201 。
三、设置服务心跳(HeartBaet)设置IP和掩码即可。
Web服务心跳之一
IP:192.168.10.1
掩码: 255.255.255.0Web服务心跳之二
IP:192.168.10.2
掩码: 255.255.255.0 -
DNS学习笔记
2007-05-31 19:09:17
DNS学习笔记
DNS机构图
首选DNS应该为本机地址
IPCONFIG /FLUSHDNS 清楚本地DNS缓存
IPCONFIG /REGISTERDNS 初始化计算机配置DNS名和IP地址的手工动态注册
DNS4004错误 将DNS区域都改为标准主要区域可以解决赶问题
IPCONFIG /RENEW 更新所有适配器的DHCP配置,仅配置为AUTOGET计算机可用
当WIN2003服务器上的DNS的“根目录提示”选项呈灰色不可选状态时,是因为win2003活动目录在安装DNS的时候会自动新建一个DNS的根域名。当DNS进行解析时DNS会认为自己就是根域名而不对公网上的根域进行解析。如果想解决该问题。只需要到DNS服务器管理控制中将“.”根域删除即可。
DNS解析流程图示:
如果DNS服务器中设有SRV记录,那么有可能会导致客户端不能加入/登陆到域中去,SRV能帮助查找谁是域中的DC
最好在安装DC活动目录时将DNS装上,这样SRV记录就会出现在DNS服务器中。如选择安装AD后再装DNS,而没有SRV记录。可以在DNS管理控制器上添加
1、 建立域名下的集成区域(AD集成区域)
2、 在网卡DNS指向本地地址
3、重启NETLOGON服务
加入AD集成区域的好处在于在DC活动目录之间复制时,会将各DC上的DNS数据一并复制.
加快DNS查询速度
在HOSTS文件中(C:\WINDOWS\system32\drivers\etc\host)加入常用的IP与域名对应,该文档没有后缀名。可以用文本文档编辑。
例如:
102.54.94.97 rhino.acme.com # source server
IP地址 网站域名 注释
-
项目部署
2007-05-31 16:23:26
总结一下,写的比较乱
启动过程(INITIATING)
明确目标、获得授权和经费
获得公司执行计划的授权,明确你执行计划时使用的权限,那些人在做什么的时候要服从你的安排,完全贯穿你的指令。你可以做什么
你在执行计划的时候你有多少钱、需要多少钱、你的钱从那里来。必须文档化。
计划过程(PLANING)
指定项目计划、决定范围、时间安排和成本
从那里开始,具体的细节。分析需要多少的时间。
明确项目团队、沟通计划、风险管理和采购管理的流程
招兵买马, 什么样的信息,要给什么知道,适当的传达。
执行过程(EXECUTING)
按计划执行
及时的沟通
进行团队培养和后续运营流程的设计
帐号怎么做,维护,灾难恢复应该怎么做。都应该有一个具体的技术文档来清楚的列出来。后续的维护管理人员在维护管理的时候就需要这个文档来指导工作
控制过程(CONTROLLING)
进度、成本和项目实施质量的监控
(项目经理的职责)
监控项目是不是按计划完成,是否有偏离原订计划,如果偏离了原订计划。那就需要分析,是否进度不够(进度),还是钱化的太多了(成本)。还是质量不到位,譬如说:我系统装好了,但一天老出问题。那
就跟项目实施的质量有关了。
风险监控
必要时中断项目的执行来采取修补措施
当项目进行中的时候发现项目跟原订计划出现太大的差异,那就需要中断现行计划进度,分析实施时问题所出现的问题所在,并解决问题。
结束过程(CLOSING)
算总帐
成本是不是满足总体的要求,给公司管理层一个交代。
钱话了多少,达到什么结果。是否满足之前计划的目标
以上每个过程并不是简单的流程化的,而是可以重叠的。比如说,我可以在启动的过程中我也开始执行该计划的实施。
作为项目经理应该知道或者做的一些事情
1、充分了解公司的组织结构和财务规定
一,集团公司
二,合资公司
三,物理办公室和逻辑组织结构的重叠 -
如何计算磁盘 I/O 要求
2007-05-23 20:27:29
图表里的字显示不出来的,可以用CTRL+A全选黎显示出黎...BLOG入边既文字颜色调唔到...
既然了解了哪些 Exchange 活动和组件会生成磁盘 I/O 以及如何配置存储来支持它们,那么,您必须为用户计算磁盘 I/O 要求。计算磁盘 I/O 要求最终将允许您优化磁盘子系统,以便为用户提供最佳支持。
您的目标是提供实现高效的 Exchange 功能所需的足够高的磁盘 I/O 性能(按每秒可以执行的 I/O 操作数 [IOPS] 进行度量),延迟应该在可接受的范围之内。
计算每个邮箱的 IOPS 是基于随机数据库读/写 I/O(该公式不考虑事务日志 I/O)来度量特定服务器的配置文件的一种简洁的方式。每个邮箱的 IOPS 越高,邮箱配置文件在磁盘使用方面的效率就越高。
有两种方式可以计算磁盘 I/O 要求:
- 基于理论数据确定用户需求
- 通过使用“性能”控制台 (Perfmon) 来计算用户活动
不管采用哪种方式,都应基于高峰使用时段进行规划和计算。在很多公司中,高峰使用时段发生在刚开始上班的那段时间,人们在这时到达办公室并检查他们的电子邮件。
使用理论数据计算 I/O
如果没有安装 Exchange,但想规划一下由于 Exchange 部署而产生的即将到来的存储需要,则可以使用已经收集到的数据。该数据采用邮箱配置文件的形式,邮箱配置文件描述了 Exchange 邮箱的常规使用模式。
下表列出了可以作为 Exchange 邮箱服务器容量规划的准则使用的邮箱配置文件。这些配置文件代表了组织中“平均用户”的 Outlook(或基于 MAPI 的)客户端的邮箱访问情况。
用户配置文件和相应的使用模式
用户类型 数据库卷 IOPS 每天的发送/接收量 邮箱大小 轻量级
.5
发送 20 次/接收 50 次
50 MB
平均级
.75
发送 30 次/接收 75 次
100 MB
重量级
1.0
发送 40 次/接收 100 次
200 MB
大型
1.5
发送 60 次/接收 150 次
500 MB
每个配置文件代表 Jet 数据库的总计 I/O,并且不包括与事务日志文件活动相关的 I/O。为了准确地计算磁盘子系统负载,必须将该数据库 I/O 拆分为读取 I/O 和写入 I/O,因为写入操作比读取操作更耗费 I/O 资源。
为了有助于估计自己的读/写比率,请考虑具有重量级邮箱配置文件的公司的使用模式。在生产环境中,预计公司的读/写比率会达到 75%/25% 到 66%/33% 之间,具体情况还要看所评估的用户组。
对于由 2,000 个重负载邮箱所组成的邮件系统,将在数据库卷上产生总计 1,500 IOPS。其计算公式是:
用户类型对应的预计每个用户 IOPS × 用户数
在此示例中,.75 IOPS × 2,000 邮箱 = 1,500 IOPS。
使用每次写入对应两次读取的保守比率值(66% 读取对应 33% 写入),计划数据库卷每秒产生 1,000 次读取 I/O 请求和 500 次写入 I/O 请求。每个写入请求首先写入事务日志文件,然后写入数据库。在数据库卷上出现的总计 1,500 IOPS 中,大约 10% 将出现在事务日志卷上(1,500 的 10% 是 150 IOPS);500 次写入 I/O 请求将写入数据库。
这些估计的配置文件针对的是除基本操作系统以外没有安装其他组件的 Exchange 服务器。如果有其他变化,例如,在高峰使用时段使用第三方个人信息管理 (PIM) 软件、基于 MAPI 的病毒扫描(服务器和客户端)、管理和监视软件或者备份软件,那么,这些配置文件将不足以体现组织中的 I/O 配置文件。这些情况下,还必须考虑这些应用程序所请求的其他读取和写入操作。
基于邮箱计数的数据库 IOPS
每 1000 个邮箱的数据库 IOPS
邮箱 数据库卷 IOPS IOPS 实际 IOPS 1000
1.0
1000
1000
2000
1.0
2000
2500
3000
1.0
3000
3750
4000
1.0
4000
5000
在 Exchange Server 上增加具有相似配置文件的用户数时,更多用户必须竞争使用数据库缓存,这将导致数据库磁盘传输的增加。
例如:
1.0 IOPS 的 1000 个邮箱将在数据库逻辑单元号 (LUN) 上产生 1000 IOPS。如果具有相同配置文件的用户数翻倍到 2000,则公式是:1.0 IOPS x 2000 邮箱 x 1.25 = 2500 IOPS。
基于数据库计数的数据库 IOPS
数据库 IOPS 系数 实际 IOPS 1
0%
1000
2
2%
1020
4
6%
1060
8
14%
1140
10
18%
1180
20
38%
1380
在 Exchange 服务器中添加数据库会减少单实例存储的好处。影响的程度取决于用户配置文件和平均邮件大小。例如,如果在 1 个数据库上有 1000 个用户,这会消耗 1000 数据库 IOPS,如果将这些用户分散到 10 个数据库,则会使消耗的数据库 IOPS 增加 18%,即 1180 IOPS。如果有人向 20 个邮箱发送 10 MB PowerPoint 文件作为附件的邮件,那么这些邮件将全部驻留在同一个数据库中,只有 10 MB 会写入数据库。如果相同的 20 个收件人在不同数据库上,则必须将 200 MB 写入磁盘;写入活动增加到二十倍。此数据基于 MMB3 测试,该测试使用大容量的通讯组列表和较重的公司配置文件。
用户类型 Outlook 缓存模式 Outlook 联机模式 收件箱大小 公司
1.0 IOPS
1.0 IOPS
10,000 个项目 – 500MB
大型
1.0 IOPS
1.25 IOPS
20,000 个项目 – 1Gb
巨大
1.0 IOPS
1.75 IOPS
40,000 个项目 – 2GB
使用 Outlook 缓存模式,可以让很多常见的磁盘操作密集任务在客户端上执行。在 Outlook 缓存模式下的初始完整同步是磁盘操作密集活动,但它很少执行。使用 Outlook 联机模式,则会在服务器上执行搜索和排序。在完成初始索引创建之后,它将随着接收邮件而自动更新。有异常大量索引的用户可以超过此限制,这会导致重新创建某些索引。某些 Outlook 插件和外部应用程序会创建索引,并导致物理磁盘压力增加。从 500 MB 移动到 1 GB 时,数据库的物理磁盘开销将增加大约 25%,而从 1 GB 更改到 2 GB 则会使数据库物理磁盘开销增加大约 40%。
使用实际环境数据计算 I/O
如果已经部署 Exchange,则应使用现有的生产环境来确定 I/O 要求。监视生产环境的好处是,您的数据可以包括所有应用程序(包括第三方应用程序)上发生的所有 I/O。
在计算每个邮箱的 IOPS 时,应使用该服务器上当前的邮箱数。如果服务器中包含许多不使用的邮箱,或者正在运行的其他应用程序在两个小时的高峰时段内不会增加许多负载,则计算结果可能无法代表典型的用户负载。应选择一台具有典型用户邮箱的服务器来进行度量,或者在计算中不考虑那些不使用的邮箱。
请注意,星期几不同,使用负载也会略有不同。因为这种情况变化幅度很大,因此应该在较长的一段时间内监视环境(理想情况下是一个月),以便确定什么时候可能会遇到高峰。
有关如何使用在 Exchange 生产环境中收集的数据来计算存储 I/O 要求的详细步骤,请参阅如何使用环境数据计算存储 I/O 要求。
每个邮箱的此 IOPS 值是您将在操作系统级别遇到的值。如果有适当的硬件 RAID 解决方案,那么在磁盘级别还存在无法用 Perfmon 度量的不同 IOPS 数。RAID-5 中存在的限制与 RAID-1+0 中存在的限制有所不同。有关计算每种类型 RAID 解决方案的 IOPS 的详细信息,请参阅 Disk Subsystem Performance Analysis for Windows(英文)。
在计算每个邮箱值的 IOPS 后,可以优化现有的存储体系结构。
- 基于理论数据确定用户需求
-
IOPS
2007-05-23 19:53:53
Example
"i need 800 I/O Per sec (70% read)"
RAID 0
800 DISK I/O
140 I/O PER DISK NEED 6 DISKS
RAID 1
800*0.7+4*(800*(1-0.7))=1040=8disks
RAID 5
800*O.7+4*(800*(1-0.7))=1520=11disks
-
Exchang2003学习笔记
2007-05-23 13:09:07
Exchang2003服务器硬件要求
CPU:建议采用64位处理器,虽然现在并不是很多基于64位的软件.但是64位是以后发展的趋势.而且现在选择了64位处理器的计算机,现在也一样可以运行32位的应用程序.个人觉得AMD的64位处理器不错...它CPU里面集成了内存控制器。具有先进的内存管理技术....装载一些大型的应用程序时负载能力大大提升!
主板:采用工业标准主板.
内存:建议采用至少1G以上的ECC的内存..因为一般的Exchange2003后端STORE SERVER角色和OWA都是在同一部SERVER上..这样对数据的校验就显得比较重要起来了。..
硬盘:砸锅卖铁也要上RAID,拒绝IDE,SATA.......尽量使用SCSI RAID(磁盘阵列)
选择服务器需要对服务器的平均无故障率有一个比较深刻的了解.因为服务器是24*7运行的.有时侯将服务器配置好了就拔掉显示器,鼠标,键盘,光驱等外设.然后将服务器放到托管机房.没什么问题的话就这样运行好几年.
还有一个比较重要的就是IOPS I/O PER SEC 这是对硬盘需求的一个比较重要的指标!
远程控制卡,当SERVER因故障不能启动是,而技术人员又不可以即时到场维护,这时就可以使用预先安装的RCC,一般的RCC都采用WEB的访问方式将当前主机的屏幕显示回显给用户.因为RCC是独立于主机的,所以主机有任何问题也不会影响RCC的运作,一般RCC都会配置独立的网络接口,用于远程控制.
网卡:TOE TCP/IP负载引擎,普通网卡接收到网络的数据包,一般都是由操作系统进行软解码,而带有TOE技术的网卡会首先使用网卡内部的CPU芯片进行解码,再将分析出来的数据提交到操作系统.这样就大大减少了操作系统的作业,特别在网络流量大的时候,普通网卡容易出现死机.那是因为CPU运算能力跟不上需要运算的数据流量.
TEAMING 一般具有TEAMING技术的网卡都会用两个或以上的接口,teaming可以利用两个端口使得网卡的速率提升一倍.
-
端口扫描程序nmap使用手册
2007-05-22 14:41:06
nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。
nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口影射),碎片扫描,以及灵活的目标和端口设定。
nmap运行通常会得到被扫描主机端口的列表。nmap总会给出well known端口的服务名(如果可能)、端口号、状态和协议等信息。
每个端口的状态有:open、filtered、unfiltered。
1.open状态意味着目标主机能够在这个端口使用accept()系统调用接受连接。
2.filtered状态表示:防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止nmap探测其是否打开。
3.unfiltered表示:这个端口关闭,并且没有防火墙/包过滤软件来隔离nmap的探测企图。
通常情况下,端口的状态基本都是unfiltered状态,只有在大多数被扫描的端口处于filtered状态下,才会显示处于unfiltered状态的端口。功能选项
-sT
TCP connect()扫描:这是最基本的TCP扫描方式。connect()是一种系统调用,由操作系统提供,用来打开一个连接。如果目标端口有程序监听, connect()就会成功返回,否则这个端口是不可达的。这项技术最大的优点是,你勿需root权限。任何UNIX用户都可以自由使用这个系统调用。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。-sS
TCP同步扫描(TCP SYN):因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。你可以发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接,这实际上有我们的操作系统内核自动完成的。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。-sF -sF -sN
秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式:即使SYN扫描都无法确定的情况下使用。一些防火墙和包过滤软件能够对发送到被限制端口的SYN数据包进行监视,而且有些程序比如synlogger和courtney能够检测那些扫描。这些高级的扫描方式可以逃过这些干扰。-sP
ping扫描:有时你只是想知道此时网络上哪些主机正在运行。通过向你指定的网络内的每个IP地址发送ICMP echo请求数据包,nmap就可以完成这项任务。如果主机正在运行就会作出响应。不幸的是,一些站点例如:microsoft.com阻塞ICMP echo请求数据包。然而,在默认的情况下nmap也能够向80端口发送TCP ack包,如果你收到一个RST包,就表示主机正在运行。nmap使用的第三种技术是:发送一个SYN包,然后等待一个RST或者SYN/ACK包。对于非root用户,nmap使用connect()方法。
注意,nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。如果你只是想知道目标主机是否运行,而不想进行其它扫描,才会用到这个选项。-sU
UDP扫描:如果你想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以使用这种扫描方法。
-sA
ACK扫描:这项高级的扫描方法通常用来穿过防火墙的规则集。通常情况下,这有助于确定一个防火墙是功能比较完善的或者是一个简单的包过滤程序,只是阻塞进入的SYN包。这种扫描是向特定的端口发送ACK包(使用随机的应答/序列号)。如果返回一个RST包,这个端口就标记为unfiltered 状态。如果什么都没有返回,或者返回一个不可达ICMP消息,这个端口就归入filtered类。注意,nmap通常不输出unfiltered的端口,所以在输出中通常不显示所有被探测的端口。显然,这种扫描方式不能找出处于打开状态的端口。-sW
对滑动窗口的扫描:这项高级扫描技术非常类似于ACK扫描,除了它有时可以检测到处于打开状态的端口,因为滑动窗口的大小是不规则的,有些操作系统可以报告其大小。这些系统至少包括:某些版本的AIX、Amiga、BeOS、BSDI、Cray、Tru64 UNIX、DG/UX、OpenVMS、Digital UNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS 4.x、Ultrix、VAX、VXWORKS。从nmap-hackers邮件3列表的文档中可以得到完整的列表。-sR
RPC扫描:这种方法和nmap的其它不同的端口扫描方法结合使用。选择所有处于打开状态的端口向它们发出SunRPC程序的NULL命令,以确定它们是否是RPC端口,如果是,就确定是哪种软件及其版本号。因此你能够获得防火墙的一些信息。诱饵扫描现在还不能和RPC扫描结合使用。-b
FTP反弹攻击(bounce attack):FTP协议(RFC 959)有一个很有意思的特征,它支持代理FTP连接。也就是说,我能够从evil.com连接到FTP服务器target.com,并且可以要求这台 FTP服务器为自己发送Internet上任何地方的文件!传递给-b功能选项的参数是你要作为代理的FTP服务器。
语法格式为:-b uname:password@server:port。通用选项,这些内容不是必需的,但是很有用。
-P0
在扫描之前,不必ping主机。有些网络的防火墙不允许ICMP echo请求穿过,使用这个选项可以对这些网络进行扫描。microsoft.com就是一个例子,因此在扫描这个站点时,你应该一直使用-P0或者-PT 80选项。-PT
扫描之前,使用TCP ping确定哪些主机正在运行。nmap不是通过发送ICMP echo请求包然后等待响应来实现这种功能,而是向目标网络(或者单一主机)发出TCP ACK包然后等待回应。如果主机正在运行就会返回RST包。只有在目标网络/主机阻塞了ping包,而仍旧允许你对其进行扫描时,这个选项才有效。-PS
对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。如果主机正在运行就返回一个RST包(或者一个SYN/ACK包)。-PI
设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。使用这个选项让nmap发现正在运行的主机的同时,nmap也会对你的直接子网广播地址进行观察。直接子网广播地址一些外部可达的IP地址,把外部的包转换为一个内向的IP广播包,向一个计算机子网发送。这些IP广播包应该删除,因为会造成拒绝服务攻击(例如 smurf)。-PB
这是默认的ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。-O
这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志。换句话说,nmap使用一些技术检测目标主机操作系统网络协议栈的特征。nmap使用这些信息建立远程主机的指纹特征,把它和已知的操作系统指纹特征数据库做比较,就可以知道目标主机操作系统的类型。-I
这个选项打开nmap的反向标志扫描功能。
-f
这个选项使nmap使用碎片IP数据包发送SYN、FIN、XMAS、NULL。使用碎片数据包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。不过,要慎重使用这个选项!虽然包过滤器和防火墙不能防这种方法,但是有很多网络出于性能上的考虑,禁止数据包的分片。注意这个选项不能在所有的平台上使用。它在Linux、FreeBSD、OpenBSD以及其它一些UNIX系统能够很好工作。-v
冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。使用这个选项,你可以得到事半功倍的效果。使用-d选项可以得到更加详细的信息。-h
快速参考选项。-oN
把扫描结果重定向到一个可读的文件logfilename中。-resume
某个网络扫描可能由于control-C或者网络损失等原因被中断,使用这个选项可以使扫描接着以前的扫描进行。logfilename是被取消扫描的日志文件,它必须是可读形式或者机器可以解析的形式。而且接着进行的扫描不能增加新的选项,只能使用与被中断的扫描相同的选项。nmap会接着日志文件中的最后一次成功扫描进行新的扫描。-iL
从inputfilename文件中读取扫描的目标。在这个文件中要有一个主机或者网络的列表,由空格键、制表键或者回车键作为分割符。如果使用-iL,nmap就会从标准输入stdin读取主机名字。你可以从指定目标一节得到更加详细的信息。-iR
让nmap自己随机挑选主机进行扫描。-p <端口范围>
这个选项让你选择要进行扫描的端口号的范围。例如,-p 23表示:只扫描目标主机的23号端口。-p 20-30,139,60000-表示:扫描20到30号端口,139号端口以及所有大于60000的端口。在默认情况下,nmap扫描从1到1024号以及nmap-services文件(如果使用RPM软件包,一般在/usr/share/nmap/目录中)中定义的端口列表。-F
快速扫描模式,只扫描在nmap-services文件中列出的端口。显然比扫描所有65535个端口要快。-D
使用诱饵扫描方法对目标网络/主机进行扫描。如果nmap使用这种方法对目标网络进行扫描,那么从目标主机/网络的角度来看,扫描就象从其它主机 (decoy1,等)发出的。从而,即使目标主机的IDS(入侵检测系统)对端口扫描发出报警,它们也不可能知道哪个是真正发起扫描的地址,哪个是无辜的。这种扫描方法可以有效地对付例如路由跟踪、response-dropping等积极的防御机制,能够很好地隐藏你的IP地址。每个诱饵主机名使用逗号分割开,你也可以使用ME选项,它代表你自己的主机,和诱饵主机名混杂在一起。如果你把ME放在第六或者更靠后的位置,
一些端口扫描检测软件几乎根本不会显示你的IP地址。如果你不使用ME选项,nmap会把你的IP地址随机夹杂在诱饵主机之中。
注意:你用来作为诱饵的主机应该正在运行或者你只是偶尔向目标发送SYN数据包。很显然,如果在网络上只有一台主机运行,目标将很轻松就会确定是哪台主机进行的扫描。或许,你还要直接使用诱饵的IP地址而不是其域名,这样诱饵网络的域名服务器的日志上就不会留下关于你的记录。
-S <IP_Address>
在一些情况下,nmap可能无法确定你的源地址(nmap会告诉你)。在这种情况下,可以使用这个选项给出你的IP地址。在欺骗扫描时,也使用这个选项。使用这个选项可以让目标认为是其它的主机对自己进行扫描。-e
告诉nmap使用哪个接口发送和接受数据包。nmap能够自动对此接口进行检测,如果无效就会告诉你。-g
设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端口为DNS(53)或者FTP-DATA(20)的包通过和实现连接。显然,如果攻击者把源端口修改为20或者53,就可以摧毁防火墙的防护。在使用UDP扫描时,先使用53号端口;使用TCP扫描时,先使用20号端口。注意只有在能够使用这个端口进行扫描时,nmap才会使用这个端口。例如,如果你无法进行TCP扫描,nmap会自动改变源端口,即使你使用了-g选项。
-r
告诉nmap不要打乱被扫描端口的顺序。-M
设置进行TCP connect()扫描时,最多使用多少个套接字进行并行的扫描。使用这个选项可以降低扫描速度,避免远程目标宕机。适时选项
使用下面这些选项,可以控制nmap的扫描timing:
-T
设置nmap的适时策略。
Paranoid:为了避开IDS的检测使扫描速度极慢,nmap串行所有的扫描,每隔至少5分钟发送一个包;
Sneaky:也差不多,只是数据包的发送间隔是15秒;
Polite:不增加太大的网络负载,避免宕掉目标主机,串行每个探测,并且使每个探测有0.4秒种的间隔;
Normal:nmap默认的选项,在不是网络过载或者主机/端口丢失的情况下尽可能快速地扫描;
Aggressive:设置5分钟的超时限制,使对每台主机的扫描时间不超过5分钟,并且使对每次探测回应的等待时间不超过1.5秒钟;--host_timeout
设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制。--max_rtt_timeout
设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约9000毫秒。--min_rtt_timeout
当目标主机的响应很快时,nmap就缩短每次探测的超时时间。这样会提高扫描的速度,但是可能丢失某些响应时间比较长的包。使用这个选项,可以让nmap对每次探测至少等待你指定的时间,以毫秒为单位。--initial_rtt_timeout
设置初始探测的超时值。一般这个选项只在使用-P0选项扫描有防火墙保护的主机才有用。默认值是6000毫秒。--max_parallelism
设置最大的并行扫描数量。--max_parallelism 1
表示同时只扫描一个端口。这个选项对其它的并行扫描也有效,例如ping sweep, RPC scan。--scan_delay
设置在两次探测之间,nmap必须等待的时间。这个选项主要用于降低网络的负载。例子
nmap -v target.example.com
扫描主机target.example.com的所有TCP端口。-v打开冗余模式。nmap -sS -O target.example.com/24
对target.example.com所在网络上的所有255个IP地址的秘密SYN扫描。同时还探测每台主机操作系统的指纹特征。需要root权限。nmap -sX -p 22,53,110,143,4564 128.210.*.1-127
对B类IP地址128.210中255个可能的8位子网的前半部分发起圣诞树扫描。确定这些系统是否打开了sshd、DNS、pop3d、imapd和4564端口。
注意圣诞树扫描对Micro$oft的系统无效,因为其协议栈的TCP层有缺陷。nmap -v --randomize_hosts -p 80 *.*.2.3-5
只扫描指定的IP范围,有时用于对这个Internet进行取样分析。nmap将寻找Internet上所有后两个字节是.2.3、.2.4、.2.5的IP地址上的WEB服务器。host -l company.com | cut -d -f 4 | ./nmap -v -iL
列出company.com网络的所有主机,让nmap进行扫描。
注意:这项命令在GNU/Linux下使用。如果在其它平台,你可能要使用其它的命令/选项. -
DNS MX记录一定要放在A记录之前
2007-05-22 14:35:06
DNS MX记录一定要放在A记录之前,否则和邮件后缀相匹配的域名没有指向邮件服务器,则邮件服务器相应后缀的邮箱收不到邮件
举例如下:
我的mail后缀为wa-wa.com.cn,DNS MX记录为mail.wa-wa.com.cn,邮件服务器ip为210.75.18.37,wa-wa.com.cn指向211.96.97.30,mail.wa-wa.com.cn指向210.75.18.37
如果我的DNS配置如下,则我的邮件服务器wa-wa.com.cn为后缀的邮箱收不到邮件
wa-wa.com.cn. 3600 IN NS ns1.dns.com.cn.
wa-wa.com.cn. 3600 IN NS ns2.dns.com.cn.
wa-wa.com.cn. 3600 IN A 211.96.97.30 #wa-wa.com.cn. A记录在MX记录之前,并且wa-wa.com.cn. A记录没有指向邮件交换器的IP地址,所以邮件服务器wa-wa.com.cn为后缀的邮箱收不到邮件
wa-wa.com.cn. 3600 IN MX mail.wa-wa.com.cn.
mail.wa-wa.com.cn 3600 IN A 210.75.18.37
www.wa-wa.com.cn 3600 IN A 211.96.97.30
cp.wa-wa.com.cn 3600 IN CNAME mydns.dns.com.cn.
pop3.wa-wa.com.cn 3600 IN A 210.75.18.37
smtp.wa-wa.com.cn 3600 IN A 210.75.18.37
dns A记录和MX记录解析顺序换成以下就行了
修改后的解析顺序如下:
wa-wa.com.cn. 3600 IN NS ns1.dns.com.cn.
wa-wa.com.cn. 3600 IN NS ns2.dns.com.cn.
wa-wa.com.cn. 3600 IN MX mail.wa-wa.com.cn. #MX记录在wa-wa.com.cn. A记录之前,所以尽管wa-wa.com.cn. A记录没有指向邮件交换器的IP地址,但是邮件服务器wa-wa.com.cn为后缀的邮箱还是能够收到邮件
wa-wa.com.cn. 3600 IN A 211.96.97.30
mail.wa-wa.com.cn 3600 IN A 210.75.18.37
www.wa-wa.com.cn 3600 IN A 211.96.97.30
cp.wa-wa.com.cn 3600 IN CNAME mydns.dns.com.cn.
pop3.wa-wa.com.cn 3600 IN A 210.75.18.37
smtp.wa-wa.com.cn 3600 IN A 210.75.18.37
邮件发送原理:邮件服务器发送邮件首先寻找DNS MX记录,如果查找MX记录失败,则直接利用A记录收发信,而我本例中的wa-wa.com.cn A记录如果在MX记录之前,同时没有指向邮件交换器的IP210.75.18.37,系统有可能直接用wa-wa.com.cn A记录收发邮件了,所以我wa-wa.com.cn后缀的邮箱收不到信,这应该也是DNS MX记录一定要放在A记录之前的原因
参考:http://chinalinuxpub.com/vbbforum/showthread.php?s=&postid=247382#post247382 -
喷墨打印机另类用途 DIY你的个性T恤
2007-05-21 13:40:10
准备工具
打印机:EPSON 830U ;热转印纸 ; 网上买的 INKOOL 墨盒
首先第一步,当然是选好你要打印的图片,你可以将图片做一些编辑,加个边框什么的(可以用swayalbum做边框,下载地址:http://inkool.5d6d.com/thread-56-1-1.html )。然后就选一台比较好的打印机来打印,这次我用的是EPSON 的 830U 打印机,许多旅游景点帮别人打印照片就是用这款打印机,打印一张要10元,黑啊!
打印的时候最重要的是要设定好打印属性,比如说要打印照片质量,选取照片纸之类的,然后最最最重要的是要在打印首选项版面窗口中选中镜像图象,这样打印出来的图片是像照在镜子上一样是反的。这样到时候印在衣服上的时候图象才是正的。
记住一定要选好镜像或者反转等效果,不然印在衣服上的时候就反了
这次我只打了一张小图片做个试验。图片打好后,将多余的部分剪下来,当然你也可以用无边距打印成整张纸。
现在就是重要的部分,要准备好衣服和烫斗,烫斗温度调到最大,把衣服放在桌上,不用放在烫衣板上,因为家用的烫衣板弹性和支撑强度不好,不利于衣服与图象粘贴。
烫的过程中,一定不能使用蒸汽,不然你的T恤就会湖了一块。注意在熨烫图象边角时要用点力,这样效果会更好。大概烫30-50秒左右,把烫斗拿走,待衣服冷下来,就可以缓慢的将外面一层撕开,注意一定要慢慢,轻轻的撕开。
-
解读linux内核源码的入门方法
2007-05-21 13:24:49
一.核心源程序的文件组织:1.Linux核心源程序通常都安装在/usr/src/linux下,而且它有一个非常简单的编号约定:任何偶数的核心(例如2.0.30)都是一个稳定地发行的核心,而任何奇数的核心(例如2.1.42)都是一个开发中的核心。
本文基于稳定的2.2.5源代码,第二部分的实现平台为 Redhat Linux 6.0。
2.核心源程序的文件按树形结构进行组织,在源程序树的最上层你会看到这样一些目录:
●Arch :arch子目录包括了所有和体系结构相关的核心代码。它的每一个子目录都代表一种支持的体系结构,例如i386就是关于intel cpu及与之相兼容体系结构的子目录。PC机一般都基于此目录;
●Include: include子目录包括编译核心所需要的大部分头文件。与平台无关的头文件在 include/linux子目录下,与 intel cpu相关的头文件在include/asm-i386子目录下,而include/scsi目录则是有关scsi设备的头文件目录;
●Init: 这个目录包含核心的初始化代码(注:不是系统的引导代码),包含两个文件main.c和Version.c,这是研究核心如何工作的一个非常好的起点。●Mm :这个目录包括所有独立于 cpu 体系结构的内存管理代码,如页式存储管理内存的分配和释放等;而和体系结构相关的内存管理代码则位于arch/*/mm/,例如arch/i386/mm/Fault.c
●Kernel:主要的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同样,和体系结构相关的代码在arch/*/kernel中;
●Drivers: 放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目录:如,/block
下为块设备驱动程序,比如ide(ide.c)。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看drivers/block/genhd.c中的device_setup()。它不仅初始化硬盘,也初始化网络,因为安装nfs文件系统的时候需要网络其他:
如, Lib放置核心的库代码; Net,核心与网络相关的代码; Ipc,这个目录包含核心的进程间通讯的代码; Fs ,所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,例如fat和ext2; scrīpts, 此目录包含用于配置核心的脚本文件等。
一般,在每个目录下,都有一个 .depend 文件和一个 Makefile 文件,这两个文件都是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文件这间的联系和依托关系很有帮助;而且,在有的目录下还有Readme 文件,它是对该目录下的文件的一些说明,同样有利于我们对内核源码的理解;
二.解读实战:为你的内核增加一个系统调用
虽然,Linux 的内核源码用树形结构组织得非常合理、科学,把功能相关联的文件都放在同一个子目录下,这样使得程序更具可读性。然而,Linux 的内核源码实在是太大而且非常复杂,即便采用了很合理的文件组织方法,在不同目录下的文件之间还是有很多的关联,分析核心的一部分代码通常会要查看其它的几个相关的文件,而且可能这些文件还不在同一个子目录下。
体系的庞大复杂和文件之间关联的错综复杂,可能就是很多人对其望而生畏的主要原因。当然,这种令人生畏的劳动所带来的回报也是非常令人着迷的:你不仅可以从中学到很多的计算机的底层的知识(如下面将讲到的系统的引导),体会到整个操作系统体系结构的精妙和在解决某个具体细节问题时,算法的巧妙;而且更重要的是:在源码的分析过程中,你就会被一点一点地、潜移默化地专业化;甚至,只要分析十分之一的代码后,你就会深刻地体会到,什么样的代码才是一个专业的程序员写的,什么样的代码是一个业余爱好者写的。
为了使读者能更好的体会到这一特点,下面举了一个具体的内核分析实例,希望能通过这个实例,使读者对Linux的内核的组织有些具体的认识,从中读者也可以学到一些对内核的分析方法。
以下即为分析实例:
【一】操作平台:
硬件:cpu intel Pentium II ;
软件:Redhat Linux 6.0; 内核版本2.2.5【二】相关内核源代码分析:
1.系统的引导和初始化:Linux 系统的引导有好几种方式:常见的有 Lilo,
Loadin引导和Linux的自举引导(bootsect-loader),而后者所对应源程序为arch/i386/boot/bootsect.S,它为实模式的汇编程序,限于篇幅在此不做分析;无论是哪种引导方式,最后都要跳转到arch/i386/Kernel/setup.S, setup.S主要是进行时模式下的初始化,为系统进入保护模式做准备;此后,系统执行 arch/i386/kernel/head.S (对经压缩后存放的内核要先执行arch/i386/boot/compressed/head.S); head.S 中定义的一段汇编程序setup_idt ,它负责建立一张256项的 idt 表(Interrupt Descrīptor Table),此表保存着所有自陷和中断的入口地址;其中包括系统调用总控程序 system_call 的入口地址;当然,除此之外,head.S还要做一些其他的初始化工作;
2.系统初始化后运行的第一个内核程序asmlinkage void __init start_kernel(void) 定义在/usr/src/linux/init/main.c中,它通过调用usr/src/linux/arch/i386/kernel/traps.c 中的一个函数void __init trap_init(void) 把各自陷和中断服务程序的入口地址设置到 idt 表中,其中系统调用总控程序system_cal就是中断服务程序之一;void __init trap_init(void) 函数则通过调用一个宏 set_system_gate(SYSCALL_VECTOR,&system_call); 把系统调用总控程序的入口挂在中断0x80上; 其中SYSCALL_VECTOR是定义在 /usr/src/linux/arch/i386/kernel/irq.h中的一个常量0x80; 而system_call即为中断总控程序的入口地址;中断总控程序用汇编语言定义在/usr/src/linux/arch/i386/kernel/entry.S中;
3.中断总控程序主要负责保存处理机执行系统调用前的状态,检验当前调用是否合法, 并根据系统调用向量,使处理机跳转到保存在 sys_call_table 表中的相应系统服务例程的入口; 从系统服务例程返回后恢复处理机状态退回用户程序;而系统调用向量则定义在/usr/src/linux/include/asm-386/unistd.h 中;sys_call_table 表定义在/usr/src/linux/arch/i386/kernel/entry.S 中; 同时在/usr/src/linux/include/asm-386/unistd.h 中也定义了系统调用的用户编程接口;
4.由此可见 , linux 的系统调用也象 dos 系统的 int 21h 中断服务, 它把0x80 中断作为总的入口, 然后转到保存在 sys_call_table 表中的各种中断服务例程的入口地址 , 形成各种不同的中断服务; 由以上源代码分析可知, 要增加一个系统调用就必须在 sys_call_table 表中增加一项 , 并在其中保存好自己的系统服务例程的入口地址,然后重新编译内核,当然,系统服务例程是必不可少的。
由此可知在此版linux内核源程序中,与系统调用相关的源程序文件就包括以下这些:
1.arch/i386/boot/bootsect.S
2.arch/i386/Kernel/setup.S
3.arch/i386/boot/compressed/head.S
4.arch/i386/kernel/head.S
5.init/main.c
6.arch/i386/kernel/traps.c
7.arch/i386/kernel/entry.S
8.arch/i386/kernel/irq.h
9.include/asm-386/unistd.h
当然,这只是涉及到的几个主要文件。而事实上,增加系统调用真正要修改文件只有include/asm-386/unistd.h和arch/i386/kernel/entry.S两个;
【三】 对内核源码的修改:
1.在kernel/sys.c中增加系统服务例程如下:asmlinkage int sys_addtotal(int numdata)
{
int i=0,enddata=0;
while(i<=numdata)
enddata+=i++;
return enddata;
}
该函数有一个 int 型入口参数 numdata , 并返回从 0 到 numdata 的累加值;
当然也可以把系统服务例程放在一个自己定义的文件或其他文件中,只是要在相应文件中作必要的说明;
2.把 asmlinkage int sys_addtotal( int) 的入口地址加到sys_call_table表中:
arch/i386/kernel/entry.S 中的最后几行源代码修改前为:
... ...
.long SYMBOL_NAME(sys_sendfile)
.long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
.long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
.long SYMBOL_NAME(sys_vfork) /* 190 */
.rept NR_syscalls-190
.long SYMBOL_NAME(sys_ni_syscall)
.endr
修改后为: ... ...
.long SYMBOL_NAME(sys_sendfile)
.long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
.long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
.long SYMBOL_NAME(sys_vfork) /* 190 */
/* add by I */
.long SYMBOL_NAME(sys_addtotal)
.rept NR_syscalls-191
.long SYMBOL_NAME(sys_ni_syscall)
.endr
3. 把增加的 sys_call_table 表项所对应的向量,在include/asm-386/unistd.h
中进行必要申明,以供用户进程和其他系统进程查询或调用:
增加后的部分 /usr/src/linux/include/asm-386/unistd.h 文件如下:
... ...
#define __NR_sendfile 187
#define __NR_getpmsg 188
#define __NR_putpmsg 189
#define __NR_vfork 190
/* add by I */
#define __NR_addtotal 191
4.测试程序(test.c)如下:
#include
#include
_syscall1(int,addtotal,int, num)
main()
{
int i,j;
do
printf("Please input a number\n");
while(scanf("%d",&i)==EOF);
if((j=addtotal(i))==-1)
printf("Error occurred in syscall-addtotal();\n");
printf("Total from 0 to %d is %d \n",i,j);
}
对修改后的新的内核进行编译,并引导它作为新的操作系统,运行几个程序后可以发现一切正常;在新的系统下对测试程序进行编译(*注:由于原内核并未提供此系统调用,所以只有在编译后的新内核下,此测试程序才能可能被编译通过),运行情况如下:
$gcc -o test test.c
$./test
Please input a number
36
Total from 0 to 36 is 666
可见,修改成功;
而且,对相关源码的进一步分析可知,在此版本的内核中,/usr/src/linux/arch/i386/kernel/entry.S
文件中对 sys_call_table 表的设置可以看出,有好几个系统调用的服务例程都是定义在/usr/src/linux/kernel/sys.c
中的同一个函数:
asmlinkage int sys_ni_syscall(void)
{
return -ENOSYS;
}
例如第188项和第189项就是如此:
... ...
.long SYMBOL_NAME(sys_sendfile)
.long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
.long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
.long SYMBOL_NAME(sys_vfork) /* 190 */
... ...
而这两项在文件 /usr/src/linux/include/asm-386/unistd.h 中却申明如下:
... ...
#define __NR_sendfile 187
#define __NR_getpmsg 188 /* some people actually want streams */
#define __NR_putpmsg 189 /* some people actually want streams */
#define __NR_vfork 190
由此可见,在此版本的内核源代码中,由于asmlinkage int sys_ni_syscall(void) 函数并不进行任何操作,所以包括 getpmsg, putpmsg 在内的好几个系统调用都是不进行任何操作的,即有待扩充的空调用;但它们却仍然占用着sys_call_table表项,估计这是设计者们为了方便扩充系统调用而安排的; 所以只需增加相应服务例程(如增加服务例程getmsg或putpmsg),就可以达到增加系统调用的作用。
结语:当然对于庞大复杂的 linux
内核而言,一篇文章远远不够,而且与系统调用相关的代码也只是内核中极其微小的一部分;但重要的是方法、掌握好的分析方法;所以上的分析只是起个引导的作用,而正真的分析还有待于读者自己的努力。:)
-
Linux操作系统12则经典应用技巧
2007-05-21 13:23:04
1、处理特殊的文件名
假设Linux系统中有一个文件名叫“-ee”,如果我们想对它进行操作,例如要删除它,按照一般的删除方法在命令行中输入rm -ee命令,界面会提示我们是“无效选项”(invalid option),原来由于文件名的第一个字符为“-”,Linux把文件名当作选项了,我们可以使用“--”符号来解决这个问题,输入“rm -- -ee”命令便可顺利删除名为“-ee”的文件。如果是其他特殊字符的话可以在特殊字符前加一个“”符号,或者用双引号把整个文件名括起来。2、直接进行Linux的安装工作
在安装Linux操作系统时,可以利用该系统光盘中的一个名为“loadlin.exe”的软件,将Linux核心直接调入内存,由Linux核心代替当前操作系统来接管计算机,并进入Linux的安装界面。在安装Linux时,我们只要在运行对话框中输入“loadlin E:imagesvmlinuz root=/dev/ram initrd=E:imagesinitrd.img”这个命令就可以直接安装Linux了;其中“E:imagesvmlinuz”为Linux的核心名。3、消除Xwindows下的死机现象
我们可以用两个常用的方法来消除这种现象:第一,用键盘上的复合键“Ctrl+Alt+Backspace”来关闭当前正在运行的任务;第二,首先按住键盘上的“Ctrl+Alt+F2”复合键,让系统切换到另一个操作台,然后登录到系统,再执行“#ps -ax/grep startx”命令,这将会列出你的Xserver的进程标识,接着在命令行中输入如下命令就能消除Xwindows下的死机现象:#kill -9 PID_Number,最后通过“Alt+F1”复合键返回到原来的平台。4、快速关闭Linux系统
最新版本的Linux/UNIX系统借鉴了大型机的技术,采用了抗掉电的日志式文件系统,可以自动跟踪保存用户数据,自动同步刷新文件系统,用户完全可以随手关闭电源,从而达到快速关闭系统的目的。5、巧妙使用“rm”命令
我们可以使用带“-r”参数的“rm”命令来删除一个非空目录,例如我们在命令行中输入“rm -r bbb”这样的命令,表示系统将把bbb目录中包含的所有文件和子目录全部删除掉。6、巧妙使用“Tab”键
大家知道在Linux字符界面中输入命令时,有时需要输入很多字符,如果经常这样逐个地输入字符,比较麻烦。假设键入的字符足以确定该目录下一个惟一的文件时,我们只需按键盘上的“Tab”键就可以自动补齐该文件名的剩下部分,例如要把目录/ccc下的文件“ddddddd-1.2.3.tar.gz”解包时,当我们在命令行中键入到“tar xvfz /ccc/d”时,如果该文件是该目录下惟一以“d”打头的文件的话就可以直接按下“Tab”键,这时命令会被自动补齐为:tar xvfz /ccc/ddddddd-1.2.3.tar.gz ,从而提高了输入效率。
7、多用鼠标拷贝与粘贴来提高操作速度
Linux系统安装后,每次启动到字符界面时都会自动运行一个叫“gpm”的程序,该程序运行后就可以用鼠标来拷贝与粘贴了。具体做法是按住鼠标左键拖动使要拷贝的地方突出显示,这时突出显示的区域已经被拷贝,再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了。如果我们在Xwindow下运行Linux系统,拷贝与粘贴的操作与在Windows 9x系统下一样。
8、快速启动Linux系统
在DOS下,有一种简单快速启动Linux的方法,那就是load Linux。loadlin.exe是DOS下的可执行程序,它可以在纯DOS环境下迅速启动Linux,而且无需重启计算机,通常我们可以在光盘的“/kernels”目录下找到这个程序。如果不知这个程序被放置于安装盘的何处,可以使用“find -name loadlin*”命令来寻找。找到之后将其复制到DOS分区中,同时还需要复制一份你所使用的Linux内核文件。可以通过Windows直接从光盘复制,也可在Linux环境下使用“mcopy”命令将文件复制到DOS分区;接着再编写一个名为“Linux.bat”的批处理文件,文件内容如下:c:loadlin c:vmlinuz root=/dev/hda1 ro(我们假设loadlin.exe和vmlinuz这两个内核文件都在c盘根目录下,“root”为Linux的根设备,而且Linux处于硬盘第一分区,所以设备名为“/dev/hda1”,“ro”意为readonly)。以后在DOS下要启动Linux时,运行“Linux.bat”就可以了。9、增加虚拟缓存
使用命令:mkswap /dev/hda(假设Linux的驱动器是/dev/hda),swapon /dev/hda;要自动启动Swap,可以把新的分区加入到etc/fstab中去,照着原来swap的写就行了。用"free"检查swap的大小,Linux支持最多16个交换分区,每个交换分区最大128M,没有空闲分区的时候,可以用个大文件来建立。下面是执行的一系列命令:
#dd if=/dev/zero ōf=swapfile bs=1024 count=8192
#mkswap swapfile 8192
#sync
#swapon swapfile10、巧妙使用Tab键
大家知道在Linux字符界面中输入命令时,有时需要输入很多字符,如果经常这样逐个逐个地输入字符,比较烦琐。假设键入的字符足以确定目录下一个唯一的文件时,我们只须按键盘上的Tab 键就可以自动补齐该文件名的剩下部分,例如要把目录/ccc 下的文件ddddddd-1.2.3.tar.gz 解包时,当我们在命令行中键入到tar xvfz /ccc/d时,如果该文件是该目录下唯一以d起头的文件的话就可以直接按下键盘上的Tab键,这时命令会被自动补齐为:tar xvfz /ccc/ddddddd-1.2.3.tar.gz,从而提高了输入效率。11、多用拷贝与粘贴来提高操作速度
Linux系统安装后,每次启动到字符界面时都会自动运行一个叫gpm的程序,该程序运行后就可以用鼠标来拷贝与粘贴了。具体做法是按住鼠标左键拖动让要拷贝的地方突出显示,这时突出显示的区域已经被拷贝, 再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了。如果我们在Xwindow下运行Linux系统,拷贝与粘贴的操作与在普通的Win9x系统下一样。12、提高读盘速度
在Linux下进行一些设置,让Linux在32位输入输出方式和DMA通道方式下进行工作。设置时,在Linux命令界面中输入命令/sbin/hdparm -cl /dev/hda来打开32bit传输方式,输入命令/sbin/hdparm -dl /dev/hda来打开DMA传输方式,接着再输入命令/sbin/hdparm -kl /dev/hda来使硬盘在Reset之后仍然保持上述的设置,通过这些设置,我们就能提高Linux的读盘速度到1倍以上。 -
Oracle数据库备份与恢复之完全攻略
2007-05-21 13:12:01
一、导出/导入(Export/Import)利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。
1、简单导出数据(Export)和导入数据(Import)
Oracle支持三种方式类型的输出:
(1)表方式(T方式),将指定表的数据导出。
(2)用户方式(U方式),将指定用户的所有对象及数据导出。
(3)全库方式(Full方式),瘵数据库中的所有对象导出。
数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。
2、增量导出/导入
增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。
增量导出包括三种类型:
(1)“完全”增量导出(Complete)即备份三个数据库,比如:exp system/manager inctype=complete file=040731.dmp。
(2)“增量型”增量导出备份上一次备份后改变的数据,比如:exp system/manager inctype=incremental file=040731.dmp。
(3)“累积型”增量导出累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。比如:exp system/manager inctype=cumulative file=040731.dmp。
数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。
比如数据库的被封任务可以做如下安排:
星期一:完全备份(A) 星期二:增量导出(B) 星期三:增量导出(C)
星期四:增量导出(D) 星期五:累计导出(E) 星期六:增量导出(F)
星期日:增量导出(G)。
如果在星期日,数据库遭到意外破坏,数据库管理员可按一下步骤来回复数据库:
第一步:用命令CREATE DATABASE重新生成数据库结构;
第二步:创建一个足够大的附加回滚;
第三步:完全增量导入A:imp system/manager inctype=RESTORE FULL=y FILE=A
第四步:累计增量导入E:imp system/manager inctype=RESTORE FULL=Y FILE=E
第五步:最近增量导入F:imp system/manager inctype=RESTORE FULL=Y FILE=F
二、冷备份
冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份时最快和最安全的方法。冷备份的优点是:
1、是非常快速的备份方法(只需拷文件);
2、容易归档(简单拷贝即可);
3、容易恢复到某个时间点上(只需将文件再拷贝回去);
4、能与归档方法相结合,做数据库“最佳状态”的恢复;
5、低度维护,高度安全。
但冷备份也有如下不足:
1、单独使用时,只能提供到“某一时间点上”的恢复;
2、再实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,在冷备份过程中,数据库必须是关闭状态;
3、若磁盘空间有限,只能拷贝到磁带等其他外部存储设备上,速度会很慢;
4、不能按表或按用户恢复。
如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括:
1、所有数据文件。
2、所有控制文件。
3、所有联机REDO LOG文件。
4、Init.ora文件(可选)。
值得注意的使冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的。
下面是作冷备份的完整例子:
(1) 关闭数据库;
sqlplus /nolog sql>connect /as sysdba sql>shutdown normal;
(2) 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件sql>cp。
(3) 重启Oracle数据库sql>startup。
三、热备份
热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:
1.数据文件一个表空间一个表空间的备份:
(1)设置表空间为备份状态;
(2)备份表空间的数据文件;
(3)回复表空间为正常状态。
2.备份归档log文件:
(1)临时停止归档进程;
(2)log下那些在archive rede log目标目录中的文件;
(3)重新启动archive进程;
(4)备份归档的redo log文件。
3.用alter database bachup controlfile命令来备份控制文件:
热备份的优点是:
1.可在表空间或数据库文件级备份,备份的时间短。
2.备份时数据库仍可使用。
3.可达到秒级恢复(恢复到某一时间点上)。
4.可对几乎所有数据库实体做恢复。
5.恢复是快速的,在大多数情况下爱数据库仍工作时恢复。
热备份的不足是:
1.不能出错,否则后果严重;
2. 若热备份不成功,所得结果不可用于时间点的恢复;
3. 因难于维护,所以要特别仔细小心,不允许“以失败告终”。
-
XP补丁批量的安装方法
2007-05-21 12:54:41
XP补丁批量的安装方法
首先要将下载的补丁统一放到一个文件夹.命令行界面进入存放补丁的exe文件的目录,输入命令dir /a /b >list.txt

打开刚才得到的txt文件,去掉list.txt、msjavwu.exe两行
按Ctrl+H,把WindowsXP全部替换为start /wait windowsXP
.exe全部替换为.exe /u /q /z
结尾加上exit
保存,要用的时候把后续名改为.bat,双击运行就开始无声安装
完成后重启
注意:安装过程中有些补丁安装时可能会比较慢,如果想中断一个补丁的安装可以用CRTL+C中断补丁的安装.如果大家不想这么麻烦的话可以使用瑞星或者360安全卫士去修复漏洞..个人推荐360安全卫士









