elva

Solaris系统管理

dd命令复制硬盘


 1)确保原盘和目的盘几何特性相同
2)成为超级用户
3)在用主盘的系统中输入touch /reconfigure,有主盘的系统需要/reconfigure文件,以便在重新启动时发现复制盘
4)输入init 0关闭系统
5)将复制盘连接到系统并开机
6)在OK提示符下输入boot
7)输入dd if=/dev/dsk/device-name of=/dev/dsk/device-name bs=blocksize (输入文件if是主盘设备,输入文件of是复制盘设备)
8)输入fsck /dev/rdsk/device-name (检测新的文件系统)
9)输入mount /dev/rdsk/device-name /mnt 加载复制盘的root文件系统。
10)编辑复制盘上的/etc/vfstab文件,指向正确的设备名。
11)输入umount/mnt ,卸载复制盘的root文件系统。
12)输入init 0关闭系统。
13)输入boot diskN -s以单用户模式引导复制盘。
14)输入sys-uconfig恢复配置复制盘,在该盘配置恢复后系统关闭。
15)输入boot diskN 引导复制盘
16)提供相关的系统信息。(HOSTNAME TIMEZONE  IP...)
17)系统完成,即作为超级用户登录验证系统信息。

例:
#dd if=/dev/dsk/c0t0d0s2 of=/dev/dsk/c0t1d0s2 bs=100k
#fsck /dev/rdsk/c0t1d0s2
#mount /dev/rdsk/c0t1d0s2 /mnt
#cd /mnt/etc
#vi /etc/vfstab
#cd /;umount /mnt
#init 0
OK boot disk2 -s
#sys-unconfig
OK boot disk2 -s


=================================================================================
Solaris网络配置

主机名为sampdt,ip 10.1.1.1

1 /etc/hosts 主机名解析
#
# Internet host table
#
127.0.0.1       localhost       
10.1.1.1  sampdt  loghost
10.1.1.46  test.china.org
10.1.1.3   sidemo
2 /etc/hostmane.hme0 网络接口名
sampdt
3 /etc/netmasks 网络掩码
4 /etc/inetd.conf 服务项目定义
5 /etc/defaultroot 设定路由
6 /etc/nsswitch.files 设定名字搜索顺序
7 /etc/defaultrouter 缺省路由

做为DNS服务器
建立/etc/named.boot
named.boot格式:
directory /etc/namedb
cache   .       named.root
primary         0.0.127.in-addr.arpa            named.local
primary domain name file

远程访问命令
1. rlogin 在远程机上注册
格式 : rlogin hostname -l username
2. rsh 在远程机上执行一个程序
格式 : rsh hostname -l username order
3. rcp 在远程系统之间拷贝文件
格式 : rsh host:filename filename 

访问鉴别相关文件 
当rlogin,rsh,rcp命令时,有几个文件对网络安全是很重要的.
/etc/passwd
如远程系统的口令文件有本地用户的登记项,否则必须使用 [-l] 选项以指明不同用户,可支持root用户。
$home/.rhosts
rlogin,rsh,rcp首先检查用户主目录下的.rhosts文件,如主机及用户被列在文件中,则此用户为可信任主机,不需口令即可登录,如远程鉴
别失败,则正常询问口令
/etc/hosts.equiv
作用与.rhosts 文件类似,文件中列出用户对于本机为可信任用户,不需口令即可登录(除超级用户)
 
网络监控
1.rusers 标识网络上注册用户
格式:rusers -la
2.rup 标识网络上主机
命令格式:rup 
3.ping 检测主机连接状况
命令格式:ping [hostname|IP address]
4.spray ping命令格式为低层协议,spray使用高层协议
命令格式:spray hostname
5.netstat 显示与网络有关的各种数据结构
命令格式:netstat -[r| i]n 
-r :显示路由信息 -i :显示接口信息
6.ifconfig 显示网络接口
命令格式:ifconfig -a
其中 lo0: 本机自回馈接口 le0: 10M接口 hme0:100M接口 hme1:第二100M接口
7.netstat 显示与网络有关的各种数据结构
命令格式:netstat -[r| i]n  -r :显示路由信息
-i :显示接口信息
8.route 路由设置
命令格式:route [add|delete] 设置网络路由
defaultrouter <-缺省静态路由
9.arp 反响解析
命令格式:arp -[a|s]

================================================================================

Solaris使用技巧

在从WINDOWS传到UNIX在每行的结尾可能会出现^M
解决方法:
1、用ASCII模式重传。
2、用vi 中的替换
   %s/^M$//  <- ^ ctrl+v   M ctrl+m
   
   
文件名为 -filename 如何去删除
rm -- "-filename"
     

fd      -       /dev/fd fd      -       no      -
/proc   -       /proc   proc    -       no      -
/dev/dsk/c0t3d0s0       /dev/rdsk/c0t3d0s0      /       ufs     1       no      -
/dev/dsk/c0t0d0s3       /dev/rdsk/c0t0d0s3      /usr    ufs     1       no      -
/dev/dsk/c0t0d0s0       /dev/rdsk/c0t0d0s0      /download  ufs     2       yes     -
/dev/dsk/c0t3d0s1       /dev/rdsk/c0t3d0s1      /export ufs     2       yes     -
#/dev/dsk/c0t0d0s1       -       -       swap    -       no      -
#swap    -       /tmp    tmpfs   -       yes     -

 

ls的特殊用法:
%ls -R // 显示所有文件包括子目录
%ls * // 同上
%ls -t // 以时间排序来显示
下面的语句可以帮你计算有多少个文件和多少个目录..
# ls -l * |grep "^-"|wc -l // to count files 
# ls -l * |grep "^d"|wc -l // to count dir 
还可以将以上的语句变成script或做个alias
只列子目录的方法:
ls -F | grep /$ 或者 alias sub = "ls -F | grep /$"(Linux)
ls -l | grep "^d" 或者 ls -lL | grep "^d" (Solaris)


Grep命令用法
%grep user1 /etc/passwd
%grep -i user1 /etc/passwd //不管大小写 


Alias用法
%alias find1 find . -name '\!*' -print // alias a new find 


Find命令用法
%find . ctime 0 -print //搜寻今天修改过的所有文件
%find . -name '*.bak' -exec rm {}\ //搜寻加删除
%find . \(-name *.txt -ctime 7\) -print //搜寻7天前修改过的txt文件
利用Find命令改变所有权,想要改变当前目录下所有文件的所有权,可以这样:
find . -exec chown OWNER.[GROUP] {} \; (Solaris)
find . -exec chown -R OWNER.[GROUP] {} \; (Linux) 


Cut命令用法
%cut -f field_list file //以逗号或空格来间隔
%cut -d: -f5,7-9 mydata //以冒号来间隔
%cut -s -c35-40 mydata //以列数来间隔-s 不包括头部注释

列出除了某些类型文件的当前目录所有文件:
使用Ksh,用ls !(*.Z)可以显示所有文件,除了*.Z文件。
这个命令在一个目录里有许多种类型的文件的时候很有用。 


改变unix提示符:
%PS1=’newprompt’
%export PS1
还可以这么做:
%set prompt='user1[\!]' // \! 显示命令次数 


为环境变量增加新PATH路径(不影响老路径)。
%PATH=$PATH:$HOME/bin:/…/…/
%export PATH 


列举与某个主题相关的所有unix命令:
%apropos lp //列举与lp(打印机)相关的所有命令 


查看unix版本号:
%uname –a

UNIX下整个目录拷贝
%cp –r /home/baoshan/zzy .
//将/home/baoshan/zzy整个目录拷贝到当前目录下


UNIX下文件格式与DOS文件格式互换
%unix2dos oldfile newfile
%dos2unix oldfile newfile


查看UNIX下已经安装的包-package
%pkginfo


显示某一目录下所有文件size
%du –d /; //显示根目录下所有文件的size大小


文件加密:
%crypt passwd < myfile > newfile //compress
%rm myfile
%crypt passwd < newfile //restore


取消^M字符:
当你FTP一些DOS文件到unix下时,你经常会看见每行文件后面有个讨
厌的^M 字符,(把 HTML 文件传输到 UNIX 系统可引起回车符转变成“^M”字符),
有两个简单的方法可以取消它。
用"vi"打开此文件,在Command mode下敲入:
:%s/^V^M//g 
或者,在UNIX SHELL下敲入:
sed 's/^V^M//g' foo > foo.new 


使用nohup命令:
如果你想进程在你退出系统后还能执行,可以使用NOHUP命令
如: % nohup tar -cf /dev/tape /home & 
你退出后再重新登录的话,使用'ps'命令可以看到进程还在执行


查看文件的方法:
如果你只想看文件的前5行,可以使用head命令,如:
head -5 /etc/passwd 
如果你想查看文件的后10行,可以使用tail命令,如:
tail -10 /etc/passwd 
你知道怎么查看文件中间一段吗?你可以使用sed命令 如: 
sed -n '5,10p' /etc/passwd 
这样你就可以只查看文件的第5行到第10行。


检查磁盘剩余空间:
%df –k
%df –t


超级用户修改系统时间:
#date MMDDHHMI
#date –u MMDDHHMIYYYY


超级用户修改正常用户口令:
#passwd –d user1 //删除用户user1的口令


==================================================================================


SUN软件包管理的命令:pkginfo、pkgadd和pkgrm


 
pkginfo 
查看当前操作系统已经安装的软件包。 
# pkginfo | more 
 
application SUNWAxg Solaris XGL 3.3 AnswerBook 
application SUNWaadm Solaris 7 System Administrator Collection 
system SUNWab2m Solaris Documentation Server Lookup 
system SUNWab2r Solaris Documentation Server 
system SUNWab2s Solaris Documentation Server 
system SUNWab2u Solaris Documentation Server 
application SUNWabda Sun Ultra 5/10 Hardware AnswerBook 
application SUNWabe Solaris 7 User Collection 
application SUNWabsdk Solaris 7 Software Developer Collection 


pkginfo [ -d [ device | pathname ] ] [ -l ] pkg_name 

参数: 
-d 软件包所在的设备路径 
-l 软件包的详细描述 
pkg_name 软件包的 名字 
 # pkginfo -d /cdrom/cdrom0/s0/Solaris_2.7/Product -l SUNWaudio 
PKGINST: SUNWaudio 
NAME: Audio applications 
CATEGORY: system 
ARCH: sparc 
VERSION: 3.6.4,REV=1.98.08.13 
BASEDIR: / 
VENDOR: Sun Microsystems, Inc. 
DESC: Audio binaries 
PSTAMP: dtbuild37s19980813171753 
HOTLINE: Please contact your local service provider 
STATUS: spooled 
FILES: 9 spooled pathnames 
2 directories 
3 executables 
4 package information files 
700 blocks used (approx) 

pkgrm 
pkgrm用于删除软件包 

语法: 

pkgrm package_name 

# pkgrm SUNWaudio 
The following package is currently installed: 
SUNWaudio Audio applications 
(sparc) 3.6.4,REV=1.98.08.13 
Do you want to remove this package? y 
## Removing installed package instance  
## Verifying package dependencies. 
WARNING: 
The  package depends on the package 
currently being removed. 
WARNING: 
The  package depends on the package 
currently being removed. 
WARNING: 
The  package depends on the package 
currently being removed. 
WARNING: 
The  package depends on the package 
currently being removed. 
Dependency checking failed. 
Do you want to continue with the removal of this package [y,n,?,q] 

注:如果某个文件被多个软件包共用,则只当最后的包被删除时才被删除。 
  
pkgadd 
使用pkgadd添加软件包 
命令格式: 
pkgadd [ -d [device | pathname ]] pkg_name 
  
# pkgadd -d /cdrom/cdrom0/s0/Solaris_2.7/Product SUNWaudio 
Processing package instance  from 
 
Audio applications 
(sparc) 3.6.4,REV=1.98.08.13 
Copyright 1998 Sun Microsystems, Inc. All rights reserved. 
Using  as the package base directory. 
## Processing package information. 
## Processing system information. 
2 package pathnames are already properly installed. 
## Verifying package dependencies. 
## Verifying disk space requirements. 
## Checking for conflicts with packages already installed. 
## Checking for setuid/setgid programs. 
This package contains scripts which will be executed with super-user 
permission during the process of installing this package. 
Do you want to continue with the installation of  [y,n,?] y 
Installing Audio applications as  
## Installing part 1 of 1. 
Installation of  was successful.


=================================================================================

Solaris性能监控的Swap空间管理

 
随着电子商务如火如荼的开展,网站服务器的性能变得尤其重要。一旦服务器的能力不能满足用户的需要,就会对用户的服务大打折扣,那么就需要对服务器进行升级扩容。但是,有些时候只需对服务器进行一些适当的性能调整,便可以越过性能的瓶颈,大大提高服务器的吞吐能力,从而减少服务器升级的费用。 

本文介绍了在Solaris平台上Swap(交换)空间的基本概念、实现的原理以及对Swap(交换)空间进行监控的方法和调整的策略。 

什么是SWAP(交换)空间 

对于一般的Solaris系统管理员来说,很少会接触Swap(交换)空间,在他们看来Swap区只不过是磁盘上的一两个分区或是几个Swap(交换)文件,当系统没有足够的物理内存来处理当前进程的时候,就利用Swap(交换)空间作为虚拟内存的临时存储空间,这种说法从技术角度来说是没有错的,但Solaris在实现Swap时有其非常独特的地方。 

SWAP空间作用 

众所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是“虚拟内存”是隔离每个进程的安全保护网,使每个进程不受其他程序的干扰。 

Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。这种现象对于计算机使用者是经常遇到的。 

有一点要声明的是,并不是所有从物理内存中交换出来的数据都会被放到Swap中(如果这样的话,Swap会不堪重负),有相当一部分的数据直接交换到文件系统。例如,有的程序会打开一些文件,对文件进行读写(其实每个程序都至少打开一个文件,那就是运行程序本身),当这些程序的内存空间需要交换出去时,文件部分的数据就没有必要放到Swap空间中了,如果是读文件操作,那么内存数据直接就释放了,不需要交换出来,因为下次需要时,直接从文件系统就能恢复;如果是写文件,只需要将变化的数据保存到文件中,以便恢复。但是那些用malloc(3C)和new函数生成的对象的数据则不同,需要Swap空间,因为它们在文件系统中没有相应的“储备”文件,因此被称为“匿名”(Anonymous)的内存数据,这类数据还包括堆栈中的一些状态和变量数据等,所以说,Swap空间是“匿名”数据的交换空间。 

Swap的配置对性能的影响 

太多的Swap空间会浪费磁盘的空间,而太少的Swap空间,系统则会发生错误。 

如果系统的物理内存用光了,你的系统就会跑得慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程),如果Swap空间用完,则服务进程无法进动,通常会出现"application is out of memory"的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。 

通常情况下,Swap空间应大于或等于物理内存的大小,最小不应小于64M,通常Swap空间的大小应是物理内存的2-2.5倍(Solaris 2以上的版本有所变化,见下文)。但根据不同的应用,应有不同的配置:如果是小的桌面系统,只需要较小的Swap空间,而大的服务器系统则视情况不同需要不同大小的Swap空间。特别是数据库服务器和Web服务器会随着访问量的增加,对Swap 空间的要求也会增加,具体配置参见各自服务器产品的说明。 

另外,Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘I/O的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大大均衡I/O的负载,加快Swap交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间位于等待状态,效率很低,用性能监视工具就会发现,此时的CPU并不很忙,而系统却慢,这说明,瓶颈在I/O上,依靠提高CPU的速度是解决不了问题的。 

性能监视 

Swap空间的分配固然很重要,而系统在运行时的性能监控却更加有价值,通过性能监视工具可以检查系统的各项性能指标,找到系统性能的瓶颈。本文只介绍一下在Solaris下和Swap相关的一些命令和用途。 

最常用的是Vmstat命令,在大多数Unix平台下都有此命令,此命令可以查看大多数性能的指标。 

另外使用swap -s 也能简单的查看当前swap资源的使用情况。例如: 
# swap -s 
total: 65896k bytes allocated + 56840k reserved = 122736k used, 1069456k available 

能够方便的看出swap空间的已用和未用资源的大小。应该使Swap保持30%的负载以下,才能保证系统的良好性能。 

Solaris中Swap的特点 

虚拟Swap空间 

本来Swap空间就是为虚拟内存服务的,现在Solaris的Swap空间也成为虚拟,这到底是怎么回事呢? 

让我们看一个例子就明白了,当在Solaris 2以前版本的Solaris(或其它Unix, 如Linux)上编程时经常会出现一个问题: 

假设系统当前还有可用的内存空间为30M,而只剩下10M的Swap空间了,这时,如果有一个进程开始运行并企图执行Malloc(15*1024*1024)的命令(分配15M空间),这个进程会因为这个命令而失败。 

为什么呢?系统不是有30M可用的内存空间吗?原因在于:你的Swap空间不足,系统认为你在分配空间以后,没有能力(空间)在发生页面交换时,将这部分数据保存起来,因此认为你没有资格分配这块空间。这不是太不公平了吧!也许这15M空间根本不用交换,当前系统可是还有30M内存空间的富余啊! 

还有更不公平的呢?有些大型系统配备了海量的内存,1G或4G,配了这么多内存就是为了避免交换,提高运行速度,可是系统还要为这个系统分配并不需要的Swap空间,占用了大量磁盘资源。 

为了弥补这个缺陷,Sun为Solaris 2 以后的版本设计了虚拟Swap空间。所谓虚拟的Swap空间,概念其实很简单,swap空间再也不是单指硬盘的分区或文件。虚拟Swap空间包含两个部分:部分物理内存和传统上的Swap分区。经过适当的配置,可以使系统需要Swap空间时,先使用内存部分的swap空间,如果内存部分的swap空间不够,再使用磁盘部分的Swap空间。这样,也许你硬盘上的Swap空间很少得到使用了,甚至根本不需要Swap分区。 

Swap空间与TMPFS文件系统的关系 

你知道吗?虚拟Swap空间与 /tmp目录有相当大的关系。Sun在实现 
/tmp目录时,充分考虑了应用程序运行的效率。许多应用程序,特别是数据库服务都会频繁使用 
/tmp目录作为临时数据保存区,而Solaris将 
/tmp目录下的文件都放在内存中而不是硬盘里,这样会大大提高应用程序的效率。 

但是/tmp目录的空间是从系统虚拟空间里挤出来的,是虚拟Swap空间的一部分。如果说,你用完了/tmp空间,也就是用完了Swap空间,所以要小心监视系统的/tmp目录的使用情况,千万别用光了,否则系统会瘫痪!下面两点建议作为参考: 

1.在Mount /tmp目录时,使用(-o Size)选项来控制/tmp目录的大小。 

2.当使用编译器编译文件时,如果不想占用Swap空间,则用TMPDIR环境变量指向另外一个临时目录,而不是/tmp目录。 

有关Swap空间操作的系统命令 

增加Swap空间 

1.成为超级用户 $su - root 

2.创建Swap文件 #mkfile nnn[klblm] filename 
如:#mkfile 100m swapfile1 

3.激活Swap文件 
#/usr/sbin/swap -a /path/filename 
Swap文件必须以绝对路径来指定,filename指的是上一步创建的文件。 

4.现在新加的Swap文件已经起作用了,但系统重新启动以后,并不会记住前几步的操作。因此要在/etc/vfstab文件中记录文件的名字,和Swap类型,如: 
/path/filename - - Swap - no - 

5.效验Swap文件是否加上 /usr/sbin/swap -l 

删除多余的Swap空间 

1.成为超级用户 

2.使用swap -d 命令收回swap空间。 
#/usr/sbin/swap -d /path/filename 

3.编辑/etc/ufstab文件,去掉此Swap(交换)文件的实体。 

4.从文件系统中回收此文件。 
#rm swap-filename 

5.当然,如果此Swap(交换)空间不是一个文件,而是一个分区,则需创建一个新的文件系统,再挂接到原来的文件系统上。 

 

==================================================================================

 
随着电子商务如火如荼的开展,网站服务器的性能变得尤其重要。一旦服务器的能力不能满足用户的需要,就会对用户的服务大打折扣,那么就需要对服务器进行升级扩容。但是,有些时候只需对服务器进行一些适当的性能调整,便可以越过性能的瓶颈,大大提高服务器的吞吐能力,从而减少服务器升级的费用。 

本文介绍了在Solaris平台上Swap(交换)空间的基本概念、实现的原理以及对Swap(交换)空间进行监控的方法和调整的策略。 

什么是SWAP(交换)空间 

对于一般的Solaris系统管理员来说,很少会接触Swap(交换)空间,在他们看来Swap区只不过是磁盘上的一两个分区或是几个Swap(交换)文件,当系统没有足够的物理内存来处理当前进程的时候,就利用Swap(交换)空间作为虚拟内存的临时存储空间,这种说法从技术角度来说是没有错的,但Solaris在实现Swap时有其非常独特的地方。 

SWAP空间作用 

众所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是“虚拟内存”是隔离每个进程的安全保护网,使每个进程不受其他程序的干扰。 

Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。这种现象对于计算机使用者是经常遇到的。 

有一点要声明的是,并不是所有从物理内存中交换出来的数据都会被放到Swap中(如果这样的话,Swap会不堪重负),有相当一部分的数据直接交换到文件系统。例如,有的程序会打开一些文件,对文件进行读写(其实每个程序都至少打开一个文件,那就是运行程序本身),当这些程序的内存空间需要交换出去时,文件部分的数据就没有必要放到Swap空间中了,如果是读文件操作,那么内存数据直接就释放了,不需要交换出来,因为下次需要时,直接从文件系统就能恢复;如果是写文件,只需要将变化的数据保存到文件中,以便恢复。但是那些用malloc(3C)和new函数生成的对象的数据则不同,需要Swap空间,因为它们在文件系统中没有相应的“储备”文件,因此被称为“匿名”(Anonymous)的内存数据,这类数据还包括堆栈中的一些状态和变量数据等,所以说,Swap空间是“匿名”数据的交换空间。 

Swap的配置对性能的影响 

太多的Swap空间会浪费磁盘的空间,而太少的Swap空间,系统则会发生错误。 

如果系统的物理内存用光了,你的系统就会跑得慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程),如果Swap空间用完,则服务进程无法进动,通常会出现"application is out of memory"的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。 

通常情况下,Swap空间应大于或等于物理内存的大小,最小不应小于64M,通常Swap空间的大小应是物理内存的2-2.5倍(Solaris 2以上的版本有所变化,见下文)。但根据不同的应用,应有不同的配置:如果是小的桌面系统,只需要较小的Swap空间,而大的服务器系统则视情况不同需要不同大小的Swap空间。特别是数据库服务器和Web服务器会随着访问量的增加,对Swap 空间的要求也会增加,具体配置参见各自服务器产品的说明。 

另外,Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘I/O的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大大均衡I/O的负载,加快Swap交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间位于等待状态,效率很低,用性能监视工具就会发现,此时的CPU并不很忙,而系统却慢,这说明,瓶颈在I/O上,依靠提高CPU的速度是解决不了问题的。 

性能监视 

Swap空间的分配固然很重要,而系统在运行时的性能监控却更加有价值,通过性能监视工具可以检查系统的各项性能指标,找到系统性能的瓶颈。本文只介绍一下在Solaris下和Swap相关的一些命令和用途。 

最常用的是Vmstat命令,在大多数Unix平台下都有此命令,此命令可以查看大多数性能的指标。 

另外使用swap -s 也能简单的查看当前swap资源的使用情况。例如: 
# swap -s 
total: 65896k bytes allocated + 56840k reserved = 122736k used, 1069456k available 

能够方便的看出swap空间的已用和未用资源的大小。应该使Swap保持30%的负载以下,才能保证系统的良好性能。 

Solaris中Swap的特点 

虚拟Swap空间 

本来Swap空间就是为虚拟内存服务的,现在Solaris的Swap空间也成为虚拟,这到底是怎么回事呢? 

让我们看一个例子就明白了,当在Solaris 2以前版本的Solaris(或其它Unix, 如Linux)上编程时经常会出现一个问题: 

假设系统当前还有可用的内存空间为30M,而只剩下10M的Swap空间了,这时,如果有一个进程开始运行并企图执行Malloc(15*1024*1024)的命令(分配15M空间),这个进程会因为这个命令而失败。 

为什么呢?系统不是有30M可用的内存空间吗?原因在于:你的Swap空间不足,系统认为你在分配空间以后,没有能力(空间)在发生页面交换时,将这部分数据保存起来,因此认为你没有资格分配这块空间。这不是太不公平了吧!也许这15M空间根本不用交换,当前系统可是还有30M内存空间的富余啊! 

还有更不公平的呢?有些大型系统配备了海量的内存,1G或4G,配了这么多内存就是为了避免交换,提高运行速度,可是系统还要为这个系统分配并不需要的Swap空间,占用了大量磁盘资源。 

为了弥补这个缺陷,Sun为Solaris 2 以后的版本设计了虚拟Swap空间。所谓虚拟的Swap空间,概念其实很简单,swap空间再也不是单指硬盘的分区或文件。虚拟Swap空间包含两个部分:部分物理内存和传统上的Swap分区。经过适当的配置,可以使系统需要Swap空间时,先使用内存部分的swap空间,如果内存部分的swap空间不够,再使用磁盘部分的Swap空间。这样,也许你硬盘上的Swap空间很少得到使用了,甚至根本不需要Swap分区。 

Swap空间与TMPFS文件系统的关系 

你知道吗?虚拟Swap空间与 /tmp目录有相当大的关系。Sun在实现 
/tmp目录时,充分考虑了应用程序运行的效率。许多应用程序,特别是数据库服务都会频繁使用 
/tmp目录作为临时数据保存区,而Solaris将 
/tmp目录下的文件都放在内存中而不是硬盘里,这样会大大提高应用程序的效率。 

但是/tmp目录的空间是从系统虚拟空间里挤出来的,是虚拟Swap空间的一部分。如果说,你用完了/tmp空间,也就是用完了Swap空间,所以要小心监视系统的/tmp目录的使用情况,千万别用光了,否则系统会瘫痪!下面两点建议作为参考: 

1.在Mount /tmp目录时,使用(-o Size)选项来控制/tmp目录的大小。 

2.当使用编译器编译文件时,如果不想占用Swap空间,则用TMPDIR环境变量指向另外一个临时目录,而不是/tmp目录。 

有关Swap空间操作的系统命令 

增加Swap空间 

1.成为超级用户 $su - root 

2.创建Swap文件 #mkfile nnn[klblm] filename 
如:#mkfile 100m swapfile1 

3.激活Swap文件 
#/usr/sbin/swap -a /path/filename 
Swap文件必须以绝对路径来指定,filename指的是上一步创建的文件。 

4.现在新加的Swap文件已经起作用了,但系统重新启动以后,并不会记住前几步的操作。因此要在/etc/vfstab文件中记录文件的名字,和Swap类型,如: 
/path/filename - - Swap - no - 

5.效验Swap文件是否加上 /usr/sbin/swap -l 

删除多余的Swap空间 

1.成为超级用户 

2.使用swap -d 命令收回swap空间。 
#/usr/sbin/swap -d /path/filename 

3.编辑/etc/ufstab文件,去掉此Swap(交换)文件的实体。 

4.从文件系统中回收此文件。 
#rm swap-filename 

5.当然,如果此Swap(交换)空间不是一个文件,而是一个分区,则需创建一个新的文件系统,再挂接到原来的文件系统上。 

 

===============================================================================


Solaris如何改变系统运行级别 init


系统运行级别有8种,分别为: 
运行级别 意义 
0 进入PROM状态(OK状态) 
1 管理状态(所有文件系统都挂上的单用户模式,禁止其他用户登录) 
2 多用户模式(没有网络文件共享服务) 
3 多用户模式(有网络文件共享服务) 
4 未使用 
5 退出操作系统并关机 
6 重新启动机器 
S,s 单用户模式 
init 
init命令用于改变操作系统的运行级别。 
命令格式: 
init [ 0123456Ss ] 

# init 0 
INIT: New run level: 0 
The system is coming down. Please wait. 
System services are now being stopped. 
Print services stopped. 
Stopping the syslog service. 
syslogd: going down on signal 15 
Aug 14 14:54:30 snmpdx: received signal 15 
The system is down. 
syncing file systems... done 
Program terminated 
Type help for more information 
ok 


shutdown 
用于改变操作系统运行级别。 
命令格式: 
shutdown [ -y ] [ -g seconds ] [ -i init-state ] [message] 

选项: 
y 系统提示时默认回答为YES 
g 过多长时间改变 
i 想要的运行级别 
message 给所有登录用户的信息 

# shutdown -y -g 0 -i 0 
Shutdown started. Mon Dec 15 15:13:57 PST 1997 
Broadcast Message from root (console) on mcmurdo Mon Dec 
15 15:13:57... 
THE SYSTEM IS BEING SHUT DOWN NOW ! ! ! 
Log off now or risk your files being damaged 
Changing to init state 0 - please wait 
ok 


halt 
进入0运行级别 
poweroff 
关闭系统并切断电源 
reboot 
重新启动系统 

 

=============================================================================


为Sun服务器配置多网卡


---- 在网络设计中,在服务器端,为了防止网络传输过载或出于连接多子网的需要,往往要为服务器配置多块网卡。下面介绍如何为Sun服务器来配置新网卡。 

---- 一.安装新网卡 

---- 1.通知操作系统在重新启动时检测新硬件.命令如下: 

---- #touch /reconfigure 

---- 2.关闭服务器和电源. 

---- #shutdown -i5 -g60 -y 

---- 此命令通知连接的客户机,服务器将在60秒(-g60)后关闭;运行级别5(-i5)指明如果硬件支持,就自动关闭服务器电源。 

---- 3.物理安装新网卡 

---- 小心取下服务器背板上的插板,移去网卡上的托架,安好网卡,再插回原位,最后将网线插入新网卡接口,启动服务器。 

---- 二.配置新网卡 

---- 1.检查新网卡的设备号 

---- 服务台器启动后,用以下命令来检查分配给新网卡的设备号,这与把网卡安装在哪个槽上有关; 

---- #dmesg 

---- 此命令执行后将显示所有用户的设备号,如原有网卡的设备号为hme0,新网卡的设备号为hme1等; 

---- 2.为新网卡配置主机名和IP地址 

---- 在/etc 目录用 vi 建立名为 hostname. 后跟新网卡的设备号(如hostname.hme1)的文件,其内容为绑定所给网卡的主机名;修改/etc/hosts文件,增加一条记录,其前半部分为新网卡的IP地址,加空格后跟新网卡的主机名(hostname.hme1)。 

---- 如: 

10.10.10.100 sun1 #first network adapter
88.1.1.10 sun2 #second network adapter

---- 3.路由功能 
---- 操作系统将自动开启多网卡的路由功能,若想关闭路由功能,可用如下命令: 

---- #touch /etc/notrouter 

---- 完成以上步骤后重新启动系统可用如下命令使配置生效 

---- #shutdown -i6 -g60 -y 

---- 最后不要忘记修改DNS或NIS服务器,以使网络的其它主机能与之的通讯. 

---- 以上方法需要Root用此权限在Sun Enterprise 3000服务器和Salaris 2.6 server操作系统上测试通过. 

 

==================================================================================


solaris中的系统log日志原理分析

作为攻击者当然要知道系统是如何纪录用户的活动的情况的原理的了,呵呵,不然ip被记下来都不知道!

呵呵,其实一些人只会到/var/adm/目录里去删日志,那是很笨很笨的做法。

前段时间在www.unixaid.net结识了一个外地的系统管理员,谈了谈,深有心得所以我把这些写下来,呵呵。

unix系统的日志其实是非常复杂和强大的,特别是Solaris系统,因为源码的不公开,所以被蒙上了一层神秘的面纱,我研究分析了一阵子得出的结论和大家分享,我的能力有限,还望大家多多指教。

负责日志记帐的有两个守护进程:klogd,syslogd,我着重讲这两个进程,当然还有进程记帐进程,就不多介绍了,呵呵,因为基本上所有的系统动作都会被这两个进程监视并纪录,大家如果要编写一些系统程序的话,也会用到syslog这个接口的,呵呵,klogd主要纪录一些系统内核的动作,对攻击者最受影响的是syslogd这个进程.它可以接收访问系统的日志信息并且根据/etc/syslog.conf配置文件中的指令处理
这些信息。因此,任何希望生成日志信息的程序都可向syslog接口呼叫来生成改信息。大部分内部系统工具如邮件和打印系统都是如此生成信息的,许多新增的程序如TCP_wrappers和SSH也是如此工作的。讲到这里,大家有点概念了吧?呵呵
/etc/syslog.conf的格式比较复杂,大家可以参考一下有关书籍,主要是如下语句形式:
facility.level  action
facility代表各种服务,level代表syslog的认证级别,action代表的是针对前面信息的处理。大家可以注意action字段,有时候会把信息发送到另外一台机器而不是熟悉的/var/adm/messages的,这下应该知道这个文件的重要性了吧?如果真把日志发到另外一台机器的话,就想办法把那台机器dos掉了,不是它死你是你亡啊,呵呵,有时会发送到/dev/console,/dev/tty1或/dev/lp1等等这样的设备,就是发送到终端啊,呵呵,想想如果那终端作的是系统管理员,你不是很惨?

现在大家应该知道不是删删/var/adm/messages就了事的吧?呵呵

好,下面介绍一下solaris的另外一个记帐,就是wtmp和utmp,说明一下大家常见到的wtmpx和utmpx是wtmp和utmp的扩展罢了,大家可以参看wtmp.h,utmp.h里的定义的数据结构,会有写概念,呵呵,在solaris里是通过utmpd,wtmpd这两个进程来进行记帐的,然后通过utmppipe这个管道文件向/var/adm/utmpx这个文件写数据,当然utmpx这个文件不是象messages一样是文本形式的,它是二进制的,只有who,finger命令可以访问,呵呵,大家知道了吧?而last命令是访问wtmpx的。utmp是纪录用户的动态会话用的,而wtmp是纪录用户的登陆与推出的活动的,这就是区别,呵呵。写这篇

文章只是要提醒大家不要随便删日志,那很傻的,呵呵,最好自己编写一些删日志的小工具,很容易,大家参考一下utmp这个数据结构就可以了,也可以用一个命令来删除messages中的纪录:
eagle~# more /var/adm/messages|grep -v 或 >/var/adm/messages
很简单不是么?呵呵,当然utmp,wtmp中的纪录就要用程序解决了,也有现成的程序比如:

wtmpdump.c,marry.c,remove.c等等,呵呵都不错的,我主页上有下载,呵呵
attacker.qzone.com

好了,就说这么多了,重申一句,我只是为了让大家进行爱国主义行动的时候注意以下善后的工作,呵呵其中牵涉到的只是非常多,我很多没有详细说明和讲解,希望大家重视日志,参考一下有关资料。

忘了,这些是solaris中的情况,呵呵,在Linux里又大不一样,呵呵,linux里没有utmpd这个进程,是通过PAM的认证模块来进行记帐的,PAM的资料大家可以参考一下书籍很复杂,说的话会近万字呢,呵呵


=====================================================================================
用户登录时,Bash 首先执行全局登录脚本(由 root 建立) /etc/profile,然后在用户起始目录下依次寻找 .bash_profile、.bash_login、.profile 三个文件,执行最先找到的一个。可以用这种办法像 Netware 一样为不同的用户定制运行环境。

posted on 2008-02-27 16:52 叶子 阅读(972) 评论(0)  编辑 收藏 引用 所属分类: 系统管理


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理