Solaris Basic

39
SUN Free Software Unter http://www.sunfreeware.com findet man "ready to use" Software für S UN Solaris, wie  beispielsweise TOP, AMANDA, GCC, GDB etc. Download via FTP von: «ftp://nce.sun.ch/pub/freeware/sparc/7» PCNFS installieren CD-ROM Solaris Intranet Extension (siehe auch Solaris Server Intranet Extension Installation) $ su $ cd /cdrom/cdrom0/nfsc/sparc $ pkgadd -d `pwd`  Installation Solaris mit Openwindows (Grafikkarte)  Hostname $ uname -u   Network Interface $ ifconfig -a  /etc/hosts, /etc/netmasks definieren  Static IP-routes definieren /etc/rc2.d/S79staticroutes  CD-ROM rausnehmen $ eject cdrom  Disklayout kontrollieren $ prtvtoc /dev/rdsk/....   Automounter konfigurieren /etc/auto_master, /etc/auto_home

Transcript of Solaris Basic

Page 1: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 1/39

SUN Free Software

Unter http://www.sunfreeware.com findet man "ready to use" Software für SUN Solaris, wie beispielsweise TOP, AMANDA, GCC, GDB etc. Download via FTP von:

«ftp://nce.sun.ch/pub/freeware/sparc/7»

PCNFS installieren

CD-ROM Solaris Intranet Extension (siehe auch Solaris Server Intranet Extension Installation)

$ su $ cd /cdrom/cdrom0/nfsc/sparc $ pkgadd -d `pwd` 

Installation Solaris mit Openwindows(Grafikkarte)

•  Hostname

$ uname -u 

•   Network Interface

$ ifconfig -a 

•  /etc/hosts, /etc/netmasks definieren

•  Static IP-routes definieren

/etc/rc2.d/S79staticroutes

•  CD-ROM rausnehmen

$ eject cdrom 

•  Disklayout kontrollieren

$ prtvtoc /dev/rdsk/.... 

•  Automounter konfigurieren

/etc/auto_master, /etc/auto_home

Page 2: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 2/39

•  Device File für DAT

/dev/rmt/0l (tar cvf /dev/rmt/0l)

•  /etc/system definieren konfigurieren (Prestoserve, Oracle, Transtec)

•  Logfile der Installation: /var/sadm/system/logs/install_log

•  Installation über serielles Terminal an Nullmodem Kabel

OK boot cdrom - w (Terminal an ttya)

How to Backup a System

$ init 0 

OK boot -s $ fsck -m /dev/dsk/c0t0d0s0 (und übrige Filesysteme)$ tar cvf /dev/rmt/0l 

Packages (Software die installiert wurde)

Anzeige der installierten Packages

$ pkginfo 

Check ob Package SUNWpcnfd correct installiert ist

$ pkgchk -v SUNWpcnfd 

Package installieren (Path ist meistens /cdrom/cdrom0/....)

$ pkgadd -d <Path to CDROM> SUNWpcnfd 

Das Package SUNWpcnfd entfernen

$ pkgrm SUNWpcnfd 

Monitor Mode (OK Prompt)

In single user mode booten

OK boot -s 

Page 3: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 3/39

Kernel zwingen /devices neu aufzubauen nach dem Anschluss von neuer Hardware

OK boot -r 

Detaillierter Bootvorgang

OK boot -v 

Vom CD-ROM aus booten: Notboot !

OK boot cdrom 

Angeschlossene SCSI-Geräte testen

OK probe-scsi 

List System Devices, e.g. SUNW,hme = Sun Fast Ethernet PCI Adapter 

OK show-devs 

List Network Devices

OK show-nets 

Monitoring Network Activity

OK apply watch-net <full path name of the hme interface, see show-devs> 

Monitor Variablen ändern, anzeigen

OK eeprom OK eeprom ttya-mode=38400,8,n,1,h 

Kernel Analyse

Welche Kernel-Module sind geladen ?

$ modinfo 

Kernel Konfiguration

/etc/system

Logfile von syslog

Page 4: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 4/39

/var/adm/messages

Konfiguration des syslog Daemon

/etc/syslog.conf 

Defaults einstellen

Directory mit Default files

/etc/default

Remote root logins erlauben

/etc/default/login

Timezone setzen

/etc/default/init

Wichtige Konfigurationsfiles

Master-File beim Booten

/etc/inittab

Run-Level Start/Stop Files

/etc/rc?.d

Scripts für Run-Levels

/etc/init.d

Admin Kommandos

$ shutdown -g0 -i0 $ reboot (entspricht init 6)

LAN konfigurieren

Konfiguration der LAN-Interfaces

Page 5: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 5/39

$ ifconfig -a 

•   Netmask setzen: siehe /etc/netmasks•  Jedes LAN-Interface hat /etc/hostname.le0 mit Hostnamen•  LAN-Setup: /etc/rcS.d/S30rootusr.sh (Interfaces konfigurieren)

/etc/rc2.d/S72inetsvc (LAN konfigurieren)

Phys Addressen nachschauen

$ arp -a 

Net to Media Table

Device IP Address Mask Flags Phys Addr------ -------------------- --------------- ----- ---------------

le0 rabbit 255.255.255.25500:60:08:57:17:86le0 quorum 255.255.255.255 SP08:00:20:89:27:03le0 arkum 255.255.255.25500:a0:24:4b:60:1c 

IP-Routing konfigurieren

Alle hosts im Netz 193.72.239.0 werden über den Router 193.72.194.201 erreicht.

$ route add net 193.72.239.0 193.72.194.201 1

Der host 146.228.14.10 wird über den Router 193.72.194.100 erreicht. Siehe File/etc/rc2.d/S79staticroutes.

$ route add host 146.228.14.10 193.72.194.100 1

Routing Tabelle kontrollieren

$ netstat -nr 

DNS konfigurieren

Angabe des DNS Nameservers

/etc/resolv.conf 

Page 6: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 6/39

Reihenfolge definieren

/etc/nsswitch.conf 

Anonymous FTP aufsetzenSiehe Solris2 Administration Seite 103 und ff 

NFS-Client Konfiguration

/etc/vfstab (Soll) --> /etc/mnttab (Ist)mount -F nfs -o bg,ro,soft gondwana:/usr/software /software

 NFS-Server wird in /etc/init.d/nfs.client start gestartet.

Anzeige welche Directories gondwana zum mounten freigegeben hat

dfshares gondwana

RESOURCE SERVER ACCESS TRANSPORTgondwana:/export/home/zahn gondwana - -gondwana:/export/home/steiner gondwana - - 

NFS-Server Konfiguration

/etc/dfs/dfstab (Soll) --> /etc/dfs/sharetab

Directory read-only freigeben

$ share -o ro /usr/software 

Alle Directories in /etc/dfs/dfstab freigeben

$ shareall 

Alle Directories in /etc/dfs/dfstab zurücknehmen

$ unshareall 

 NFS-Server wird gestartet in

/etc/init.d/nfs.server 

Page 7: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 7/39

Anzeige der freigegbenen lokalen Direcories

$ share 

Anzeige welche Clients nutzen welche Directories eines NFS-Servers

$ dfmounts -F nfs gondwana 

RESOURCE SERVER PATHNAME CLIENTSgondwana /export/home/zahn paragon.glue.ch,rabbit.glue.ch

Automounter

- /etc/auto_master (Master Map konfigurieren)- /etc/auto_home (Home Direcories verwalten)

- autofs ist ein spezielles Filesystem- automount -v (Nach einer Aenderung an einer Map ausführen)

Modem konfigurieren

Siehe spezielles Dokument 

SCSI-Harddisk an SUN Hardware

anschliessenBeispiel: SCSI-Disk Seagate ST150176L, 50MB an SUN Ultra Enterprise 1

•  Eintrag in /etc/format.dat vornehmen (Angaben von Lieferanten)

disk_type = "Seagate ST150176L" \: ctlr = "SCSI" \: ncyl = 12022 : acyl = 2 : pcyl = 12024 : nhead = 22 : nsect = 369 \: rpm = 7200 : bpt = 188928

  Eintrag /etc/system für Solaris-2 Kernel, System booten

** SCSI-Disc Konfiguration*set scsi_options=0x20

Page 8: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 8/39

•  Disk anschliessen, SCSI-Adresse kontrollieren, Terminierung

Unbedingt kontrolieren, dass eine SCSI-Adresse nicht mehrfach belegt ist. Dazukann meistens hinten am Gerät ein Tippschalter eingestellt werden. Man beacht,dass in der Regel das letzte Gerät terminiert werden muss.

  Disk formatieren (nur wenn notwendig !)

In der Regel muss eine Disk nicht neu formatiert werden, ist dies jedochnotwendig so steht unter Solaris das Utility format zur Verfügung.

format 

AVAILABLE DISK SELECTIONS:

0. c0t0d0 <SUN2.1G cyl 2733 alt 2 hd 19 sec 80>/sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@0,0

1. c0t1d0 <SUN2.1G cyl 2733 alt 2 hd 19 sec 80>/sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@1,02. c0t2d0 <IBM-DDRS-39130-S71D cyl 8186 alt 2 hd 10 sec 218>

/sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@2,03. c0t4d0 <SEAGATE-ST118273N-5764 cyl 7499 alt 2 hd 20 sec 237>

/sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@4,04. c0t5d0 <SEAGATE-ST150176LW-0002 cyl 12022 alt 2 hd 22 sec 369>

/sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@5,0

Specify disk (enter its number): 4 

format> type 

AVAILABLE DRIVE TYPES:0. Auto configure1. DDRS-391302. Seagate ST1182733. Seagate ST150176L4. Quantum ProDrive 80S5. Quantum ProDrive 105S6. CDC Wren IV 94171-3447. SUN01048. SUN02079. SUN032710. SUN034011. SUN042412. SUN053513. SUN066914. SUN1.0G15. SUN1.05

Page 9: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 9/39

16. SUN1.3G17. SUN2.1G18. SUN2.9G19. IBM-DDRS-39130-S71D20. SEAGATE-ST118273N-5764

21. SEAGATE-ST150176LW-000222. other Specify disk type (enter its number)[21]: 21

format> format (confirm with "yes")

•  Disk partitionieren

Dadurch wird die Disk in logische Teile unterteilt. Jeder teil enthält ein eigenes Filesystem.

format> part 

 Nun die Partitionierungsdaten eingeben, zB

 partition> print

Current partition table (original):Total disk cylinders available: 2733 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks0 root wm 0 - 204 152.15MB (205/0/0) 3116001 swap wu 205 - 377 128.40MB (173/0/0) 262960

2 backup wm 0 - 2732 1.98GB (2733/0/0) 41541603 home wm 378 - 1017 475.00MB (640/0/0) 9728004 unassigned wm 0 0 (0/0/0) 05 unassigned wm 1018 - 1928 676.13MB (911/0/0) 13847206 usr wm 1929 - 2732 596.72MB (804/0/0) 12220807 unassigned wm 0 0 (0/0/0) 0 

•  Label erzeugen (aktuelle Partitionierung speichern)

 partition> label  partition> y  partition> quit format> quit 

•  Filesystem erstellen

newfs -v -m 0 /dev/rdsk/c0t5d0s0 

Page 10: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 10/39

Damit wird ein Filesystem mit 0 % Min-Free auf der Partition 0 der Disk an der SCSI-Adresse 5erstellt.

•  Filesystem mounten

Dazu den folgenden Eintrag in /etc/vfstab vornehmen

#device device mount FS fsck mount mount#to mount to fsck point type pass at boot options

/dev/dsk/c0t5d0s0 /dev/rdsk/c0t5d0s0 /u02 ufs 6 yes - 

List Solaris Hardware Configuration

$ /usr/sbin/prtconf  

Show Swap Space currently installed

Multiply the Blocks column by 512

$ swap -l 

swapfile dev swaplo blocks free/dev/dsk/c0t0d0s1 32,1 16 262944 262944

262944 * 512 = 134 MB 

Show Operating System Patch Level

$ showrev -p 

Patch: 105181-16

 Note, that Patchlevel 105181-15 is minimal needed for Oracle 8.1.6

How to install a Sun Solaris Jumbo Patch ?- Download the Patch from: http://sunsolve.sun.com - Read the README File included in the Patch- Usually the only thing you have to do is:

Page 11: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 11/39

$ cd <patch cluster directory>

$ ./install_custer

$ cat /var/sadm/install_data/<luster name>_log

$ showrev -p 

Reboot the system

Tracing System Calls

You can trace system calls with truss on Solaris an strace on Linux

$ truss svrmgrl 

Troubleshooting Solaris Device Files

If you suspect troubles with your Solaris device files, e.g. system doesn't boot after a filesystemcheck, you may repair the solaris system using the following commands.

Halt the system immediately with the keys STOP-A, you will now see the boot prompt: OK 

STOP-A 

Reset the machine with

OK reset 

Boot the machine with

OK boot -r 

The command boot -r will rebuild all devices files according to your attached hardware. If youcannot boot the machine, you can try the following commands: drvconfig, disks, tapes 

drvconfig - configure the /devices directory

The default operation of drvconfig is to create the /devices directory tree that describes, in the

filesystem namespace, the hardware layout of a particular machine. Hardware devices present onthe machine and powered on as well as pseudo-drivers are represented under /devices. Normallythis command is run automatically after a new driver has been installed (with add_drv(1M)) andthe system has been rebooted.

disks - creates /dev entries for hard disks attached to the system

Page 12: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 12/39

Disks creates symbolic links in the /dev/dsk and /dev/rdsk directories pointing to the actual disk device special files under the /devices directory tree.

tapes - creates /dev entries for tape drives attached to the system

Tapes creates symbolic links in the /dev/rmt directory to the actual tape device special files under the /devices directory tree. Tapes searches the kernel device tree to see what tape devices areattached to the system.

Short Tips to maintain Sun Solaris

Here are some short tips for common tasks on SUN Solaris 2.6, 7 and 8

Important SUN Solaris Commands

$ who -r # Show Run Level$ /usr/sbin/prtconf # Print the complete system configuration$ /sbin/mountall -l # Mount all local filesystems.$ /sbin/init S # Changing to single user mode

Show currently mounted filesystems

# /etc/mnttab: Contains information about devices that# are currently mounted. If there are mounted filesystems# with quotas enabled, display them

if /usr/bin/cut -f 4 /etc/mnttab | \/usr/bin/egrep '^quota|,quota' >/dev/null 2>&1; then

echo 'There are mounted filesystems with quotas enabled'

fi 

How to enable system activity data gathering

# You will also need to uncomment the sa entries in# the system crontab /var/spool/cron/crontabs/sys.# Refer to the sar(1) and sadc(1m) man pages# for more information.

$ /usr/bin/su sys -c "/usr/lib/sa/sadc /var/adm/sa/sa`date +%d`" 

How a new, unused Solaris system is setup ?

# sysidtool is a suite of five programs that configure a new# system, or one that has been unconfigured with sys-# unconfig(1M). The sysidtool programs run automatically at

Page 13: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 13/39

# system installation, or during the first boot after a# machine has been successfully unconfigured.## These programs have no effect except at such times, and# should never be run manually.

# System Files are

cat /etc/nodenamecat /etc/hostname.*cat /etc/default/initcat /etc/defaultdomaincat /etc/inet/hostscat /etc/inet/netmasks

How to configure Asynchronous PPP ?

Configure /etc/asppp.cf for the aspppd daemon

$ /usr/sbin/aspppd -d 1 

How to get and set TCP/IP driver configuration parameters ?

# Getting Parameters Supported By The TCP Driver # To see which parameters are supported by the TCP driver,# use the following command:

$ ndd /dev/tcp \? 

# The following command sets the value of the parameter # ip_forwarding in the IP driver to zero. This disables IP# packet forwarding.

Disable IP Forwarding

$ /usr/sbin/ndd -set /dev/ip ip_forwarding 0 

Enable IP Forwarding (Machine acting as a Router)

$ /usr/sbin/ndd -set /dev/ip ip_forwarding 1 

How to set Default Route on Solaris ?

# Configure default routers using the local "/etc/defaultrouter"# configuration file. The file can contain the hostnames or IP# addresses of one or more default routers.

Page 14: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 14/39

## The default routes listed in the "/etc/defaultrouter" file will# replace those added by the kernel during diskless booting. An# empty "/etc/defaultrouter" file will cause the default route# added by the kernel to be deleted.

## Note that the default router file is ignored if we received routes# from a DHCP server. Our policy is to always trust DHCP over local# administration.

# Set Default Route

$ route -n add default <Default Route from /etc/defaultrouter> 

# Show Default Route

$ /usr/sbin/route -fn default 128.128.128.11 done

How to set NIS domainname if locally configured ?

if [ -f /etc/defaultdomain ]; then

/usr/bin/domainname `cat /etc/defaultdomain`

echo "NIS domainname is `/usr/bin/domainname`"

fi

RPC (Remote Procedure Call) Configuration

# rpcbind - universal addresses to RPC program number mapper # rpcinfo - report RPC information

Solaris Keyserv Daemon

# keyserv is a daemon that is used for storing the private# encryption keys of each user logged into the system. These# encryption keys are used for accessing secure network ser-# vices such as secure NFS and NIS+.

$ /usr/sbin/keyserv 

How to start the Solaris DNS server "in.named"

# If this machine is configured to be an Internet# Domain Name System (DNS) server, run the name daemon.# Start named prior to: route add net host,# to avoid dns gethostbyname timout delay for 

Page 15: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 15/39

# nameserver during boot.

if [ -f /usr/sbin/in.named -a -f /etc/named.conf ]; then

echo 'starting internet domain name server.'

/usr/sbin/in.named &

fi 

Where to find syslogd messages ?

Configuration File: /etc/syslog.conf Message File: /var/adm/messages

IP-Aliasing for SUN Solaris

# How to setup IP-Alias on SUN Solaris 

1. Setup File /etc/hostname.hme0:1 for the second IP-Address

cat /etc/hostname.hme0:1

ldap

2. Insert IP-Address in /etc/hosts

## Internet host table

# 128.128.128.11 ux-portal1 # IP-address on hme0:0128.128.128.20 ldap # IP-alias on hme0:1

3. Start alias IP-Address on Interface in /etc/rc2.d

S99ipalias -> ../init.d/ipalias

#!/bin/sh# Akadia AG, Arvenweg 4, CH-3604 Thun# ----------------------------------------------------------------------

# File: ipalias## Autor: Martin Zahn / 10.05.2000## Purpose: Setup second IP address on hme0:1# ---------------------------------------------------------------------- 

Page 16: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 16/39

if [ -f /etc/hostname.hme0:1 ]thencase "$1" in

'start') # Start second IP address on hme0:1

echo "Start multi-homed server for UX-ALIAS1 on hme0:1"ifconfig hme0:1 128.128.128.20 up

;;

'stop') # Stop second IP address on hme0:1

echo "Stop multi-homed server for UX-ALIAS1 on hme0:1"ifconfig hme0:1 128.128.128.20 down ;;

esac

fi

4. Check IP-Address on second Interface

ifconfig -a

Solaris automounter installs filesystems by

default in /net

The Solaris automount utility installs autofs mount points and associates an automount mapwith each mount point. The autofs file system monitors attempts to access directories within it

and notifies the automountd daemon. The daemon uses the map to locate a file system, which

it then mounts at the point of reference within the autofs file system. You can assign a map to

an autofs mount using an entry in the /etc/auto_master map or a direct map in

/etc/auto_direct. If the file system is not accessed within an appropriate interval (five

minutes by default), the automountd daemon unmounts the file system.

Default Mapping under /net

The mount point /net is by default the location, where automountd mounts NFS filesystems,

which are exported on other machines. Lets suppose, that you have the filesystem /home exported on the NFS server saphir, then the (Solaris) NFS client with an active automounter 

will automatically mount this NFS filesystem under /net/saphir/.

Mapping using /etc/auto_direct

Page 17: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 17/39

You probably doesn't want this default behavior. If you insert the following entry in

/etc/auto_direct ....

/opt/local -rw remote_machine:/local 

.... then, the directory /local on the remote machine "remote_machine" will be mounted on thelocal machine under /opt/local.

Solaris keyboard utility

The Solaris utility kbd manipulates the state of the keyboard or display the type of keyboard or 

change the default keyboard abort sequence effect. Suppose, that you do not want thateverybody can halt the the system you must change the default value. We also noticed, that theSolaris machines attached to a switch box, using a character terminal on a serial line, may haltwhen you switch from one machine to the other.

SYNOPSIS

kbd [ -r ] [ -t ] [ -c on|off ][ -a enable|disable ] [ -d keyboard device ]

kbd -i [ -d keyboard device ]

DESCRIPTION

kbd manipulates the state of the keyboard, or displays the keyboard type or allows the default

keyboard abort sequence effect to be changed. The default keyboard device being set is

/dev/kbd. 

The -i option reads and processes default values for the keyclick and keyboard abort settings

from the keyboard default file, /etc/default/kbd. Only keyboards that support a clicker respond to the -c option. If you want to turn clicking on by default, add or change the currentvalue of the KEYCLICK variable to the value on in the keyboard default file,

/etc/default/kbd, as shown here.

KEYCLICK=on 

Then, run the command 'kbd -i' to change the current setting. Valid settings for this variable

are the values on and off. Other values are ignored. If the variable is not specified in the defaultfile, the setting is unchanged.

The keyboard abort sequence (L1-A or STOP-A) on the keyboard and BREAK on the serialconsole input device on most systems) effect may only be changed by the superuser, using the-a option. On most systems, the default effect of the keyboard abort sequence is to suspend theoperating system and enter the debugger or the monitor.

Page 18: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 18/39

If you want to permanently change the software default effect of the keyboard abort sequence,you can add or change the current value of the KEYBOARD_ABORT variable to the

value disable in the keyboard default file, /etc/default/kbd, as shown here.

KEYBOARD_ABORT=disable 

Then, run the command 'kbd -i' to change the current setting. Valid settings for this value

are the values enable and disable. Other values are ignored. If the variable is not specified in thedefault file, the setting is unchanged.

OPTIONS 

-i Set keyboard defaults from the keyboard default file. This option is mutuallyexclusive with all other options except for the -d keyboard device option. Thisoption instructs the keyboard command to read and process keyclick and

keyboard abort default values from the /etc/default/kbd file. This

option can only be used by the superuser.-r Reset the keyboard as if power-up.-t Return the type of the keyboard being used.-c On/Off state Turn the clicking of the keyboard on or off.-a Enable/Disable state; Enable or disable the keyboard abort sequence effect.

Monitoring Performance

This chapter describes procedures for monitoring system performance by using the vmstat,

iostat, df, and sar commands. This is a list of the step-by-step instructions in this chapter.

How to Display Virtual Memory Statistics (vmstat)

The following example shows the vmstat display of statistics gathered at five-second intervals.

$ vmstat 5 

  procs memory page disk faults cpur b w swap free re mf pi po fr de sr f0 s3 -- -- in sy cs us sy id0 0 8 28312 668 0 9 2 0 1 0 0 0 1 0 0 10 61 82 1 2 970 0 3 31940 248 0 10 20 0 26 0 27 0 4 0 0 53 189 191 6 6 88

0 0 3 32080 288 3 19 49 6 26 0 15 0 9 0 0 75 415 277 6 15 790 0 3 32080 256 0 26 20 6 21 0 12 1 6 0 0 163 110 138 1 3 960 1 3 32060 256 3 45 52 28 61 0 27 5 12 0 0 195 191 223 7 11 820 0 3 32056 260 0 1 0 0 0 0 0 0 0 0 0 4 52 84 0 1 99 

Category Field

Name

Description

Page 19: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 19/39

  procs Reports the following states:

r The number of kernel threads in the dispatch queue

  b Blocked kernel threads waiting for resources

w Swapped out LWPs waiting for processing resources to finish

memory Reports on usage of real and virtual memory:

swap Available swap space 

free Size of the free list

  page Reports on page faults and paging activity, in units per second:

re Pages reclaimed

mf Minor and major faults

  pi Kbytes paged in

  po Kbytes paged out

fr Kbytes freed

de Anticipated memory needed by recently swapped-in processes

sr Pages scanned by page daemon (not currently in use). If sr doesnot equal zero, the page daemon has been running.

disk Reports the number of disk operations per second, showing dataon up to four disks

faults Reports the trap/interrupt rates (per second):

in Interrupts per second

sy System calls per secondcs CPU context switch rate

cpu Reports on the use of CPU time:

us User time

sy System time

id Idle time

How to Display System Event Information

Run vmstat -s to show the total of various system events that have taken place since thesystem was last booted.

0 swap ins0 swap outs0 pages swapped in0 pages swapped out

409376480 total address trans. faults taken

Page 20: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 20/39

3075036 page ins2601555 page outs3812452 pages paged in6525552 pages paged out

11007609 total reclaims

10927650 reclaims from free list0 micro (hat) faults409376480 minor (as) faults

2957386 major faults102738273 copy-on-write faults61711047 zero fill page faults1002562077 pages examined by the clock daemon

7881 revolutions of the clock hand16716370 pages freed by the clock daemon4999048 forks1138206 vforks

5747009 execs741660225 cpu context switches736047593 device interrupts528054538 traps2496638575 system calls430283487 total name lookups (cache hits 95%)

81727 toolong10484677 user cpu9528364 system cpu

443762786 idle cpu16281790 wait cpu 

How to Display Swapping Statistics

Run vmstat -S to show swapping statistics.

  procs memory page disk faults cpur b w swap free si  so pi po fr de sr m1 m3 m4 m5 in sy cs us sy id0 0 0 8512 888 0 0 12 21 55 0 417 1 0 0 0 206 1040 308 2 2 96 

si = Average number of LWPs swapped in per secondso = Number of whole processes swapped out

How to Display Disk Utilization Information (iostat)

You can display disk activity information by using the iostat command with a time interval.

The following example shows disk statistics gathered every five seconds.

iostat 5 

Page 21: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 21/39

  tty md1 md3 md4 md5 cputin tout kps tps serv kps tps serv kps tps serv kps tps serv us sy wt id

0 2 10 1 28 2 0 22 0 0 0 1 0 10 2 2 3 920 47 58 7 39 16 2 34 0 0 0 0 0 0 0 2 19 780 16 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 98

0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 990 16 2 0 22 0 0 0 0 0 0 0 0 0 2 3 1 950 24 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 98 

For Each ... Field Name Description

Terminal

tin Number of characters in the terminal input queue

tout Number of characters in the terminal output queue

Disk 

  bps Blocks per secondtps Transactions per second

serv Average service time, in milliseconds

CPU

us In user mode

sy In system mode

wt Waiting for I/O

id Idle

How to Display Extended Disk Statistics

Run iostat -xtc to get extended disk statistics. This command displays a line of output for 

each disk.

extended device statistics tty cpudevice r/s w/s kr/s kw/s wait actv svc_t %w %b tin tout us sy wt idmd1 0.4 0.9 3.6 6.9 0.0 0.0 27.7 1 1 0 2 2 2 3 92md3 0.1 0.2 1.0 1.3 0.0 0.0 21.7 0 0md4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0

md5 0.0 0.0 0.7 0.0 0.0 0.0 9.9 0 0md8 0.8 0.3 6.7 14.2 0.0 0.0 13.1 0 1md10 0.2 0.9 1.8 6.8 0.0 0.0 15.5 0 1md11 0.2 0.9 1.8 6.8 0.0 0.0 14.8 0 1md30 0.0 0.2 0.5 1.3 0.0 0.0 11.4 0 0md31 0.0 0.2 0.5 1.3 0.0 0.0 10.2 0 0md40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0md41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0

Page 22: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 22/39

md50 0.0 0.0 0.4 0.0 0.0 0.0 9.4 0 0md51 0.0 0.0 0.4 0.0 0.0 0.0 7.3 0 0md80 0.4 0.3 3.3 14.2 0.0 0.0 10.3 0 0md81 0.4 0.3 3.3 14.2 0.0 0.0 11.7 0 1sd0 0.6 2.1 6.0 22.8 0.0 0.0 16.3 0 3

sd1 0.6 2.1 6.0 22.8 0.0 0.0 15.2 0 2 

Field Name Description

r/s Reads per second

w/s Writes per second

Kr/s Kbytes read per second

Kw/s Kbytes written per second

wait Average number of transactions waiting for service (queue length)

actv Average number of transactions actively being serviced

svc_t Average service time, in milliseconds

%w Percentage of time the queue is not empty

%b Percentage of time the disk is busy

How to Check CPU Utilization (sar)

Display CPU utilization with the sar -u command. (The sar command without any options isequivalent to sar -u.) At any given moment, the processor is either busy or idle. When busy, the processor is in either user or system mode. When idle, the processor is either waiting for I/Ocompletion or "sitting still" with no work to do.

Measure CPU utilization during 5 secs one time.

sar -u 5 1 

Measure CPU utilization during 60 secs 1440 times and write result in file sar.log.

sar -u -o sar.log 60 1440

To later review disk and tape activity from that period:

sar -d -f sar.log 

Field

NameDescription

%sys Lists the percentage of time that the processor is in system mode

%user Lists the percentage of time that the processor is in user mode

Page 23: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 23/39

%wioLists the percentage of time the processor is idle and waiting for I/Ocompletion

%idle Lists the percentage of time the processor is idle and is not waiting for I/O

A high %wio generally means a disk slowdown has occurred. 

Enable file system journaling on Solaris 7

and 8

Solaris 7 and 8 include a native implementation of file system journaling. This feature, known as"intent logging" or just "logging" enables FASTER file system operation and FASTER system boot.

It's trivial to implement and safe to use. The new logging feature is an option to the Unix FileSystem (UFS), which is the standard file system for all disk partitions on SUN servers, except for  partitions holding swap space. By default, the journaling option is disabled. Logging is enabledon a per file system basis, and it can even be enabled on / (root file system) and other operatingsystem partitions.

Background

Solaris UFS logging works by allocating space from the file system's free blocks. Within thatspace, all metadata changes to the file system are written. Metadata includes directory and I-nodeinformation but not file data blocks, essentially everything but the actual data within the file. So,for example, a "file create" modifies the directory structure and allocates a new I-node, and thoseactivities are written to the logging space. Once the metadata changes are made to the loggingarea, the system is free to perform other operations to the file system. In the background, theinformation in the log is flushed to the file system and updates the appropriate directory and I-node structures, completing the file system operations.

The logging data is written sequentially within the log space. It's therefore much faster for theoperating system to complete metadata changes via logging and background flushing than bydirectly modifying the metadata (via random I/O) spread across the disk. The size of the loggingspace is based on the size of the file system, and equals 1 MB per 1 GB of file system space, upto 64 MB. The space is used as a circular log: if the log space is about to fill up, new metadatachange requests are paused while the log is emptied. As changes are moved from the log to thefile system, that log space is made available, and new metadata changes can be written to thelogging space.

Usually with UFS, if the system crashes during any file system operation, the entire system musthave its consistency checked via the fsck command. That command can take several minutes per file system because it checks all metadata and file data to ensure the structures are correct, free,and used, and that the I-node block counts are correct. It also confirms that the free spaceavailable is current, repairs inconsistencies, and occasionally requires manual intervention to fix

Page 24: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 24/39

large problems. Files and even directories can be lost, depending on the operations occurring atthe time of the crash.

Because metadata changes are made first to the log space rather than to the file system, theconsistency check for a logged file system after a crash is a simple and fast operation. The

system evaluates the logging data and determines which changes had completed against theunderlying file system, which had yet to start, and which were in progress. Those completed or not yet started are removed from the log, and those partly completed are either undone or completed. If there's sufficient data in the log to complete the operation, it's completed.Otherwise, the changes made are removed from the underlying file system.

People familiar with database operation will recognize the similarity between databasetransaction processing and the activities here. The end result is that the underlying file system isconsistent, and no thorough consistency checking is needed. That operation completes in a fewseconds per file system.

Using logging

Starting with Solaris 7, there's a new logging option to the mount command and in the/etc/vfstab system configuration file. Logging only appears in a couple other places withinSolaris. The mount command shows which partitions are mounted and lists logging in theoptions fields for each partition on which logging is enabled. Finally, at system boot time, thefsck phase reports per partition whether each is stable, logging, or being checked. There are noother status commands available to determine the state of logging.

A = Device to mountB = Device to fsck 

C = Mount pointD = Filesystem TypeE = Fsck pass (unimportatnt with logging)F = Mount at bootG = Mount options

# ------------------------------------------------------------------# A B C D E F G# ------------------------------------------------------------------fd - /dev/fd fd - no -/proc - /proc proc - no -/dev/dsk/c0t0d0s3 - - swap - no -/dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 / ufs 1 no logging /dev/dsk/c0t0d0s6 /dev/rdsk/c0t0d0s6 /usr ufs 2 no logging /dev/dsk/c0t0d0s1 /dev/rdsk/c0t0d0s1 /var ufs 3 no logging /dev/dsk/c0t0d0s7 /dev/rdsk/c0t0d0s7 /home ufs 4 yes logging /dev/dsk/c0t0d0s5 /dev/rdsk/c0t0d0s5 /opt ufs 5 yes logging /dev/dsk/c0t8d0s0 /dev/rdsk/c0t8d0s0 /u01 ufs 6 yes logging /dev/dsk/c0t9d0s0 /dev/rdsk/c0t9d0s0 /u02 ufs 7 yes logging 

Page 25: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 25/39

/dev/dsk/c0t10d0s0 /dev/rdsk/c0t10d0s0 /u03 ufs 8 yes logging /dev/dsk/c0t11d0s0 /dev/rdsk/c0t11d0s0 /u04 ufs 9 yes logging /dev/dsk/c0t12d0s0 /dev/rdsk/c0t12d0s0 /u05 ufs 10 yes logging /dev/dsk/c1t13d0s0 /dev/rdsk/c1t13d0s0 /app ufs 11 yes logging /dev/dsk/c1t14d0s0 /dev/rdsk/c1t14d0s0 /users ufs 12 yes logging 

swap - /tmp tmpfs - yes - 

Logging increases performance, decreases fsck time, removes the risk of a file systemcorruption, can be used on all UFS partitions (including root), and is free.

Solaris Syslog Daemon Debugging

The log system messages daemon syslogd reads and forwards system messages to theappropriate log files and/or users, depending upon the priority of a message and the systemfacility from which it originates. The configuration file /etc/syslog.conf controls where messages

are forwarded. The syslogd daemon ignores any faulty entry in /etc/syslog.conf, specially spacesinstead of tabs are not recognized by syslogd. Therefore always check the entries in/etc/syslog.conf in the debugging mode of syslogd.

How to check /etc/syslog.conf 

# /etc/init.d/syslog stop

# /usr/sbin/syslogd -d 

getnets() found 1 addresses, they are: 0.0.0.0.2.2amiloghost() testing 193.247.121.196.2.2

cfline(*.err;kern.notice;auth.notice /dev/sysmsg)cfline(*.err;kern.debug;daemon.notice /var/adm/messages)cfline(mail.info;mail.debug /var/log/maillog) 

syslogd: line 14: unknown priority name "debug /var/log/maillog" 

cfline(*.alert;kern.err;daemon.err operator)cfline(*.alert root)cfline(*.emerg *)cfline(user.err /dev/sysmsg)cfline(user.err /var/adm/messages)

cfline(user.alert root, operator)cfline(user.emerg *) 

syslogd: version 1.70Started: Sat Jan 6 10:11:47 2001Input message count: system 0, network 0# Outputs: 10 

Page 26: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 26/39

5 3 3 3 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 X CONSOLE: /dev/sysmsg7 3 3 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 X FILE: /var/adm/messagesX X 6 X X X X X X X X X X X X X X X X X X X X X X UNUSED:3 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 X USERS: operator 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 X USERS: root

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X WALL:X 3 X X X X X X X X X X X X X X X X X X X X X X X CONSOLE: /dev/sysmsgX 3 X X X X X X X X X X X X X X X X X X X X X X X FILE: /var/adm/messagesX 1 X X X X X X X X X X X X X X X X X X X X X X X USERS: root, operator X 0 X X X X X X X X X X X X X X X X X X X X X X X WALL: 

Per File StatisticsFile Tot Dups Nofwd Errs---- --- ---- ----- ----/dev/sysmsg 0 0 0 0/var/adm/messages 0 0 0 0

0 0 0 0operator 0 0 0 0root 0 0 0 0WALL 0 0 0 0/dev/sysmsg 0 0 0 0/var/adm/messages 0 0 0 0root,operator 0 0 0 0WALL 0 0 0 0 

syslogd: restartedoff & running....sys_poll blocking, init_cnt=0 

# ^D # /etc/init.d/syslog start 

Line 14 in /etc/syslog.conf are filled up with spaces instead of tabs. Replace the spaces with tabsand syslogd will accept the new entry in Line 14.

Does each Oracle Process use more than

100M memory ?

If you check the oracle process with the OS comand "pmap" or "top", you can see that eachoracle process use more than 100M memory. Is this a problem on the Oracle installation or something else? It seems that pmap counts the SGA size as the private memory segment of eachoracle process, but we believe the SGA size should be shared.

Output from "top" on our Solaris System with Orcale 8.1.7.0

Page 27: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 27/39

PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND-----------------------------------------------------------------361 oracle 258 59 0 124M 88M sleep 0:01 0.00% oracle373 oracle 11 59 0 122M 88M sleep 41:50 0.00% oracle363 oracle 11 59 0 119M 88M sleep 0:01 0.00% oracle

365 oracle 11 58 0 119M 88M sleep 0:17 0.02% oracle359 oracle 1 59 0 119M 89M sleep 0:00 0.00% oracle377 oracle 1 59 0 119M 88M sleep 0:00 0.00% oracle375 oracle 1 58 0 119M 88M sleep 0:00 0.00% oracle367 oracle 1 58 0 118M 89M sleep 0:00 0.00% oracle371 oracle 1 58 0 118M 89M sleep 0:00 0.00% oracle369 oracle 1 58 0 118M 88M sleep 0:00 0.00% oracle 

Memory Allocation for Oracle Processes

On many UNIX platforms and specially on Sun platforms, the text of the Oracle binary and

shared libraries are actually shared between background processes if these instances share thesame ORACLE_HOME. So you need to subtract the shared text of the oracle binary and theshared libraries in the result of the OS commands.

Even pmap and pmen utilities make mistakes between these memory divisions, and sometimesSGA and text executable are often added incorrectly.

Determine the memory used by each Oracle background process on a Solaris

This can be used by anyone who has privleges for the pmap, which can be found in /usr/proc/bin/. First, we need to find the process id (PID) of the Oracle background process you

wish to determine the memory size for. This is done by issueing the following command:

# ps -u oracle -f  

UID PID PPID C STIME TTY TIME CMDoracle 359 1 0 12:26:17 ? 0:00 ora_pmon_DIA3oracle 361 1 0 12:26:17 ? 0:01 ora_dbw0_DIA3oracle 363 1 0 12:26:17 ? 0:01 ora_lgwr_DIA3oracle 365 1 0 12:26:17 ? 0:18 ora_ckpt_DIA3oracle 367 1 0 12:26:17 ? 0:01 ora_smon_DIA3oracle 369 1 0 12:26:17 ? 0:00 ora_reco_DIA3oracle 371 1 0 12:26:17 ? 0:00 ora_snp0_DIA3oracle 373 1 0 12:26:17 ? 41:50 ora_s000_DIA3oracle 375 1 0 12:26:17 ? 0:00 ora_d000_DIA3oracle 377 1 0 12:26:18 ? 0:00 ora_d001_DIA3 

Second, you then enter the following commands for the DB Writer process (ora_dbw0_DIA3)with process id = 361 as an example.

Page 28: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 28/39

# /usr/proc/bin/pmap 361 | grep "shmid"

80000000 82992K read/write/exec/shared [ shmid=0x2 ] 

# /usr/proc/bin/pmap 361 | grep "total" total 124232K  

Then you take the total size: 124232K and subtract the SGA size which the line marked with"shmid=" above, in this case it is 82992K. So, 124232K minus 82992K is 41240K. So, theDBWR background process is approximately 41.2 MB. Repeat this steps for all the background processes.

Sizing up Solaris Memory with the

RMCmem Package

How much memory is needed on SUN Solaris? Explaining memory in Solaris by reviewing thedifferent types of memory and introducing a set of tools, the RMCmem package.

Install RMCmem Package

Download the RMCmem tools available from ftp://playground.sun.com/pub/memtool. The package includes a kernel module that provides extra instrumentation.

# cd /tmp # zcat RMCmem3.8.2.tar.gz | tar xvf - # pkgadd -d . 

The package is installed in /opt/RMCmem (see README in this directory)

Virtual / Physical Memory Usage

Solaris is a virtual memory system. The total amount of memory that you can use is increased byadding swap space to the system. If you ever see "out of memory" messages, adding swap spaceis the usual fix. Performance of the system is very dependent on how much physical memory(RAM) you have. If you don't have enough RAM to run your workload, performance degradesrapidly.

Physical memory usage can be classified into four groups:

•  Kernel memory mapped into kernel address space•  Process memory is mapped into a process address space•  Filesystem cache memory that is not mapped into any address space•  Free memory that is not mapped into any address space

RMCmem includes a simple command to summarize this:

Page 29: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 29/39

# /opt/RMCmem/bin/prtmem 

Total memory: 989 MegabytesKernel Memory: 60 MegabytesApplication: 110 Megabytes

Executable & libs: 42 MegabytesFile Cache: 757 MegabytesFree, file cache: 11 MegabytesFree, free: 6 Megabytes 

Total physical memory

The total physical memory can be seen using prtconf. Memory is allocated in units called pages,and you can use the 'pagesize' command to see the size in bytes per page:

# /usr/sbin/prtconf | grep Memory 

Memory size: 1024 Megabytes 

# /usr/bin/pagesize 8192 

Kernel memory

Kernel memory is allocated to hold the initial kernel code at boot time, then grows dynamicallyas new device drivers and kernel modules are used. Kernel tables also grow dynamically, unlikesome older versions of Unix. As you add hardware and processes to a system, the kernel willgrow. In particular, to keep track of all the memory in a system, the kernel allocates a page table

structure.

If you have several gigabytes of RAM this table gets quite large. The dynamic kernel memoryallocator grabs memory in large "slabs," then allocates smaller blocks more efficiently. Thismeans that the kernel tends to grab a bit more memory than it's really using. If there is a severememory shortage, the kernel unloads unused kernel modules and devices and frees unused slabs.The simplest summary of kernel memory usage comes from sar. To show the kernel memoryallocation (KMA) activities use (see man sar for more details).

# sar -k 1 

SunOS diamond 5.7 Generic_106541-12 sun4u 04/28/01 

sml_mem alloc fail lg_mem alloc fail ovsz_alloc fail6873088 6044236 0 44818432 43761720 0 11231232 0 

Application process memory

Page 30: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 30/39

Application processes consist of an address space divided into segments, where each segmentmaps either to a file, anonymous memory (the swap space), System V shared memory, or amemory mapped device. The mapped files include the code and initialized data for the commandand all its shared libraries.

What we really want to know, is the amount of RAM used by each segment. This is shown bythe pmem command in the RMCmem package.

# /opt/RMCmem/bin/pmem 361 

361: ora_dbw0_DIA3Kbytes Resident Shared Private Permissions Mapped File82992 82992 82992 - read/write/exec [shmid=0x2]

16 16 8 8 read/exec libc_psr.so.116 16 8 8 read/exec libmp.so.28 8 8 - read/write/exec libmp.so.2

........ .. .. . ............... ...........112 80 72 8 read/exec libelf.so.18 8 8 - read/write/exec libelf.so.116 16 8 8 read/exec libkvm.so.18 8 8 - read/write/exec libkvm.so.1

-------- ------ ------ ------ ------124232 93040 92728 312 

 Now we can see that the process address space size is 124232 kilobytes; 93040 kilobytes of thatare currently resident in main memory, wherein 92728 kilobytes are shared with other

processes while 312 kilobytes are private. When this command started only the 312 kilobytes of 

 private memory were taken from the free list.

If we now go through all the processes on the system, add up how much private memory theyuse, and also add in the shared memory for each mapped file, we'll know how much applicationmemory is in use. This summary is shown by prtmem as we saw in the beginning, and the detailis listed by the memps command in RMCmem.

# /opt/RMCmem/bin/memps 

PID Size Resident Shared Private Process... ....... ...... ...... .... .............359 118904k 93608k 92800k 808k ora_pmon_DIA3367 118184k 93152k 92704k 448k ora_smon_DIA3369 117928k 93120k 92704k 416k ora_reco_DIA3371 118040k 93136k 92720k 416k ora_snp0_DIA3365 119040k 93120k 92712k 408k ora_ckpt_DIA3377 118344k 93080k 92720k 360k ora_d001_DIA3363 119088k 93056k 92720k 336k ora_lgwr_DIA3375 118344k 93048k 92720k 328k ora_d000_DIA3

Page 31: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 31/39

361 124232k 93040k 92728k 312k ora_dbw0_DIA3 373 121608k 93032k 92728k 304k ora_s000_DIA3 

Filesystem cache memory

This is the part of memory that is most confusing, as it is invisible. You can only tell it's there if you access the same file twice and it is quicker the second time.

The RMCmem package adds kernel instrumentation that counts up all the pages for each cachedfile. The memps -m command lists the files that are cached in order of the amount of memorythey're consuming.

One problem is that within the kernel, the file is only known by its inode number and filesystemmount point. The directory pathname for the file may not be known.

The RMCmem package tries to solve this problem by catching file names as files are opened (by

interposing on the vnode open code) and making an inode-to-name lookup cache in the kernel.This cache size is limited (to 8192 entries by default), and the file may have been opened beforethe kernel module was loaded, so it can't always find the name.

# memps -m 

Size InUse E/F Filename 

21064k 21064k F /usr (inode 540488)8184k 824k F /usr (inode 260922)7752k 7752k F /usr (inode 540429)

7480k 7480k F /usr (inode 540428)7480k 7480k F /usr (inode 540427)6896k 6896k F /usr (inode 540450).... .... . .... ...... ...... 

... and so on down to lots of files ...

# cd /usr # find . -inum 540488 ./local/jdbc/ora817/old/libserver8.a

More infos about the RMCmem package can be found here as PDF 

Using Sun Solaris Manuals directly from

CD-ROM

Solaris 8:

Page 32: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 32/39

cd /cdrom/sol_8_doc ./ab2cd (Start)http://quorum:8888 (Using the Doc online)./ab2cd stop (Stop)

Solaris 7:

cd /cdrom/sol_7_1199_doc ./ab2cd (Start)http://diamond:8888 (Using the Doc online)./ab2cd stop (Stop)

DLT-TAPE UNIT INSTALLATION on

Solaris 7/8/9

Installation Instructions will cover the installation of the DLT tape peripheral hardware andconfiguration of the system to communicate with the DLT tape peripheral. In this example weuse a «QUANTUM DLT7000».

The Solaris system must have the appropriate SCSI interface for DLT drive to attached to, aSCSI single-ended DLT drive can be attached only to a SCSI single-ended interface. The same istrue for SCSI differential attachment. Solaris includes a driver to efficiently communicate withSCSI tape drives, such as the DLT tape peripheral.

Perform the installation as follows:

Shut down your Sun workstation/server and power off the machine and all scsi-devices. Connectthe DLT to the scsi-bus using good cables and make sure the bus is terminated correctly. Set thescsi-id; id 4 or 5 are the most common to use.

If possible use a separate or underutilized SCSI bus for the DLT. Running the tape drive on thesame bus as the disk drives will never let you achieve any good throughput. You bought the DLT because of performance didn't you ?

1.  STOP-A (L1-A)  Power on the devices/machine again and halt the boot process with.

(or press the BREAK key if youhave an ASCII console). 

2.   probe-scsi-all  Verify that the drive is connected properly.

 Note: output from probe-scsi will not always be correct if you enter the PROM monitor by

Page 33: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 33/39

 breaking the boot process!

3.  boot -rv  Boot the system and log in as root. When booting

you should see a message similar to these: "st1:". 

4.  cd /kernel/drv  Change directory to /kernel/drv. 

Edit the st.conf file by adding the following:

tape-config-list="QUANTUM DLT7000","Quantum DLT7000","DLT7-

data";

DLT7-data = 1,0x38,0,0x8639,4,0x82,0x83,0x84,0x85,3; 

tape-config-list="<DLT tape unit>","<DLT reference name>","<DLTdata>"

•  tape-config-list is a variable defined by a series of tape configuration

 parameters listed below:

•  <DLT tape unit> is the vendor and product ID string for the DLT device.

Depending on the DLT tape peripheral you are installing, you must insert theappropriate vendor and product ID for 

<DLT tape unit> as described in the following table:

DLT Tape Product <DLT tape unit>

DLT7000  QUANTUM DLT7000 (Total string

character count, including spaces,

must equal 15).

•  <DLT reference name> is a name you select that the system will use toidentify the DLT device. This reference does not change the DLT product ID.When the system boots, the reference name will be displayed in the list of  peripheral devices recognized by the system.

•  <DLT-data> is a variable containing a series of additional DLT device

configuration information. You select a name in place of the <DLT data> 

string. You will continue editing the st.conf file by defining the name you selected

for <DLT data>. The definition depends on the DLT tape peripheral you are

installing. For a DLT7000 series unit add the following line:

1,0x38,0,0x8639,4,0x82,0x83,0x84,0x85,3; 

<DLT data> contains 10 parameters and are described following:

1  The first parameter, is the version number and should not change.

Page 34: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 34/39

0x38  The second parameter, designates the DLT tape type as defined in

/usr/include/sys/mtio.h.

#define MT_ISOTHER 0x36 /* generic other type of tape drive */ #define MT_ISDLT 0x38 /* sun: SCSI DLT tape drive */ 

0  The third parameter is the block size. Since the DLT tape drive usesvariable block size, this value should be zero.

0x8639 The fourth parameter, 0x8639, is a summation of values that representselected device options. The table below lists the options and thecorresponding value:

Option Value

ST_VARIABLE 0x0001ST_BSF 0x0008

ST_BSR 0x0010ST_LONG_ERASE 0x0020ST_NOWS_EOD 0x0200ST_NLOADABLE 0x0400ST_NO_RECSIZE_LIMIT 0x8000 

The man st page has more information about these and other possible

device options. For certain applications, it may be necessary to consider adding or removing one or more of the device options.

4  The fifth parameter, 4, defines the number of densities. The maximumdefinable number of densities is 4.

0x820x830x840x85 

The sixth, seventh, eighth and ninth parameter are used for systemselection of tape densities. Use these values for a DLT 7000 Tape Drive.

3  The tenth parameter defines which density the system will use as thedefault density. The sixth, seventh, eighth and ninth parameters in the<DLT data>string are referenced by the system as 0, 1, 2 and 3,respectively. The 3 value for the tenth parameter selects the 0x85 densitycode as the system default density.

After editing the st.conf file, reboot the system:

5.  shutdown-i0-g0

boot -rv Reboot the SystemThe -r switch in the boot command enables a kernelcompile and includes the creation of device special filesused for communication with the DLT device. The -vswitch enables verbose mode display of system bootup.With verbose mode, the system should indicate that the

Page 35: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 35/39

DLT tape peripheral is attached by displaying the <DLTreference name>string you selected.

6.  mt -t /dev/rmt/0 status  Enter the following command to verify the installation:

Vendor 'TANDBERG' Product 'DLT7000 '

tape drive:sense key(0x0)= No Additional Senseresidual= 0retries= 0 file no= 0 block no= 0 

The target drive designations assigned by Solaris may take on values higher than already

established in the /dev/rmt/ path. This is not a problem but during a boot -rv, Solaris

does not remove tape device files for drives that are no longer attached to the system. This canincrease the effort in locating the device file for the configured drive, however, this can beminimized by first deleting the tape device files:

rm /dev/rmt/* 

then either boot the system with a:

boot -rv 

or issue the following at the command line prompt:

drvconfig -i st; tapes 

If the DLTtape is the only drive on the system, it's target assignment should be zero. The Solarisman pages have more information on drvconfig and tapes.

Reconfigure Devices on Solaris

If you remove or add a device on Solaris then the devices files must be recreated, either with

 boot -rv or devfsadm. For example to renumber the logical tape drive devices do the

following: Tape drives were numbered beginning with /dev/rmt/3 instead of  /dev/rmt/0. The physical devices pointed to by the logical /dev/rmt/[012] devices no longer existed, and wewanted to renumber the valid devices beginning at /dev/rmt/0.

1.  Cleanup non-existent tape drive devices with devfsadm.

# devfsadm -C -c tape -v 

2.  Remove all /dev/rmt logical links.

Page 36: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 36/39

# rm -f /dev/rmt/*

3.  Recreate all /dev/rmt logical links with devfsadm

#   devfsadm -c tape -v  

devfsadm

devfsadm(1M) maintains the /dev and /devices namespaces. It replaces the previous suite of devfs administration tools including drvconfig(1M), disks(1M), tapes(1M), ports(1M),audlinks(1M), and devlinks(1M).

OPTIONS

The following options are supported:

-C Cleanup mode. Prompt devfsadm to cleanup dangling /dev linksthat are not normally removed. If the -c option is also used,devfsadm only cleans up for the listed devices' classes.

-c device_class Restrict operations to devices of class device_class. Solarisdefines the following values for device_class: disk, tape, port,

audio, and pseudo. This option may be specified more than onceto specify multiple device classes.

OpenBoot Diagnostics

The Solaris operating system gets the jumpstart for its booting from a hardware-level interfacecalled the OpenBoot PROM or OBP for short. OpenBoot at its heart has an interactive commandinterpreter with a varied set of functions. OBP is a firmware which is stored in the socketedstartup PROM of the computer and consists of two parts, the PROM and the NVRAM.

As stated earlier while the PROM acts as the interface for access to diagnostics and drivers, the NVRAM consists of some editable user defined parameters. Non Volatile information like thesystem identification information, device aliases etc are stored in the NVRAM.The OpenBootPROM is programmable and can be programmed based on Forth, which is an interactive programming language much like shell scripting.

The main tasks performed by the OpenBoot firmware are:

•  Initializing and Testing system hardware ( POST , power on self test)•  Interactive Debugging•  Management of NVRAM Parameters•  Start the Operating System boot

Page 37: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 37/39

Useful commands at OK prompt. 

Dignostics :  boot  General bannerthis command shows the followingsystems hardware informatiion :Model, architecture,

processor,keyboard, openbootversion, Serial no. ethernetaddress & host id.

test floppy - test floppy disk drivetest net - test network loopbackstest scsi - test scsi interfacetest-all test for all devices withselftest method

watch-clockShow ticks of real-time clock

watch-net Monitor network broadcast packets

watch-net-all Monitor broadcast packets on allnet interfaces

probe-scsi Show attached SCSI devices

probe-scsi-allShow attached SCSI devices for allhost adapters- internal & external. 

boot - boot kernel from defaultdevice.Factory default is to bootfrom DISK if present, otherwise

from NET.

boot net - boot kernel fromnetworkboot cdrom - boot kernel fromCD-ROMboot disk1:h - boot from disk1partition hboot tape - boot default file fromtapeboot disk myunix -as - bootmyunix from disk with flags "-as" 

DEVALIAS 

ok>show-devs ok cd /pci@1f,4000/scsi@3 ok .properties ok ls f00809d8 tape f007ecdc disk ok .speed CPU Speed : 200.00MHz UPA Speed : 100.00MHzPCI Bus A : 66Mhz PCI Bus B : 33Mhz 

printenvDisplay all variables and currentvalues.

setenv <variable>Set variable to the given value.

set-default <variable> Reset the value of variable to thefactory default.

set-defaultsReset variable values to the factorydefaults. 

Key Sequences These commands are disabled if the PROM security is on. Also, if your system has full security enabled, you

cannot apply any of the suggested commands unless you have the password to get to the ok prompt. Stop - Bypass POST. This command does not depend on security-mode. (Note: some systems bypass POST as

a default; in such cases, use Stop-D to start POST.) Stop-A Abort. Stop-D - Enter diagnostic mode (set diag-switch? to true). Stop-F - Enter Forth on TTYA instead of probing. Use exit to continue with the initialization sequence. Useful

if hardware is broken. Stop-N Reset NVRAM contents to default values. 

Start an OpenBoot Diagnostics

<STOP A>

OK setenv diag-switch? true

OK setenv auto-boot? false

OK reset-all

OK test-all or obdiag 

Configure Graphics Console (e.g. Sun XVR-100 Graphics Accelerator) instead of serial TTYA

OK show-displays Select the graphics accelerator, e.g. b 

Page 38: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 38/39

OK nvalias mydev <CTRL-Y>

OK setenv output-device mydev

OK setenv use-nvramrc? true

OK reset-all 

Why doesn't my .forward file work?Overview

If you are having problems where you have created a $HOME/.forward file in your homedirectory to forward e-mails from one account to another and it just won't forward them?

Set correct Permissions

First make sure the file isn't group or world writable.

-rwxr wxr-x 1 zahn dba 0 Jan 9 12:17 .forward # wrong -rwxr -xr-x 1 zahn dba 0 Jan 9 12:17 .forward # OK  

Lastly, make sure your home directory isn't group or world writable.

drwxr wxr-x 14 zahn dba 4096 Jan 9 12:20 zahn # wrongdrwxr-xr-x 14 zahn dba 4096 Jan 9 12:20 zahn # OK  

Simple Shell Script to backup your Files

Overview

A backup strategy is more complex than creating a redundant copy of disk storage andconsidering the strategy a success. A successful backup strategy must detail how the backupmedia are rotated, how the media are archived, how the system will be recovered, and what the backup software will do to create the backup. Although all parts of the backup strategy areequally important, this tip will focus on the backup script and will detail a flexible backup scriptthat uses built-in Solaris software tools which create a reliable local backup of a Solaris machine.

Introduction

The backup script will accomplish the following goals:

•  Create a backup archive that is as easy to restore a single file as it is torestore an entire file system.

•  The backup script will run autonomously. The only human interventionwill be to swap media and review output.

Page 39: Solaris Basic

8/4/2019 Solaris Basic

http://slidepdf.com/reader/full/solaris-basic 39/39

•  The filesystems or directories to backup can be specified in the script.Using automounter you can even specify remote filesystems.

•  The script will create a detailed log of the backup.•  The script will send an abbreviated email summary of the backup to the

administrator.•

  After a successful backup, the script will verify to some extent thecontents of the backup media.•  The backup script will be able to run on any Solaris 2.6 or greater machine

without modification.

Tools used

We use the well known utilities TAR, GZIP and DD, because they are available on any Unixsystem. They are very well tested and simple to use. In case of an emergency it is important tohave a simple way to restore, independent of complex tools and incompatible software releases.

Magnetic Tape Control 

The utility MT sends commands to a tape drive. Many of these commands are familiar, but some are

not. The script will use these mt commands. 

• rewind – rewind the tape • rewoffl – rewind the tape and eject it (go offline) • eom – space to end of recorded media on tape  • weof – write count EOF marks at current position on tape • status – display current status of tape 

Script