Solaris系统维护经验的几点总结


    1   查询命令
    在项目实施的过程中经常会遇到一些要求查看主机信息的需求,掌握一定的查询命令是比较实用的,包括对主机配置查询、进程情况查询、系统性能查询以及硬盘使用情况、镜像情况的查询等等;下面简单介绍下常用的几个查询命令:
    1.1    系统配置信息(prtdiag)
    该命令为查看系统配置最为常用的命令之一,使用该命令可以了解服务器的基本配置情况以及板卡的接口情况,执行该命令后页面将呈现出:System Configuration、系统的时钟频率、内存大小、内存硬件数量、状态以及所在槽位;另外,还包括了IO接口卡的扩展情况;
    1.2    检查IO状态信息(iostat)
    该命令用于IO状态查询,以便更好的掌握系统资源利用率,其中常用的参数为:
    -c:统计CPU的使用情况:用户进程使用率、空闲率;可以加入时间参数进行统计;
    -C:更详细的列出每块盘的使用信息以及CPU的使用情况;
    -e:返回磁盘的error记录,详细的列出每块盘的error信息,包括传输、读写;
    -E:该参数返回每块磁盘的大小、厂商、型号等信息,一般保修时使用,最常用的参数;
    1.3    统计查询内存使用情况以及进程信息(vmstat、prstat)
    vmstat命令用户查看内存、cup使用情况以及进程等待情况,可以分析如下几列数据:
    procs:r列正在处理的进程数,如果该列频繁出现较高的数值则表明有一直等待的进程需要处理,Solaris系统一般情况下该列的数值不会大于CPU的个数;
    memory:当swap列数值大于free列数值的十分之一时则说明有将死的进程,这是就需要结合ps –el 命令找到S列为:Z的进程PID,然后Kill掉;否则将会一直占用内存资源;
    prstat命令则列出每个进程的资源使用情况并按cup的使用情况进行排序;也是较为使用的一个命令,值得关注的数据为CPU一列以及最后一行的load a verages(可以详细的查看下帮助命令)
    1.4    进程管理命令(ps)
    建议详细阅读下帮助手册。
    2          修改命令
    2.1  修改主机名
    主机名的修改可以分为两种情况,即临时修改与永久修改:
    临时修改:不需要重启服务器,修改后立即生效,但当服务器重启后将丢失;执行hostname+主机名即可完成修改,重新登陆后方看结果;
    永久修改:编辑/etc/hosts、/etc/nodename输入新的主机名保存后重启即可;如果有需要还可以修改/etc下的hostname.hmeX的文件,修改此文件将完成主机名与IP的一个对应映射;
    2.2     修改IP地址
    修改IP地址也分为临时修改与永久修改两种(修改之前可以简单的查看下网卡的数量ifconfig –a):
    临时修改:ifconfig hme0 inet 新IP地址  netmask 新子网掩码 up;重启后即丢失。
    永久修改:永久修改一般需要编辑三个文件包括子网掩码、网关:/etc/hosts、/etc/netmasks、etc/defaultrouter;修改后重启即可生效。
    2.3     修改时间
    修改时间一般用:date +时间数字的形式即date  1234.56,则系统时间变为12:24:56
    3           常用技巧
    3.1   提示登陆用户本服务器的重要信息
    当telnet到某台服务器上当完成用户名、密码的验证之后一般都会提示本服务器最基本的系统信息,包括:操作系统版本以及补丁等等;如果本服务器为比较重要的服务器,而系统管理员需要在提示登陆的用户在操作的过程中的注意事项,可以进行/etc/motd的编辑;输入提示后保存即可;(建议修改之前做好备份);
    3.2     发送消息给当前登陆用户
    在进行关机或重启操作时给予当前正在进行系统操作的用户提示是非常必要的,因此可以应用用户通信来完成此项操作:
    发送单个用户提示信息:write username +提示信息;输入完毕后执行ctrl+D发送消息;
    将文件内容作为消息发送:write username<message;
    4     格式化分区
    格式化与分区是磁盘管理的一项重要操作,因此掌握分区与格式化的操作是极其有必要的,首先先了解下如何查看已有分区、以及磁盘使用情况:
    A、执行df –k命令后查看磁盘挂接情况,能够查看出磁盘的文件系统、总大小、使用大小、挂接点;
    B、执行metastat 能够查询出当前磁盘的镜像情况,分为哪些镜像组以及子镜像的关系;从而结合df –k命令确定尚未分区使用的磁盘;
    向一块硬盘写入数据之前,首先需要将其分区和格式化,这个过程一般可以分为3个步骤:
    1、物理格式化,也就是通常所说的低级格式化(Low-Level Formatting,LLF);
    低级格式化的时候,硬盘被分成若干个磁道,这些磁道又被分成若干个扇区,每个扇区填充了随机数据。几乎所有的硬盘在出厂前都已经被低级格式化过,所以,用户只要对硬盘进行下面两个步骤(分区和逻辑格式化)就可以了。
    2、分区;
    分区与格式化一定要熟练掌握format工具,现在以c0t11d0盘为例做一说明:执行format命令后结果显示如下:
    Searching for disks...done
    A VAILABLE DISK SELECTIONS:
    0. c0t10d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>  lzm
              /sbus@3,0/SUNW,fas@3,8800000/sd@a,0
    1. c0t11d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
              /sbus@3,0/SUNW,fas@3,8800000/sd@b,0
    2. c0t12d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
              /sbus@3,0/SUNW,fas@3,8800000/sd@c,0
    3. c0t13d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
              /sbus@3,0/SUNW,fas@3,8800000/sd@d,0
    Specify disk (enter its number):
    选择1后敲回车,显示结果如下:
    Specify disk (enter its number): 1
    selecting c0t11d0
    [disk formatted]
    FORMAT MENU:
            disk       - select a disk
            type       - select (define) a disk type
            partition  - select (define) a partition table
            current    - describe the current disk
            format     - format and analyze the disk
            repair     - repair a defective sector
            label      - write label to the disk
            analyze    - surface analysis
            defect     - defect list management
            backup     - search for backup labels
            verify     - read and display labels
            sa ve       - sa ve new disk/partition definitions
            inquiry    - show vendor, product and revision
            volname    - set 8-character volume name
            !<cmd>     - execute <cmd>, then return
            quit
    format>
    我们可以先查看下目前的分区情况,输入“p”后回车,显示结果如下:
    format> p
    PARTITION MENU:
            0      - change `0' partition
            1      - change `1' partition
            2      - change `2' partition
            3      - change `3' partition
            4      - change `4' partition
            5      - change `5' partition
            6      - change `6' partition
            7      - change `7' partition
            select - select a predefined table
            modify - modify a predefined partition table
            name   - name the current table
            print  - display the current table
            label  - write partition map and label to the disk
            !<cmd> - execute <cmd>, then return
            quit
    partition>
    在此处呈现的内容为可以选择的分区名称,选择0-7可以单个查看分区情况,另外还可以进行分区名称更改、命名、标记等操作,当输入“print”后可以查看整块盘的分区情况,如下:
    partition> p
    Current partition table (original):
    Total disk cylinders a vailable: 7506 + 2 (reserved cylinders)
    Part      Tag    Flag     Cylinders        Size            Blocks
      0       root    wm       0 -   57      133.45MB    (58/0/0)     273296
      1       swap    wu      58 -  115      133.45MB    (58/0/0)     273296
      2     backup    wu       0 - 7505       16.86GB    (7506/0/0) 35368272
      3 unassigned    wm       0               0         (0/0/0)           0
      4 unassigned    wm       0               0         (0/0/0)           0
      5 unassigned    wm       0               0         (0/0/0)           0
      6        usr    wm     116 - 4606       10.09GB    (4491/0/0) 21161592
      7 unassigned    wm    4607 - 7455        6.40GB    (2849/0/0) 13424488
    partition>
    该处呈现出来的是整块盘分区情况,需要注意的几点:1、tag在此处一般不能修改(怎么修改还没有研究出来);2、明确该块盘的大小,即size列;3、仔细研究下Cylinders列,该类呈现出的是该盘的柱面使用情况,其中2为整块盘的柱面区间数据,其他分区为本分区的占用情况,因此我们可以根据与之对应的关系来查看本块盘是否还有剩余空间可以使用;从以上的结果我们可以看出仍有7456-7505没有使用;
    上面介绍的情况为确定磁盘信息,接下来着手进行分区操作,基于上面的呈现结果我们可以有两种操作:
    1、扩大或缩小某一分区的大小;
    在“partition> ”提示符下,输入分区号后回车,呈现结果如下:
    partition> 6
    Part      Tag    Flag     Cylinders        Size            Blocks
      6        usr    wm     116 - 4606       10.09GB    (4491/0/0) 21161592
    Enter partition id tag[usr]:
    该环节要求输入tag,可以直接回车,接下来分别要求输入的信息为:许可权限、起始柱面以及大小,输入所需大小后即可完成分区操作;在输入大小时分别以b、c、mb、gb为单位(注意:单位为小写);全部选择完毕后回车呈现结果如下:
    partition> 6
    Part      Tag    Flag     Cylinders        Size            Blocks
      6        usr    wm     116 - 4606       10.09GB    (4491/0/0) 21161592
    Enter partition id tag[usr]:
    Enter partition permission flags[wm]:
    Enter new starting cyl[116]:
    Enter partition size[21161592b, 4491c, 10332.81mb, 10.09gb]: 10.09gb
    partition>
    到此分区操作尚未完成,需要在partition下命名,输入名称后仍然需要label下,之后输入“q”退出到“format”下执行“sa ve”以便保存修改;到此位置扩大或缩小分区结束;
    2、重新进行分区操作;
    重新分区需要在“partition”下执行modify命令,结果如下:
    partition> modify
    Select partitioning base:
            0. Current partition table (s6)
            1. All Free Hog
    Choose base (enter number) [0]?
    此环节可以进行对s6进行重新分配,亦可以对整块盘重新划分;(现以s6为例)直接回车后显示如下:
    Choose base (enter number) [0]?
    Part      Tag    Flag     Cylinders        Size            Blocks
      0       root    wm       0 -   57      133.45MB    (58/0/0)     273296
      1       swap    wu      58 -  115      133.45MB    (58/0/0)     273296
      2     backup    wu       0 - 7505       16.86GB    (7506/0/0) 35368272
      3 unassigned    wm       0               0         (0/0/0)           0
      4 unassigned    wm       0               0         (0/0/0)           0
      5 unassigned    wm       0               0         (0/0/0)           0
      6        usr    wm     116 - 4606       10.09GB    (4491/0/0) 21161592
      7 unassigned    wm    4607 - 7455        6.40GB    (2849/0/0) 13424488
    Do you wish to continue creating a new partition
    table based on above table[yes]?
    默认为yes,回车后提示从0-7(不包含分区6的提示)的所需大小,执行到此可以进行对每个分区的数据重新配置,按顺序执行后结果如下:
    Do you wish to continue creating a new partition
    table based on above table[yes]?
    Free Hog partition[6]?
    Enter size of partition '0' [273296b, 58c, 133.45mb, 0.13gb]: 0.15gb
    Enter size of partition '1' [273296b, 58c, 133.45mb, 0.13gb]:
    Enter size of partition '3' [0b, 0c, 0.00mb, 0.00gb]:
    Enter size of partition '4' [0b, 0c, 0.00mb, 0.00gb]:
    Enter size of partition '5' [0b, 0c, 0.00mb, 0.00gb]:
    Enter size of partition '7' [13424488b, 2849c, 6554.93mb, 6.40gb]:
    Part      Tag    Flag     Cylinders        Size            Blocks
      0       root    wm       0 -   66      154.15MB    (67/0/0)     315704
      1       swap    wu      67 -  124      133.45MB    (58/0/0)     273296
      2     backup    wu       0 - 7505       16.86GB    (7506/0/0) 35368272
      3 unassigned    wm       0               0         (0/0/0)           0
      4 unassigned    wm       0               0         (0/0/0)           0
      5 unassigned    wm       0               0         (0/0/0)           0
      6        usr    wm     125 - 4606       10.07GB    (4482/0/0) 21119184
      7 unassigned    wm    4607 - 7455        6.40GB    (2849/0/0) 13424488
    Okay to make this the current partition table[yes]?
    在提示符下回车,确认;输入“n”回车取消操作;注意标记与保存;
    操作到此处分区已经完成;
    3、逻辑格式化,也就是通常所说的高级格式化(High-Level Formatting,HLF或创建文件系统)
    创建文件系统为比较简单的操作:可以直接执行命令:newfs  /dev/rdsk/c0t11d0s6即可(c0t11d0s6为新分区)
    4、挂接文件系统:
    执行命令mount:mount /dev/dsk/c0t11d0s6 /export/home/temp 此处要写绝对路径,并且要注意如果是做了镜像的磁盘一定要写/dev/md/dsk下面的设备,否则会造成镜像数据不同步;
    以上描述为试验过的结果记录,如有需要可以按照说明步骤进行使用即可,到此为止分区与格式化均已描述完毕。