2004年03月09日

Q:一局域网192.168.1.0/24,有web和ftp服务器192.168.1.10、192.168.1.11,网关linux,内网eth0,IP为192.168.1.1,外网eth1,IP为a.b.c.d,怎样作NAT能使内外网都能访问公司的服务器?
A:# web
# 用DNAT作端口映射
iptables -t nat -A PREROUTING -d a.b.c.d -p tcp –dport 80 -j DNAT –to 192.168.1.10
# 用SNAT作源地址转换(关键),以使回应包能正确返回
iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp –dport 80 -j SNAT –to 192.168.1.1
# 一些人经常忘了打开FORWARD链的相关端口,特此增加
iptables -A FORWARD -o eth0 -d 192.168.1.10 -p tcp –dport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.1.10 -p tcp –sport 80 -m –state ESTABLISHED -j ACCEPT


# ftp
modprobe ip_nat_ftp ###加载ip_nat_ftp模块(若没有编译进内核),以使ftp能被正确NAT
modprobe ip_conntrack_ftp ###加载ip_conntrack_ftp模块
# 用DNAT作端口映射
iptables -t nat -A PREROUTING -d a.b.c.d -p tcp –dport 21 -j DNAT –to 192.168.1.11
iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp –dport 21 -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp –sport 21 -m –state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp –sport 20 -m –state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp –dport 20 -m –state ESTABLISHED -j ACCEPT
iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp –dport 1024: -m –state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp –sport 1024: -m –state ESTABLISHED -j ACCEPT

# 用SNAT作源地址转换(关键),以使回应包能正确返回
iptables -t nat -A POSTROUTING -d 192.168.1.11 -p tcp –dport 21 -i eth0 -j SNAT –to 192.168.1.1

Q:网络环境如上一问题,还在网关上用squid进行透明代理,也作了SNAT了,为什么内网还是不能访问公司的web服务器?iptables如下:
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp –dport 80 -i eth0 -j REDIRECT –to 3128
iptables -t nat -A PREROUTING -d a.b.c.d -p tcp –dport 80 -j DNAT –to 192.168.1.10
iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp –dport 80 -j SNAT –to 192.168.1.1

A:问题主要在PREROUTING链中REDIRECT和DNAT的顺序,由于先进行了REDIRECT(重定向),则到第二句DNAT时,端口已变为3128,不匹配第二句的目的端口80,DNAT也就不会执行,不能到达正确的目的地。解决的办法有两个:
1、把REDIRECT语句放到DNAT语句的后面,如下:
iptables -t nat -A PREROUTING -d a.b.c.d -p tcp –dport 80 -j DNAT –to 192.168.1.10
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp –dport 80 -i eth0 -j REDIRECT –to 3128
2、在REDIRECT语句中增加匹配目的地址”-d ! a.b.c.d”,如下:
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -d ! a.b.c.d -p tcp –dport 80 -i eth0 -j REDIRECT –to 3128

Q:怎样用iptables封杀QQ呢?我使用iptables -A INPUT -p udp –dport 8000 -j REJECT为什么不行啊?
A:只有目的地址为本机的包才进入INPUT链,QQ服务器显然不在本机运行,所以必须在FORWARD链上过滤:
iptables -A FORWARD -p udp –dport 8000 -j DROP

Q:想用iptables+squid做代理上网,单独用iptables作伪装或用squid作传统代理(在IE中设代理IP和端口)都能正常上网,但加上端口重定向做成透明代理后却不能上网,为什么?
A:透明代理和传统代理squid的配置是不一样的。修改squid.conf使之包含以下内容:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Q:系统RH7.3,我用”iptables -L”出现一堆错误,怎么回事?
/lib/modules/2.4.18-3/kernel/net/ipv4/netfilter/ip_tables.o: inti_module:Device
 or resource busy
Hint: insmod errors can be caused by incorrect module parameters, including inva
lid IO or IRQparameters
/lib/modules/2.4.18-3/kernel/net/ipv4/netfilter/ip_tables.o:insmod/lib/modules
/2/4/18-3/kernel/net/ipv4/netfilter/ip_tables.o failed
/lib/modules/2.4.18_3/kernel/net/ipv4/netfilter/ip_tables.o:insmod ip_tables fa
iled
iptables v1.2.5: can’t initialize iptables table ‘filter’:iptables who?(do you
need to insmod?)
perhaps iptables or your kernel needs to be upgraded.’

A:默认的,RH7.*系列的是启动ipchains,iptables和ipchains只能运行其中的一种。要用iptables,需停掉ipchains:
# chkconfig –level 12345 ipchains off
# rmmod ipchains
或用setup进行设置。

Q:squid做代理,当客户机用WEB页面收发邮件时,附件不能大于1M,为什么?
A:在squid.conf的option for tuning cache选项中有一项request_body_max_size 设置成0就可以了:
request_body_max_size 0

Q:如何将squid配置成二级代理,上级代理IP:a.b.c.d,端口8080。
A:修改squid.conf使之包含类似如下内容:
cache_peer a.b.c.d parent 8080 0 no-query ###定义父代理a.b.c.d,端口8080

acl all src 0.0.0.0/0.0.0.0 ###acl控制列表
http_access allow all

never_direct allow all ###所有请求转发至上级代理

Q:如何限制使用squid 的同一个ip 的连接数?
A:修改squid.conf,以下两句限制每ip不得超过10连接:
acl BadUser maxconn 10
http_access deny BadUser

2004年03月06日





Grep : g (globally) search for a re (regular expression ) and p (print ) the results.

1、参数:
-I :忽略大小写
-c :打印匹配的行数
-l :从多个文件中查找包含匹配项
-v :查找不包含匹配项的行
-n:打印包含匹配项的行和行标

2、RE(正则表达式)
\ 忽略正则表达式中特殊字符的原有含义
^ 匹配正则表达式的开始行
$ 匹配正则表达式的结束行
\< 从匹配正则表达式的行开始
\> 到匹配正则表达式的行结束
[ ] 单个字符;如[A] 即A符合要求
[ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的单个字符
* 所有字符,长度可以为0

3、举例
# ps -ef | grep in.telnetd
root 19955 181 0 13:43:53 ? 0:00 in.telnetd

# more size.txt size文件的内容
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345

# more size.txt | grep ’[a-b]‘ 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
b124230
b034325
a081016
a022021
a061048
b103303
a013386
b044525
# more size.txt | grep ’[a-b]‘*
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345

# more size.txt | grep ’[b]‘ 单个字符;如[A] 即A符合要求
b124230
b034325
b103303
b044525
# more size.txt | grep ’[bB]‘
b124230
b034325
b103303
b044525
B081016
B103303
BADc2345

# grep ’root’ /etc/group
root::0:root
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,tty,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
daemon::12:root,daemon

# grep ’^root’ /etc/group 匹配正则表达式的开始行
root::0:root


# grep ’uucp’ /etc/group
uucp::5:root,uucp
nuucp::9:root,nuucp

# grep ’\<uucp’ /etc/group
uucp::5:root,uucp


# grep ’root$’ /etc/group 匹配正则表达式的结束行
root::0:root
mail::6:root


# more size.txt | grep -i ’b1..*3′ -i :忽略大小写

b124230
b103303
B103303

# more size.txt | grep -iv ’b1..*3′ -v :查找不包含匹配项的行

b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
a013386
b044525
m8987131
B081016
M45678
BADc2345

# more size.txt | grep -in ’b1..*3′
1:b124230
9:b103303
15:B103303

# grep ’$' /etc/init.d/nfs.server | wc -l
128
# grep ’\$’ /etc/init.d/nfs.server | wc –l 忽略正则表达式中特殊字符的原有含义

15
# grep ’\$’ /etc/init.d/nfs.server
case ”$1″ in
>/tmp/sharetab.$$
[ "x$fstype" != xnfs ] && \
echo ”$path\t$res\t$fstype\t$opts\t$desc” \
>>/tmp/sharetab.$$
/usr/bin/touch -r /etc/dfs/sharetab /tmp/sharetab.$$
/usr/bin/mv -f /tmp/sharetab.$$ /etc/dfs/sharetab
if [ -f /etc/dfs/dfstab ] && /usr/bin/egrep -v ’^[ ]*(#|$)’ \
if [ $startnfsd -eq 0 -a -f /etc/rmmount.conf ] && \
if [ $startnfsd -ne 0 ]; then
elif [ ! -n "$_INIT_RUN_LEVEL" ]; then
while [ $wtime -gt 0 ]; do
wtime=`expr $wtime - 1`
if [ $wtime -eq 0 ]; then
echo ”Usage: $0 { start | stop }”


# more size.txt

the test file
their are files
The end

# grep ’the’ size.txt
the test file
their are files

# grep ’\<the’ size.txt
the test file
their are files

# grep ’the\>’ size.txt
the test file

# grep ’\<the\>’ size.txt
the test file

# grep ’\<[Tt]he\>’ size.txt
the test file
The end

磁盘阵列有着广泛的应用,但它却又往往是整个系统安全运行的瓶颈,它的可靠性的量化计算越来越受到关注,因为有了量化的数据,就能为深层次地认识事物本质提供科学的依据,为多方案的优化比较奠定基础,进而做出正确的决定。作一个可行的磁盘阵列方案并不难,难的是作一个优化的方案。我们认为解决这些问题的关键是能否找到可靠度的数学模型,如果能找到的话,问题就可以迎刃而解。正是在这种情况下,由于实际工作的需要,我作了一些资料收集与整理,对硬盘阵列的可靠度作了探索性求解,现写成此文,以作抛砖引玉。
RAID 简介
  RAID是由美国加州大学伯克利分校的DA Patterson教授提出的。RAID是Redundant Array of Inexpensive Disks的缩写,简称为”磁盘阵列”。可以把RAID理解成将一组磁盘驱动器有机的组合方式,构成逻辑上的一个磁盘驱动器。RAID的具体实现可以靠硬件,譬如磁盘阵列柜;也可以靠软件,Windows NT操作系统就提供软件RAID功能。以前RAID一般是用SCSI磁盘驱动器实现的。由于现在IDE硬盘在容量和质量上都有了显著的进步,所以RAID现在也应用到了IDE磁盘驱动器上。但由于常见的IDE通道最多只能接4个磁盘驱动器,因而常见的IDE的RAID功能不如SCSI的丰富。现在已出现了IDE硬盘专用的阵列柜,并且具备RAID5功能,支持挂接6只硬盘;同时,光接口的出现也更加丰富了RAID产品。从数学角度看,除RAID0外,其余都属工作冗余系统。
RAID的特点
  1、成本低,功耗小,数据传输速率高。在RAID中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个的磁盘驱动器若干倍的速率。
  2、可以提供容错功能,提高了可靠度,当然这是以冗余为代价的。这是RAID获得广泛应用的重要原因之一。
  3、RAID是获得大容量逻辑存储器的价廉物美、简单易行的好方法。这是RAID获得广泛应用的又一重要原因。
  4、当RAID由硬盘阵列柜实现时,硬盘阵列柜的价格比起硬盘来往往是较贵的,甚至贵得多。
常用RAID的分类及其特征
  1、RAID0,无冗余无校验的磁盘阵列。数据同时分布在各个磁盘驱动器上,没有容错能力,读写速度最快,可靠度最差。数学上称RAID0为串联模型,磁盘数N可以大于2,本文仅给出N=2的数学模型和可靠度。
  2、RAID1,镜象磁盘阵列。最基本的并联模型,1/2表决器。
  3、RAID 0+1,实际上是RAID 0和RAID 1的派生,先RAID 0再RAID 1。最基本的串并联模型。
  4、RAID1+0. 也是RAID 1和RAID 0的派生。先RAID 1再RAID 0。最基本的并串联模型,串联数N可以大于2 。
  5、RAID2~4不常用,本文既不介绍也不分析。
  6、RAID5,无独立校验盘的奇偶校验磁盘阵列。校验信息分布在各个磁盘驱动器上。RAID5对大小数据量的读写都有很好的性能,能获得较高的可靠度,又能组成较大的容量,在磁盘的数量上有较灵活的选择余地,因而得到广泛应用。RAID5是属于(N-1)/N表决器数学结构。
  7、RAID还有其他的类型,某些类型,名称虽然一样,各生产商有各自特殊的定义,使用时应引起注意。
RAID的可靠性模型
  这里所说的模型是指可靠度的模型,它和电路上的串并联不可混为一谈。例如若有两只电容并联,但任何一只失效,都会使系统失效,那么在可靠性计算中则被判为串联。可靠度模型还有非串联并联的模型。这里所说的可靠度是指在规定的时间内,在规定的条件下,完成规定功能的能力,本文以概率计量。
磁盘阵列可靠度的计算
  根据平均故障间隔时间(MTBF),可以推断出单只磁盘的规定时间的无故障可靠度概率。按希捷网站提供的数据,SCSI硬盘的MTBF为100万小时,IDE硬盘的MTBF为40万小时。部分品牌的硬盘未给出MTBF,应该说,希捷的资料具有一定的代表性。按RAID可靠度的数学模型,计算出常见RAID的可靠度,并整理成表,以便对比。从该表不难看出,IDE的RAID1也有极高的可靠度。由于SCSI硬盘比IDE硬盘价格要贵得多,性能也高出不少,为了获得比较合理的结论,可选择以下方式比较:规定时间内、相同价格下比可靠度;或规定时间内、相同可靠度下比价格;当然还有其他的比较方式。不难得出以下结论:SCSI硬盘一次性投资较大,相对一劳永逸,RAID的可选形式较多。IDE硬盘一次性投资小,要达到规定可靠度,必须分段投资,总价仍较低,相对麻烦,目前实际的可选形式较少,但可选形式的增多是必然趋势。由于计算机硬件发展极其迅速,上述结论只是特点而已,具体如何处理,还得视具体情况而定。
磁盘阵列可靠度表
时间 一年 两年 三年
格式\盘型 SCSI硬盘无故障可靠度 (MTBF=100万小时)
单只硬盘 0.991278257 0.982632582 0.974062314
Raid 0 0.982632583 0.965566792 0.948797391
Raid 0+1 0.999698372 0.998814354 0.997378292
Raid 1+0 0.999847868 0.999396836 0.998654925
Raid 1 0.999923931 0.999698372 0.999327236
Raid 5(2/3) 0.99977312 0.999105595 0.998016609
Raid 5(3/4) 0.999548877 0.998231871 0.99610166
Raid 5(4/5) 0.999252494 0.997087139 0.993614621
Raid 5(5/6) 0.998885246 0.995681075 0.990586456
Raid 5(6/7) 0.998448393 0.994023102 0.987046811

格式\盘型 IDE硬盘无故障可靠度 (MTBF=40万小时)
单只硬盘 0.978338064 0.957145367 0.936411745
Raid 0 0.957145367 0.916127254 0.876866957
Raid 0+1 0.99816348 0.992965362 0.984838253
Raid 1+0 0.999061741 0.996330333 0.991929417
Raid 1 0.99953076 0.99816348 0.995956533
Raid 5(2/3) 0.9986126109 0.9946478482 0.9883838357
Raid 5(3/4) 0.9972652197 0.9896003914 0.9777470902
Raid 5(4/5) 0.9955076143 0.9831588582 0.9644665925
Raid 5(5/6) 0.9933581989 0.9754520036 0.9489215748

结束语 :
  硬盘生产方给出的MTBF是在特定的条件下作出的结论,一般来说,实际使用中环境各异,通常达不到厂家所说的那样的条件。厂方测试用的硬盘一般无需长途运输,而客户用的硬盘都是有过运输经历的产品,甚至经过恶劣装运,另外,使用技巧也是不容忽视的,这些还希望各位读者能注意到。因此实际可靠度会有所下降,但各种形式的RAID之间的可靠度关系是客观存在的。
有什么什么问题请直接与我联系!!!



_________________
#风中之狼#
MSN:yllmm80512@hotmail.com
QQ: 34556916
EMAIL:yllmm80512@linux.net

工作中,有时需要移植一些已经安装过的Solaris包,或者对已经安装后的包进行修改,但一时又无法找到原来的安装包。系统升级时,有时也常常涉及到对原来系统的备份问题,这时需要一些能够对原来的安装包进行备份,又能够在新系统上进行安装的工具。Solaris本身并不提供直接的工具用于包的移植。


但Solaris在安装本身通用的PKG包时,会产生两个与安装包相关的文档/上录,分别在/var/sadm/pkg/<pkgname>下和/var/sadm/install/contents中,通过对这两个文档进行解析,可以实现对Solaris包的反安装,这在实现系统升级时尤其有用。


以下脚本会在当前的运行目录下产生压缩的系统安装包,Copy/Paste本脚本到Solaris机上,运行后输入需要反安装的包名即可。欢迎大家测试。


#!/bin/ksh


##########################################################
#
# Copyright (c) 2002 Chinaunix.net — Solaris
#
# Module Description ::
# Script to create Sun packages from existing installation
#
##########################################################


# [Global Parameters]
#===============================================


MAIN_DIR=`pwd`
PRO_DIR=$MAIN_DIR/process
PKG_DIR=$MAIN_DIR/package
SYS_DIR=/var/sadm/pkg
CNT_FILE=/var/sadm/install/contents
ID=`/usr/bin/id | awk -F= ‘{print $2}’ | awk -F\( ‘{print $1}’`
VER=sol`uname -r | cut -d. -f2,2`


GREP=/bin/grep
# awk can not handle long line with many fileds.
# In Solaris, use ‘nawk’ or ‘gawk’ instead.
AWK=/bin/nawk
GZIP=/bin/gzip
MKDIR=/bin/mkdir
CHMOD=/bin/chmod
CHOWN=/bin/chown
CP=/bin/cp
MV=/bin/mv
PKGMK=/bin/pkgmk
PKGTRANS=/bin/pkgtrans


# [Functions]
#==================================================================


function mk_dir
{
$MKDIR -p $PRO_DIR/$3
$CHMOD $4 $PRO_DIR/$3
$CHOWN $5:$6 $PRO_DIR/$3
}


function cp_file
{
$CP -p $3 $PRO_DIR/$3
$CHMOD $4 $PRO_DIR/$3
$CHOWN $5:$6 $PRO_DIR/$3
}


# [Main]
#==================================================================


if [ ${ID} != 0 ]
then
echo “”
echo “Only Root User allow to run this script. Exit….”
sleep 1
echo “”
exit 1
fi


echo “”
echo “Please enter package name you want to create, then press Enter: ”
echo “Enter Package name: \c”
read pkgname


PKG_NAME=$pkgname


if [ ! -d $SYS_DIR/$PKG_NAME ]; then
echo “”
echo “This Package doesn’t exist!!! Please check the name and try again!”
echo “”
exit 1
fi


if [ ! -d $PRO_DIR ]; then
$MKDIR $PRO_DIR
fi


if [ ! -d $PKG_DIR ]; then
$MKDIR $PKG_DIR
fi


# Producing part of Prototype file


$GREP $PKG_NAME $CNT_FILE | $GREP -v ^#.* > $PRO_DIR/cnt_pkg
$AWK ‘{print $2,$3,$1,$4,$5,$6}’ $PRO_DIR/cnt_pkg > $PRO_DIR/Prototmp
$GREP ^d $PRO_DIR/Prototmp > $PRO_DIR/Protodir
$GREP ^f $PRO_DIR/Prototmp >> $PRO_DIR/Protofile


rm -f $PRO_DIR/Prototmp
rm -f $PRO_DIR/cnt_pkg


# Producing pkginfo file


cp $SYS_DIR/$PKG_NAME/pkginfo $PRO_DIR


# Making directory with permission


i=0
while IFS=’ ‘ read line
do
t[$i]=$line
((i=i+1))
mk_dir $line
done < $PRO_DIR/Protodir


# Copying file to Spool directory


i=0
while IFS=’ ‘ read line
do
t[$i]=$line
((i=i+1))
cp_file $line
done < $PRO_DIR/Protofile


# Producing Prototype file


cat $PRO_DIR/Protodir > $PRO_DIR/Prototype
cat $PRO_DIR/Protofile >> $PRO_DIR/Prototype
(echo “i pkginfo”; cat $PRO_DIR/Prototype ) > $PRO_DIR/Prototmp
mv $PRO_DIR/Prototmp $PRO_DIR/Prototype


rm -f $PRO_DIR/Protodir
rm -f $PRO_DIR/Protofile


# Now let’s make the package


$PKGMK -o -r $PRO_DIR -d $PRO_DIR -f $PRO_DIR/Prototype
$PKGTRANS -s $PRO_DIR $PKG_DIR/$PKG_NAME-$VER-pkg $PKG_NAME
$GZIP -f $PKG_DIR/$PKG_NAME-$VER-pkg


rm -rf $PRO_DIR

crontab命令详解   



crontab命令的功能是在一定的时间间隔调度一些命令的执行。在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。


crontab命令有三种形式的命令行结构:


crontab [-u user] [file]


crontab [-u user] [-e|-l|-r]


crontab -l -u [-e|-l|-r] 第一个命令行中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。


命令行中-r选项的作用是从/usr/spool/cron/crontabs目录下删除用户定义的文件crontab;


命令行中-l选项的作用是显示用户crontab文件的内容。


使用命令crontab -u user -e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。


执行命令crontab -u user -r即可删除当前用户的所有的cron作业。


作业与它们预定的时间储存在文件/usr/spool/cron/crontabs/username里。username使用户名,在相应的文件中存放着该用户所要运行的命令。命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。文件里的每一个请求必须包含以spaces和tabs分割的六个域。前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,称为命令字段,其中包括了crontab调度执行的命令。


第一道第五个字段的整数取值范围及意义是:


0~59 表示分


1~23 表示小时


1~31 表示日


1~12 表示月份


0~6 表示星期(其中0表示星期日)


/usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先,如果都不存在,只有超级用户可以安排作业。



如果想要修改crontab,一般做以下的几步就可以了
将crontab 推到一个自定义的文件上
crontab -l>tmp
编辑这个文件,做需要的修改
vi tmp
推回crontab
crontab tmp


 


 


例子:怎么编写 crontab 文件


#!/bin/bash

BackupDir=/export/home/sqwen/data
TargetDir=/export/home/sqwen/backupdata

DateFile=`date +%y%m%d`
cd $BackupDir
cd ..
tar cvfz ${DateFile}.tgz $(basename $BackupDir)
mv ${DateFile}.tgz $TargetDir

磁盘阵列技术-术语汇编
 
    目前,除了网络服务器普遍使用RAID外,一些厂商生产的PC机主板也逐步提供IDE RAID功能,这使我们普通PC机用户也能实际接触到RAID。了解以下这些磁盘阵列的术语,将有助于我们更好的配置自己的RAID并发挥其最优的性能。
  Array:阵列
  磁盘阵列模式是把几个磁盘的存储空间整合起来,形成一个大的单一连续的存储空间。NetRAID控制器利用它的SCSI通道可以把多个磁盘组合成一个磁盘阵列。简单的说,阵列就是由多个磁盘组成,并行工作的磁盘系统。需要注意的是作为热备用的磁盘是不能添加到阵列中的。
  Array Spanning:阵列跨越
  阵列跨越是把2个,3个或4个磁盘阵列中的存储空间进行再次整合,形成一个具有单一连续存储空间的逻辑驱动器的过程。NetRAID控制器可以跨越连续的几个阵列,但每个阵列必需由相同数量的磁盘组成,并且这几个阵列必需具有相同的RAID级别。就是说,跨越阵列是对已经形成了的几个阵列进行再一次的组合,RAID 1,RAID 3和RAID 5跨越阵列后分别形成了RAID 10,RAID 30和RAID 50。
  Cache Policy:高速缓存策略
  NetRAID控制器具有两种高速缓存策略,分别为Cached I/O(缓存I/O)和Direct I/O(直接I/O)。缓存I/O总是采用读取和写入策略,读取的时候常常是随意的进行缓存。直接I/O在读取新的数据时总是采用直接从磁盘读出的方法,如果一个数据单元被反复地读取,那么将选择一种适中的读取策略,并且读取的数据将被缓存起来。只有当读取的数据重复地被访问时,数据才会进入缓存,而在完全随机读取状态下,是不会有数据进入缓存的。
  Capacity Expansion:容量扩展
  在微软的Windows NT,2000或Novell公司的NetWare 4.2,5操作系统下,可以在线增加目前卷的容量。在Windows 2000或NetWare 5系统下,准备在线扩容时,要禁用虚拟容量选项。而在Windows NT或NetWare 4.2系统下,要使虚拟容量选项可用才能进行在线扩容。
  在NetRAID控制器的快速配置工具中,设置虚拟容量选项为可用时,控制器将建立虚拟磁盘空间,然后卷能通过重构把增加的物理磁盘扩展到虚拟空间中去。重构操作只能在单一阵列中的唯一逻辑驱动器上才可以运行,你不能在跨越阵列中使用在线扩容。
  Channel:通道
  在两个磁盘控制器之间传送数据和控制信息的电通路。
  Format:格式化
  在物理驱动器(硬盘)的所有数据区上写零的操作过程,格式化是一种纯物理操作,同时对硬盘介质做一致性检测,并且标记出不可读和坏的扇区。由于大部分硬盘在出厂时已经格式化过,所以只有在硬盘介质产生错误时才需要进行格式化。
        Hot Spare:热备用
  当一个正在使用的磁盘发生故障后,一个空闲、加电并待机的磁盘将马上代替此故障盘,此方法就是热备用。热备用磁盘上不存储任何的用户数据,最多可以有8个磁盘作为热备用磁盘。一个热备用磁盘可以专属于一个单一的冗余阵列或者它也可以是整个阵列热备用磁盘池中的一部分。而在某个特定的阵列中,只能有一个热备用磁盘。
  当磁盘发生故障时,控制器的固件能自动的用热备用磁盘代替故障磁盘,并通过算法把原来储存在故障磁盘上的数据重建到热备用磁盘上。数据只能从带有冗余的逻辑驱动器上进行重建(除了RAID 0以外),并且热备用磁盘必须有足够多的容量。系统管理员可以更换发生故障的磁盘,并把更换后的磁盘指定为新的热备用磁盘。
  Hot swap Disk Module:热交换磁盘模式
  热交换模式允许系统管理员在服务器不断电和不中止网络服务的情况下更换发生故障的磁盘驱动器。由于所有的供电和电缆连线都集成在服务器的底板上,所以热交换模式可以直接把磁盘从驱动器笼子的插槽中拔除,操作非常简单。然后把替换的热交换磁盘插入到插槽中即可。热交换技术仅仅在RAID 1,3,5,10,30和50的配置情况下才可以工作。
  I2O(Intelligent Input/Output):智能输入输出
  智能输入输出是一种工业标准,输入输出子系统的体系结构完全独立于网络操作系统,并不需要外部设备的支持。I2O使用的驱动程序可以分为操作系统服务模块(operating system services module,OSMs)和硬件驱动模块(hardware device modules,HDMs)。
  Initialization:初始化
  在逻辑驱动器的数据区上写零的操作过程,并且生成相应的奇偶位,使逻辑驱动器处于就绪状态。初始化将删除以前的数据并产生奇偶校验,所以逻辑驱动器在此过程中将一并进行一致性检测。没有经过初始化的阵列是不能使用的,因为还没有生成奇偶区,阵列会产生一致性检测错误。
  IOP(I/O Processor):输入输出处理器
  输入输出处理器是NetRAID控制器的指令中心,实现包括命令处理,PCI和SCSI总线的数据传输,RAID的处理,磁盘驱动器重建,高速缓存的管理和错误恢复等功能。
  Logical Drive:逻辑驱动器
  阵列中的虚拟驱动器,它可以占用一个以上的物理磁盘。逻辑驱动器把阵列或跨越阵列中的磁盘分割成了连续的存储空间,而这些存储空间分布在阵列中的所有磁盘上。NetRAID控制器能设置最多8个不同容量大小的逻辑驱动器,而每个阵列中至少要设置一个逻辑驱动器。输入输出操作只能在逻辑驱动器处于在线的状态下才运行。
  Logical Volume:逻辑卷
  由逻辑磁盘形成的虚拟盘,也可称为磁盘分区。
  Mirroring:镜像
  冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。RAID 1和RAID 10使用的就是镜像。  


        Parity:奇偶校验位
  在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。它常常是从两个或更多的原始数据中产生一个冗余数据,冗余数据可以从一个原始数据中进行重建。不过,奇偶校验数据并不是对原始数据的完全复制。
  在RAID中,这种方法可以应用到阵列中的所有磁盘驱动器上。奇偶校验位还可以组成专用的奇偶校验方式,在专用奇偶校验中,奇偶校验数据可分布在系统中所有的磁盘上。如果一个磁盘发生故障,可以通过其它磁盘上的数据和奇偶校验数据重建出这个故障磁盘上的数据。
  Power Fail Safeguard:掉电保护
  当此项设置为可用时,在重构过程中(非重建),所有的数据将一直保存在磁盘上,直到重构完成后才删除。这样如果在重构过程中发生掉电,将不会发生数据丢失的危险情况。
  RAID:独立冗余磁盘阵列
  独立冗余磁盘阵列最初叫做廉价冗余磁盘阵列(Redundant Array of Inexpensive Disks),它是由多个小容量、独立的硬盘组成的阵列,而阵列综合的性能可以超过单一昂贵大容量硬盘(SLED)的性能。由于是对多个磁盘并行操作,所以RAID磁盘子系统与单一磁盘相比它的输入输出性能得到了提高。服务器会把RAID阵列看成一个单一的存储单元,并对几个磁盘同时访问,所以提高了输入输出的速率。
  RAID Levels:RAID级别
  RAID级别为不同冗余类型在逻辑驱动器上的应用。它可以提高逻辑驱动器的故障容许度和性能,但也会减少逻辑驱动器的可用容量,每个逻辑驱动器都必须指定一个RAID级别。
  RAID 1,3和5的逻辑驱动器使用了单一的阵列,附表1描述了它们的具体情况。简单地说,RAID 0是没有冗余,它可由一个或多个物理驱动器组成;RAID 1是镜像冗余,它在一个阵列中需要两个物理驱动器;RAID 3为专用奇偶校验冗余,即所有的冗余数据都存储在一个专用的磁盘上,一个阵列至少由三个物理驱动器组成;RAID 5为分散奇偶校验冗余,即阵列中的冗余数据分散存储在阵列中所有磁盘上,它的一个阵列中至少需要三个物理驱动器。
  RAID 10,30和50是逻辑驱动器跨越阵列而组成的。附表2描述了跨越磁盘阵列的情况。
  Read Policy:读取策略
  NetRAID控制器提供了三种读取策略,分别为Read-Ahead(预读),Normal(标准)和Adaptive(适中)。
  预读是在运行中,控制器不断的提前读取未被请求的数据,把它存储在内存中,并期望这些数据能被使用。预读可以更快的提供连续数据,当访问的是随机数据时效果就不佳了。
  标准策略不使用预读的方法,当读取的数据大部分为随机数据时,这个策略是最有效的。
  适中策略是当访问的最后两个磁盘上的数据存储在连续扇区上时,将采用预读的方法。
  Ready State:就绪状态
  就绪状态是一个可用的硬盘,它即不在线也不是热备用盘,并可以添加到任一个阵列中或者指定为热备用盘的这种硬盘状态。Rebuild:重建
替换磁盘上的过程。磁盘重建过程中逻辑驱动器通常不会中断对其数据的访问请求。
  Rebuild Rate:重建率
  重建操作过程的速度。每个控制器都分配了重建率,它反映的是在重建操作中IOP资源使用的百分比。
  Reconstruct:重构
  在改变RAID级别后,对逻辑驱动器上的数据重新整理的过程。
  SCSI Disk Status:SCSI磁盘状态
  SCSI磁盘(物理驱动器)可以有以下五种状态,分别为Ready(就绪),未配置的加电可操作磁盘;Online(在线),配置过的加电可操作磁盘;Hot Spare(热备用),当一个磁盘出现故障时,准备使用的加电待用磁盘;Failed(故障),磁盘发生错误导致失效或用户利用NetRAID控制器实用程序使驱动器脱机的状态;Rebuilding(重建),磁盘正处于从一个或几个关键性逻辑驱动器上恢复数据的过程中。
  Stripe Size:条带容量
  在每个磁盘上连续写入数据的总量,也称作“条带深度”。你可以指定每个逻辑驱动器的条带容量从2KB,4KB,8KB一直到128KB。为了获得更高的性能,要选择条带的容量等于或小于操作系统的簇的大小。大容量的条带会产生更高的读取性能,尤其在读取连续数据的时候。而读取随机数据的时,最好设定条带的容量小一点。如果指定128KB的条带将需要8MB内存。
  Striping:条带化
  条带化是把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中不同磁盘上的方法。此技术非常有用,它比单个磁盘所能提供的读写速度要快的多,当数据从第一个磁盘上传输完后,第二个磁盘就能确定下一段数据。数据条带化正在一些现代数据库和某些RAID硬件设备中得到广泛应用。
  Virtual Sizing:虚拟容量
  当此设置生效后,对一个逻辑驱动器来说,控制器将报告逻辑驱动器的容量比实际的物理容量要大的多。“虚拟”空间可以允许在线扩容。
  Write policy:写入策略
  当处理器向磁盘上写入数据的时候,数据先被写入高速缓存中,并认为处理器有可能马上再次读取它。NetRAID有两种如下的写入策略:
  Write Back(回写),在回写状态下,数据只有在要被从高速缓存中清除时才写到磁盘上。随着主存读取的数据增加,回写需要开始从高速缓存中向磁盘上写数据,并把更新的数据写入高速缓存中。由于一个数据可能会被写入高速缓存中许多次,而没有进行磁盘存取,所以回写的效率非常高。
  Write Through(完全写入),在完全写入状态下,数据在输入到高速缓存时,它同时也被写到磁盘上。因为数据已经复制到磁盘上,所以在高速缓存中可以直接更改要替换的数据,因此完全写入要比回写简单的多。


RAID级别 RAID 0 RAID 1 RAID 3 RAID 5
名称 条带 镜像 专用校验条带 分散校验条带
允许故障 否 是 是 是
冗余类型 无 副本 校验 校验
热备用操作 不可 可以 可以 可以
硬盘数量 一个以上 两个 三个以上 三个以上
可用容量 最大 最小 中间 中间
减少容量 无 50% 一个磁盘 一个磁盘
读性能 高(盘的数量决定) 中间 高 高
随机写性能 最高 中间 最低 低
连续写性能 最高 中间 低 最低
典型应用 无故障的迅速读写 允许故障的小文件、随机数据写入 允许故障的大文件、连续数据传输 允许故障的小文件、随机数据传输
RAID级别 RAID 10 RAID 30 RAID 50
名称 跨越镜像阵列 跨越专用校验阵列 跨越分散校验阵列
允许故障 是 是 是
冗余类型 副本 校验 校验
热备用操作 可以 可以 可以
磁盘数量
跨越2个阵列 4 6,8,10,12,14或16 6,8,10,12,14或16
跨越3个阵列 6 9,12或15 9,12或15
跨越4个阵列 8 12或16 12或16
可用容量 最小 中间 中间
减少容量 50% 每个阵列中一个磁盘 每个阵列中一个磁盘
读性能 中间 高 高
随机写性能 中间 最低 低
连续写性能 中间 低 最低
典型应用 允许故障高速度小文件、随机数据写入 允许故障高速度大文件、连续数据传输 允许故障高速度小文件、随机数据传输


 

2004年03月05日







三层交换好处多


 

作者:卓一超、高志宏、张群瑜、潘传迪、吴雷 发文时间:2004.02.18


        大型医院信息网络采用三层交换技术,可以确保计算机网络系统更加合理、安全、有效。随着医院信息化水平的提高,医院信息系统网络规模在不断扩大,随之而来的网络安全、网络流量、网络通信速度、网络维护工作量等问题明显增加。究其原因,目前,各家医院的信息网络普遍采用二层交换技术的网络架构。其主要弱点是:在局域网内不能划分VLAN;同一个网段内的工作站过多会引起广播风暴,甚至导致网络瘫痪;不能有效地解决异种网络互连、安全性控制等问题。而采用三层交换技术的网络架构,很大程度上避免了二层交换技术网络架构的缺陷,能改善网络整体性能。


二层交换技术的缺陷


        众所周知,二层交换技术是在OSI七层网络标准模型中的第二层,即数据链路层进行操作的,它按照所接收到数据包的目的物理地址即MAC地址来进行数据转发,对于网络层或者高层协议来说是透明的。它不处理网络层的IP地址,不处理高层协议,诸如TCP、UDP的端口地址。它只需要数据包的MAC地址,数据交换是靠硬件来实现的,其优点是交换速度快,缺点是广播域太大,而且不能处理不同IP子网之间的数据交换。这种网络结构扁平,没有层次化概念。


        温州医学院附属第一医院信息系统网络初期采用二层交换技术的网络架构,核心交换机采用二层交换技术,在原先只有100多台工作站的情况下,网络性能较理想。由于网络规模在不断扩大,工作站增加到500多台时,网络性能明显下降,在业务高峰期网络整体速度缓慢,用网管软件分析,发现网络中广播包所占比例很大,最高时达到60%左右。另外,对于这种网络,很容易发生诸如网卡故障等原因引起的网络广播风暴,而且一旦发生广播风暴,很难查找故障点,网络维护工作量很大。


三层交换与VLAN结合


        三层交换技术,也称多层交换技术或IP交换技术,是相对于二层交换技术提出的,因工作在OSI七层网络标准模型中的第三层而得名。传统的路由器也工作在第三层,它可以处理大量的跨越IP子网的数据包,但是它的转发效率比较低,而三层交换技术在网络标准模型中的第三层实现了分组的高速转发,效率大大提高。简单地说,三层交换技术就是“二层交换技术 + 路由转发”。它的出现,解决了二层交换技术不能处理不同IP子网之间的数据交换的缺点,又解决了传统路由器低速、复杂所造成的网络瓶颈问题。


        VLAN(Virtual Local Area Network)即虚拟局域网,是一种通过将局域网内的设备逻辑地而不是物理地划分成一个个不同的网段,从而实现虚拟工作组的技术。它不受网络用户的物理位置限制,而是根据用户需求进行网络分段。IEEE于1999年颁布了用以标准化VLAN实现方案的802.1q协议标准草案。不同VLAN之间的数据传输是通过第三层(网络层)的路由来实现的,因此,使用VLAN技术,结合数据链路层和网络层的交换设备,可搭建安全可靠的网络。


        划分VLAN的目的:一是提高网络安全性,不同VLAN的数据不能自由交流,需要接受第三层的检验,因此,在一定程度上加强了虚网间的隔离,有效防止外部用户入侵,提高了安全性。二是隔离广播信息,划分VLAN后,广播域缩小,有利于改善网络性能,能够将广播风暴控制在一个VLAN内部,同时使网络管理趋于简单。三是增强网络应用的灵活性,VLAN是在一个有多台交换机的局域网中统一设定的,这使得用户可以不受所连交换机的限制,不论用户节点移动到局域网中哪一台交换机上,只要仍属于原来的虚网,则应用环境没有任何改变。在划分VLAN时,要考虑VLAN对于网络流量的影响,单个VLAN不宜过大。


层次化架构三层网络


        三层网络架构采用层次化模型设计,即将复杂的网络设计分成几个层次,每个层次着重于某些特定的功能,这样就能够使一个复杂的大问题变成许多简单的小问题。三层网络架构设计的网络有三个层次:核心层(网络的高速交换主干)、汇聚层(提供基于策略的连接)、接入层(将工作站接入网络)。


        核心层 核心层是网络的高速交换主干,对整个网络的连通起到至关重要的作用。核心层应该具有如下几个特性:可靠性、高效性、冗余性、容错性、可管理性、适应性、低延时性等。在核心层中,应该采用高带宽的千兆以上交换机。因为核心层是网络的枢纽中心,重要性突出。核心层设备采用双机冗余热备份是非常必要的,也可以使用负载均衡功能,来改善网络性能。


        汇聚层 汇聚层是网络接入层和核心层的“中介”,就是在工作站接入核心层前先做汇聚,以减轻核心层设备的负荷。汇聚层具有实施策略、安全、工作组接入、虚拟局域网(VLAN)之间的路由、源地址或目的地址过滤等多种功能。在汇聚层中,应该采用支持三层交换技术和VLAN的交换机,以达到网络隔离和分段的目的。


        接入层 接入层向本地网段提供工作站接入。在接入层中,减少同一网段的工作站数量,能够向工作组提供高速带宽。接入层可以选择不支持VLAN和三层交换技术的普通交换机。三层网络架构模型如图所示。



        温州医学院附属第一医院现有的信息系统网络采用三层交换技术的网络架构,局域网内划分了VLAN后,网络性能大为改善,具有如下优点:


        一是合理配置了核心交换机,充分发挥了核心交换机的硬件性能,调整后的核心交换机在带宽、网络流量处理能力上表现出色,具备良好的扩展性。二是在医院信息系统网络内,根据业务需求划分VLAN,控制广播范围,抑制广播风暴,提高了局域网的整体性能和安全性。三是整个网络可靠性得到加强,核心交换机采用双机热备份、负载平衡方式,即两台核心交换机正常情况下都参与工作,当其中的任何一台发生故障时,另外一台可以自动、无缝地接管它的工作,这对网络管理员、用户来说都是透明的,无需人工干预故障切换。四是提高网络对突发事故的自动容错能力,最小化网络的失效时间。


点评


        从二层交换技术的网络架构调整到三层交换技术的网络架构,网络的优化效果明显,配之以网管软件,网络的安全性和可防护性大为提高。而网络的扩展能力满足了医院今后一段时间内对网络发展的需求,支持了大型医院的信息化建设。

2004年03月04日

       Fuser命令


按平时做法,如果我们要结束叫/bin/csh的进程,我们需要:
ps -aux|grep csh
  假设得到:
  root 1345 1345 ……… /bin/csh
  root 2434 2434 ……… /bin/csh
  root 3678 3678 ……… grep csh
  然后执行kill命令:
  kill 1345 2434
  而如果我们使用fuser命令就可以执行:
  fuser -k /bin/csh
  也一样完成了以上的工作!


 


killall – 以名字方式来杀死进程
本文出自:http://www.cmpp.net 作者: (2001-09-20 07:00:00)
KILLALL
Section: User (1)
Updated: 1999年9月7日


——————————————————————————–
 
NAME (名称)
killall – 以名字方式来杀死进程  
SYNOPSIS (总览)
killall [-egiqvw] [-signal] name …
killall -l
killall -V  
DESCRIPTION (描述)
killall 发送一条信号给所有运行任意指定命令的进程. 如果没有指定信号名, 则发送 SIGTERM.
信号可以以名字 (如 -HUP ) 或者数字 (如 -1 ) 的方式指定. 信号 0 (检查进程是否存在)只能以数字方式指定.


如果命令名包括斜杠 (/), 那么执行该特定文件的进程将被杀掉, 这与进程名无关.


如果对于所列命令无进程可杀, 那么 killall 会返回非零值. 如果对于每条命令至少杀死了一个进程, killall 返回 0.


killall 进程决不会杀死自己 (但是可以杀死其它 killall 进程).  


OPTIONS (选项)
-e
对于很长的名字, 要求准确匹配. 如果一个命令名长于 15 个字符, 则可能不能用整个名字 (溢出了). 在这种情况下, killall 会杀死所有匹配名字前 15 个字符的所有进程. 有了 -e 选项,这样的记录将忽略. 如果同时指定了 -v 选项, killall 会针对每个忽略的记录打印一条消息.
-g
杀死属于该进程组的进程. kill 信号给每个组只发送一次, 即使同一进程组中包含多个进程.
-i
交互方式,在杀死进程之前征求确认信息.
-l
列出所有已知的信号名.
-q
如果没有进程杀死, 不会提出抱怨.
-v
报告信号是否成功发送.
-V
显示版本信息.
-w
等待所有杀的进程死去. killall 会每秒检查一次是否任何被杀的进程仍然存在, 仅当都死光后才返回. 注意: 如果信号被忽略或没有起作用, 或者进程停留在僵尸状态, killall 可能会永久等待.
 
FILES(相关文件)
/proc   proc文件系统的存在位置


 
KNOWN BUGS (已知 BUGS)
以文件方式杀死只对那些在执行时一直打开的可执行文件起作用, 也即, 混杂的可执行文件不能够通过这种方式杀死.
要警告的是输入 killall name 可能不会在非 Linux 系统上产生预期的效果, 特别是特权用户执行时要小心.


在两次扫描的间隙, 如果进程消失了而被代之以一个有同样 PID 的新进程, killall -w 侦测不到.  
 
 

SAN,NAS,DAS及其架构之间区别
作者:存储专家  


随着计算机技术的发展和广泛应用,存储技术已经得到了业界和各个应用领域专业人士的重视。数据量的迅速增长为企业的发展提出了新的问题和要求,如何确保数据的一致性、安全性和可靠性,如何实现不同数据的集中管理,如何实现网络上的数据集中访问,如何实现不同主机类型的数据访问和保护等等。所有这些都呼唤着新的网络存储技术及其产品的出现。


SAN与NAS技术和产品的出现不仅仅拓展了网络发展的空间,更为重要的是,它们将网络技术与新兴的存储领域有机地结合起来,在IT业发展过程中起到了不可忽视的作用。


SAN和NAS经常被视为两种竞争技术,实际上,二者还能够很好地相互补充,以提供对不同类型数据的访问。SAN针对海量、面向数据块的数据传输,而NAS则提供文件级的数据访问功能。


这两种技术不但可以满足灵活的存储访问的需要,而且SAN和NAS都基于开放的、业界标准的网络协议:用于SAN的光纤通道协议和用于NAS的网络协议(如TCP/IP)。SAN的应用范围更为广泛,而且可以提供对NAS设备的存储,而NAS一般只限于文件级数据访问的应用。如果不考虑它们之间的差别,SAN和NAS在今天的企业级存储中都发挥着重要的作用,比传统的服务器连接存储拥有更多的优势。


SAN和NAS在数据中心领域对传统的服务器连接存储是强有力的补充和替代。因而,企业级用户逐渐认识到其众多的优点,包括改进的灵活性、更方便的存储部署,以及更低的总体拥有成本。尽管SAN和NAS技术可以提供竞争优势,但是它们都是为特定的环境和应用而设计的。


SAN的关键特性


SAN作为网络基础设施,是为了提供灵活、高性能和高扩展性的存储环境而设计的。SAN通过在服务器和存储设备(例如磁盘存储系统和磁带库)之间实现连接来达到这一目的。


高性能的光纤通道交换机和光纤通道网络协议可以确保设备连接既可靠且有效。这些连接以本地光纤或SCSI(通过SCSI-to-Fibre Channel转换器或网关)为基础。一个或多个光纤通道交换机以网络拓扑(SAN架构)形式为主机服务器和存储设备提供互联。


由于SAN是为在服务器和存储设备之间传输大块数据而进行优化的,因此SAN对于以下应用来说是理想的选择:


关键任务数据库应用,其中可预计的响应时间、可用性和可扩展性是基本要素。
集中的存储备份,其中性能、数据一致性和可靠性可以确保企业关键数据的安全。
高可用性和故障切换环境可以确保更低的成本、更高的应用水平。
可扩展的存储虚拟化,可使存储与直接主机连接相分离,并确保动态存储分区。
改进的灾难容错特性,在主机服务器及其连接设备之间提供光纤通道高性能和扩展的距离(达到150公里)。
SAN的主要长处


面对迅速增长的数据存储需求,大型企业和服务提供商渐渐开始选择SAN作为网络基础设施,因为SAN具有出色的可扩展性。事实上,SAN比传统的存储架构具有更多显著的优势。例如,传统的服务器连接存储通常难于更新或集中管理。每台服务器必须关闭才能增加和配置新的存储。相比较而言,SAN不必宕机和中断与服务器的连接即可增加存储。SAN 还可以集中管理数据,从而降低了总体拥有成本。


利用光纤通道技术,SAN可以有效地传输数据块。通过支持在存储和服务器之间传输海量数据块,SAN提供了数据备份的有效方式。因此,传统上用于数据备份的网络带宽可以节约下来用于其他应用。


开放的、业界标准的光纤通道技术还使得SAN非常灵活。SAN克服了传统上与SCSI相连的线缆限制,极大地拓展了服务器和存储之间的距离,从而增加了更多连接的可能性。改进的扩展性还简化了服务器的部署和升级,保护了原有硬件设备的投资。


此外,SAN可以更好地控制存储网络环境,适合那些基于交易的系统在性能和可用性方面的需求。SAN利用高可靠和高性能的光纤通道协议来满足这种需要。


SAN的另一个长处是传送数据块到企业级数据密集型应用的能力。在数据传送过程中,SAN在通信结点(尤其是服务器)上的处理费用开销更少,因为数据在传送时被分成更小的数据块。因此,光纤通道SAN在传送大数据块时非常有效,这使得光纤通道协议非常适用于存储密集型环境。


今天,SAN已经渐渐与NAS环境相结合,以提供用于NAS设备的高性能海量存储。事实上,许多SAN目前都用于NAS设备的后台,满足存储扩展性和备份的需要。


SAN带来的好处


SAN的一个好处是极大地提高了企业数据备份和恢复操作的可靠性和可扩展性。基于SAN的操作能显著减少备份和恢复的时间,同时减少企业网络上的信息流量。


通过将SAN拓展到城域网基础设施上,SAN还可以与远程设备无缝地连接,从而提高容灾的能力。SAN部署城域网基础设施以增加SAN设备间的距离,可达到150公里,而且几乎不会降低性能。企业可以利用这一点,通过部署关键任务应用和用于关键应用服务器的远程数据复制来提高容灾能力。备份和恢复设备是实现远程管理的需要。


另外,基于交易的数据库应用从SAN部署中获益颇多。其无缝增加存储的能力可以减少数据备份的时间。


SAN存在的问题


近两年来,SAN这一概念已经渐入人心。SAN可以取代基于服务器的存储模式,性能更加优越。然而,时至今日,互操作性仍是实施过程中存在的主要问题。SAN本身缺乏标准,尤其是在管理上更是如此。虽然光纤通道(Fibre Channel)技术标准的确存在,但各家厂商却有不同的解释,于是,互操作性问题就像沙尘暴一样迎面扑来,让人猝不及防。


一些SAN厂商通过SNIA等组织来制定标准。还有一些厂商则着手大力投资兴建互操作性实验室,在推出SAN之前进行测试。另一种途径便是外包SAN。尽管SAN厂商在解决互操作性问题上已经取得了进步,不过,专家仍建议用户采用外包方式,不要自己建设SAN。


NAS的关键特性


NAS解决方案通常配置为作为文件服务的设备,由工作站或服务器通过网络协议(如TCP/IP)和应用程序(如网络文件系统NFS或者通用Internet文件系统CIFS)来进行文件访问。大多数NAS连接在工作站客户机和NAS文件共享设备之间进行。这些连接依赖于企业的网络基础设施来正常运行。


为了提高系统性能和不间断的用户访问,NAS采用了专业化的操作系统用于网络文件的访问,这些操作系统既支持标准的文件访问,也支持相应的网络协议。


NAS使文件访问操作更为快捷,并且易于向基础设施增加文件存储容量。因为NAS关注的是文件服务而不是实际文件系统的执行情况,所以NAS设备经常是自包含的,而且相当易于部署。


NAS设备与客户机之间主要是进行数据传输。今天在LAN/WAN上传输的大量数据被分成许多小的数据块。传输的处理过程需要占用处理器资源来中断和重新访问数据流。如果数据包的处理占用太多的处理器资源,则在同一服务器上运行的应用程序会受到影响。由于网络拥堵影响NAS的性能,所以,其性能局限性之一是网络传输数据的能力。


NAS存储的可扩展性也受到设备大小的限制。增加另一台设备非常容易,但是要像访问一台机器上的数据那样访问网络环境中的内容并不容易,因为NAS设备通常具有独特的网络标识符。由于上述这些限制,NAS环境中的数据备份不是集中化的,因此仅限于使用直接连接设备(如专用磁带机或磁带库)或者基于网络的策略,在该策略中,设备上的数据通过企业或专用LAN进行备份。


NAS与DAS方式的区别


作为一种新兴的存储技术,NAS有着传统直接连接方式所无法比拟的优势。表1对这两种方式进行了一个简单的比较。


表1 NAS与DAS的比较


网络附加存储(NAS)                                
通过文件系统的集中化管理能够实现网络文件的访问。  
用户能够共享文件系统并查看共享的数据。            
专业化的文件服务器与存储技术相结合,为网络访问提供高可靠性的数据。
直接连接存储(DAS)
只能通过与之连接的主机进行访问。
每一个主机管理它本身的文件系统,但不能实现与其他主机共享数据。
只能依靠存储设备本身为主机提供高可靠性的数据。


NAS的技术特点


NAS为那些访问和共享大量文件系统数据的企业环境提供了一个高效、性能价格比优异的解决方案。数据的整合减少了管理需求和开销,而集中化的网络文件服务器和存储环境—包括硬件和软件—确保了可靠的数据访问和数据的高可用性。可以说,NAS提供了一个强有力的综合机制。


NAS技术能够满足特定的用户需求。例如当某些企业需要应付快速数据增长的问题,或者是解决相互独立的工作环境所带来的系统限制时,可以采用新一代NAS技术,利用集中化的网络文件访问机制和共享来解决这些问题,从而达到减少系统管理成本,提高数据备份和恢复功能的目的。


NAS的主要长处


NAS适用于那些需要通过网络将文件数据传送到多台客户机上的用户。NAS设备在数据必须长距离传送的环境中可以很好地发挥作用。


此外,NAS设备非常易于部署—可以使NAS主机、客户机和其他设备广泛分布在整个企业的网络环境中。正确地进行配置之后,NAS可以提供可靠的文件级数据整合,因为文件锁定是由设备自身来处理的。尽管其部署非常简单,但是企业仍然要确保在NAS设备的配置过程中提供适当的文件安全级别。


NAS带来的好处


NAS应用于高效的文件共享任务中,例如UNIX中的NFS和Windows NT中的CIFS,其中基于网络的文件级锁定提供了高级并发访问保护的功能。NAS设备可以进行优化,以文件级保护向多台客户机发送文件信息。


在某些情况下,企业可以有限地为数据库应用部署NAS解决方案。这些情况一般只限于以下的应用:大量的数据访问是只读的;数据库很小;要访问的逻辑卷也很少; 所要求的性能也不高。在这些情况下,NAS 解决方案有助于减少用户的总体拥有成本。


互为补充的两种技术


尽管它们之间存在着区别,但是SAN和NAS是两种互为补充的存储技术。例如,SAN在数据块传输和扩展性方面表现优秀,并能够有效地管理设备。企业可以从将SAN应用于关键任务应用、存储集中、备份恢复和高可用性计算等方面受益无穷。


与SAN相比,NAS支持多台对等客户机之间的文件共享。NAS客户机可以在企业中任何地点访问共享的文件。因为在NAS环境中文件访问的逻辑卷较少,对于响应时间要求也不是很高,所以其性能和距离要求也相对较低。


表2 SAN与NAS关键特性比较



                  SAN                                                                      NAS
协议    Fibre Channel Fibre Channel-to-SCSI                        TCP/IP
应用    *关键任务,基于交易的数据库应用处理           *NFS和CIFS中的文件共享
           *集中的数据备份                                                    *长距离的小数据块传输
           *灾难恢复                                                                *有限的只读数据库访问
           *存储集中                    
优点   *高可用性                                                                *距离的限制少
           *数据传输的可靠性                                                *简化附加文件的共享容量
           *减少远网络流量                                                    *易于部署和管理
           *配置灵活
           *高性能
           *高可扩展性
           *集中管理


NAS和SAN之间的许多原有差别开始消失。例如,NAS设备逐渐采用SAN来解决与存储扩展和备份恢复相关的问题。尽管这两种技术类似,但是NAS不能提供SAN所带来的全面的商业优势。然而,与传统的服务器附加存储相比,不管是SAN还是NAS技术都能减少用户的总体拥有成本,并能提供更好的投资回报。 

2004年03月02日

电脑硬盘出现坏道后,如果不及时更换或进行技术处理,坏道就会越来越多,并会造成频繁死机和数据丢失。硬盘出现坏道最好对硬盘进行重新分区,把坏道部分单独分成一个区,并把它隐藏起来。在Linux下硬盘坏道有两种修复方法,下面我将介绍比较这两种方法,它们是在ext2文件格式下修改的,也同样适用ext3格式,因为ext3只不过是ext2+journal。

修复方法一

为了检查坏道,可以使用mkfs.ext2的命令,带上参数-C用只读的方式检查硬盘。我们使用man命令查看“mkfs.ext2”需要带上的参数,输入下面命令:





#man mkfs.ext2


由其结果可以看到显示“mkfs.ext2”可以支持的功能和参数。





#man mkfs.ext2
mke2fs [ -c | -l filename ] [ -b block-size ] [ -f fragment-size ] [ -i
……


上面代码表示使用-c在创建文件系统前检查坏道的硬盘,-b是block的大小,-f碎裂的大小。这个操作已经很清楚地告知我们可以采用“mkfs.ext2 -c”选项用“read-only”方式检查硬盘。这个命令会在格式化硬盘时检查硬盘,并标出错误的硬盘“block”。用这个方法格式化硬盘,需要有相当大的耐心,因为命令运行后,会一个个用读的方式检查硬盘。做法如下:





# mkfs.ext2 -c /dev/hda1


修复方法二

根据经验,坏道通常会波及到其它的区域,尤其是邻近的“block”。此外还有些“block”会有以下的情况:读写16次中有一两次会出现读写错误的情况。类似这种要坏不坏的情况具体修复方法如下,先输入下面命令:





# man badblocks


查看一下badblocks所带的参数,由结果可以看到显示“badblocks”可以支持的功能和参数。





NAME
badblocks - search a device for bad blocks
badblocks [ -svwnf ] [ -b block-size ]
[ -c blocks_at_once ] [ -i input_file ]
[ -o output_file ] [ -p num_passes ] device [ last-block ] [ start-block ]
-b block-size
-c number of blocks
……


上面的说明中表明badblocks 检查寻找一个设备上的坏道;-b是block的大小,-c是检查的次数,-i输出文件,-o输入文件,-p是通过的数量。

硬盘在格式化时会指定一个“block”的大小,默认值为“block 4K ”(4K/block)。“badblocks”在检查坏道时并不知道将来想要格式化时所指定的“block-size”,所以必须告知“badblocks”硬盘的“block size”。

“-c number of blocks”是检查的次数,默认是16次。这样的命令需要耐心等待。语法如下:





# badblocks -b 4096 -c 16 /dev/hda1 -o hda-badblocks-list


其中,“badblocks”以4096的一个block,每一个block检查16次,将结果输出到“hda-badblocks-list”文件里。

“hda-badblocks-list”是个文本文件,内容如下:





# cat hda-badblocks-list
51249
51250
51251
51253
51254
……
61245
……


如果希望能找出可疑的“blocks”,并一起“mark”起来,可以针对可疑的区块多做几次操作:





# badblocks -b 4096 -c 1 /dev/hda1 -o hda-badblocks-list.1 63000 51000


“badblocks”以4096字节为一个“block”,每一个“block”检查1次, 将结果输出到“hda-badblocks-list.1”文件中,由第51000 block开始,到63000 block结束。这次花费的时间比较短,硬盘在指定的情况下在很短的时间就产生“嘎嘎嘎嘎”的响声。由于检查条件的不同,其输出的结果也不完全是相同的。





# cat hda-badblocks-list.1
51248
51250
51251
51253
……
61243
61245
……


重复几次上述的操作,因条件多少都有些不同,所以结果也有所不同。进行多次操作后,产生了最后的“hda-badblock-list.final” ,最后要格式化硬盘。输入下面代码:





#man mkfs.ext2


结果可以看到显示“mkfs.ext2 ”可以支持的功能和参数。





NAME mke2fs – create an ext2/3 filesystem
……


mkfs.ext2是用来创建一个ext2/3系统文件。

总结

以上介绍的是Linux下硬盘有了坏道的解决方法,希望这些方法能给大家带来帮忙。

硬盘有了坏道,如果不是因为老化问题,则说明平时在使用上有不妥之处,比如对硬盘过分频繁地整理碎片、内存太少以致应用软件对硬盘频频访问等,而忽略对硬盘的防尘处理也会导致硬盘磁头因为定位困难引发机械故障。另外,对CPU超频引起外频增高,迫使硬盘长时间在过高的电压下工作,也会引发故障。所以,平时对硬盘的使用还应以谨慎操作为上策。

Linux操作系统相比Windows要复杂得多,修复硬盘的方法及技巧绝不仅限与此,本文只是抛砖引玉,希望广大电脑爱好者能更好地熟悉Lnux环境下硬盘。