1、以SUN Fire V880 Server(6*73GB Dsik)为例讲解在Solarsi8下使用命令行的方式安装及维护RAID1和RAID5。本文档内容都经本人实践验证过,但对于不同机型仅供参考。Disk分布情况: 0:c1t0d01:c1t1d02:c1t2d03:c1t3d04:c1t4d05:c1t5d0注:0,1做镜像;2,3,4,5做RAID5系统盘(c1t0d0)分区及镜像盘(c1t1d0)情况: c1t0d0s0(d10) d0 c1t1d0s0(d20) / 1024Mc1t0d0s1(d11) d1 c1t1d0s1(d21) swap 8192Mc1t0d0s2 c1t
2、1d0s2 overlap 69999Mc1t0d0s3(d13) d3 c1t1d0s3(d23) /usr 4096Mc1t0d0s4(d14) d4 c1t1d0s4(d24) /opt 10240Mc1t0d0s5(d15) d5 c1t1d0s5(d25) /var 2048Mc1t0d0s6(d16) d6 c1t1d0s6(d26) /home freec1t0d0s7 c1t1d0s7 /metaDB 30M系统安装完成后,使用Solarsi8 software 2 of 2安装DiskSuite_4.2.1软件,安装路径:/cdrom/cdrom0/Solaris_8/EA/
3、installer & 选择默认安装就可以。用root用户登陆,运行以下命令: #prtvtoc /dev/rdsk/c1t0d0s2|fmthard s /dev/rdsk/c1t1d0s2fmthard:New volume table of contents now in place上面命令将第二块硬盘(c1t1d0)的文件分区表调整为和引导盘一致。 #umount /metaDB#rm r /metaDB#vi /etc/vfstab将下面这行注释掉或删除,如下: #/dev/dsk/c1t0d0s7 /dev/rdsk/c1t0d0s7 /metaDB ufs 1 yes 一、RAI
4、D1对各个分区逐一作镜像:先生成replicas,这是DiskSuite内部用的。 #metadb a f c 3 c1t0d0s7 c1t1d0s7#metadbCreating a mirror from swap #metainit f d11 1 1 c1t0d0s1#metainit d21 1 1 c1t1t0s1#metainit d1 m d11#vi /etc/vfstab/dev/dsk/c1t0d0s1 - - swap no should be changed to:/dev/md/dsk/d1 - - swap no -#reboot#metattach d1 d21
5、Creating a mirror from /usr #metainit f d13 1 1 c1t0d0s3#metainit d23 1 1 c1t1t0s3#metainit d3 m d13#vi /etc/vfstab/dev/dsk/c1t0d0s3 /dev/rdsk/c1t0d0s3 /usr ufs 1 yes should be changed to:/dev/md/dsk/d3 /dev/md/rdsk/d3 /usr ufs 1 yes #reboot#metattach d3 d23Creating a mirror from /opt #metainit f d1
6、4 1 1 c1t0d0s4#metainit d24 1 1 c1t1t0s4#metainit d4 m d14#vi /etc/vfstab/dev/dsk/c1t0d0s4 /dev/rdsk/c1t0d0s4 /opt ufs 1 yes should be changed to:/dev/md/dsk/d4 /dev/md/rdsk/d4 /opt ufs 1 yes #reboot#metattach d4 d24Creating a mirror from /var #metainit f d15 1 1 c1t0d0s5#metainit d25 1 1 c1t1t0s5#m
7、etainit d5 m d15#vi /etc/vfstab/dev/dsk/c1t0d0s5 /dev/rdsk/c1t0d0s5 /var ufs 1 yes should be changed to:/dev/md/dsk/d5 /dev/md/rdsk/d5 /var ufs 1 yes #reboot#metattach d5 d25Creating a mirror from /home #metainit f d16 1 1 c1t0d0s6#metainit d26 1 1 c1t1t0s6#metainit d6 m d16#vi /etc/vfstab/dev/dsk/c
8、1t0d0s6 /dev/rdsk/c1t0d0s6 /home ufs 1 yes should be changed to:/dev/md/dsk/d6 /dev/md/rdsk/d6 /home ufs 1 yes #reboot#metattach d6 d26Creating a mirror from / #metainit f d10 1 1 c1t0d0s0#metainit d20 1 1 c1t1t0s0#metainit d0 m d10#metaroot d0#lockfs fa#reboot#metattach d0 d20#metastat (检查镜像进度)镜像完成
9、后,还需作如下操作:修改EEPROMok devalias(察看启动设备)ok nvalias rootdisk /pci8,600000/SUNW,qlc4/fp0,0/disk0,0ok nvalias mirrdisk /pci8,600000/SUNW,qlc4/fp0,0/disk1,0ok setenv boot-device rootdisk mirrdiskeeprom命令:boot-device=rootdisk mirrdiskboot-device=rootdisk mirrdiskuse-nvramrc?=truenvramrc=devalias mirrdisk /p
10、ci8,600000/SUNW,qlc4/fp0,0/disk1,0devalias rootdisk /pci8,600000/SUNW,qlc4/fp0,0/disk0,0#ls -l c1t0d0s0lrwxrwxrwx 1 root root 70 1月 2 10:45 c1t0d0s0 - ././devices/pci8,600000/SUNW,qlc4/fp0,0/ssdw21000000870e80e7,0:a对应:/pci8,600000/SUNW,qlc4/fp0,0/disk0,0rootvoiplnjvr4 # ls -l c1t1d0s0lrwxrwxrwx 1 ro
11、ot root 70 1月 2 10:45 c1t1d0s0 - ././devices/pci8,600000/SUNW,qlc4/fp0,0/ssdw21000000870fb287,0:a对应:/pci8,600000/SUNW,qlc4/fp0,0/disk1,0测试:ok boot rootdisk 系统启动正常。ok boot mirrordisk 系统启动正常。假如c1t0d0盘坏掉,则停机更换硬盘后需做恢复工作,如下; ok boot mirrordisk -s#metadb -d c1t0d0s7#prtvtoc /dev/rdsk/c1t1d0s2|fmthard s /d
12、ev/rdsk/c1t0d0s2#metadb a f c 3 c1t0d0s7#haltok boot mirrordisk#metareplace -e d0 c1t0d0s0d0: device c1t0d0s0 is enabled#metareplace -e d1 c1t0d0s1d1: device c1t0d0s1 is enabled#metareplace -e d3 c1t0d0s3d3: device c1t0d0s3 is enabled#metareplace -e d4 c1t0d0s4d4: device c1t0d0s4 is enabled#metarepl
13、ace -e d5 c1t0d0s5d5: device c1t0d0s5 is enabled#metareplace -e d6 c1t0d0s6d6: device c1t0d0s6 is enabled#metastat (检查镜像恢复进度)二、RAID5 #metainit d55 r c1t2d0s2 c1t3d0s2 c1t4d0s2 c1t5d0s2#metastat d55 (检查RAID5的进度)作完后reboot#newfs /dev/md/rdsk/d55#mkdir /raid5#vi /etc/vfstab添加一行:/dev/md/dsk/d55 /dev/md/r
14、dsk/d55 /raid5 ufs 2 yes #rebootRAID5坏掉一个盘的恢复方法:例c1t4d0盘坏掉,更换坏硬盘后作如下工作: ok boot -r#metareplace e d55 c1t4d0s2#metastat d55卸去RAID5的方法: #umount /raid5#metaclear d55#vi /etc/vfstab注释此行: #/dev/md/dsk/d55 /dev/md/rdsk/d55 /raid5 ufs 2 yes (责任编辑:城尘68476636-8003)solaris9x86新手最需要的知识目录 1.Solaris9x86安装系统 2.基本
15、信息查看 3.网络信息配置和修改 4.磁盘管理:配额、RAID、CLUSTER 5.环境管理 6.背景知识 Solaris9x86新手最需要的知识 Solaris9x86安装系统 系统安装 soft1和2一定要装。Admintool改用户等,kdmconfig改驱动,sys-unconfig改网络配置 驱动选择(vmware) 显卡:通用vesa,显示器:NOTEPAD1024*768,分辨率:可选 然后安装vmwareforsolaris的显卡驱动补丁 打补丁,查看用 patchadd-p ftp:/patchroot/reports/各种版本补丁描述 ftp:/᠖
16、4;patchroot/clusters/推荐补丁集 上传解开目录下运行./install_cluster 远程GUI管理 Xmanagerxbrowser Xmanagerxstart 光驱cdrom MountFhsfs/dev/dsk/c?t?d?s0/cdrom 添加新硬盘 flag=wu为不可mount Devfsadm(x86)orprobe-scsi-all(sparc) Format选磁盘fdisky Partionprint查看一下现有分区,然后给分
17、区分配空间:0/1/2/7label newfs/dev/dsk/c?d?s? mkdir/newdisk1 mount/dev/dsk/c?d?s?/newdisk1 建立man的帮助索引 Catman-w 解压软件包 Gzipd文件名.gz;Tarvxf文件名.tar;gunzip*.gz;感觉比gzip好用 安装软件包,查看: pkgaddi包名 在软件所在目录下:Pkgaddd.或者pkgaddd包名字 sh./xxxx.sh或者./xxx.shpkginfo|grepxxx也可以查看包 常用软件 上网用Mozilla、办公用openoffice、QQ用lumaqq/t
18、extQQ、TOP 基本信息查看 快截键 Ctrl+Insert=复制,Shift+Insert=粘贴,sttyeraseH=Backspace键起作用 操作系统信息 Unamea 主机名 HostnameXXXX 系统时间 Date或者date102317302005修改系统当前时间为2005-10-2317:30 主机硬件软件/补丁 Showrev;showrevp;showreva看软件硬件;补丁;全部显示patchadd-p 硬盘和分区信息 Format;prtvtoc/dev/dsk/c0d0s0看c0d0s0的分区信息 文件系统空间使用率 Dfk;du-sk/export;dusk
19、*查看所有目录的大小 CPU Psrinfo;Prtconf|grepcpu;psradm可使CPU下线或上线 内存 Dmesg|grepmem;prtconf|grepMem 交换空间 Swapl 系统资源使用率 Prstat;Vmstat5或者安装top然后lns/usr/local/bin/top/usr/bin/top 开关重启机器 Init6或者telinit6或者shutdown或者halt或者reboot 当前用户和运行级别 Who;id;Whor 查看用户和组和密码 More/etc/passwd;/etc/group;/etc/shadow 建立新组 建立新用户 设置新密码
20、修改用户主目录的属主 设置用户主目录的权限 修改用户主目录的属组 修改用户属组等属性 Groupaddwnt;groupsteacher查看teacher用户属于哪些组 Useraddgwntd/export/home/teacherc“ateacher”ms/usr/bin/shteacher Passwdteacher Cd/export/home;chownteacherteacher Chmod644teacher;chmodo+wteacher其他用户对teacher目录拥有写权限,u+,g+) ChgrpRsysadmin/export/home/teacherteacher目录和
21、子文件被改为sysadmin所拥有 UsermodGstaffteacherteacher用户的附加组为staff,和useradd用法几乎一样 查找 Find/-nametestprint所有根目录下名字为test文件或者目录都被找出 查找文件中的 Grepv“#”/etc/inetd.confinetd.conf里不包含#的行都列出 Grepnftp/ect/inetd.conf查找inetd.conf中包含ftp的行,不区分大小写 扩充临时交换空间 永久增加交换空间 Mkfilev100mswap_file;Swapaswap_file;swapdswap_file Vi/etc/vfs
22、tab;/path/filename - - Swap - no - 查看shell Echo$SHELL 临时设置路径 后接新路径 Echo$PATH PATH=$PATH:/user/openwin: ExportPATH 系统初始环境变量 /etc/default/login、$home/.profile等(没有就touch.profile) 网络信息配置和修改 路由表察看 Netstatrn(flag:U=up,H=host,G=gateway) 临时路由添加 Routeadd10.0.0.0netmask255.255.0.0192.168.1.1 Routeadd10.0.0.0/
23、24192.168.1.1 网卡地址修改 (不会保存) Ifconfig网卡名字down Ifconfig网卡名字192.168.1.1netmask255.255.255.0up DNS服务器设置 /etc/Resolv.conf 主机-ip对应关系设置 /etc/Hosts;192.168.1.1tocnc(Chmod611./inet/hosts;vi/etc/hosts) 网络号及网络掩码 /etc/netmasks 缺省路由配置 多路由,passive指定 网关是否被动更新 /etc/defaultrouter如果没有此文件就创建一个 vi/etc/gateways net10.0.
24、0.0/24gateway192.168.1.2metric1passive|active in.routed 网卡IP /etc/Hostname.网卡名字tocnc(和hosts中的对应) 名字解析的顺序 /etc/Nsswitch.conf 配置由inetd监视的进程 /etc/inetd.conf 自动共享 vi/etc/dfs/dfstab shareFnfsorod“testshare”/export/home 手动共享资源 (/etc/dfs/dfstab) (必须要有内容!) /etc/init.d/nfs.serverstart或者/etc/rc3.d/S15nfs.serv
25、erstart shareFnfsorod“firstshare”/home /usr/lib/nfs/mountd /usr/lib/nfs/nfsda16 察看共享资源 Share或者dfshares;dfmounts;unshareFnfs/home 挂接共享资源 Mkdir/mnt/home.35 MountFnfs192.168.253.35:/home/home.35 W2k和solaris互相访问 配置samba 磁盘管理:配额、RAID、CLUSTER 磁盘检查 fsckFufs/dev/dsk/c0t0d0s0;fscky/dev/dsk/c0d0s7;fsck-y 限制用户
26、空间配额 (假设/export/home) (假设用户为huangyu) (配额为1024K-2048K) (时间限制为1分钟) (1分钟内还可继续) (使用,但不能超过) (2048K的限制) inode是节点,可理解为文件和目录数量 vi/etc/vfstab把要开启配额的文件系统的mountoption下“-”改为rq cd/export/home;Touchquotas;Chmod600quotas edquotahuangyu fs/datablocks(soft=1024,hard=2048)inodes(soft=0,hard=0) quotacheck/export/home
27、quotaona repquotaa edquotathuangyu fs/export/homeblockstimelimit=1.00min,filestimelimit=0(default) quotaoff/export/home 扩容,比如/目录满 mount个新分区在/usr/local取代以前的目录 1.mount/dev/dsk/xxx/mnt/tmp 2.cd/usr/local;tarcf-.|(cd/mnt/tmp;tarxvf-) 3.umount/mnt/tmp 4.cd/usr;rm-rflocal 5.mount/dev/dsk/xxx/usr/local 6.v
28、ivfstab加入该分区到/usr/local 能够虚拟光盘,把硬盘上的影像文件当作光盘用 lofiadm lofiadm-a/opt/file1.iso dev/lofi/1 mount-Fhsfs/dev/lofi/1/mnt 卷管理器 /etc/init.d/volmgtstop,/etc/init.d/volmgtstart RAID 请看 SUNCLUSTER init的各个级别 0关机1初始化6重启S/s重启到单用户模式3缺省模式,多用户,有NFS PV,LV,VG 环境管理 用户环境变量定义 用户主目录下的.profile没有就建立一个 J2SE/JDK的安装 (源文件cp到/u
29、sr) Cd/usr;Sh./jre1.5.6.0xx.shlocalinstall; Rm/usr/java;lns/usr/jre1.5.6.xx/usr/java;java-version 修改启动设置 eeprom eepromauto-boot?=true 非正常关闭系统: cannotcreate/var/adm/utmpx 还不行就: bootcdrom-s touch/var/adm/*tmp* 如果有metadevice 就要先备份metastat 的信息 mount-orw,remount/重新以读写方式mount/文件系统 metadb metadb-d/dev/. me
30、tadb-d-f/dev/. reboot fsck-y more/etc/vfstab该启动mount的就mount,fsckpass该设置的就设置 fsck-y/dev/dsk/c.fsck-y没有检查的检查 mountall一次性把/etc/vfstab中的全部mount 默认软件包执行路径 /usr/local/bin 背景知识 以下是检查硬件问题: hp,和IBM的一些机器是启动的时候用盘引导,来设置raid卡 之后在划分好的LUN上安装系统 sun的机器只能先安装系统,再做raid,因为没有硬的raid卡 1touch/reconfigure; 1init0 2boot-r 3de
31、vfsadm/devconfig Solaris利用特定空文件reconfigure,标明在下次启动时,重新检查配置硬件,加载内核模块,实际上,Solaris与传统的比有所变化,将传统的内核部分分为很小的内核(约2MB)和大量动态联接的内核模块二部分,内核在启动后常驻内存,但关于新的硬件支持的内核模块可动态加载或卸下,硬件变化无需重起Solaris。 察看shell的区别 都是bournshell ls-l/sbin/sh ls-lusr/bin/sh file/sbin/sh file/usr/bin/sh ldd/sbin/sh ldd/usr/bin/sh /sbin/shisstati
32、callylinked /usr/bin/shisdynamicallylinked. /bin/sh/bin目录是到/usr/bin的链接 动态链接的bin执行的时候使用共享的libraries.他们的文件更小,而且当libraries更新的时候,他们自动使用更新的libaries 静态链接bin包含了所有的代码,不需要使用共享的libraries.他们的文件大小比动态链接的bin文件要大.如果系统broken并且libraries被删除了,损坏了,或者/usr目录没被mounted,/sbin/sh仍然可以执行。 所以推荐大家使用/sbin/sh作为缺省的rootshell Mac地址 #
33、eepromlocal-mac-address?=true #boot-r SUN和任何其他厂商一样,每个网卡都有自己唯一的MAC地址.不过SUN的机器自己也有个MAC地址,一般保存在NVRAM里.默认情况下,也就是local-mac-address?为false的情况下,机器上不管有多少块网卡,所有网卡的MAC地址都使用系统MAC地址. 执行以下命令使网卡使用自己的MAC地址! 数据备份 系统监控 /etc/syslog.conf /var/adm/messages /var/adm/wtmpx /var/adm/utmx Whowtmpx;察看系统登陆纪录附录资料:不需要的可以自行删除 l
34、ibxml2应用实例Libxml2 是一个xml的c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件。它除了支持c语言版以外,还支持c+、PHP、Pascal、Ruby、Tcl等语言的绑定,能在Windows、Linux、Solaris、MacOsX等平台上运行。功能还是相当强大的,相信满足一般用户需求没有任何问题。二、 Libxml2安装:一般如果在安装系统的时候选中了所有开发库和开发工具的话(Fedora Core系列下),应该不用安装,下面介绍一下手动安装: 1) 从xmlsoft站点或ftp(ftp.xmlsoft.org)站点下载lib
35、xml压缩包(libxml2-xxxx.tar.gz)2) 对压缩包进行解压缩 tar xvzf libxml2-xxxx.tar.gz3) 进入解压缩后的文件夹中运行 ./configure -prefix /home/user/myxml/xmlinst(此处为待安装的路径)或者直接使用 ./configure make make install 4) 添加路径 export PATH=/home/user/myxml/xmlinst/bin:$PATH 说明:为了结构清晰,最好将libxml2不安装在解压目录中。安装完成后就可以使用简单的代码解析XML文件,包括本地和远程的文件,但是在编
36、码上有一些问题。Libxml默认只支持UTF8的编码,无论输入输出都是UTF-8,所以如果你解析完一个XML得到的结果都是UTF8的,如果需要输出GB2312或者其它编码,需要ICONV来做转码(生成UTF8编码的文件也可以用它做),如果系统中没有安装iconv的话,需要安装libiconv。 1) 下载libiconv压缩包(例如libiconv-1.11.tar.gz) 2) 对压缩包进行解压缩tar xvzf libiconv-1.11.tar.gz 3) 进入解压缩后的文件夹中运行 ./configure make make install三、关于XML:在开始研究 Libxml2 库
37、之前,先了解一下XML的相关基础。XML 是一种基于文本的格式,它可用来创建能够通过各种语言和平台访问的结构化数据。它包括一系列类似 HTML 的标记,并以树型结构来对这些标记进行排列。例如,可参见清单 1 中介绍的简单文档。为了更清楚地显示 XML 的一般概念,下面是一个简化的XML文件。清单 1. 一个简单的 XML 文件 root delete 10清单 1 中的第一行是 XML 声明,它告诉负责处理 XML 的应用程序,即解析器,将要处理的 XML 的版本。大部分的文件使用版本 1.0 编写,但也有少量的版本 1.1 的文件。它还定义了所使用的编码。大部分文件使用 UTF-8,但是,X
38、ML 设计用来集成各种语言中的数据,包括那些不使用英语字母的语言。接下来出现的是元素。一个元素以开始标记 开始(如 ),并以结束标记 结束(如 ),其中使用斜线 (/) 来区别于开始标记。元素是 Node 的一种类型。XML 文档对象模型 (DOM) 定义了几种不同的 Nodes 类型,包括:Elements(如 files 或者 age)Attributes(如 units)Text(如 root 或者 10)元素可以具有子节点。例如,age 元素有一个子元素,即文本节点 10。XML 解析器可以利用这种父子结构来遍历文档,甚至修改文档的结构或内容。LibXML2 是这样的解析器中的其中一种
39、,并且文中的示例应用程序正是使用这种结构来实现该目的。对于各种不同的环境,有许多不同的解析器和库。LibXML2 是用于 UNIX 环境的解析器和库中最好的一种,并且经过扩展,它提供了对几种脚本语言的支持,如 Perl 和 Python。四、Libxml2中的数据类型和函数一个函数库中可能有几百种数据类型以及几千个函数,但是记住大师的话,90%的功能都是由30%的内容提供的。对于libxml2,我认为搞懂以下的数据类型和函数就足够了。1)内部字符类型xmlCharxmlChar是Libxml2中的字符类型,库中所有字符、字符串都是基于这个数据类型。事实上它的定义是:xmlstring.htyp
40、edef unsigned char xmlChar;使用unsigned char作为内部字符格式是考虑到它能很好适应UTF-8编码,而UTF-8编码正是libxml2的内部编码,其它格式的编码要转换为这个编码才能在libxml2中使用。还经常可以看到使用xmlChar*作为字符串类型,很多函数会返回一个动态分配内存的xmlChar*变量,使用这样的函数时记得要手动删除内存。2) xmlChar相关函数如同标准c中的char类型一样,xmlChar也有动态内存分配、字符串操作等相关函数。例如xmlMalloc是动态分配内存的函数;xmlFree是配套的释放内存函数;xmlStrcmp是字符串
41、比较函数等等。基本上xmlChar字符串相关函数都在xmlstring.h中定义;而动态内存分配函数在xmlmemory.h中定义。3)xmlChar*与其它类型之间的转换另外要注意,因为总是要在xmlChar*和char*之间进行类型转换,所以定义了一个宏BAD_CAST,其定义如下:xmlstring.h#define BAD_CAST (xmlChar *)原则上来说,unsigned char和char之间进行强制类型转换是没有问题的。4)文档类型xmlDoc、指针xmlDocPtrxmlDoc是一个struct,保存了一个xml的相关信息,例如文件名、文档类型、子节点等等;xmlDo
42、cPtr等于xmlDoc*,它搞成这个样子总让人以为是智能指针,其实不是,要手动删除的。xmlNewDoc函数创建一个新的文档指针。xmlParseFile函数以默认方式读入一个UTF-8格式的文档,并返回文档指针。xmlReadFile函数读入一个带有某种编码的xml文档,并返回文档指针;细节见libxml2参考手册。xmlFreeDoc释放文档指针。特别注意,当你调用xmlFreeDoc时,该文档所有包含的节点内存都被释放,所以一般来说不需要手动调用xmlFreeNode或者xmlFreeNodeList来释放动态分配的节点内存,除非你把该节点从文档中移除了。一般来说,一个文档中所有节点都
43、应该动态分配,然后加入文档,最后调用xmlFreeDoc一次释放所有节点申请的动态内存,这也是为什么我们很少看见xmlNodeFree的原因。xmlSaveFile将文档以默认方式存入一个文件。xmlSaveFormatFileEnc可将文档以某种编码/格式存入一个文件中。5)节点类型xmlNode、指针xmlNodePtr节点应该是xml中最重要的元素了,xmlNode代表了xml文档中的一个节点,实现为一个struct,内容很丰富:tree.htypedef struct _xmlNode xmlNode;typedef xmlNode *xmlNodePtr;struct _xmlNode