Содержание

My Solaris 10 System Administration Part I notes.

Credits

My main source of information came from Oracle System Administration of Solaris 10 Part I from Oracle University (excellent training) & Solaris 10 man pages.

Solaris 10 OS Directory Hierarchy

File systems

Unix File System (UFS) is the default file system

Directory starts with root directory (/)

Solaris 10 OS includes alternate file system called zettabyte file system (ZFS)

Logically all directories fall below root directory (/)

Physically directories can be located on one or spread over multiple file systems

<insert graphics to show this>

Refer to filesystem man page for more information on file system organization.

$ man -s 5 filesystem

Important directories

 /
 root of file system
 /bin
 symbolic link to /usr/bin & location for binary files of standard system commands
 /dev
 primary directory for logical device names & contents of directory are symbolic links to device files in /devices directory
 /etc
 directory holds host-specific config files & databases for system administration
 /export
 default directory for commonly shared file systems (like user home directories)
 /home
 default directory or mount point for user home directories

Important in-memory system directories

 /tmp
 directory for temporary files (cleared during boot sequence)

Subdirectories of note under /dev

 /dev/dsk
 block disk devices
 /dev/fd
 file descriptors
 /dev/md
 logical volume management metadisk drives
 /dev/pts
 pseudo terminal devices
 /dev/rdsk
 raw disk devices
 /dev/rmt
 raw magnetic devices
 /dev/term
 serial devices

Important subdirectories under /etc

 /etc/acct
 config info for accounting system<
 /etc/cron.d
 config info for cron utility
/etc/default
default info for various programs
/etc/inet
config files for network services
/etc/init.d
scripts for starting & stopping services
/etc/lp
config info for printer subsystem
/etc/mail
config info for mail subsystem
/etc/nfs
config file for NFS server logging
/etc/opt<
config info for optional packages
/etc/rc#.d
legacy scripts that are executed when entering or leaving a specific run level
/etc/security
controls files for Role Based Access Control & security privileges
/etc/skel
default shell initialization files for new users
/etc/svc
Service Management Facility database & log files

Important subdirectories of /usr

/usr/bin
standard system commands
/usr/ccs
C-compilation programs & libraries
/usr/demo
demo programs & data
/usr/dt
Java Desktop System (JDS) software directory or mount point
/usr/include
Header files
/usr/jdk
directory contains Java technology programs & libraries
/usr/kernel
loadable kernel modules not generally required during boot process
/usr/lib
architecture-dependent databases, libraries, & binaries that are not invoked directly by user
/usr/opt
config info for optional packages
/usr/sbin
sys admin coomands
/usr/spool
symbolic link to /var/spool directory

Important subdirectories of /var

/var/adm
log files for syslog, system accounting, etc
/var/crash
crash dump storage
/var/spool
spool files storage

/var/svc
Service Management Facility control files and logs
   
/var/tmp
long term storage of temp files (survives reboot)

File components

Generally a file name is associated with an inode & an inode provides access to data blocks.

<insert figure of relationship>

file names

File names are objects frequently used to manage files. A file must have a name that is associated with an inode.

inodes

Inodes are objects that Solaris OS uses to maintain info about a file. In general an inode contains:

  1. file info = file owner, permissions, & size
  2. pointers to data blocks associated with file content

inodes are numbered & each file system contains its own inode list

At UFS creation a new inode list is created

data blocks

data blocks are units of disk space that store data

Regular files, directories, & symbolic links make use of data blocks

Device files do not hold data therefore do not use data blocks

ZFS uses the following data structures: dnode data structure: the data structure contains pointers to data blocks znode data structure: this data structure contains info about file (owner, permissions, & size)

Dnode & znode data structures are called metadata & stored dynamically by ZFS. ZFS implements ZFS POSIX layer (ZPL) which is a primary interface for ZFS. ZPL allows commands you use with UFS to work with ZFS. ZFS emulates UFS inode number mechanism

Identifying file types

Solaris has four main file types:

regular or ordinary files
store one or more types of data
directories
store one or more types of data
symbolic links
store one or more types of data
device files
does not store data

Use ls command with -l option to distinguish different file types

The first character of each line indicates file type

<insert image of ls -l output with dictionary>

regular files

d
directories
l
symbolic links
b
block-special device files
c
character-special device files

Examples on v240:

  -  cd /etc
  -  ls -l
total 650
lrwxrwxrwx   1 root     root          14 May  3 15:34 TIMEZONE -> ./default/init
drwxr-xr-x   6 root     other        512 May  3 16:15 X11
drwxr-xr-x   2 adm      adm          512 May  3 16:19 acct
-rw-r--r--   1 root     sys          253 Aug  6  2010 aggregation.conf
lrwxrwxrwx   1 root     root          14 May  3 16:03 aliases -> ./mail/aliases
drwxr-xr-x   7 root     bin          512 May  3 16:11 apache
drwxr-xr-x   2 root     bin          512 May  3 15:54 apache2
          * output truncated*****

  -  pwd
/devices/pci@1c,600000/scsi@2
  -  ls -l
total 8
drwxr-xr-x   2 root     sys          512 May  3 16:25 sd@0,0
brw-r-----   1 root     sys       32,  0 Jul  7 13:54 sd@0,0:a
crw-r-----   1 root     sys       32,  0 Jul 14 16:50 sd@0,0:a,raw

directories

directories only store information on file name to inode number relationships

A directory contains data for files that are logically located within directory

Regular files

Most common file types found in Solaris are regular files. Regular files can store different types of data including ASCII text or binary data.

a symbolic link is a file that points to another file & contain only one type of data

a symbolic link contains the path name of the file to which it points & the file can be located on other file systems

the size of a symbolic link always matches the number of characters in the path name it contains

Example:

after the '→' there are 19 characters & the 19 before May is the file size.

  -  ls -l /etc/prtvtoc
lrwxrwxrwx   1 root     root          19 May  3 15:34 prtvtoc -> ../usr/sbin/prtvtoc

symbolic links can point to regular files, directories, other symbolic links, & device files.

symbolic links can be absolute or relative path names

ln command

ln command with -s option creates a symbolic link

<insert example of creating symbolic link>

<insert picture of relationship between link & file>

device files

device file provides access to a device

When using long listing on file the size field is populated by two numbers separated by comma

The two numbers are called major & minor device numbers

major device # identifies the specific device driver required to access device minor device # identifies specific unit of the type that the device driver controls

Long listing:

bash-3.00$ ls -l | grep pci
drwxr-xr-x   4 root     sys          512 May  3 16:25 pci@1c,600000
crw-------   1 root     sys      109, 767 Jul 14 16:50 pci@1c,600000:devctl
crw-------   1 root     sys      109, 764 Jul 14 16:50 pci@1c,600000:intr
crw-------   1 root     sys      109, 765 Jul 14 16:50 pci@1c,600000:reg
drwxr-xr-x   5 root     sys          512 May  3 16:25 pci@1d,700000
crw-------   1 root     sys      109, 1023 Jul 14 16:50 pci@1d,700000:devctl
crw-------   1 root     sys      109, 1020 Jul 14 16:50 pci@1d,700000:intr
crw-------   1 root     sys      109, 1021 Jul 14 16:50 pci@1d,700000:reg
drwxr-xr-x   6 root     sys          512 May  3 16:25 pci@1e,600000
crw-------   1 root     sys      109, 511 Jul 14 16:50 pci@1e,600000:devctl
crw-------   1 root     sys      109, 508 Jul 14 16:50 pci@1e,600000:intr
crw-------   1 root     sys      109, 509 Jul 14 16:50 pci@1e,600000:reg
drwxr-xr-x   4 root     sys          512 May  3 16:25 pci@1f,700000
crw-------   1 root     sys      109, 255 Jul 14 16:50 pci@1f,700000:devctl
crw-------   1 root     sys      109, 252 Jul 14 16:50 pci@1f,700000:intr
crw-------   1 root     sys      109, 253 Jul 14 16:50 pci@1f,700000:reg

File pci@1c,600000:devctl refers to major device # 109 & minor device # 767

You can also use the

file
command:
bash-3.00$ file pci@1c,600000:devctl
pci@1c,600000:devctl:   character special (109/767)

Use

devfsadm
command to create new device files

A relationship exists between device file & device it controls. Major & minor device #s contained in inode establish relationship

<image showing relationship from above example>

Verify device driver is available as kernel module:

bash-3.00# modinfo -w | grep -w scsi
 22  1313a40  122a8   -   1  scsi (SCSI Bus Utility Routines)
bash-3.00# modinfo -c | grep -w scsi
 22          1 scsi                             LOADED/INSTALLED
bash-3.00# modinfo -w | grep -w iscsi            
 96 7b600000  328c8 279   1  iscsi (Sun iSCSI Initiator v20100714-0)
bash-3.00# modinfo -c | grep -w iscsi
 96          1 iscsi                            LOADED/INSTALLED

device files are categorized as character-special or raw devices or block-special devices devices

device files in each category interact with devices differently

character-special device files

File type of «c» is character-special device file & data is accessed as a data stream

crw-------   1 root     sys      109, 767 Jul 14 16:50 pci@1c,600000:devctl

Result of

file
command:
bash-3.00# file pci@1c,600000:devctl
pci@1c,600000:devctl:   character special (109/767)

block-special device files

File type of «b» is a block-special device file & for disk devices, block-special device files call for I/O operations based on a defined block size

Block size depends on particular device file

<example of long listing of block file>

data transferred between process & block-special device is first stored in kernel-managed memory-based cache

block devices allow random seeks to be performed devices do not

hard link is association between file name & an inode

inode keeps count # of file names associated with it (hard links)

output of long listing will show link count or total # of hard links to a file

bash-3.00# ls -l mnttab
-r--r--r--   5 root     root        1539 Jul  7 13:55 mnttab

/etc/mnttab file has 5 link counts or hard links file permissions & owner

ln
command creates new hard links to regular files

$ ln file5 file6
$ ln file5 file7
$ ln file7 file8
$ ls -il
total 64868
        54 -rw-------   1 paul     labnet    555969 May  6 13:52 file.7z
        55 -rw-r--r--   1 paul     labnet        53 May  6 13:23 file1.gz
        39 -rw-r--r--   1 paul     labnet    739704 May  6 13:42 file2.gz
        41 -rw-r--r--   1 paul     labnet         0 May  5 12:35 file3
        50 -rw-r--r--   1 paul     labnet   3976616 May  6 13:37 file4
        52 -rw-r--r--   4 paul     labnet   3976541 May  6 13:43 file5
        52 -rw-r--r--   4 paul     labnet   3976541 May  6 13:43 file6
        52 -rw-r--r--   4 paul     labnet   3976541 May  6 13:43 file7
        52 -rw-r--r--   4 paul     labnet   3976541 May  6 13:43 file8
        53 -rw-r--r--   1 paul     labnet   11934208 May  6 13:48 filetar.tar
        42 drwxr-xr-x   2 paul     labnet       512 May  5 12:45 subdir1
$

The

ln
command created files 6-8. Now files 5-8 refer to same inode 52. Notice link count is now 4 for each of the files. You must use -i option with
ls
command to view inodes

Use find command with -inum option to find files with same inode

$ find . -inum 52
./file6
./file7
./file5
./file8

<insert image showing file name to inode association>

delete files normally & link count will decrease automatically

$ rm file8
$ ls -li
total 57076
        54 -rw-------   1 paul     labnet    555969 May  6 13:52 file.7z
        55 -rw-r--r--   1 paul     labnet        53 May  6 13:23 file1.gz
        39 -rw-r--r--   1 paul     labnet    739704 May  6 13:42 file2.gz
        41 -rw-r--r--   1 paul     labnet         0 May  5 12:35 file3
        50 -rw-r--r--   1 paul     labnet   3976616 May  6 13:37 file4
        52 -rw-r--r--   3 paul     labnet   3976541 May  6 13:43 file5
        52 -rw-r--r--   3 paul     labnet   3976541 May  6 13:43 file6
        52 -rw-r--r--   3 paul     labnet   3976541 May  6 13:43 file7
        53 -rw-r--r--   1 paul     labnet   11934208 May  6 13:48 filetar.tar
        42 drwxr-xr-x   2 paul     labnet       512 May  5 12:45 subdir1
$

Once all files with same inode are deleted the inode will be deleted

Examples

Find files that match inode on same file system

# ls -l /etc/init.d/apache
-rwxr--r--   6 root     sys         2452 Jun 23  2010 /etc/init.d/apache

/etc/init.d/apache file has a 6 link count

# ls -i /etc/init.d/apache
      2955 /etc/init.d/apache

/etc/init.d/apache inode is 2955

# find /etc -inum 2955 -exec ls -i {} \;
      2955 /etc/init.d/apache
      2955 /etc/rc0.d/K16apache
      2955 /etc/rc1.d/K16apache
      2955 /etc/rc2.d/K16apache
      2955 /etc/rc3.d/S50apache
      2955 /etc/rcS.d/K16apache

The

find
command with -inum option allows you to search by inode. Now I know which files are pointing to same location as /etc/init.d/apache

Local disk devices

disk device has physical & logical components

physical disk components

See other sites for more details on physical disk components.

components include spindle, platters, heads, head actuator arm

logical disk components

sector - smallest addressable unit on a platter, one sector can hold 512 bytes of data

track - series of sectors positioned end-to-end in a circular path, # of sectors per track varies due to size of tracks

cylinder - a stack of concentric tracks

<insert pic>

a disk platter component is divided into sectors, tracks, & cylinders components

disks present a fixed number of sectors per track to the Solaris OS even though # of sectors is different per track

disk labels & partition tables

disk slices are groups of cylinders used to organize data

typically, administrators will use slices to organize data by function so a slice may store user's home directories, binaries, swap space, or system files

a beginning & ending cylinder define each slice

  1. of cylinders determines the size of a slice

A disk label is a defined area of disk space used to store information about disk controller, geometry, & slices

A disk label also contains a partition table which holds partition, cylinder, & slice information

Label a disk = write slice info to disk a disk after changes are made

Solaris 10 supports two disk labels

<insert some pics of physical disks>

x86/x64 partitions & slices

recommended that you use fdisk menu & format utility to create or modify fdisk partition table

2nd sector of Solaris fdisk partition contains a partition table that defines slices within Solaris fdisk partition, the label that contains this partition table is known as x84/x64 VTOC

using format utility Solaris fdisk partition can be divided into ten slices 0-9. Slices 0-7 are used for the same purposes as SPARC SMI labels. Slice 2 represents entire disk drive. Slice 8 & 9 are used for purposes relating to x86/x64 hardware

format utility automatically creates slice 8 & 9 when x86/x64 VTOC is defined within Solaris fdisk partition. slice 8 is always required, slice 9 exists, unassigned, on SCSI or Fibre-Channel disks. format utility prevents modifying slices 8 & 9

Solaris OS systems on x86/x64 platforms create device files to support 16 slices for each disk 0-15. format utility limits to slices 0-7. Solaris x86/x64 systems also create device files that represent four possible fdisk partitions

slice 8 is boot slice by default & contains GRUB stage1 program in sector 0, the Solaris disk label & VTOC in sectors 1 & 2, & GRUB stage2 program beginning at sector 50. Slice 8 occupies the 1st cylinder 0 of Solaris fdisk partition

IDE/SATA disk drives slice 9 is tagged alternates slice. If slice 9 is defined it occupies 2nd & 3rd cylinder 1-2 of Solaris fdisk partition & contains blocks used to store bad block info

disk naming conventions

disk device names identify a series of components that together specify a particular disk device

<insert image of naming convention>

Disk device name format: controller, target, disk (or LUN), fdisk partition, & slice that a particular disk device uses

disk device names represent full name of a slice or fdisk partition

Controller #: identifies host bus adapter (HBA), HBA controls command & data communication between system & disk unit, <-HBA-> disk unit, #s are assigned sequentially

Target #: identifies a unique hardware address assigned to SCSI target controller of a disk, tape, or optical drive. IDE & SATA drives typically do not use target #s (some do), Fibre-Channel attached disks may use World Wide Name (WWN) instead of a target #

Disk #: unique identifier for each disk per controller # & target # pair. also known as logical unit number (LUN)

fdisk partition #: number ranging from p0 to p4, number p0 represents whole physical disk, device names that include p# are only found on x86/x64 systems

slice #: a # ranging from s0-s7 on SPARC systems & s0-s15 on x86/x64 systems

SCSI disk device names

SCSI specification allows multiple disks to one target controller

<insert pic of embedded SCSI & regular configurations>

iSCSI disk devices

Solaris 10 8/07 release included support for iSCSI target devices

The targets can be disk or tape

systems with dedicated arrays can now export replicated storage with ZFS or UFS

use

iscsitadm
command to set up & manage iSCSI target devices

use

iscsiadm
command to identify iSCSI targets, which will discover & use iSCSI target devices

IDE & SATA disk device names

IDE & SATA disks do not use target controllers

device names for IDE & SATA disks have controller #, disk #, & slice (fdisk partition) #

Example: c#d#s#

<insert image showing overview>

Ultra 10 systems are different & use a target # to represent identify of disks on primary & secondary IDE buses

<insert image example>

Solaris OS device naming conventions

Solaris OS uses three different types of names depending on how the device is being referenced

logical device names

logical device names are symbolic links to physical device names in /devices directory

logical devices are primarily used when entering commands on command line

all logical device names are in /dev directory

logical device names contain controller #, target # (if required), disk #, & or fdisk partition #

every disk has entries in /dev/dsk & /dev/rdsk directories

/dev/dsk is for block disk devices

/dev/rdsk is for character disk devices

physical device names

uniquely identifies physical location of hardware devices on system

physical device names are located in /devices directory

physical device name contains hardware information, separated by slashes, that represent the path through the system's physical device tree to the device

symbolic links in /dev/dsk & /dev/rdsk point to physical device files, use ls -l

use ls -lL

The use of

ls
command with -L option will, if file is a symbolic link, evaluate the file info & file type of the file or directory that the symbolic link references, rather than those of the link itself. However, the name of the link is displayed, rather than the referenced file or directory.

Example:

# ls -l /dev/dsk/c1t1d0s0
lrwxrwxrwx   1 root     root          43 May  3 16:19 /dev/dsk/c1t1d0s0 -> ../../devices/pci@1c,600000/scsi@2/sd@1,0:a
  -  ls -lL /dev/dsk/c1t1d0s0
brw-r-----   1 root     sys       32,  8 Jul 14 16:50 /dev/dsk/c1t1d0s0

<insert pic of sample device tree>

Two categories of device trees include devices recognized by hardware at boot time & known by Solaris OS kernel managed by software controls available to Solaris OS. If no device file exists for a powered-on & connected physical device then Solaris OS kernel doesn't recognize the device in its device tree Top directory in hierarchy is called root node of the device tree. The bus nexus nodes & leaf nodes below root object have device drivers associated to them A device driver is software that communicates with physical device & device driver must be available to Solaris OS kernel so system can use device During system initialization the Solaris OS kernel identifies physical location of a device. The kernel relates a node with an address [[nodename@address which is the physical device name

<insert pic of example>

instance names

instance names are shortened names for a physical device

instance names are abbreviated names assigned by the Solaris OS kernel for each system device

instance names are usually used to display on console or in /var/adm/messages log file

Example instance names:

listing device names

Some ways in Solaris OS to list system devices:

/etc/path_to_inst file

Solaris system maps physical name ↔ instance name in /etc/path_to_inst file

Solaris kernel uses the names in file to identify every possible device

Example file from v240:

# cat /etc/path_to_inst 
  - 
  -        Caution! This file contains critical kernel state
  - 
"/iscsi" 0 "iscsi"
"/pseudo" 0 "pseudo"
"/scsi_vhci" 0 "scsi_vhci"
"/options" 0 "options"
"/ramdisk-root" 0 "ramdisk"
"/pci@1f,700000" 0 "pcisch"
"/pci@1f,700000/network@2" 0 "bge"
"/pci@1f,700000/network@2,1" 1 "bge"
"/pci@1e,600000" 1 "pcisch"
"/pci@1e,600000/isa@7" 0 "ebus"
"/pci@1e,600000/isa@7/power@0,800" 0 "power"
"/pci@1e,600000/isa@7/rmc-comm@0,3e8" 0 "rmc_comm"
"/pci@1e,600000/isa@7/i2c@0,320" 0 "pcf8584"
"/pci@1e,600000/isa@7/i2c@0,320/motherboard-fru-prom@0,a2" 0 "seeprom"
"/pci@1e,600000/isa@7/i2c@0,320/chassis-fru-prom@0,a8" 1 "seeprom"
"/pci@1e,600000/isa@7/i2c@0,320/power-supply-fru-prom@0,b0" 2 "seeprom"
"/pci@1e,600000/isa@7/i2c@0,320/power-supply-fru-prom@0,a4" 3 "seeprom"
"/pci@1e,600000/isa@7/i2c@0,320/dimm-spd@0,b6" 4 "seeprom"
"/pci@1e,600000/isa@7/i2c@0,320/dimm-spd@0,b8" 5 "seeprom"
"/pci@1e,600000/isa@7/i2c@0,320/dimm-spd@0,ba" 6 "seeprom"
"/pci@1e,600000/isa@7/i2c@0,320/dimm-spd@0,bc" 7 "seeprom"
"/pci@1e,600000/isa@7/i2c@0,320/dimm-spd@0,c6" 8 "seeprom"
"/pci@1e,600000/isa@7/i2c@0,320/dimm-spd@0,c8" 9 "seeprom"
"/pci@1e,600000/isa@7/i2c@0,320/dimm-spd@0,ca" 10 "seeprom"
"/pci@1e,600000/isa@7/i2c@0,320/dimm-spd@0,cc" 11 "seeprom"
"/pci@1e,600000/isa@7/i2c@0,320/nvram@0,50" 12 "seeprom"
"/pci@1e,600000/isa@7/i2c@0,320/gpio@0,44" 0 "pca9556"
"/pci@1e,600000/isa@7/i2c@0,320/gpio@0,46" 1 "pca9556"
"/pci@1e,600000/isa@7/i2c@0,320/gpio@0,4a" 2 "pca9556"
"/pci@1e,600000/isa@7/i2c@0,320/gpio@0,68" 3 "pca9556"
"/pci@1e,600000/isa@7/i2c@0,320/gpio@0,88" 4 "pca9556"
"/pci@1e,600000/isa@7/i2c@0,320/gpio@0,70" 5 "pca9556"
"/pci@1e,600000/isa@7/serial@0,3f8" 0 "su"
"/pci@1e,600000/isa@7/serial@0,2e8" 1 "su"
"/pci@1e,600000/pmu@6" 0 "pmubus"
"/pci@1e,600000/pmu@6/gpio@80000000" 0 "pmugpio"
"/pci@1e,600000/pmu@6/i2c@0,0" 0 "smbus"
"/pci@1e,600000/usb@a" 0 "ohci"
"/pci@1e,600000/ide@d" 0 "uata"
"/pci@1e,600000/ide@d/sd@0,0" 3 "sd"
"/memory-controller@0,0" 0 "mc-us3i"
"/memory-controller@1,0" 1 "mc-us3i"
"/pci@1c,600000" 2 "pcisch"
"/pci@1c,600000/scsi@2" 0 "glm"
"/pci@1c,600000/scsi@2/sd@0,0" 0 "sd"
"/pci@1c,600000/scsi@2/sd@1,0" 1 "sd"
"/pci@1c,600000/scsi@2/sd@2,0" 2 "sd"
"/pci@1c,600000/scsi@2/sd@3,0" 4 "sd"
"/pci@1c,600000/scsi@2,1" 1 "glm"
"/pci@1d,700000" 3 "pcisch"
"/pci@1d,700000/network@2" 2 "bge"
"/pci@1d,700000/network@2,1" 3 "bge"
"/pci@1d,700000/pci@1" 0 "pci_pci"
"/pci@1d,700000/pci@1/pci@0" 1 "pci_pci"
"/pci@1d,700000/pci@1/pci@0/network@0" 0 "ce"
"/pci@1d,700000/pci@1/pci@0/network@1" 1 "ce"
"/pci@1d,700000/pci@1/pci@4" 2 "pci_pci"
"/pci@1d,700000/pci@1/pci@4/network@2" 2 "ce"
"/pci@1d,700000/pci@1/pci@4/network@3" 3 "ce"
  - 

Instance names correlate values in the last two fields, for example an entry for SCSI disk 3 on Sun v240 from file is «/pci@1c,600000/scsi@2/sd@2,0» 2 «sd»

this line & sd2 identify the same device

physical device path /pci@1c,600000/scsi@2/sd@2,0 identifies the path through the device tree to the device

different systems have different physical device names

prtconf command

example prtconf output on Sun v240:

# prtconf | grep -v not
System Configuration:  Sun Microsystems  sun4u
Memory size: 8192 Megabytes
System Peripherals (Software Nodes):

SUNW,Sun-Fire-V240
    scsi_vhci, instance #0
    options, instance #0
    memory-controller, instance #0
    memory-controller, instance #1
    pci, instance #0
        network, instance #0
        network, instance #1
    pci, instance #1
        isa, instance #0
            i2c, instance #0
                motherboard-fru-prom, instance #0
                chassis-fru-prom, instance #1
                power-supply-fru-prom, instance #2
                power-supply-fru-prom, instance #3
                dimm-spd, instance #4
                dimm-spd, instance #5
                dimm-spd, instance #6
                dimm-spd, instance #7
                dimm-spd, instance #8
                dimm-spd, instance #9
                dimm-spd, instance #10
                dimm-spd, instance #11
                nvram, instance #12
                gpio, instance #0
                gpio, instance #1
                gpio, instance #2
                gpio, instance #3
                gpio, instance #4
                gpio, instance #5
            power, instance #0
            serial, instance #0
            serial, instance #1
            rmc-comm, instance #0
        pmu, instance #0
            i2c, instance #0
            gpio, instance #0
        usb, instance #0
        ide, instance #0
            sd, instance #3
    pci, instance #2
        scsi, instance #0
            sd, instance #0
            sd, instance #1
            sd, instance #2
            sd, instance #4
        scsi, instance #1
    pci, instance #3
        network, instance #2
        network, instance #3
        pci, instance #0
            pci, instance #1
                network, instance #0
                network, instance #1
            pci, instance #2
                network, instance #2
                network, instance #3
    iscsi, instance #0
    pseudo, instance #0
  - 

format utility

use format utility to display both logical & physical device names for all currently available disks

Example from Sun v240

# format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c1t0d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@1c,600000/scsi@2/sd@0,0
       1. c1t1d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@1c,600000/scsi@2/sd@1,0
       2. c1t2d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@1c,600000/scsi@2/sd@2,0
       3. c1t3d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@1c,600000/scsi@2/sd@3,0
Specify disk (enter its number):

prtdiag command

use prtdiag command to display system configuration & system info

reconfiguring devices

Solaris system can recognize devices that were just added by using various methods, including a reconfiguration boot, or devfsadm command

reconfiguration boot

reconfiguration boot process adds new device entries to /etc/path_to_inst file & symbolic links & device files to /dev & /devices directories

Example of a reconfiguration boot:

  1. create /reconfigure file, this file causes system to check for presence of newly installed devices at next boot/power on
  2. # touch /reconfigure
  3. shutdown system (reboot if device is already installed)
  4. install new device
  5. power on & boot system
  6. log in to system & use prtconf command to verify newly installed device

Note: On SPARC-based systems you can invoke a manual reconfiguration boot with open boot PROM (OBP) level command «boot -r». On x86/x64 systems use GRUB & edit kernel command associated with desired boot selection & add «-r» option then boot system

use devfsadm command

devfsadm command attempts to load every driver in the system & attach all possible device instances

For new devices devfsadm will:

use devfsadm -c option to limit devfsadm to a particular device class

format:

devfsadm -c device_class [[-c|device_class1 -c device_class2 etc]]

values for device_class include disk, tape, port, audio, & pseudo

use devfsadm -i option to limit devfsadm to the name of a specific driver

format:

devfsadm -i driver_name

example: devfsadm -i sd limits devfsadm to those disks supported by the sd driver

Include -v option to devfsadm to display verbose output of changes to device tree

Run cleanup routines to remove unreferenced symbolic links & device files for devices no longer attached to system by using devfsadm -C C

partitioning hard disk

use format utility to configure disk partitions & slices

X86/x64 systems require additional step to create a Solaris fdsik partition before you can create slices within that partition. SPARC systems do not use fdisk partitions

Solaris OS will perform disk partition as part of installation process

disk partitioning

Using format utility to create fdisk partitions or slices

  1. identify correct disk
  2. x86/x64 systems use fdisk menu in format utility to create fdisk partitions & save fdisk partition table to disk
  3. use partition menu in format utility to divide disk or Solaris fdisk partitions into slices
  4. label disk or Solaris fdisk partition

disk management

Slices are defined by an offset & a size, expressed in whole cylinders. On SPARC systems the offset is the distance from cylinder 0. On x86/x64 systems slice offsets are specified from 1st cylinder of Solaris fdisk partition

<insert pic & text details showing example>

On x86/x64 systems the format utility shows 1st cylinder of Solaris fdisk partition as cylinder 0

IDE/SATA disks in x86/x64 systems slice 8 occupies cylinder 0 & slice 9 cylinder 1 & 2.

Slice 8 & 9 are reserved so format utility does not allow changes to slice 8 & 9.

First available cylinder for additional slice definitions is cylinder 3.

Slice 2 starts at cylinder 0 & ends on last available cylinder of Solaris fdisk partition.

<insert pic of x86/x64 slice example>

identifying wasted disk space

when any cylinders are not allocated to any disk slice disk space is wasted

<insert pic showing unallocated cylinders>

once identified wasted space may be assigned to a slice

identifying overlapping disk slices

overlapping disk slices occur when cylinders are allocated to more than one disk slice

<insert pic of overlapping disk slices>

only format utility modify command warns of overlapping slices

Note: changing size of slices will make existing data inaccessible, backup or copy data to another location before resizing slices or changing partitions

format utility & disk partition table

format utility allows modification of two partition tables on disk:

fdisk partition tables

fdisk partition table defines up to four fdisk partitions on a disk

Solaris OS systems on x86/x64 platforms use fdisk partition table to determine parts of disk reserved for different operating systems & identify boot partition

Only x86/x64 systems use fdisk partition tables (fdisk menu from format utility)

Solaris OS partition tables

VTOC define slices that Solaris OS will use on a disk. use partition menu in format utility to view, modify, & save partition tables (VTOC)

partition menu in format utility describes writing the VTOC as labeling the disk. Labeling means saving slice info into VTOC. Failure to label disk or Solaris fdisk partition after making changes the slice info changes will be lost

format utility works with /etc/format.dat file which is read when format utility is run

/etc/format.dat file is a table of available disk types & a set of predefined partition tables that can be used to partition a disk quickly

partition menu uses term partition exclusively instead of slice so the term partition & slice are identical

<insert image to show relationship between VTOC, memory, & /etc/format.dat>

save function in format utility

using format utility

type format at command prompt & use menu-driven choices to perform various format activites

Example of format:

# format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c1t0d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@1c,600000/scsi@2/sd@0,0
       1. c1t1d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@1c,600000/scsi@2/sd@1,0
       2. c1t2d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@1c,600000/scsi@2/sd@2,0
       3. c1t3d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@1c,600000/scsi@2/sd@3,0
Specify disk (enter its number): 0
selecting c1t0d0
[[disk|formatted]]
Warning: Current Disk has mounted partitions.
/dev/dsk/c1t0d0s0 is currently mounted on /. Please see umount(1M).
/dev/dsk/c1t0d0s1 is currently mounted on /usr/openwin. Please see umount(1M).
/dev/dsk/c1t0d0s3 is currently mounted on /var. Please see umount(1M).
/dev/dsk/c1t0d0s4 is currently used by swap. Please see swap(1M).
/dev/dsk/c1t0d0s5 is currently mounted on /opt. Please see umount(1M).
/dev/dsk/c1t0d0s6 is currently mounted on /usr. Please see umount(1M).
/dev/dsk/c1t0d0s7 is currently mounted on /export/home. Please see umount(1M).


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
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        !<cmd>     - execute <cmd>, then return
        quit
format>

<insert example of using format utility to setup disk>

using format utility to create fdisk partitions

<insert example of using format utility to setup fdisk partitions>

EFI Label & VTOC Label comparison

EFI & Volume Table of Contents (VTOC) differences:

EFI Disk Label Restrictions

Viewing the VTOC

Replacing SPARC or x86/x64 VTOC on disk

Example:

# prtvtoc /dev/rdsk/c1t0d0s2
  *  /dev/rdsk/c1t0d0s2 partition map
  * 
  *  Dimensions:
  *      512 bytes/sector
  *      424 sectors/track
  *       24 tracks/cylinder
  *    10176 sectors/cylinder
  *    14089 cylinders
  *    14087 accessible cylinders
  * 
  *  Flags:
  *    1: unmountable
  *   10: read-only
  * 
  *  Unallocated space:
  *        First     Sector    Last
  *        Sector     Count    Sector 
  *            0   4100928   4100927
  * 
  *                           First     Sector    Last
  *  Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       0      2    00    4100928  24005184  28106111   /
       1      4    00   28106112  10247232  38353343   /usr/openwin
       2      5    00          0 143349312 143349311
       3      7    00   38353344   2818752  41172095   /var
       4      3    01          0   4100928   4100927
       5      0    00   41172096  10247232  51419327   /opt
       6      4    00   51419328  10003008  61422335   /usr
       7      8    00   61422336  81926976 143349311   /export/home
  -  prtvtoc /dev/rdsk/c1t0d0s2 > /var/tmp/c1t0d0s2.vtoc
  -  ls /var/tmp
c1t0d0s2.vtoc
  -  cat /var/tmp/c1t0d0s2.vtoc
  *  /dev/rdsk/c1t0d0s2 partition map
  * 
  *  Dimensions:
  *      512 bytes/sector
  *      424 sectors/track
  *       24 tracks/cylinder
  *    10176 sectors/cylinder
  *    14089 cylinders
  *    14087 accessible cylinders
  * 
  *  Flags:
  *    1: unmountable
  *   10: read-only
  * 
  *  Unallocated space:
  *        First     Sector    Last
  *        Sector     Count    Sector 
  *            0   4100928   4100927
  * 
  *                           First     Sector    Last
  *  Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       0      2    00    4100928  24005184  28106111   /
       1      4    00   28106112  10247232  38353343   /usr/openwin
       2      5    00          0 143349312 143349311
       3      7    00   38353344   2818752  41172095   /var
       4      3    01          0   4100928   4100927
       5      0    00   41172096  10247232  51419327   /opt
       6      4    00   51419328  10003008  61422335   /usr
       7      8    00   61422336  81926976 143349311   /export/home
  -  fmthard -s /var/tmp/c1t0d0s2.vtoc /dev/rdsk/c1t0d0s2
fmthard:  New volume table of contents now in place.
  -  prtvtoc /dev/rdsk/c1t0d0s2
  *  /dev/rdsk/c1t0d0s2 partition map
  * 
  *  Dimensions:
  *      512 bytes/sector
  *      424 sectors/track
  *       24 tracks/cylinder
  *    10176 sectors/cylinder
  *    14089 cylinders
  *    14087 accessible cylinders
  * 
  *  Flags:
  *    1: unmountable
  *   10: read-only
  * 
  *  Unallocated space:
  *        First     Sector    Last
  *        Sector     Count    Sector 
  *            0   4100928   4100927
  * 
  *                           First     Sector    Last
  *  Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       0      2    00    4100928  24005184  28106111   /
       1      4    00   28106112  10247232  38353343   /usr/openwin
       2      5    00          0 143349312 143349311
       3      7    00   38353344   2818752  41172095   /var
       4      3    01          0   4100928   4100927
       5      0    00   41172096  10247232  51419327   /opt
       6      4    00   51419328  10003008  61422335   /usr
       7      8    00   61422336  81926976 143349311   /export/home
  - 

x86/x64 VTOC info & Solaris fdisk partitions

On x86/x64 systems Solaris fdisk partition must much size in VTOC. If the info doesn't match fmthard reports an error.

To fix:

Replace fdisk partition tables on x86/x64 systems

fdisk command enables user to:

view fdisk partition table

  1. fdisk -W - /dev/rdsk/name

fdisk commands lists disk geometry, all possible partition types & their corresponding ID values, & current defined fdisk partitions

Save fdisk partition table info to a file

Example:

Replace fdisk partition table on disk with save info

Example:

-F option will zero out VTOC on Solaris partition if fdisk partition table changes

Extended Volume Table of Contents

prior to Solaris 10 10/09 release the Sun disk label limited the size of bootable disk to <1 TB. Now <2 TB is supported with 64–bit Solaris kernel

Extended VTOC feature is available after standard installation of Solaris 10 10/09

No support for >1 TB disks on Solaris 32-bit kernel

Prior to Solaris 10 10/09 Extensible Firmware Interface (EFI) label was always used for a >1 TB disk

VTOC label is extended to any size disk, but addressable space in VTOC is limited to <2 TB

Features of the new Extended VTOC

Extended VTOC Requirements & Dependencies

Interface Configurations

network commands such as ifconfig, ping, & snoop control & monitor functionality of network interfaces

View MAC address

Example:

# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
bge0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 2
        inet 192.168.1.55 netmask ffffff00 broadcast 192.168.1.255
        ether 0:3:ba:a5:e2:eb 
  -  exit
$ ifconfig -a
ksh: ifconfig:  not found
$

IP address

Ping

for ping command to succeed conditions must be true on both systems:

Trace utility

capture & inspecting network packets

use snoop utility to capture & inspect network packetsm

format # snoop IP address IP address

use Control-C to exit snoop utility

use option -a to enable audible clicks

Example of enabling audible clicks for all network traffic related to DHCP:

  1. snoop -a dhcp

Additional snoop options

snoop
summary output
snoop -o filename
save captured packets in filename
snoop -i filename
displays packets previously saved to file
snoop -i filename -v
file output to verbose mode
snoop -i filename -V
file output to summary verbose mode
snoop -i filename -x offset
displays packet data in hexadecimal & ASCII format
snoop -d device
receives packets from a network interface specified by device

Configure IPv4 interfaces at boot time

files & services that impact IP interfaces:

svc:/network/physical:default service

/etc/hostname.xxn file

Entry
Interface
e1000g0
First e1000g (Intel PRO/1000 Gigabit family device driver) Ethernet interface in the system
bge0
First bge (Broadcom Gigabit Ethernet device driver) Ethernet interface in the system
qfe0
First qfe (Quad Fast-Ethernet device driver) Ethernet interface in system
nge0
First nge (Nvidia Gigabit Ethernet driver) Ethernet interface in the system

NOTE In this example the Solaris machine uses DHCP without defined host so host is unknown.

root@unknown # ls -l /etc/hostname.bge0
-rw-r--r--   1 root     root           1 May 17 10:30 /etc/hostname.bge0
root@unknown # cat /etc/hostname.bge0   

root@unknown # more /etc/inet/hosts
  - 
  -  Internet host table
  - 
127.0.0.1       localhost       loghost
192.168.1.10     unknown # Added by DHCP
root@unknown # ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
bge0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 2
        inet 192.168.1.10 netmask ffffff00 broadcast 192.168.1.255
        ether 0:14:4f:47:bf:9e 
root@unknown #

/etc/inet/hosts

/etc/ipnodes file

Changing System Host Name

use uname -S command to temporarily change host name

edit /etc/nodename file

Each Solaris OS has a canonical name, which is the official name used when referring to a system. the system name is the same as host name associated with IP address of the primary network interface, for example, hostname.bge0

change canonical name by editing the /etc/nodename file & reboot system

if interface is managed by DHCP or remote procedure call (RPC) bootparams protocols, the /etc/nodename file is not used

My example using DHCP /etc/nodename file doesn't exist:

# more /etc/nodename
/etc/nodename: No such file or directory
  - 

/etc/hostname.xxn file

/etc/inet/hosts

sys-unconfig command

use sys-unconfig command to undo a system configuration & restore to unconfigured state so you can reconfigure

sys-unconfig commands does:

when sys-unconfig command is finish the system is shutdown

can only be run as root user

when system is powered on a configuration script prompts you to configure system info

sys-unconfig command is not available on diskless client

Managing Solaris OS Unix File System (UFS)

Solaris OS file systems

file system is a collection of files & directories that make up a structured set of info

Solaris OS supports three different types of file systems:

disk-based file systems

disk-based file systems are found on hard disks, CD-ROMS, diskettes, DVDs, Blue-Rays

Some examples of disk-based file systems:

Distributed File Systems

distributed file systems provide network access to file system resources

Pseudo File Systems

pseudo file systems are memory based

Some examples of pseudo file systems:

mount command with -p or -v options displays file system types currently in use

Creating new ufs file system

user views ufs differently than Solaris OS. user views file system as collection of files & directories, to Solaris OS the file system appears as a collection of control structures & data blocks that occupy space defined by a partition

Solaris OS stores data in a logical file hierarchy often consisting of several file systems, file hierarchy is referred to as Solaris directory hierarchy

The ufs file system must be created on disk before being used by Solaris OS

Solaris systems typically use multiple ufs file systems to store directories & files

Example:

# mount -p | grep ufs
/dev/dsk/c0t0d0s0 - / ufs - no rw,intr,largefiles,logging,xattr,onerror=panic
/dev/dsk/c0t0d0s5 - /var ufs - no rw,intr,largefiles,logging,xattr,onerror=panic
  - 

utilize the format utility to view partition tables:

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm    1719 - 11168       10.74GB    (9450/0/0)   22528800
  1       swap    wu       0 -  1718        1.95GB    (1719/0/0)    4098096
  2     backup    wm       0 - 65532       74.50GB    (65533/0/0) 156230672
  3 unassigned    wm       0                0         (0/0/0)             0
  4 unassigned    wm       0                0         (0/0/0)             0
  5        var    wm   11169 - 16323        5.86GB    (5155/0/0)   12289520
  6 unassigned    wm       0                0         (0/0/0)             0
  7 unassigned    wm       0                0         (0/0/0)             0

partition tables & reserved space

to create ufs in Solaris system space must be available on disk & that space must be defined in a partition

Solaris OS file systems do not use the following sectors of the slices in which they reside:

Solaris OS ufs structures begin at sector 16 of the slice that holds the file system on both SPARC & x86/x64 systems.

ufs file system structures

primary superblock

The primary superblock resides in the 16 disk sectors (sectors 16 to 31 relative to first sector on slice) that follow the space reserved for a SPARC boot block.

superblock is a table of info that describes the file system which includes:

backup superblocks

when file system is created a backup copy of the superblock is created beginning at sector 32 & an additional backup is created at the beginning of each cylinder group. The replication protects the critical data in the superblock against catastrophic loss

cylinder groups

each file system is divided into cylinder groups with a minimum default size of 16 cylinders per group

cylinder groups improve disk access & ufs constantly optimizes disk performance by moving file's data into a single cylinder group, large sized files > one cylinder are stored in multiple cylinders

cylinder group blocks

cylinder group block is a table in each cylinder group that describes the cylinder group, including:

<insert diagram that shows Solaris OS ufs structure>

usf inode

inode contains the following info about a file

<insert visual depiction of inode>

direct pointers

inside inode there are 12 direct pointers, which contain addresses for the file's first 12 data blocks. the 12 direct pointers can each reference 8-Kbye data blocks for a file that is up to 96Kbytes

indirect pointers

indirect pointer structure

three types of indirect pointers are within an inode are:

data blocks

fragmentation

fragmentation is a method to allocate disk space efficiently, files less than 96 Kbytes in size are stored using fragmentation

by default, data blocks can be divided into eight fragments of 1024 bytes each. fragments store files & pieces of files smaller than 8192 bytes. for files larger than 96 Kbytes, fragments are never allocated & full blocks are exclusively used

<insert graphic showing 1024 byte fragment in a data block of 8192 bytes>

if a file contained in a fragment grows & requires more space, it is allocated to one or more additional fragments in the same data block

<insert graphic showing two 3KB files in 1 8KB data block>

ufs does not allow fragments from same file to be stored in different data blocks

using new ufs command

Create partition

# format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c1t0d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@1c,600000/scsi@2/sd@0,0
       1. c1t1d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@1c,600000/scsi@2/sd@1,0
       2. c1t2d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@1c,600000/scsi@2/sd@2,0
       3. c1t3d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@1c,600000/scsi@2/sd@3,0
Specify disk (enter its number): 3
selecting c1t3d0
[[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
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        !<cmd>     - execute <cmd>, then return
        quit
format> partition


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> modify
Select partitioning base:
        0. Current partition table (anon)
        1. All Free Hog
Choose base (enter number) [[0]]? 0

Part      Tag    Flag     Cylinders         Size            Blocks
  0 unassigned    wm       0 -  2060       10.00GB    (2061/0/0)   20972736
  1 unassigned    wm    2061 -  3091        5.00GB    (1031/0/0)   10491456
  2     backup    wu       0 - 14086       68.35GB    (14087/0/0) 143349312
  3          -    wu    3092 -  5152       10.00GB    (2061/0/0)   20972736
  4          -    wu    5153 -  7213       10.00GB    (2061/0/0)   20972736
  5 unassigned    wm    7214 -  9274       10.00GB    (2061/0/0)   20972736
  6 unassigned    wm    9275 -  9964        3.35GB    (690/0/0)     7021440
  7 unassigned    wm    9965 - 14086       20.00GB    (4122/0/0)   41945472

Do you wish to continue creating a new partition
table based on above table[[yes]]? yes
Free Hog partition[[6]]? 
Enter size of partition '0' [[20972736b,|2061c, 10240.59mb, 10.00gb]]: 10gb
Enter size of partition '1' [[10491456b,|1031c, 5122.78mb, 5.00gb]]: 5gb
Enter size of partition '3' [[20972736b,|2061c, 10240.59mb, 10.00gb]]: 5gb
Enter size of partition '4' [[20972736b,|2061c, 10240.59mb, 10.00gb]]: 5gb
Enter size of partition '5' [[20972736b,|2061c, 10240.59mb, 10.00gb]]: 5gb
Enter size of partition '7' [[41945472b,|4122c, 20481.19mb, 20.00gb]]: 5gb

Part      Tag    Flag     Cylinders         Size            Blocks
  0 unassigned    wm       0 -  2060       10.00GB    (2061/0/0)   20972736
  1 unassigned    wm    2061 -  3091        5.00GB    (1031/0/0)   10491456
  2     backup    wu       0 - 14086       68.35GB    (14087/0/0) 143349312
  3          -    wu    3092 -  4122        5.00GB    (1031/0/0)   10491456
  4          -    wu    4123 -  5153        5.00GB    (1031/0/0)   10491456
  5 unassigned    wm    5154 -  6184        5.00GB    (1031/0/0)   10491456
  6 unassigned    wm    6185 - 13055       33.34GB    (6871/0/0)   69919296
  7 unassigned    wm   13056 - 14086        5.00GB    (1031/0/0)   10491456

Okay to make this the current partition table[[yes]]? yes
Enter table name (remember quotes): "anon"

Ready to label disk, continue? y

partition> quit


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
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        !<cmd>     - execute <cmd>, then return
        quit
format> save
Saving new disk and partition definitions
Enter file name[["./format.dat"]]: ./format-c1t30s0.dat    
format> quit

Create ufs

# newfs /dev/rdsk/c1t3d0s0
newfs: construct a new file system /dev/rdsk/c1t3d0s0: (y/n)? y
Warning: 2880 sector(s) in last cylinder unallocated
/dev/rdsk/c1t3d0s0:     20972736 sectors in 3414 cylinders of 48 tracks, 128 sectors
        10240.6MB in 214 cyl groups (16 c/g, 48.00MB/g, 5824 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
 32, 98464, 196896, 295328, 393760, 492192, 590624, 689056, 787488, 885920,
 20055584, 20154016, 20252448, 20350880, 20449312, 20547744, 20646176,
 20744608, 20843040, 20941472
  - 

ufs command outputs basic disk geometry & ufs created on slice 0 (c1t3d0s0), the beginning sector locations of backup superblocks also displayed

nfs -i command is used to specify density of the number of bytes per inode in file system

Determine number of bytes per inode (nbpi) with mkfs -m command:

# mkfs -m /dev/rdsk/c1t3d0s0
mkfs -F ufs -o nsect=128,ntrack=48,bsize=8192,fragsize=1024,cgsize=16,free=1,rps=167,nbpi=8155,opt=t,apc=0,gap=0,nrpos=8,maxcontig=128,mtb=n /dev/rdsk/c1t3d0s0 20972736
  - 

repeat process for each partition and slice that needs a new file system

reserve free space

# newfs -m 2 /dev/dsk/c1t3d0s0     
newfs: construct a new file system /dev/rdsk/c1t3d0s0: (y/n)? y
Warning: 2880 sector(s) in last cylinder unallocated
/dev/rdsk/c1t3d0s0:     20972736 sectors in 3414 cylinders of 48 tracks, 128 sectors
        10240.6MB in 214 cyl groups (16 c/g, 48.00MB/g, 5824 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
 32, 98464, 196896, 295328, 393760, 492192, 590624, 689056, 787488, 885920,
 20055584, 20154016, 20252448, 20350880, 20449312, 20547744, 20646176,
 20744608, 20843040, 20941472

fstyp command

show minimum free size with fstyp & -v option

# fstyp -v /dev/dsk/c1t3d0s0 | grep minfree
minfree 2%      maxbpg  2048    optim   time
  -  fstyp -v /dev/rdsk/c1t3d0s0 | head
ufs
magic   11954   format  dynamic time    Wed Oct  5 15:57:18 2011
sblkno  16      cblkno  24      iblkno  32      dblkno  760
sbsize  2048    cgsize  8192    cgoffset 64     cgmask  0xffffffc0
ncg     214     size    10486368        blocks  10327132
bsize   8192    shift   13      mask    0xffffe000
fsize   1024    shift   10      mask    0xfffffc00
frag    8       shift   3       fsbtodb 1
minfree 2%      maxbpg  2048    optim   time
maxcontig 128   rotdelay 0ms    rps     167
  - 

show minimum free size with fstyp & -v option

# fstyp -v /dev/rdsk/c1t3d0s0 | head
ufs
magic   11954   format  dynamic time    Wed Oct  5 15:57:18 2011
sblkno  16      cblkno  24      iblkno  32      dblkno  760
sbsize  2048    cgsize  8192    cgoffset 64     cgmask  0xffffffc0
ncg     214     size    10486368        blocks  10327132
bsize   8192    shift   13      mask    0xffffe000
fsize   1024    shift   10      mask    0xfffffc00
frag    8       shift   3       fsbtodb 1
minfree 2%      maxbpg  2048    optim   time
maxcontig 128   rotdelay 0ms    rps     167
  - 

changing minimum free size

# tunefs -m 1 /dev/rdsk/c1t3d0s0 
minimum percentage of free space changes from 2% to 1%
  -  fstyp -v /dev/dsk/c1t3d0s0 | grep minfree
minfree 1%      maxbpg  2048    optim   time
  -