Sunday, February 12, 2012

IBM AIX Learning - A Simple Way


                        


                                                WARNING


THIS DOCUMENT CONTAINS PRACTICAL COMMANDS, WHICH HELP TO ADMINSTER THE AIX IN A CONVIENENT WAY.
BEFORE GOING THROUGH THIS DOCUMENT YOU SHOULD HAVE EXPERINCE OF ADMINSTERING ANY OTHER UNIX O.S. BECAUSE THIS DOCUMENT IS PICTURED MOSTLY ON COMMANDS AND ADMINSTRATION ONLY. NO BASIC IDEA OF AIX IS COVERED; INSTALLATION OF AIX O.S ON SERVER IS ALSO NOT CONSIDERD.


THANKS & REGARDS
Senthilkumar Muthusamy
fbtsenthil@gmail.com






























Software update/install

Smit install                 :-          To access software installation and maintenance

Smit install_update   :-          To access Install and Update software.

Smit update_all         :-          To access update installed software to latest level

Smit list_install         :-  To access list software installed and related information

smit maintain_software  :-  allow you to commit, reject, and remove software. This is the path where you can either commit the applied software and remove the older version or you can remove the newer version and use the previous version of fileset/software.


                                    System Environment

smit system  ;-- Stopping of system (shutdown), restarting system, change date/time, OS characteristics like max no. of user processes or so on, manage error logs, system dump logs


Smit mlang ;-- To change the users or any language environment


You can change language using command also :-

Chlang En_GB
Chlang en_GB
Chlang c

Where En_GB,en_GB,c are languages, you need to logout and login to take effect
Ex:-

Language code            Language description
UTF-8                           Arabic (Algeria) [AR_DZ]                  
UTF-8                           Arabic (Bahrain) [AR_BH]               

                                    Devices

Smit devices

Smit devices à list devices à list all supported devices

Smit tty
Smit mktty   ;--    Adding ASCII terminal


 











                        SOFTWARE UPDATES


Reports the latest installed maintenance level of the system

To determine the maintenance level of the system, type:
# oslevel
5.3.0.0
Understanding levels
Oslevel output is divided into 4 parts:-

Version . Release . Modification . fix

5            .      3        .      0              .  0

Version and release updates need to be purchase while modification and fix are free.

Fixes are basically developed to resolve bugs for particular application or file set.
Suppose if current version of catman command is 4.3.2.0, its giving problem that it doesn’t create database for whatis command, then we have to download a fix and applied it on system, after applying out version of catman command changes to 4.3.2.1

If all the fixes are applied to a system and if there is no more fixes are available for a system, then modification field changes.

For ex: Lets think IBM has only 255 fixes for catman command and also only 255 is supported for fix field, if all are applied then catman version will be 4.3.2.255, again if its giving any problem, then IBM will developed a new fix for catman bug, but the fix range is ended, in this situation our modification field changes i.e 4.3.3.255

Hope so you all understand this.

To determine the file sets that are below level 4.1.2.0, type:
#oslevel -l 4.1.2.0

 To determine the file sets at levels later than the current maintenance level, type:
# oslevel -g | more
Fileset                                 Actual Level        Maintenance Level
-----------------------------------------------------------------------------
bos.rte                                 5.3.0.10            5.3.0.0      

To determine the highest recommended maintenance level reached for the current version of AIX on the system,  type:
# oslevel -r
5300-02      

To list all known recommended maintenance levels on the system, type:
# oslevel -rq

Known Recommended Maintenance Levels
------------------------------------
5300-02
5300-01
5300-00




 
Command :-

When you are installing software for first time its installed in committed state.
When you are installing a fix/modification then you have a choice to install a fix either in Applied state or committed state.

A

Displays the name, most recent level, state, and description of the specified fileset bos.rte.*
# lslpp -l bos.rte.* | more  
  Fileset                      Level  State      Description
  ----------------------------------------------------------------------------
Path: /usr/lib/objrepos
  bos.rte.Dt                 5.3.0.0  COMMITTED  Desktop Integrator
  bos.rte.ILS               5.3.0.10  COMMITTED  International Language Support
  bos.rte.SRC               5.3.0.20  COMMITTED  System Resource Controller


List all installed software
# lslpp -L bos.rte.*| more
  Fileset                      Level  State  Type  Description (Uninstaller)
  ----------------------------------------------------------------------------
  bos.rte.Dt                 5.3.0.0    C     F    Desktop Integrator
  bos.rte.ILS               5.3.0.10    C     F    International Language Support
  bos.rte.SRC               5.3.0.20    C     F    System Resource Controller


F = Fileset
C = Commited

There are following states of software
APPLIED: -We install a fixes in applied state, if we are not sure that weather this fixes will work or not, so that we can remove it easily if its giving any problem, we use applied state.

COMMIT STATE: -If we install a package in commit state, it means we are sure it will not give any problem, and fixes are applied permanently, to remove commit state, you have to uninstall package completely

BROKEN STATE: - The specified fileset or fileset update is broken and should be reinstalled before being used.

APPLYING, COMMITTING, REJECTING ALL THIS STATE means software installation did not complete successfully, and cleanup was not performed.

Show the history of software products
# lslpp -h bos.rte.* | more
  Fileset         Level     Action       Status       Date         Time
  ----------------------------------------------------------------------------
Path: /usr/lib/objrepos
 bos.rte.Dt  5.3.0.0   COMMIT       COMPLETE     08/02/05     08:19:51
 bos.rte.ILS  5.3.0.10   COMMIT       COMPLETE     08/02/05     08:19:51


List all dependent fileset related to particular package i.e below listed filesets are dependent on bos.rte.boot

# lslpp -d bos.rte.* | more
  Fileset               Dependents
  ----------------------------------------------------------------------------

bos.rte.boot 5.3.0.10
                        bos.rte 5.3.0.10
                        devices.chrp.base.rte 5.3.0.21
                        bos.perf.tune 5.3.0.20

Display the name and location of files added to system during installation of fileset

# lslpp -f  bos.rte.* | more
  Fileset               File
  ----------------------------------------------------------------------------
Path: /usr/lib/objrepos
  bos.rte.Dt 5.3.0.0    /usr/sbin/dtappintegrate
  bos.rte.ILS 5.3.0.10  /usr/bin/chlang
                        /usr/bin/dspcat
                        /usr/bin/dspmsg
                        /usr/bin/gencat
                        /usr/bin/locale
                        /usr/bin/locale64
                        /usr/lib/nls/lsmle

To display all files in the inventory database, type:
# lslpp -w | more
  File                                        Fileset               Type
  ----------------------------------------------------------------------------
  /                                           bos.rte               Directory
  /usr/aix                                 bos.rte               Directory
  /usr/lpp                                 bos.rte               Directory
  /usr/lpp/bos                           bos.rte               Directory
  /usr/lpp/bos/inst_root             bos.rte               Directory


Searches a fix for below APAR number
#instfix –ik IY38674

Install a fix from tape
#instfix –k IX38674 –d /dev/rmt0.1

k – stand for fix
d – stand for destinstion
i – Inform wheather a fix is installed


                                    BOOTLIST

Check boot priority

To list  normal booting devices i.e in below output command has listed to 1 disk rootvg hdisk3 and similar mirrored  copy hdisk0. Hdisk3 is first bootable device, then hdisk0…..and so on
# bootlist -m normal -o
hdisk3
hdisk0

List if system is booted in maintenance or service mode which will be the first boot device. By default cd0 is first boot device in service mode because in case if system unable to boot from hdisk3 then u can boot then system from bootable exterbal devices like cd, tape and network
# bootlist -m service -o
cd0
rmt0
hdisk3
ent0

To make a boot list for Normal mode with devices listed on the command line, enter:
#bootlist -m normal hdisk0 hdisk1 rmt0 fd

 To make a boot list for Normal mode with a device list from a file, enter:
# bootlist -m normal -f /bootlist.devs
where bootlist.norm is a file containing device names to be placed in the boot list for             Normal mode. The device names in the bootlist.devs file must comply with the described             format.

To boot from a Token-Ring device in slot 2, enter:
#bootlist -m normal tok0

                       
                                                ALOG

Similar to dmesg command of sun which read the log file /var/adm/messages

Will list all the log files configured and Defined in system
# alog -L
boot    ------- All Booting related information, all devices configuration info.
bosinst -------All information related to unattended installation
nim      -------
console   -------  shows all error message displayed on console
cfg  
dumpsymp ----  When a system crash information is stored here


All Booting related information, all devices configuration info
#alog -o -t boot
This command read /var/adm/ras/bootlog file, and put it on screen

All information related to unattended installation, BLV, FS, Paging space creation is logged
# alog -o -t bosinst
This command read /var/adm/ras/bosint.data | more

Similarly “nim” gives u NIM ( Network install manager ) log information. i.e any copy of software is installed on several client at a same time from server is logged here.
Command read a /var/adm/ras/nimlog  as input

Console -----

Other log files in /var/adm/ras

#more /var/adm/ras/devinst.log
All hardware devices and software, successful and unsuccessful installation information are loged here

#more /var/adm/ras/BosMenus.log
All bos installation information is logged here i.e if new insatllation of bos takes place what menu’s user have selected while installation is logged here

# more /var/adm/ras/image.data
We can custimize this image.data file to create our own type and method of system image, this is refer by mksysb command

           

Please Take a backup of inittab file, I will concentrate on actions only

/etc/inittab

Identifier: runlevel: action: command

Identifier: use the logical device name as identifier

Runlevel:- default is 2 , Aix runlevels are 0 to 9.

Action:

            Respawn          :-          init will start the process again if it dies.
Wait                 :-          wait for other process to complete before starting this process  
                                   or start the process wait for it to finish before reading second
                                   line.

Once                :-          start the process and don’t restart if it stops
Sysinit              :-          command to run before accessing console
Off                    :-          do not run command

#telinit 2        --  Request init to put system in run level 2.
#telinit q        --  Request init to reread the /etc/inittab file


           
SRC (System Resource Controller)


SRC controls the subsystem i.e easy to administer the individual subsystem.
A subsystem is a program designed to perform a function.
Ex:- qdaemon, lpd this subsystem or sub process belongs to spooler subsystem group.
ftp, telnet daemon belong to inetd subsystem where inetd belongs to tcpip subsystem group.

Will list all groups and subsytem
# lssrc -a | more
Option –a -  Lists the current status of all defined subsystem.

Status: - If active,  means its working and enabled, if Inoperative means its there but not enabled or not active or not working, this are optionals subsystems.


Will list SRC status of specific group
# lssrc -g spooler

IMPORTANT NOTE: - ALL THE PROCESS  STARTED BY SRCMSTR i.e SRC MASTER CANNOT BE KILLED BY KILL COMMAND OR DON’T KILL IT FORCEFULLY, JUST STOP THAT PROCESS USING STOPSRC COMMAND ONLY………………………..      AMRIK

IF ANY GROUP IS SPECIFIED IN /ETC/INITTAB FILE WITH RESPAWN AS ACTION THEN THAT PROCESS CANNNOT BE KILLED OR STOPED

Will start the lpd daemon or subsystem
# startsrc -s lpd
0513-059 The lpd Subsystem has been started. Subsystem PID is 565328.
Option –s -  subsytem name

If lpd subsystem is started, but not working properly, you don’t need to kill just do or
To reread this configuration file related to lpd without stopping use this command: -
# refresh -s lpd
0513-095 The request for subsystem refresh was completed successfully.

Will stop the lpd daemon or subsystem
# stopsrc -s lpd
0513-044 The lpd Subsystem was requested to stop.

           




           
                                                DEVICES


/dev :- contain all the logical devices that can be directly accessed by the user.

# ls -l | grep ^b and ^c

List all block devices in /dev directory starting strictly with first character as “ b “ or “ c ”


                                                Device Configuration Database

 


Predefined Configuration database                         Customized Configuration database


This database contains drivers for all                           This database contain data for all
Devices for which the system is supported                 Currently installed and configured
For ex: k/b adapters, Ethernet Adapters                      Devices or available devices.
System will give driver support for thou-
Shand of devices. This is default database
For all devices supported by O.S.



If any new device is installed and if cfgmgr command is executed, then cfgmgr first look for
driver support in predefined database, if its there then the device get configured
automatically, otherwise system ask u for drivers.

Cfgmgr command configures your devices automatically on system boot.

List all supported Devices


Predefined database related command

List all predefined devices with header or All devices support listing

# lsdev -PH | more

class                type                 subclass                       description

PCM                  fcpother           friend               AIX SCSI/FCP Disk Path Control Module
PCM                  scsiscsd           friend                AIX SCSI/FCP Disk Path Control Module
PCM                  vscsi                 friend              AIX SCSI/FCP Disk Path Control Module
Adapter                        baud4232        isa_sio            Ultimedia Integrated Audio
Adapter                        chrp_ecp        sa_sio              CHRP IEEE1284 (ECP) Parallel Port Adap


Where  P : -      Pulls information from predefined database in ODM
            H : -     Header i.e class, type, subclass, description.
Class means what device does or Name os the device i.e disk, tape, cdrom.., Type indicate what model is it or what is the capacity/rpm of devices and
                        Subclass indicates how it can attached to system.


List all “Tape class” devices supported on system
# lsdev -PHc tape  ( or disk or adapter or cdrom  )

class type     subclass description

tape  ost      fcp      Other FC SCSI Tape Drive
tape  scsd     fcp      FC SCSI Tape Drive
tape  ost      iscsi    Other iSCSI Tape Drive

Where  c: -       Specifies the class of devices


List all Supported Type of devices, or capacity of device having 4mm2gb, Since 4mm2gb is Type that’s why mention “t” to extract Type information only

# lsdev -PHt 4mm2gb
class type   subclass description

tape  4mm2gb scsi     2.0 GB 4mm Tape Drive


List all Supported scsi related devices on the system. Since scsi is subclass that’s why mention “s” to extract subclass information only
# lsdev -PHs scsi
class     type          subclass description

array     dac7135       scsi     7135 Disk Array Controller
cdrom     cdrom1        scsi     CD-ROM Drive
cdrom     enhcdrom      scsi     Multimedia CD-ROM Drive
cdrom     enhcdrom2     scsi     Multimedia CD-ROM Drive

 

Customised database related commands


This will list all devices installed on this system and configured or List all devices found on this system.
# lsdev -CH | more
name               status                            location      description

L2cache0          Available                                  L2 Cache
aio0                  Available                                   Asynchronous I/O (Legacy)
cd0                  Available           04-08-00          IDE DVD-ROM Drive
dac0                  Defined           07-08-02          1722-600 (600) Disk Array Controller
dac1                 Defined            07-08-02          1722-600 (600) Disk Array Controller

Status if Available, the device is ready and can be used,
Status if defined, the device is unavailable, or not powered ON, devices is added in customized datbase, it has been allocated a logical device name, attributes are also assigned but its not powered ON.
Status if Undefined, Device is supported by system but not configured. It does not reside in customized database.

Device with location code is physical devices and devices without location code is logical devices.

Extracting and list disk class information
# lsdev -CHc disk
name                           status    l          ocation                                     description
hdisk0              Available           05-08-00-5,0               16 Bit LVD SCSI Disk Drive
hdisk1              Available           05-08-00-8,0               16 Bit LVD SCSI Disk Drive
hdisk2              Defined            08-08-02                      1722-600 (600) Disk Array Device

Extract and List ide subclass information
# lsdev -CHs ide
name status    location description
cd0  Available 04-08-00 IDE DVD-ROM Drive

Bringing the a particular device say cd0 to unavailable state or defined state

Plz don’t follow this step, below is the proper method of removing hardware


# rmdev -l cd0
cd0 Defined

# lsdev -CHc cdrom
name status  location description
cd0  Defined 04-08-00 IDE DVD-ROM Drive


Where  l: - Stands for logical devices name, since above logical name of CDROM is cd0 we are extracting information for particular logical device

Executing cfgmgr command to check for new devices configuration, it configure automatically, bring a device into available state from defined state.
Since the driver for this devices is available in customized and predefined database, cfgmgr configure it automatically,

# cfgmgr

# lsdev -CHc cdrom
name status    location description
cd0  Available 04-08-00 IDE DVD-ROM Drive

            Know removing devices from customized database

First bring the device to defined state, this step is very much needed before removing any devices directly.

#rmdev –l cd0

Know delete the device
# rmdev -l cd0 -d
cd0 deleted

Where  d: - Stands for delete mentioned device.

Check is it removed successfully
# lsdev -CHc cdrom
Nothing will appear, since that device is removed completely from database.

# cfgmgr

Even after removing, if cfgmgr command is executed, cfgmgr reconfigure that device again, since its supported device
# lsdev -CHc cdrom
name status    location description
cd0  Available 04-08-00 IDE DVD-ROM Drive






            Bringing a Defined devices to Available state

Bring device to define state
# rmdev -l cd0
cd0 Defined

Check the state
# lsdev -CHc cdrom
name               status                          location            description
cd0                  Defined            04-08-00          IDE DVD-ROM Drive

Bring the define state of device to available state using
# mkdev -l cd0
cd0 Available
# lsdev -CHc cdrom
name               status              location            description
cd0                  Available           04-08-00          IDE DVD-ROM Drive

If a devices is removed physically from system to some other area and it is no longer usable, even if that device is showing as defined state then you have to remove it from ODM database also use the following command to do so
#rmdev –dl cd0         

                                    Listing System Attributes

List all attributes for devices in the system.
# lsattr -EH -l sys0
attribute           value                   Description                                                   user_settable

maxpout           0                          HIGH water mark for pending write I/Os per file         True
maxuproc         1024                     Maximum number of PROCESSES allowed per user      True
min_capacity    1.00                      Minimum potential processor capacity                       False
minpout            0                          LOW water mark for pending write I/Os per file         True
modelname       IBM,9110-510       Machine name                                                         False

Where  E: - stands for current values or attributes set i.e you can get changes made by a users over here.
            H: - Header
            l: - Logical device name

If user settable is true means user or admin. Can change this value, if false admin. Cannot changes this value. Since its system related default value which is needed compulsorily to run system.

List system’s default value for each attributes
# lsattr -DH -l sys0
maxpout         0                      HIGH water mark for pending write I/Os per file             True
maxuproc        128                  Maximum number of PROCESSES allowed per user        True
min_capacity                           Minimum potential processor capacity                            False
minpout           0                      LOW water mark for pending write I/Os per file               True
modelname                              Machine name                                                                False


List current value of maxuproc attribute for the sys0
# lsattr -EH -l sys0 -a maxuproc
attribute           value                description                                                       user_settable
maxuproc        1024                Maximum number of PROCESSES allowed per user True

List current attribute of cd0 device
# lsattr -EH -l cd0
attribute                       value                description                         user_settable
audio_supported         yes                   Play AUDIO supported                True

To list the current value of the data_verify attribute for the cd0, type the following:
# lsattr -EH -l cd0 -a data_verify
attribute                       value                            description                                user_settable
data_verify                   enable                          Software Data Verification        False

To list the possible values of prevent_eject attribute for cd0 devices
# lsattr -EH -l cd0 -a prevent_eject -R
  no
  yes

Where  R: - possible option or value that a user can set.
If user settable is True, then user can change the attribute value to either yes or no, but no other value is taken as input inspite or “no and yes “. Whatever is listed with –R option, user can set that value only.

 

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

 

Examples of How to change attributes


Suppose you want to change the attribute prevent_eject of cdrom, first check the all attributes
# lsattr -EH -l cd0
attribute                        value                description                         user_settable

audio_supported         yes                   Play AUDIO supported                          True
cdda_supported          yes                   CD-DA supported                                 True
data_verify                   enable              Software Data Verification                    False
prevent_eject                           yes                  PREVENT ejection of media when open           True

First check what options are there for prevent_eject attribute of cdrom, provided by system
# lsattr -EH -l cd0 -a prevent_eject -R
no
yes

Change the device attribute using chdev to no
# chdev -l cd0 -a prevent_eject=no
cd0 changed

Check weather the effect has taken place or not
# lsattr -EH -l cd0 -a prevent_eject
attribute                       value                description                                                       user_settable
prevent_eject              no                     PREVENT ejection of media when open          True

Suppose if you forget what is the default value given to this attribute, then use: -
# lsattr -DH -l cd0 -a prevent_eject
attribute                       deflt     description                                                       user_settable
prevent_eject              yes      PREVENT ejection of media when open                       True

This “yes”  indicate that system default value is yes, so that you can change it to default if giving any problem with the current settings.
==============================================================

To list the possible values of the login attribute for the tty0 tty device, type the following:
  #lsattr -l tty0 -a login -R
    enable
    disable
    share
    delay

To list the default attribute values for an cdrom with 48x speed with subclass ide and type cdrom48, type the following:
# lsattr -c cdrom -s ide -t cdrom48X -DH
attribute                       deflt                 description                                         user_settable

audio_supported         yes                   Play AUDIO supported                                     True
cdda_supported          yes                   CD-DA supported                                             True
prevent_eject              yes                   PREVENT ejection of media when open                       True

To list the current attribute values for an cdrom with 48x speed with subclass ide and type cdrom48, type the following:

#  lsattr -c cdrom -s ide -t cdrom48X -EH
attribute                       deflt                 description                                         user_settable

audio_supported         yes                   Play AUDIO supported                                     True
cdda_supported          yes                   CD-DA supported                                             True
prevent_eject              yes                   PREVENT ejection of media when open                       True


To list the possible values of the prevent_eject attribute for an IDE CDROM, type the following:

# lsattr -c cdrom -s ide -t cdrom48X -DH -a prevent_eject -R
no
yes


#lsattr –l pty0 –E
#lsattr –l pty0 -D


what CFGMGR command do when a new hardware is found

Below my own way of understanding how and what cfgmgr do.

STEP I

Suppose a new CDROM is attached to a system, on the system boot cfgmgr is executed, it will find cdrom, he ask to cdrom who are you, what u r doing here

STEP II

CDROM replies, I am cdrom, I am attached at so and so location for storage purpose.

STEP III

Cfgmgr, please wait I am checking your identity, cfgmgr search for available device drivers in predefined database, if it found then cfgmgr make the device as defined.

STEP III

Cfgmgr load the device driver to kernel, kernel make a logical entry of the new device cdrom in /dev and cd0 and assign a major and minor number to the device

STEP IV

Cfgmgr make the device ready and put him in available state.





            DEVICE ADDRESSING


SIMPLY, IF A MAN COMES TO BOMBAY AND HE WANT TO GO VASHI, HE HAS ADDRESS IN HIS HAND, WITH THAT ADDRESS HE REACHES HIS DESIRED LOCATION THIS IS CALLED AS LOCATION CODE.

EVERY DEVICE HAS A SPECIFIC LOCATION CODE INDICATES WHERE IT IS INSTALLED ON THE SYSTEM.

Execute lsdev –CH  | more to get location code of all devices attached to system. Since    lsdev –CH reads customized database i.e installed and configured devices on current system, you will get location code of you devices,

NOTE: - Devices having location code means it’s a physical devices attached to system, devices without location code means they are logical devices.

Format:

            AB-CD-EF-GH

                        IDENTIFYING PCI DEVICES

            AB

            If AB = 00        Any Device attached to processor bus has location code always 00.
                                     EX: - Processor, Memory, Primary PCI Bus
                                    Lsdev -CH

proc0      Available        00-00         Processor
proc2      Available        00-02         Processor
                                   
Clearly shown that 2 processor is there on system and connected to processor bus i.e 00 show you.

            If AB = 01        A Device is attached to ISA BUS
                                    Ex:-
pci6       Available         01-14         PCI Bus
pci7       Available         01-12         PCI Bus
pci8       Available         01-16         PCI Bus

           
            If AB = 04        A Device is attached to PCI BUS
                                   
EX:-     
                                    cd0        Available 04-08-00      IDE DVD-ROM Drive

From the first value i.e 04 you came to know that it’s connected to PCI Bus

            CD

If CD = 01 to 99           Identify a slot/ adapter number

FOR PLUGGABLE CARDS



CD will show the actual slot number where the card is installed.

For Ex: If pluggable card is installed at slot number 3, then
Location code will be 04-03 where 04 says you that it’s a PCI card, attached to PCI BUS and 03 say you that it is inserted in 3rd slot of PCI adapter/bus.

cd0        Available 04-08-00      IDE DVD-ROM Drive

This means device is connected to pci bus, it’s a pluggable device and 08 means its connected to slot no 8 of pci bus (04)

Note: - Its logical, all pluggable card is installed in PCI slot only, if it is installed at ISA then location code will be 01-02 where 02 is second slot.


            If CD = A to Z, 0           FOR INTEGRATED DEVICES
This C value will be from A to Z and D value will be 0
                                                Because its given like that CD = A-Z, 0. This comma
Distinguishes the difference.

For Example, consider keyboard port, which is integrated on the motherboard for keyboard connection has a location code as 01-F0 which means that keyboard adapter is on ISA Bus (01) and that keyboard adapter is integrated on motherboard (F0).
Where “F” is “C” and “0” is our “D”.



EF and GH                                Not used here.

Examples: -
01   - C0 (Standard Serial Port 1)
02   - D0 (Standard Serial Port 2)
01 - F0  (Keyboard)
01   - H0 (Diskette Drive)
04 - B0 (PCI Ethernet Adapter)
04 – C0 (Wise SCSI I/O Controller)
04 – C0-00-4, 0 (SCSI DISK DRIVE)

All Devices connected to ISA BUS and Integrated on Motherboard are :-
01   - C0 (Standard Serial Port 1)
01- F0  (Keyboard)
01- H0 (Diskette Drive)

All Devices Connected to PCI BUS and they are also integrated
04 - B0 (PCI Ethernet Adapter)
04 – C0 (Wise SCSI I/O Controller)
04 – C0-00-4, 0 (SCSI DISK DRIVE)









            IDENTIFYING NON SCSI

In Non scsi devices AB and CD field are same as pci devices only EF and GH values come into picture.

Lets Take an example of Multiplexer in Communication department, Multiplexer has upto 16 ports for serial communications, just like switch/hub ports.

Asynchronous adapter allows connecting ASCII terminals to a server. Just think you have to connect this card to system, since its an PCI card you go for PCI BUS or slot, then you will check which slot is free to connect this card. Asynch. Adapter allow you to connect 128 serial devices i.e 128 Ascii Terminals you can connect .

This card has 2 connectors, each connector support single serial bus.

Just think that, on this 2 serial bus multiplexer’s are connected, you can name this multiplexers as RAN i.e: - Remote Asynchronous Nodes. You can connect multiple multiplexer to single connector since serial bus is there, to connect other multiplexers.

The each connector can support upto 4 RAN’s on each, if you have 2 connector then 4 RAN’s on ONE and 4 RAN’s on another i.e I mean to say that you can connect 4 multiplexer on 1 connector and 4 multiplexer on another, Total 8 Multiplexer or RAN’s can be connected.

Connecting is easy but identifying this in system is difficult, but don’t worry I will explain you in simple manner.

Location Codes: -


Since asynch. Is a Pluggable device its connected to PCI Bus so “AB” value is 04,
Suppose it’s inserted in 5th slot, since it’s a pluggable device “CD” values varies from 01 to 99,
Therefore “CD” value is 05 since its inserted in 5th slot (05).
Therfore upto here AB-CD is 04-05 i.e PCI Async. Card is pluggable and inserted in 5th slot.

We have 4 Multiplexer on 1 connector and 4 multiplexer on 2nd Connector.
Therefore “ E “values means this device’s are connected to which connector, if connected to 1st connector then  “E “ value will be 1 and if connected to 2nd connector then “E” value will be 2.

An “F” value identifies How many number of multiplexer are connected or how many number of RAN are there, starting in ascending order. It can be from 1 to 4, since 4 mupltiplexer or 4 RANS can be connected to single connector.
Look into diagram how “F” value changes, if its 1st device then F=1, for 2nd device F=2, for 3rd device F=3, F values says device sorted numerically.


PCI async. Adapter (Then AB=04)                    3rd Multxr. Connected to same connector (Then F=3)

 





                                                 2nd Multxr. Connected to same connector (Then F=2)           

2nd connector        1st Connector
(Then E=2)                            (Then E=1)

                                                1st Multiplexer connected 1st connector          
                                                (Then F=1)

 

“GH” This is the port number, i.e if a multiplexer has 16 ports it ranges from 0 to 15

If a ASCII Terminal is connected to port no 7 of multiplexer, then GH field will be 07, think connection’s of switches and patch chord

EX: -

04-05-11-01 :- Forget AB and CD field, E is 1 means its connected to 1st  connector, F is 1 this mean it 1st device out of 4 multiplexer. GH is 01 means ASCII terminal is connect to 1st port of multiplexer.

Overall view :-  Ascii terminal is connected to 1st port of multiplexer, a multiplexer is connect to 1st connector of Async. PCI card, and its 1st device in list.
                       
04-05-13-07: - Forget AB and CD field, E is 1 means its connected to 1 connector, F is 1 this mean it 3rd device out of 4 multiplexer. GH is 07 means ASCII terminal is connect to 7th port of multiplexer.

04-05-21-10: - Forget AB and CD field, E is 2 means its connected to 2nd connector, F is 1 this mean it 1st device out of 4 multiplexer connected to 2nd connector. GH is 10 means ASCII terminal is connect to 10th  port of multiplexer.

04-05-22-04: - Forget AB and CD field, E is 2 means its connected to 2nd connector, F is 2 this mean it 2nd device out of 4 multiplexer. GH is 04 means ASCII terminal is connect to 4th  port of multiplexer.

                       
            IDENTIFYING SCSI DEVICES

SCSI devices are tape, cdrom, external storage, and disks
Location code AB and CD field are same as Non SCSI devices, here I will concentrate only on EF and GH values.

AB means where the Adapter card is attached, mostly its PCI i.e 04, CD means bus slot number

EF        : -         For single SCSI bus  - 00
                        For Dual SCSI bus: -
                                    Internal Bus     : -         00
                                    External Bus     : -         01

G, H     : -         “ G “ is for SCSI ID of device i.e SCSI ID is set on device itself or
Accomplished by setting jumpers or switches on device

“ H “ is for LUN’s i.e Logical Unit number, which we have created while
configuring storage or disk or logical dividing of 2 disk into 4, system consider
the 4  division as 4 hard disk on system i.e RAID is configured
it will be  “ 0 “ if there is no RAID or LUN


NOTE: -
External SCSI disk has an SCSI ID as 6 and External SCSI Tape has SCSI ID as 4, by default in single SCSI Bus, SCSI adapter has an SCSI ID as 7 reserved, that’s why SCSI ID is never set as 7

Examples: -

Suppose TAPE Device is connected it has following location code: -
04-01-00-4,0 : - Here AB is 04, CD is 01, EF is 00, G is 4 and H is 0, I will explain you this in simple.  Since the SCSI Adapter is inserted in PCI bus therefore  “ AB “ is 04, All external device are mostly connected on PCI bus. This SCSI adapter which is pluggable inserted in 1st slot of PCI bus its “ CD  “ value is 01.

As its single SCSI bus, its  “ EF “ value is 00.

Value of “ G “ is 4 because Tape device connected on system has a SCSI ID as 4. As it is a TAPE device there is no question of LUNS therefore  “ H “ is 0
SCSI

#lsdev -CHc tape

name              status             location                      description
rmt0             Available        08-08-00-0,0           LVD SCSI 4mm Tape Drive
rmt1             Defined         06-08-01-0,0           Other SCSI Tape Drive

LVM / STORAGE

LVM DEVICE DRIVERS are /usr/lib/drivers/hd_pin and  /usr/lib/drivers/hd_pin_bot, before aix 4.1 the driver was just hd_pin and entire driver are pinned into memory i.e  this drivers are not pageable means doest use paging space uses the whole physical memory, but after AIX 4.1 the non pageable portion of drivers are in hd_ping_bot and pageable portion are in hd_pin.

The LVM device driver is either called by the jfs filesystem. When a request is received by the LVM device driver, it calls the disk device driver.



LVM contain Volume group (VG)
Volume Group contains Physical Volume (PV)
Physical Volume has Physical partition (PP)
Physical partition has Logical Volume (LV)
Logical Volume has Logical Partition (LP)

Whenever a new disk is added to a system, it is our physical volume (i.e hdisk0),
Or you can say that a new disk is considered as Physical volume when added, logical device name is given by kernel and placed at /dev directory as hdisk0.

Then a new disk is added to a volume group, Each PV can have only one Volume group, but volume group can have many Physical volumes or disks.

VG is largest unit of storage on system, size of Volume group depends on Number of physical volumes or disk in that VG.

For EX:- If we have 5 disk of 4 GB, and if this 5 disk is added in single VG say datavg, then the size of datavg will be 20GB

Calculating disk size , PP Size ….

Consider with AIX VG with Windows

AIX                                           windows

Rootvg                                       c:
Datavg                                                d:
Internalvg                                   e:

A single system has maximum 255 VG’s only.

Physical Partition is division of physical volume or Number of partition on single Disk
PP size can be from 2 to 1024 MB and default is 4MB
Default max. PPs each PV is 1016 i.e Maximum number of partitions Each Disk will be 1016 as default.


VGDA (Volume Group Descriptor Area)
VGDA contain administrative information about VG ie. List of Logical volumes entry, List of Physical volume entries. Its like a database which maintain data integrity and consistency. If any changes are made to logical volumes i.e creation, deletion, expansion then VGDA database is also updated

Single disk has one VGDA, VGDA is an area on disk which keeps information of entire VG.

To activate Volume group and make it available for use i.e running varyonvg / varyoffvg command, quorum must be available on VGDA. Quorum keeps information about VGDA, some amount of percentage is fixed on disk, and it acts as VGDA

Quorum must be 51% or more then the available VGDA.
When a volume group consists of one disk, there are two VGDA’s on that disk. Thus, this single disk volume group has a quorum vote of 2. When another disk is added to the volume group with an “extendvg”, then this new disk gets one VGDA, but the
Original, first disk still retains the two VGDA’s. When the volume group has been extended to three disks, the third disk gets the spare VGDA sitting on the first disk and then each disk has a quorum vote of 1. Every disk after the third disk is
Automatically given one VGDA, and thus one vote.

VGSA (Volume Group status Area)
The Volume Group Status Area (VGSA) is comprised of 127 bytes, where each bit in the bytes represents up to 1016 Physical Partitions that reside on each disk.
VGSA are use to determine which physical partition have become stale.
Stale means become bad or lacks originality.

Below command will list all the logical volumes belongs to particular VG.

lsvg -l internalvg                  lsvg -l rootvg

LVM device drivers are at /usr/lib/drivers as hd_pin and hd_pin_bot

SCSI device drivers are at /usr/lib/drivers/hscsidd

The main binary which determines how the partitions are allocated to the user’s request is /usr/sbin/allocp.

The scsi device driver takes a command from a scsi device such as tape, disk, scanner, etc...and processes it to be sent to the scsi device connected onto the scsi bus. The scsi device is device neutral, it does not know or care which device sent it a
command or even what that command is. It treats all requests the same and puts
them into the same type of scsi command packaging required by all scsi devices.

What is PVID’s and how they configure
When a disk is configured to a system for the first time, it shouldn’t have a PVID if it is a brand new disk. When it is used in a volume group, the user sees a message to the effect of:

Making this disk a physical volume

Which is another way of saying that a PVID is being placed onto the disk. The PVID is an combination of the machine’s serial number (from the systems EPROMs) and the date that the PVID is being generated. This combination insures the extremely low chance of two disks being created with the same PVID. Finally, when a system is booted, the disk configurator goes and looks at the PVID sitting on each disk platter and then compares that to an entry in ODM. If the entry is found, then the disk is given the hdiskX name that is associated with the ODM entry for the PVID. If there is no PVID, the configuration routines will automatically assign the next free hdisk name from the pool of “free” hdisk names. Note that if a hdisk has been removed with the “rmdev -l hdiskX -d” command, then this hdisk name will be available for reuse by a later disk.

Logical Volume Control Block
The logical volume control block (lvcb) consists of the first 512 bytes of a logical volume. This area holds important information such as the creation date of the logical volume, information about mirrored copies, and possible mount points in a journaled filesystem.


                   DEFAULT LOGICAL VOLUMES


/dev/hd1       /home
/dev/hd2       /usr   
/dev/hd3       /tmp
/dev/hd4       for /  (root)             i.e JFS or JFS2
/dev/hd5       Boolt logical volumes           Contain the boot image
/dev/hd6       Paging space            use lsps –a to see
/devhd8        Journal Log; is a logical volume where any changes made to FS is logged.
/proc            /proc
/dev/hd9var   /var

Special file system to support threads or light weight processes.

                        /etc/filesystems Directives meaning

/:
        dev       = /dev/hd4
        vol       = "root"
        mount     = automatic
        check     = false
        free      = true
        vfs       = jfs2
        log       = /dev/hd8
        type      = bootfs

/usr:
        dev             = /dev/hd2
        vfs             = jfs2
        log             = /dev/hd8        : All logs are logged to /dev/hd8 which is journal log
        mount           = automatic
        check           = false
        type            = bootfs
        vol             = /usr
        free            = false

DEV              :        For local mounts or files/directory to be mounted on

VOL              :        volume label  i.e root, /usr, /var used by mkfs command

MOUNT          :        Automatic à Mount automatically on boot,

True         à Mount on boot ( Used by mountall command, if mountall command is issued, it check first in /etc/filesystem by asking loudly that is anyone there who has mount = true set, if a File system has this value then mountall command will mount it
                            
False        à Don’t Mount on boot, I will mount it manually                 
Check           :        If True à Execute fsck on this filesystem on boot, if any
 inconsistency detected
If Fales à Don’t execute fsck on this fs on boot even if Filesystem are Inconsistent

VFS              :        Specifies type of mount or Type of FS ie. JFS, NFS or so on

LOG              :        The log file location, if any changes is made to filesystem where to
log or update this information, if not specified then default will be
/dev/hd8, you can specify your own path also.

TYPE             :        use to mount group of filesyetem i.e if its bootfs then mount –t will
mount all the filesystem which belongs to the bootfs group.
Mount –t where t means type of fileystem

OPTIONS       :

ACCOUNT      :

FREE             :

FILE SYSTEM COMMANDS

List all filesystem configured

# lsfs
Name            Nodename   Mount Pt               VFS   Size    Options    Auto Accounting
/dev/hd4        --                  /                     jfs2  262144  --            yes  no
/dev/hd1        --                 /home               jfs2  1048576 --           yes  no
/dev/hd2        --                /usr                   jfs2  4718592 --           yes  no
/dev/hd9var     --                /var                   jfs2  262144  --           yes  no

Name           :        Partition Name
Nodename     :        Name of the remote server to mount

Mount pt        :        Files system to mount on
VFS              :        Type of File system
Option           :        Can be read/write or readonly

Create a File system using smit fs, and if you want to remove a filesystem then use below commands, please take backup of filesystem before removing, since it will no longer available after rmfs
# unmount /test

# rmfs /test
rmlv: Logical volume fslv04 is removed.

          Or
# rmfs -r test
rmlv: Logical volume fslv04 is removed.

LOGICAL VOLUMES REALTED COMMAND

List Logical volume fslv00 belongs to which PV or how many pv
Show the mirrord copies
# lslv -l fslv00
fslv00:/sybase
PV                COPIES        IN BAND       DISTRIBUTION
hdisk0            040:000:000   100%          000:040:000:000:000
hdisk1            040:000:000   100%          000:040:000:000:000
This means LV fslv00 is mirrored copy i.e one copy is on one hdisk0 and another on hdisk1, Logical partitions comes in picture only when you want to create a mirrored copy of your logical volume i.e you have create a logical volume for file system, if you specifies copies as 2, then LV will use 2 physical volumes as mirrored copy for LV.

# lslv -l fslv03
fslv03:/backup
PV                COPIES        IN BAND       DISTRIBUTION
hdisk0            080:000:000   0%            000:000:079:001:000
This means LV fslv03 has only one copy i.e local copy only

To increase the size of the logical volume represented by the lv05 directory by three logical partitions, type:
 #extendlv lv05 3

Suppose you have created a lv with following command : -
# mklv -y jax -t jfs2 -c 2 -u 2 rootvg 1
i.e Create LV with name jax, file system as jfs2, Number of copies 2, Number of PV to use, to keep this copies are 2 , create LV in rootvg with only 1 LP.

To request a logical volume named lv05 with a minimum size of 10MB, type:
#extendlv lv05 10M

Calculating the Size of LV

Number LP X Size of Single PP = Total LV size













LETS UNDERSTAND LV-STATE IN LOGICAL VOLUME AND WHAT IT MEANS

Create LV abc with only 1 LP
# mklv -y abc datavg 1
abc
Where y means use our logical device name i.e abc, test, backup. Instead of system define name i.e lv00, lv01

or

#mklv -y test -t  jfs2 -c 2 datavg 1
test

Check lv name test is created or not
# lsvg -l datavg

Check the state, without file system created on it.
# lslv abc
LOGICAL VOLUME:     abc                    VOLUME GROUP:   datavg
LV IDENTIFIER:      00cf3f9d00004c000000010577737308.14 PERMISSION:     read/write
VG STATE:           active/complete        LV STATE:       closed/syncd
TYPE:               jfs                    WRITE VERIFY:   off
MAX LPs:            512                    PP SIZE:        128 megabyte(s)
COPIES:             1                      SCHED POLICY:   parallel
LPs:                1                      PPs:            1
STALE PPs:          0                      BB POLICY:      relocatable
INTER-POLICY:       minimum                RELOCATABLE:    yes
INTRA-POLICY:       middle                 UPPER BOUND:    32
MOUNT POINT:        N/A                    LABEL:          None
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?:     NO

Above command create a LV abc on rootvg with only one Logical partaion.
See the LV STATE is  closed/syncd, since this abc is newly created LV its LV STATE is closed/synced.

LV STATE : opened/syncd ---- LV is mounted and synced means its mirrored
Whenever a LV is newly created its LV STATE will be closed/synced, and when a file system is created on this newly created LV, then state will be opened/syncd.
Simply :- Closed means not mount, Opened means mounted  
               Closed/stale means not mounted, stale means LV is not synced

There is no file system created on this LV abc that’s why LV STATE is closed/syncd.
Whenever a file system is created and that file system is mounted on LV. LV STATE changes to opend/synced.

See below output, I will create LV then I create a File system, upto here also LV STATE is closed/syncd… after this I mounted filesystem then its state changes to opend/synced.

Finally, LV STATE according to me is Logical volumes state and this state determine weather a filesystem is created on LV or not.


# lslv test
LOGICAL VOLUME:     test                   VOLUME GROUP:   datavg
LV IDENTIFIER:      00cf3f9d00004c000000010577737308.14 PERMISSION:     read/write
VG STATE:           active/complete        LV STATE:       opened/syncd
TYPE:               jfs2                   WRITE VERIFY:   off
MAX LPs:            512                    PP SIZE:        128 megabyte(s)
COPIES:             2                      SCHED POLICY:   parallel
LPs:                1                      PPs:            2
STALE PPs:          0                      BB POLICY:      relocatable
INTER-POLICY:       minimum                RELOCATABLE:    yes
INTRA-POLICY:       middle                 UPPER BOUND:    32
MOUNT POINT:        /home/cmsadmin/scripts LABEL:          /home/cmsadmin/scripts
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
To make a logical volume in volume group datavg with one logical partition and a total of two copies of the data, type:

#mklv -y abc -c 2 datavg 1
abc
#
To request a logical volume with a minimum size of 10MB, type:
#mklv datavg 10M #

To make a logical volume in volume group datavg with nine logical partitions and a total of three copies spread across a maximum of two physical volumes, and whose allocation policy is not strict, type:

#mklv –y abc -c 3   -u 2   -s n datavg 9

Creation Of Logical Volumes
 
Create LV abc with only 1 LP
# mklv -y abc datavg 1
abc
Where y means use our logical device name i.e abc, test, backup. Instead of system define name i.e lv00, lv01

or

#mklv -y test -t  jfs2 -c 2 datavg 1
test

Check lv name test is created or not
# lsvg -l datavg

Check the state, without file system created on it.
# lslv abc
LOGICAL VOLUME:     abc                    VOLUME GROUP:   datavg
LV IDENTIFIER:      00cf3f9d00004c000000010577737308.14 PERMISSION:     read/write
VG STATE:           active/complete        LV STATE:       closed/syncd
TYPE:               jfs                    WRITE VERIFY:   off
MAX LPs:            512                    PP SIZE:        128 megabyte(s)
COPIES:             1                      SCHED POLICY:   parallel
LPs:                1                      PPs:            1
STALE PPs:          0                      BB POLICY:      relocatable
INTER-POLICY:       minimum                RELOCATABLE:    yes
INTRA-POLICY:       middle                 UPPER BOUND:    32
MOUNT POINT:        N/A                    LABEL:          None
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?:     NO

# smit crfs
Add JFS2->Add an Enhanced Journaled File System on a Previously Defined Logical Volume -->
LOGICAL VOLUME name                                 test                                                                 +
* MOUNT POINT                                        [/home/cmsadmin/scripts]

upto here LV STATE is closed/syncd

#mount /home/cmsadmin/scripts
Know is have mounted my FS, LV STATE changes suddenly to opend/syncd
NOTE: -
No need to create LV first and then File system, you can create both at same time. No need to follow the above steps just use smit fs …create fs and enter the desire values ur LV and FS both will get created

If your are going to create a File system on Logical volume say abc, then you can create only one FS on one logical volume, you cannot create another file system on same Logical volume abc. This funda clear the point that only File system creation will create logical volume also.



Removing Logical volume

First unmount the file system
# unmount /home/cmsadmin/scripts
if you are in the location /home/cmsadmin/scripts …then umount command throws error

umount: 0506-349 Cannot unmount /dev/test: The requested resource is busy.

Then remove
# rmlv -f abc
rmlv: Logical volume abc is removed.

# rmlv -f test

Mirroring Logical volume or File system

#mklv -y test -t  jfs2 datavg 4

#mklvcopy fslv03 2 hdisk0 hdisk1
where fslv03 is test
create a Mirrored copy of test on 2 disk

#syncvg –v datavg

or

smit mklvcopy

To reduce the number of copies of each logical partition belonging to logical volume lv0112, enter:
#rmlvcopy lv0112 2

Reduce the fslv03 LV from 2 LPs to 1 LP i.e remove the copy
#rmlvcopy fslv03 1 hdisk1


Understanding Copies, Distribution and In band fileds of lslv –l command
$ lslv -l fslv03
fslv03:/backup
PV                COPIES        IN BAND       DISTRIBUTION
hdisk0            080:000:000   0%            000:000:079:001:000
hdisk1            080:000:000   0%            000:000:076:004:000

This command shows the file system is located on how many PV.

Copies: -       Will show the copy or mirrored copy of Logical volume.
First field indicate number of logical Partitions, if last 2 fields are 000 and 000 this means that mirrored are reside on different PV.

From the above output you came to know that, Number of LP used by /backup or fslv03 file system is 80.

Last 2 fields are 000:000 means mirrored copies lies on different PV, copy are not on same PV.

In Band: -     0% means No free PPs are available on any region.
100% means if any free PPs found on any region then it will show you 100%.

Distribution: - 

                 000        :       000          :    000  :       000          :    000                                   
            Outer edge : Outer Middle : Center : Inner Middle : inner edge

Ex:-   hdisk0            080:000:000   0%            000:000:079:001:000
From copies we came to know that it has total 80 LPs, mirrored on different PVs and
From Distribution we came to know that How total 80 LPs is distributed in the region,
i.e we have Total 80 LPs, 79 LPs is on center and 1 LP lies on Inner middle, similarly

hdisk1            080:000:000   0%            000:000:076:004:000

Since it’s a mirrored copy, it show total 80 LPs, this 80 LPs is divided as 76 LPs on center and 4 LPs on inner middle.

$ lslv -l fslv02
fslv02:/syblog
PV                COPIES        IN BAND       DISTRIBUTION
hdisk0            040:000:000   100%          000:040:000:000:000
hdisk1            040:000:000   0%            040:000:000:000:000

FIRST UNDERSTANDING FREE DISTRIBUTION

#lspv hdisk1
PHYSICAL VOLUME:    hdisk1                   VOLUME GROUP:     rootvg
PV IDENTIFIER:      00cf3f9d9c4cab2f VG IDENTIFIER     00cf3f9d00004c000000010577737308
PV STATE:           active
STALE PARTITIONS:   0                        ALLOCATABLE:      yes
PP SIZE:            128 megabyte(s)          LOGICAL VOLUMES:  13
TOTAL PPs:          546 (69888 megabytes)    VG DESCRIPTORS:   1
FREE PPs:           243 (31104 megabytes)    HOT SPARE:        no
USED PPs:           303 (38784 megabytes)    MAX REQUEST:      256 kilobytes
FREE DISTRIBUTION:  29..00..00..105..109
USED DISTRIBUTION:  81..109..109..04..00


Consider the above output, just concentrate on Free and used distribution.
This show the area in which free PP’s available and area in which PPs are used.
The same distribution is also shown by following command, you will no get an clear idea about free PPs, Used PPs and Region in which they belong, with lspv hdisk1 command, execute the below command the get a clear picture of PPs.
#lspv –p hdisk1

Know lets discuss the lspv hdisk1 command

FREE DISTRIBUTION:  29  ..  00 ..  00 ..  105 ..  109
                               Oe  ..  om ..   c ..   im   ..   ie
This means Free that 29 Free PPs are available at outer edge, 105 Free PPs are available at Inner middle and 109 free PPs are available at inner edge regions.
Where oe is outer edge, OM is outer middle, c is center and im is inner middle and so on.

Similar explanation is for Used Distribution.









Utilizing Free PPs

$ lspv -p hdisk0
hdisk0:
PP RANGE      STATE           REGION         LV NAME       TYPE             MOUNT POINT
  1-1             used             outer edge    hd5                 boot           N/A
  2-67            free             outer edge
 68-70           used             outer edge    hd6                 paging         N/A
250-328        used             center           fslv03              jfs2           /backup
329-329        used             inner middle  fslv03              jfs2           /backup
330-437        free                       inner middle
438-546        free                       inner edge


Free means Free PPs are available in that region, used means all PPs are used.
You can get same output from lspv hdisk0 command also.

Create a file anywhere and specify the PP range in below format only
# vi test
hdisk0:330
hdisk0:331
save it exit

# mklv -y ltest -t jfs2 -m /home/cmsadmin/test rootvg 2
ltest
Will create ltest with 2 PPs.

#lspv –p hdisk0
330-331   used    inner middle  ltest               jfs2       N/A
332-437   free    inner middle
438-546   free    inner edge

Note:- Creating to use exact PP Range is not recommended.


STALE PP’S IN LV
#lslv fslv03
If LV STATE:- Stale, then it means LV is not synchronized, and stale PPs shown will be 2 and if its synched the stale PP will be 0 and if Logical volume is mirrored and if its copies is not up to date then also it shows you stale


                        Reorganize the logical volume

If the intra physical policy of any LV is changed after the LV is created, PPs related to this LP are not automatically relocated.

Reorgvg command is used to redistribute the PPs according to our preferred policy.
#Smit reorgvg

          or


Reorganize fslv02 and fslv03 from the datavg.

#reorgvg datavg fslv02 fslv03


RENAMING LOGICAL VOLUME NAME

Create a mirrored LV
# mklv -y jill -t jfs2 -c 2 -u 2 rootvg 2

Rename the LV name from jill to jid
#chvg –n jid jill







PHYSICAL VOLUMES RELATED COMMANDS

To display the status and characteristics of physical volume hdisk1 by physical partition number
# lspv -p hdisk1
hdisk1:
PP RANGE  STATE   REGION        LV NAME             TYPE       MOUNT POINT
  1-1     used    outer edge    hd5                 boot       N/A
  2-70    free    outer edge
 71-110   used    outer edge    fslv02              jfs2       /syblog
111-126   used    outer middle  hd6                 paging     N/A
127-166   used    outer middle  fslv01              jfs2       /sybdata
167-206   used    outer middle  fslv00              jfs2       /sybase

To display the status and characteristics of physical volume hdisk3, enter:
#lspv hdisk3

To display the status and characteristics of physical volume hdisk5 using the volume group ID, enter:
#lspv -v  00014A782B12655F hdisk5

To close physical volume hdisk03 enter:
#chpv -v r hdisk03
The physical volume is closed to logical input and output until the -v a flag is used.

To open physical volume hdisk03, enter:
#chpv -v a hdisk03
The physical volume is now open for logical input and output.

To stop the allocation of physical partitions to physical volume hdisk03, enter: #chpv -a n hdisk03
No physical partitions can be allocated until the -a y flag is used.

To clear the boot record of a physical volume hdisk3, enter:
#chpv -c hdisk3


MIGRATING DATA FROM ONE PV TO ANOTHER WITHOUT ANY LOSS.


#mklv –y seme –t jfs2 datavg 1
#smit crfs … create file system name seme
#mount the file system and create a data
# migratepv -l seme hdisk0 hdisk1
Know execute migratepv command which move your file system from hdisk0 to hdisk1, do this only if you find high I/O on hdisk0 and users are getting low performance.


 


VOLUME GROUP RELATED COMMAND

Will list all Active VG’s in a system.
#lsvg -o

Physical Volumes Definations
Physical volumes, also known as direct access storage devices (DASDs), are
fixed or removable storage devices

Block is a contiguous, 512-byte region of a physical volume

Partition is a  set of blocks (with sequential cylinder, head, and sector numbers) contained within a single physical volume.

physical volume is divided into five regions (outer_edge, outer_middle,center, inner_middle, and inner_edge)

Limitation of LVM for VG, PV, PP, LP.

Volume Group: -
Maximum volume group you can create on each system is only 255

Physical Volumes: -
 Max PV’s per VG : - 32 (Normal VG) selected
 Max PV’s per VG : - 128 (BIG VG) selected
         
Physical Partitions: -

If Big VG is selected, then max PP will be 1016 for 128 disk drives and 1016 for
32 disk drive in case of Normal VG.

Logical/Physical Partition Size: -
Default SIZE is 4mb and max size ranges from 2 mb to 1024 mb.
This value get divided by total number of disk size in single VG.

For ex: if we have 3 disk of size 400MB each, then Total disk size is 1200 MB
In volume group say datavg, and you have selected a PP size of 4 MB, then total PP’s on this VG will be calculated as
1200 /  4 : - 300 Physical partition is possible on this datavg volume group


List logical volumes by VG Name and there characterstics
lsvg –l rootvg
# lsvg -l rootvg
rootvg:

LV NAME             TYPE       LPs   PPs   PVs  LV STATE      MOUNT POINT
hd5                 boot            1     2     2    closed/syncd  N/A
hd6                 paging        16    32    2    open/syncd    N/A
hd8                 jfs2log          1     2     2    open/syncd    N/A
hd4                 jfs2               1     2     2    open/syncd    /
hd2                 jfs2             18    36    2    open/syncd    /usr

Give information about all PV in system.
$ lsvg -p rootvg
rootvg:
PV_NAME           PV STATE          TOTAL PPs   FREE PPs    FREE DISTRIBUTION
hdisk0            active            546         299         69..13..00..108..109
hdisk1            active            546         379         69..13..79..109..109

CALCULTAING DISK SPACE AND PP SIZE

$ lsvg rootvg
VOLUME GROUP:       rootvg                   VG IDENTIFIER:  00c493ae00004c0000000103ff22db4d
VG STATE:           active                   PP SIZE:        128 megabyte(s)
VG PERMISSION:      read/write               TOTAL PPs:      1092 (139776 megabytes)
MAX LVs:            256                      FREE PPs:       624 (79872 megabytes)
LVs:                14                       USED PPs:       468 (59904 megabytes)
OPEN LVs:           13                       QUORUM:         1
TOTAL PVs:          2                        VG DESCRIPTORS: 3
STALE PVs:          0                        STALE PPs:      0
ACTIVE PVs:         2                        AUTO ON:        yes
MAX PPs per VG:     32512                                    0
MAX PPs per PV:     1016                     MAX PVs:        32
LTG size (Dynamic): 256 kilobyte(s)          AUTO SYNC:      no
HOT SPARE:          no                       BB POLICY:      relocatable


Suppose we have a 2 disk of 72 GB’s each i.e Total 139776 megabytes or 144 GB,
And we are adding this to a single VG, say datavg, know before creating any VG we have to decide the partition size in MB, i.e what is the size of each PP in this VG.

If we hve selected PP size as 128, then its get divided by Total size of disk added to a single VG i.e datavg, as we hve 2 disk of 144 GB it will be 139776 in MB’s, out input value i.e 128 PP size will give us a below Total Number of partition we can create.

139776 ( size of all disk in single VG)/ 128 ( PP size selected while adding VG) = 1092  i.e we can create total 1092 partitions on datavg volume group.

If we select a PP size of 512 MB, then total PP we can create on This VG is: - 273 only.
if you increase the PP size, then you are decreasing the number of partition on single VG.

Before creating any VG, this PP size is to be keep in mind.

See below the ouput of single disk, I have just selected hdisk1

$ lspv hdisk1
PHYSICAL VOLUME:    hdisk1                   VOLUME GROUP:     rootvg
PV IDENTIFIER:      00cf3f9d9c4cab2f VG IDENTIFIER     00cf3f9d00004c000000010577737308
PV STATE:           active
STALE PARTITIONS:   0                        ALLOCATABLE:      yes
PP SIZE:            128 megabyte(s)          LOGICAL VOLUMES:  12
TOTAL PPs:          546 (69888 megabytes)    VG DESCRIPTORS:   1
FREE PPs:           379 (48512 megabytes)    HOT SPARE:        no
USED PPs:           167 (21376 megabytes)    MAX REQUEST:      256 kilobytes
FREE DISTRIBUTION:  69..13..79..109..109
USED DISTRIBUTION:  41..96..30..00..00


PV always inhert PP size of VG’s PP size, due to this you can calculate how many PP’s can be created on this single disk.

69888 / 128 = 546 i.e 546 Partitions can be created on this single disk.

Create VG
Smit mkvg

or

#mkvg –f –y “newvg” –s 8 hdsik5

s stands for: -  PP size, 8 is PP size in MB i.e create VG with PP size of 8 MB.
f stands for: - Force creation of VG (this is optional)

Create VG of 2 MB PP size, with maximum number of PP per vg,
#mkvg -s 2 -t 2 -y newvg hdisk1
Maximum PP available per VG by AIX is 2032, here we have givel a T-factor as 2 therefore 2032 X 2 =  4064 MB  or Total size of disk you get is 4 GB.

Remove VG
Smit reducevg2

To remove physical volume hdisk1 from volume group vg01, enter:
#reducevg vg01 hdisk1

To remove physical volume hdisk1 and all residing logical volumes from volume group vg01 without user confirmation, enter the following command. Attention: The reducevg command with the -d flag automatically deletes all logical volume data before removing the physical volume.
#reducevg -d -f vg01 hdisk1

Change VG, ExtendVG, remove PV from VG
Smit vgsc

To add physical volumes hdisk3 and hdisk8 to volume group datavg, enter:
#extendvg datavg hdisk3 hdisk8
or
Extend rootvg
#extendvg –f rootvg hdisk5

To remove a added disk hdisk5 from rootvg execute the below command
#reducevg rootvg hdisk5

or

smit vg à show/characterstics of VG à

          VG Name                :-       rootvg
          PV Name                 :-       hdisk5
          Force deallocation     :-       no or yes
          Press Enter   
         
Show what major numbers are free, that is being assigned to device
# lvlstmajor
41...

Almost all the devices in /dev directory has the major and minor number.

List Max. Logical track group size on hdisk0
$  lquerypv -M hdisk0
256

Extend Volume group size, if LUN size is increased through storage manager, If original size of newvg is 5GB detected by AIX kernel and if you have increased the LUNS from 5GB to 10 GB, this will not understand by AIX, it will still show you 5 GB, to regain the increased size just execute the below command, it will take the increased size and know if you run lsvg newvg you will get 10 GB.
#chvg –g newvg












                   FILE SYSTEM

Block is a contiguous, 512-byte region of a physical volume
2 Type of block : -  Data block and Indirect block.
Data block: - Contain Data
Indirect block: - Contain pointer to data block.

Super Block is first addressable logical block on file system, keeps information related to file size, file name, number of inodes, date/time of creating file. Always written or placed  in block 31.

By default a single file within a file system have allocated some space i.e in unit in block of 4096 bytes (4 k). This means every file in file system is allocated with default block unit of 4096 bytes (4 k).

Data structures that contain information about files in Unix file system, that are created when a file system is created. Each file has an inode and is identified by an inode number (i-number) in the file system where it resides. inodes provide important information on files such as user and group ownership, access mode (read, write, execute permissions) and type.
There are a set number of inodes, which indicates the maximum number of files the system can hold. A file's inode number can be found using the ls -i command, while the ls -l command will retrieve inode information.
Inodes follows after super block, which contain identifying information for files such as file type, size, permission, users/groups/others ownership, user ID, group ID, Number of links, time modified, time accessed, time changed, Contain pointer to data block.

Will show you 
          # ls –li /nbtest
16384 drwxr-xr-x   3 root     system         4096 Nov 29 10:46 changes
24608 drwxr-xr-x   3 root     system          256 Dec 31 02:30 scripts
Where 16384, 24608 are number of Inodes associated with file or directory.

Will list you inode information on file,
# istat smit.log
Inode 4340 on device 10/8       File
Protection: rw-r--r--
Owner: 1005(cmsadmin)           Group: 3(sys)
Link count:   1         Length 100696 bytes

Last updated:   Tue Jan 10 17:06:46 IST 2006
Last modified:  Tue Jan 10 17:06:46 IST 2006
Last accessed:  Thu Dec 29 15:24:38 IST 2005

Last updated: - If the size of file increased then this field show you change,
Last modified: - If you have open a file and added something in it ot you have just
   modified the content of file then this field show you change. If
   modified time changes updated time also changes.
Last accessed: - File access lastly.

Partition is a  set of blocks (with sequential cylinder, head, and sector numbers) contained within a single physical volume.

                   FILE SYSTEM FRAGMENTATION


Since by default a JFS allocate 4096 bytes of block size to each file.
Fragmentation provide a way to allocate pieces of 4096 bytes logical block to file and directory.

Fragment size is applied at creation of file system time only, valid option are 512, 1024, 2048, 4096 bytes. Default is 4096 bytes.

Suppose your file size is of 2000 bytes or you have created a file of 2000 bytes, default fragment size is of 4096 byte, i.e one block is of 4096 bytes, File system allocates data block to a single file of 4096 bytes.

So this 2000 bytes size file will allocate only 2000 bytes, rest of the block space is unused and its also unusable by another file.

NO FRAGMENTATION

FILE SIZE IS OF 2000 BYTES

 






This Free space is cannot be used by another files because the no fragment size is selected while creating file system, so by default JFS allocates default block size of 4096 bytes i.e every file is allocated with a block of 4096 bytes. If the file size is of 4000 bytes then a complete block is used, but in above case only half of the block is used and remaining space in a block is unusable by another file.
===============================================

FRAGMENTATION
FILE SIZE IS OF 2000 BYTES
FRAGMENT SIZE TAKEN WHILE CREATING FILE SYSTEM IS 1024 BYTES

                         2000 -  BYTES
 
                                                                                                                                                                                                                                                                                                                                                                   1024 block               1024 block               1024 block               1024 block                                                                                                              



Free fragment can be used by another files. See here if fragment size is imposed on file system is 1024, then file is being allocated a block size of 1024 bytes only, then our 2000 bytes file will use on 2 block i.e 1024 + 1024 = 2028. But still the last 28 block space is unused. Because 28 bytes is still left from above blocks.

If fragment is enabled, then a disk block is made of size as specified in fragment size, as above case its 1024 therefore a disk block of 1024 bytes is being allocated to every files.

Large fragment block size can also improves disk I/O, suppose file size is of 4096 bytes and fragment size is of 4096 bytes, then a single disk block is read while performing read operation by disk  to read a single data, it mean only single disk I/O operation is being performed, therefore less disk I/O operation is there, if fragment size is of 2094 block, then two I/O operation is to be performed to read a same data, thus I/O is increased, increase in I/O cause performance degradation.

This is how fragmentation works.



                   NBPI (NUMBERS OF BYTES PER INODES)


JFS only support NBPI and fragment size, this is not valid or used by JFS2 file systems.
Disk space is only one of the file system resources required by files and directories: each file or directory also requires a disk i-node.

If more or fewer number of i-node’s are required then the default i-node’s given by JFS.
This number of disk i-nodes can be specified at file system creation as the number of bytes per i-node (NBPI). For example, an NBPI value of 1024 causes a disk i-node to be created for every 1024 bytes of file system disk space i.e if disk block size is of 1024 bytes and also file system NBPI value is of 1024 bytes, then a single file of 1024 bytes refer 1 inode, if NBPI value is 512 bytes then a single file of 1024 bytes refer 2 inodes in a single file system.

If NBPI value is = 4096 bytes, then an inode is created for every 4096 bytes in file system, you can say that every 4096 byte, a block is constructed , so every 4096 byte of block a inode is created.

If NBPI value is small, then you can use large Inode.
If NBPI value is large, then you can use less inodes means you can create less files.

NBPI and Fragment fields are not supported in JFS2.


                   ALLOCATION GROUP SIZE


For grouping related inodes, allocation group size is required, inode’s are grouped into logical units of 8,16,32, or 64 MB, within file system.










                             FILE SYSTEM


JFS support individual file size from 2 GB to 64 GB.
JFS2 support individual file size of 1 TB.

JFS FILE SYSTEM LIMIT CALCULATION
MAX FILE SYSTEM SIZE IN BYTES = FRAGMENT SIZE  x  228
EX: IF Fragment and NBPI value is 4096 then total file system size in bytes will be as: - 212 (where 212 =4096) X 228 =  1 Terabyte
                             OR
MAX FILE SYSTEM SIZE IN BYTES = NBPI x 224

NOTE: - While creating file system an option appears like mount option,
Which give you 2 sub option like nodev and nosuid

Nodev means: - You cannot run any open system calls,
Nosuid means: - You cannot run any program if suid is not set on a program.
EX:-  smit fsà Add jfs à datavg à mount options.


Smit fs, smit jfs (fast path for jfs), smit jfs2 (fast path for jfs2), smit crjfslvstd (Create JFS on a previously defined logical volume),
Smit crjfsstd (Create standard JFS)
Smit cejfs2lvstd (Create JFS2 on a previously defined logical volume)

                             COMPRESSED FILE SYSTEM


This file system saves disk space by allowing logical block to stored on disk smaller than the full block size of 4096 bytes.
Compress or decompress make our logical block size to be resized.
If 2 block are required to store a file on disk, and if a file system is compress then it will use only 1 block inspite of 2 blocks, and when a file decompress then again one more block is required.

Root file system must not be compresses, /usr compression is not recommended. 50 CPU cycles is required to compress 1 byte of data, 10 CPU cycles per byte for decompression.


                   LARGE FILE ENABLED FILE SYSTEM



In Large file enabled, if data or file stored before 4 MB file offset is allocated in 4096 byte block, after 4 MB file offset is allocated in 128 KB size disk block each.

            1
             2
             3
             . 
            .
          1023    
          1024
                                     

Each block is of 4096 bytes, Total 1024 disk blocks required for      4 MB of file.           

 

            1025
            1026
             .
             . 
             .
             1055    
             1056


                                      Each block is of 128 KB, Total 32 contiguous disk block are required for each 128 KB of disk block.
i.e Here Each 128 KB block consist of 32 block of 4096 bytes.
See the calculation below





Simply follow this formula to calculate: -

          1 KB  = 1024 bytes,
          1 MB  = 1024 KB.

Consider a file of 132 MB, see how its divided in file system.

First 4 MB will come under the category of 4096 blocks offset,
i.e (1024 * 4 KB disk block = 4 MB) or (1024 * 4 * 1024 bytes disk block = 4 MB)

The remaining 128 MB is above 4 MB, therefore comes under the category of 128 KB disk block, therefore this 128 MB size data is stored on 128 KB disk block as
(1024 * 128 KB = 128 MB) or (1024 * 128 * 1024 bytes = 128 MB)

Lets calculate how many disk block of 4096 comes under 128 KB disk block size:-

                             First Converting 128 KB into Bytes
                             128 X 1024    =  131072 bytes i.e 128 KB
                  
                             Dividing the total value by 4096 since each disk block is of 4096.
131072 / 4096          = 32, i.e 32 contiguous disk block of 4096
bytes is required for each 128 KB of disk block  

(1024 * 4 KB disk block)      +       (1024 * 128 KB)       =       132 MB
          4 MB                                         128 MB         =       132 MB

Consider in Bytes: -
(1024 * (4 * 1024))            +       (1024 * (128 * 1024)) 
4194304 bytes                   +       134217728 bytes     =    138412032 bytes



                             JOURNAL LOG


If any changes is made to FS, its first logged in jfs2log, then a changes is applied to JFS, this is done sync system call, which run after every 60 seconds.

Contains sync pointer, if any thing is written on disk, and sudden crash happens, then after reboot data will be written to the area from where its stopped last, i.e continuity is maintain by JFSLOG, disk read from jfslog and write to the disk.
         
                                      INLINE LOG


It will log all read/write operation within file system.








                             SPACE MANAGEMENT

Show used space in 512 byte blocks
#df –I

                             CONTROL GROWING FILES


Ø     /var/adm/wtmp
Ø     /var/spool/*/*
Ø     $HOME/smit.log
Ø     $HOME/smit.script
Ø     $HOME/smit.transaction
Ø     $HOME/websm.log
Ø     $HOME/websm.script
Ø     /etc/security/failedlogin
Ø     /var/admsulog
Ø     /tmp

Clearing the printer Queue
#stopsrc –s qdaemon
#rm /var/spool/lpd/qdir/*
#rm /var/spool/lpd/stat/*
#rm /var/spool/lqdaemon/*
#startsrc –s qdaemon



                                      PAGING SPACE
         

Whenever a program or application is executed, it come in RAM first become a Process/daemon or for process to be actively running, it must be loaded in memory. When its loaded into memory or whenever any program or binary comes in memory it become a process, and it is assigned with number of 4k areas called page frame in Real Memory.

As more processes are loaded into memory, memory becomes full, not everything that resides in memory is active, some processes are in sleep state, some in wait state, when memory gets full, memory is scanned to locate those page frames that are not required currently or less recently used, whenever any process found to be in this state, a 4KB block or page is allocated and data from the page frame is moved to disk, this is called as paging space.

Number of page frame move to disk is called page out (po).
Number of page frame needed and brought back in memory is called page in (pi).

Paging is temporary holding area for inactive processes, its not substitute for real memory. Machine should have enough Real memory to hold all active processes, increasing paging space on disk will not solve this problem, when your machine don’t have enough real memory, you have increased paging space, but the number of active processes are very high, then your machine will reach a constant state of paging called thrashing.

NOTE: - Thrashing is result of less Physical memory.
                    
                             PAGING SPACE CREATION

 If Physical RAM is >= 64 MB then
          Paging space = Physical RAM size + 16 MB
If Physical RAM is < 64 MB then
          Paging space = twice the Physical RAM size

                         LOW PAGING SPACE INDICATION

If paging space is low on disk, also your Real memory is full but have many inactive processes but there is no more space available on disk to perform page out process, then the system will unable to start any new processes until some running processes is terminated or released to disk, so if you see below messages then paging space is less: -

Init: paging space is low, Cannot fork no swap space, No enough memory
Fork function failed, Fork () system call failed, Unable to fork, too many processes, Fork failure – not enough memory available, Fork function no allowed, Cannot fork: not enough space.

List paging Summary report
$ lsps -s
Total Paging Space   Percent Used
      4096MB              39%


          ADDING/CHANGING/REMOVING/DECREASING PAGING SPACE


Paging space created during system installation is named as hd6, after installation name will be paging00, paging 01…. and so on.

#more /etc/swapspaces contain list of paging space that will be activated at system startup.

*
* This file is modified by the chps, mkps and rmps commands and referenced
* by the lsps and swapon commands.

hd6:
        dev = /dev/hd6

                             INCREASING PAGING SPACE

To increase the size of paging space more then the currently installed, then
#Smit mkps

  Volume group name                                   rootvg
  SIZE of paging space (in logical partitions)       [16]                       #
  PHYSICAL VOLUME name                                 hdisk1                      +
  Start using this paging space NOW?                  yes                     +
  Use this paging space each time the system is       yes                     +
          RESTARTED?


Volume group, select the VG, if you are increasing the paging space, it is better to use different disk or VG for better performance.

Size in LP, if you each PP size is of 128 MB, since LP = PP, then LP is also of 128 MB
If your current paging space is of 2 GB i.e  16 LPs, and you want to increase up to 4 GB, then enter 16, then your total paging will 4 GB.

Select the PV, its better to select different PV, then the PV on which currently paging space is defined, for improve in performance.
 
                             OR

#mkps –s 16 –n –a rootvg
-s : - define size in LPs
-n : - Activate paging space immediately
-a : - Activate paging space on every restart and add a entry in /etc/swapspaces




                             ADDING NEW PAGING SPACE

#smit mkps

  Volume group name                                   datavg
  SIZE of paging space (in logical partitions)       [2]                                                                   
  PHYSICAL VOLUME name                                hdisk1                                                                    Start using this paging space NOW?                      yes                                                                 
Use this paging space each time the system is       yes                                                                  
          RESTARTED?

                   Or

#mkps –s 2 -n –a  datavg hdisk1

          ANOTHER METHOD OF CREATING NEW PAGAING SPACE

Step I
#smit mklv
Logical volume NAME                                [paginglv00]
* VOLUME GROUP name                                   rootvg
* Number of LOGICAL PARTITIONS                       [2]                                                                   
  PHYSICAL VOLUME names                              [hdisk1]                                                              
  Logical volume TYPE                                [paging]                                                             

                   Or
#mklv –t paging –y paginglv00 rootvg 2 hdisk1

Step II
#swapon /dev/paginglvoo (Activate the paging created)

Step III
# lsps –a (check the paging space listed)

                             DECREASING PAGING SPACE

This is done by smit chps or chps command, infact while decreasing the paging space a scripts name shrinkps is called to reduce the active paging space size.


1.            Create temp. paging space from the same VG on which paging space is to be reduced.
#mkps -a -n -s 30 rootvg hdisk0

2.            Deactivate the original paging space i.e hd6.
#swapoff /dev/hd6

3.            Reduce the original paging space
#chps –d 16 hd6 ( reducing the paging space, that reducing 16 LPs)
4.            Reactivate the origignal paging space
#swapon /dev/hd6

                        or
          #swapon –a (To activate all paging space defined in /etc/swapspaces)


5.            Deactivate and remove temporary paging space
#swapoff /dev/paging00


#chps –d 2 paging00 (decreasing user specific paging space by 2 LP’s)




















                                      BACKUP/RESTORE     
         

UNDERSTANDING HOW DATA IS WRITTEN/READ FROM/TO TAPE(AIX) by Amrik

Tape devices support multiple tape files.  Tape files are the result of a backup/cpio/tar/dd type command, where the device is opened, written to, and closed.  Because tapes allow large
Quantities of data to be written on a single tape, several backups (that is, tape files), may be combined on one physical tape. Between each tape file is a "tape file mark" or simply "file
Mark".  The device driver to indicate where one tape file ends and another begins uses these file marks.

                                  B       E
                   <-------   O       O   ------->
                                  T       T
              __ ___________________________ ______________
     physical | \            |       |      \             |physical
     beginning|  \           | tape  |       \            | end
       of     |   \          | file  |        \           |  of
      tape    |    \         | mark  |         \          | tape
              |_____\________|_______|__________\_________|

Note that there is a distinction between the beginning of tape (BOT) side of a file mark and the end of tape (EOT) side of a file mark.  If the head is on the BOT side of a file- mark, "tctl fsf
1" command will move only to the EOT side of the same file mark. With the 1/4" tape drive, writing can only take place sequentially, or after blank tape has been detected.  You cannot
write over data on the tape (except at BOT).  If you wish to add data to a tape which has been written and then rewound you should space forward file mark until an error occurs.  Only then can you start writing again.

With an 8mm tape drive, writing can only take place before blank tape, an EXTENDED file mark, or at BOT.  Thus if several backups have been made on one tape and you wish to overwrite one of the backups, position the tape to the place you wish to start writing and issue the following commands:
                                                    tctl bsf 1
                                                    tctl eof 1

The first command skips back to the BOT side of the same file mark. The second command rewrites the file mark (writing is allowed before extended file marks). The erase head will erase
data ahead of the write head, so that after writing the file mark the head will be positioned before blank tape. Only after this may you start writing over data in the middle of the tape.  (All data beyond where you are currently writing will be lost).  Note that you cannot write over short file marks.  In order for this to work, the tape must have been written with extended file marks (use smit to change this). With the 9-track drive writing can take place anywhere on the
tape although overwriting single blocks of data is not supported. On the 8mm drive extended filemarks use 2.2 megabytes of tape and can take up to 8.5 seconds to write.  Short filemarks use 184K and take up to 1.5 seconds to write.

BLOCK SIZES:

When data is written to tape it is written in blocks.  The blocks on a tape are separated by inter-record gaps.  It is important to understand the structure of the written tape in order to
Understand the problems, which can occur with changing block sizes.

In fixed block size mode all blocks on the tape are the same size.  They are the size of the block size set in the device configuration.  All read()s and write()s to the tape drive must be a multiple of the fixed block size.

In fixed block mode a read () will return as many blocks as needed to satisfy the read() request.  If a file mark is encountered while reading the tape only the data up until the file mark will be returned.

It is not possible for the tape drive to read a tape whose block size is not the same as the block size in the device configuration.  (Unless the device configuration is in variable size blocks.) In variable block size (0) mode, the blocks written on the tape are the size of the read() and write() requests to the device driver.  In this case, the actual block sizes on the tape can be
changed using the options to the backup commands (tar -C, cpio -C, backup -C).

In variable mode, read() requests greater than size of the block on the tape will return only the data from the next block on the tape.  It is this feature that allows tapes written in any block
size (fixed or variable) to read with the dd command (the output from the dd command may be piped to restore, tar, or cpio for example.)  Note that backup, tar, and cpio cannot read all tapes by using a large block size because they assume there is an error if they get a short read().

                               dd ibs=128k obs=16k if=/dev/rmt0 | ...

The tape head is always positioned at an inter-record gap, file mark, or blank tape after reading or writing.

With the 8mm tape drive, using a fixed block size which is not a multiple of 1K is inefficient.  The 8mm tape drive always writes internally in 1K blocks.  It simulates the effect of variable
block sizes, but, for example, using a fixed block size of 512 bytes (or using variable block size and write()ing 512 bytes at a time) wastes one half of the tape capacity and gives only one half
the maximum transfer rate. To figure out a tape's actual block size try:

Don’t test this on live servers.
     1). Set the tape to variable block size.
     2). "dd if=/dev/rmt0 of=/tmp/dummy bs=128k count=1"
     3). "ls -l /tmp/dummy"
     4). The number of bytes in "/tmp/dummy" is the physical block size.

Many tape drives support both variable and fixed block sizes. Variable block mode writes block sizes the size of the write command issued (tar and backup specify this with the -b option).
In fixed mode, block sizes are fixed and all writes must be a multiple of the fixed block size.

Unix often internally chops larger reads and writes up into manageable pieces (often 65535, 65534, or 65532 bytes) before doing the actual reads and writes.  This means reads and writes of 64K bytes are often broken up into a 65535 byte record and a 1 byte record (In fixed mode the write will fail).  Block sizes >= 64K (-C128 and greater) should be avoided for this reason.  AIX does not break up read and write requests, but be aware of the situation on other machines.

If the tape is written in an unknown block size then set the device configuration in smit to use variable size blocks, use the "dd" command with a large input block size, and pipe it to the
restore command.  For example:
                                                         
                                      chdev -l rmt0 -a block_size=0
                                      dd if=/dev/rmt0 ibs=128k obs=16k | tar -tvf-

AIX has the World's Only Variable Block Size 1/4" tape drive. If you use SMIT to set the block size to a nonzero value, AIX treats the device as fixed block size, whether it is or not. By default, 8mm drives are set to the same size as 1/4", 512 bytes. This is wasteful, but
otherwise mksysb and installp would fail.

If you set the block size to 0, the device is treated as variable block size, and the size passed to write becomes the physical block size. Then if you use a sensible block size to dd, all should be wonderful.


Backup Command and SMITTY

                             MKSYSB

#Smit mksysb

                   OR

To generate a system backup and create an /image.data file to a tape device named           /dev/rmt0, type:-  
#mksysb -i /dev/rmt0

To generate a system backup and create an /image.data file with map files
#mksysb -m /dev/rmt1

To generate a system backup with a new /image.data file, but exclude the files in directory /home/user1/tmp, create the file /etc/exclude.rootvg containing the line /home/user1/tmp/, and type:
#mksysb -i -e /dev/rmt1

High-level shell command for backing up mounted file systems in the rootvg volume group. mkszfile -f must be called prior to mksysb in order to create the /.fs.size file that mksysb uses to determine which files will be backed up.

An 8mm tape drive is the preferred method of backing up your system because that  tape can be used to recreate the rootvg image if one or more physical volumes fail. Each of the file systems MUST have at least 500 blocks free when the mksysb backup is made. The system will need some work space in each file system when it is installing from a mksysb backup.
To utilize the full 2.3 gb tape capacity...
·         Set the blocksize to 1024
·         Edit the /usr/lpp/bosinst/diskette/startup2 file
o    Change the following line from 512 to 1024.  /etc/methods/chggen -a rmt0 -a block_size=1024
·         Create a new install/maint diskette
MKSYSB can create a BOOTABLE tape. Further, the data is archived in TAR format. In order to look at the names of files backed up by this command, perform the following:
  • tctl -f/dev/rmt1.1 fsf 3
  • tar -tvf/devrmt1.1
Example: mkszfile -f && mksysb /dev/rmt0
-f forces extending the /usr or /tmp file system if not enough working space (8 MB) exists. This command should ALWAYS succeed unless a tape has not been inserted into the archive device (eg., rmt0), or the tape is either write-protected or has defective media.



                                      MKSYSB IMAGE

BOS boot image: - Contain a copy of system kernel and device driver needed to boot from tape.
Mkinsttape image: - Contain image.data file and bosinst.data file
Dummy.toc: - Used to make mksysb tapes have same number of files as BOS install tapes.
Rootvg Data: - Contain all data from the backup

NON ROOTVG BACKUP

#smit savevg
1
Create /tmp/vgdata/vg_name/vg_name.data file, this file is same as image.data file of rootvg.
Or you can create file using command
#mkvgdata vg_name          i.e      #mkvgdata datavg

For excluding files from file system or if you want some files not to be backed up.
Create /etc/exclude.internalvg or /etc/exclude.rootvg
Vi /etc/exlude.internalvg
/utsarch/
/utsdb2/

Exclude /utsarch and /utsdb2 filesystem from datavg


RESTORE NON ROOTVG BACKUP
#smit restvg

To list the contents of a root volume group backup that is created with the savevg command, enter the following
#smit lsmksysb

To list the contents of a user volume group backup that is created with the savevg command, enter the following
#smit lsbackvg

To restore individual files from a root volume group backup, enter the following SMIT fast path:
#smit restmksysb

To restore individual files from a Non-root volume group backup, enter the following SMIT fast path:
#smit restsavevg

                                 BACKUP AND RESTORE COMMAND

  • Relative pathnames will have a ./ pre-fixed to their path.  These files will be restored relative to the current directory.
  • Absolute pathnames won't have the ., just the /.  These are restored with the full pathname to the exact directory as specified on the archive device.

Backup files by Name

backup -i [ -b Number ] [ -p [ -e RegularExpression ] ] [ -f Device ] [ -l Number ] [ -o ] [ -q ] [ -v ]

Options:-

-i: -     Specifies that files be read from standard input and archived by file name. If relative path names are used, files are restored relative to the current directory at restore time. If full path names are used, files are restored to those same names.

-v: -     List names of files being backed up

-f: -      Name of output device (typically de/v/rmt0 for tape drive)

-e: -     Won't attempt to compress or pack files that are greater than 24 MB.

-l: -      Limits the total number of blocks to use on the diskette device

-o: -     To create a Version 2-compatible backup by name, use the -o flag along with other flags required for backups by name. Files with attributes and values, such as user IDs and group IDs, that are too large for Version 2 systems will not be backed up. A message is displayed for each such file and each value that is too large.

 q: -     Won't prompt user to insert tape

-p: -     Pack data. Backup images by default are NOT packed. If you wish to pack your data, use this option. The restore command has enough intelligence to determine if a backup image is packed or not and take appropriate action


Backup the file system /u to tape device using absolute pathnames.
#find /u -print | backup -ivf/dev/rmt0

Backup files and directories under current directory (.) using relative pathnames. The tee (|) will take as input the output of the backup command (filenames being copied) and write them to the log file 'BACKUP.LOG' for later review
#find . -print | backup -iepqvf/dev/rmt0 | tee /tmp/BACKUP.LOG

Find any REGULAR files (-type f) that have been modified within the past 24 hours (-mtime -1) and write them to the tape device but don't rewind (/dev/rmt*.1) the tape after backup has finished.
#find /faxdata -mtime -1 -type f -print | backup -ivf/dev/rmt0.1

Backup files interactively. Select the file(s) to backup by typing in the file's name. When done, press ^D to finish.
#backup -ivqf/dev/fd0

If there is more than one tape drive attached to the system, then you can specify a range of devices to the -f flag of the backup command. (/dev/rmt0-1)
#find / -print|backup -icvqf/dev/rmt0-1

                                    OR

#smit backfile


Backup File system by Inode

backup [ [ -Level ] [ -b Number ] [ -c ] [ -f Device ] [ -L Length ] [ -u ] ] [ FileSystem ] | [ -w | -W ]

-Level: -          Specifies the backup level (0 to 9). The default level is 9.

-b: -     For backups by name, specifies the number of 512-byte blocks; for backups by i-node, specifies the number of 1024-byte blocks to write in a single output operation. When the backup command writes to tape devices, the default is 100 for backups by name and 32 for backups by i-node.

-c: -     Specifies that the tape is a cartridge, not a nine-track.

-L: -     Specifies the length of the tape in bytes. This flag overrides the -c, -d, and -s flags. You can specify the size with a suffix of b, k, m, or g to represent Blocks (512 bytes), Kilo (1024 bytes), Mega (1024 Kilobytes), or Giga (1024 Megabytes), respectively. To represent a tape length of 2 Gigabytes, enter -L 2g. This flag only applies to AIX 4.2 and above.

-u: -     Updates the /etc/dumpdates file with the raw device name of the file system and the time, date, and level of the backup. You must specify the -u flag if you are making incremental backups. The -u flag applies only to backups by i-node.

-w:  -   Currently disabled. If the -w flag is specified, no other flags are applied.

-W: -   Displays, for each file system in the /etc/dumpdates file, the most recent backup date and level. If the -W option is specified, no other flags are applied.

To backup the / (root) file system, enter:
#
backup -0 -u -f /dev/rmt0 /

To backup all the files in the / (root) file system that have been modified since the last level 0 backup, enter:
#
backup -1 -u -f /dev/rmt0 /

                                                OR

#smit backfilesys

                                                RESTORE COMMAND

List Files archived by File system
restore -T [ q  v ] [ -b Number ] [ -f Device ] [ -s SeekBackup ]
 T=     table of contents, -v=list the file name being copied, -f=name of output device,
-q=    should not prompt to insert tape for restore, this options says that tape is inserted and ready for task.
-x=      Restores individually named files specified by the File parameter
-d=    Indicates that, if the File parameter is a directory, all files in that directory should be restored. This flag can only be used when the archive is in file-name format.
-r=     Restores all files in a file-system archive. The -r flag is only used to restore complete level 0 backups or to restore incremental backups after a level 0 backup is restored. The restoresymtable file is used by restore to pass information between incremental restores. This file should be removed once the last incremental backup is restored. The File parameter is ignored when using the -r flag. 
-s=     Specifies the backup to seek and restore on a multiple-backup tape archive.

To list the names of files in either a file-name or file-system archive on the diskette device /dev/rfd0, enter:
   #restore –Tq
 
To restore a specific file, enter:
               #restore -xvqf myhome.bkup system.data
               
To restore a specific directory and the contents of that directory from a file-name archive, enter:
               #restore -xdvqf /dev/rmt0 /home/mike/tools
 
To restore an entire file-system archive, enter:
               #restore -rvqf /dev/rmt0
 
To restore the fifth and ninth backups from a single-volume, multiple-backup tape, enter:
               #restore -xvqs 5 -f/dev/rmt0.1
               #restore -xvqs 4 -f/dev/rmt0.1
 
To restore the fourth backup, which begins on the sixth tape on a 10-tape multiple-backup archive, put the sixth tape into the tape drive and enter:
               #restore -xcs 2 -f /dev/rmt0.1 /home/mike/manual/chap3
 
To improve the performance on streaming tape devices, pipe the dd command to the restore command by entering:
               #dd if=/dev/rmt0 bs=64b | restore -xf- -b64
 
To improve the performance of the restore command on the 9348 Magnetic Tape Unit Model 12, you can change the block size by entering:
               #chdev -l /dev/rmt0 -a BlockSize=32k
 
 
 
Restores all files that start with "My" from the /usr/tmp directory
               #restore -xvf/dev/rmt0 ./usr/tmp/My* 
 
Restores all files that start with "My" from the /usr/tmp directory
               #restore -xvf/dev/rmt0 ./usr/tmp/My*
 
Restores the directory named /usr/tmp from tape device
               #restore -xdvf/dev/rmt0 ./usr/tmp 
 
Restores all the files located on the tape device that were backed up using the backup command.
               #restore -xvf/dev/rmt0 
 
-x=extract data from output device. Restores only the file named ./tmp/TestFile from the tape device. If the subdirectory /tmp doesn't exist in the current directory, then that subdirectory will be made prior to restoring 'TestFile'.
               #restore -xvf/dev/rmt0 ./tmp/TestFile 
 
Rewind to the beginning of tape
               #tctl -f/dev/rmt0 rewind
 
Review files on FIRST backup image
               #restore -s1 -Tvf/dev/rmt0.1
 
Review files on SECOND backup image
#restore –s2 -Tvf/dev/rmt0.1
 
Displays the table of contents for multiple backup images. s1=specifies that multiple backups are on the tape and that the restore command skips to the backup specified by the number associated with the 's' option. The 0.1 for the output device (-f flag) means that once the tape has been read, it will not rewind. If only the second backup image was needed, could have just typed in: restore -s2 -Tvf/dev/rmt0.1
 
If by chance the ./unix file was deleted, go back to your install tape and extract the file that needs to be restored. The first three images on the tape are BOSBOOT, INSTALL/MAINT, followed by the TOC (table of contents) image
               #tctl -f/dev/rmt0.1 fsf 3


#restore -xvqf/dev/rmt0.1 ./unix.
 
Selectively restore ONLY those files listed in file /tmp/DISK.LIS
               #restbyname -xvqf/dev/fd0 -Z /tmp/DISK.LIST 


                   LOGICAL TAPE DEVICE NAME AND FUNCTIONS

Tape devices you have 2 functionalities,
1) rewind after completing the job.
2) retention the tape before starting the job (on tape).

Retension means winding to the end of the tape and then rewinding to the beginning of the tape to reduce errors

One has to use the device name depending on the above functionality,
/dev/rmt0  rewind true, retension false
/dev/rmt0.1 rewind false, retension false
/dev/rmt0.2 rewind true,  retension true
/dev/rmt0.3 rewind false, retension true

To take tar backup, #tar -cvf /dev/rmt0 *.cbl will take backup of all .cbl file from the begining of the tape and rewinds on completion.

If you have to take multiple backups on the same tape, do the following, #tar -cvf /dev/rmt0.1 *.cbl (which takes backup on to tape --1st 'tar file' --and waits without rewinding).
Issue another tar backup, #tar -cvf /dev/rmt0.1 *.cbl (2nd tar file --which again waits without rewinding)


Density
You can select whether to write with the tape drive Density Setting #1 or with the tape drive Density Setting #2. The values for these density settings are part of the attributes of the tape drive. Because it is customary to set Density Setting #1 to the highest possible density for the tape drive and Density Setting #2 to the next highest possible density for the tape drive, special files that use Density Setting #1 are sometimes referred to as high density and special files that use Density Setting #2 sometimes are referred to as low density, but this view is not always correct. When reading from a tape, the density setting is ignored.
Rewind-on-Close
You can select whether the tape is rewound when the special file referring to the tape drive is closed. If rewind-on-close is selected, the tape is positioned at the beginning of the tape when the file is closed.
Retension-on-Open
You can select whether the tape is retensioned when the file is opened. Retensioning means winding to the end of the tape and then rewinding to the beginning of the tape to reduce errors. If retension-on-open is selected, the tape is positioned at the beginning of the tape as part of the open process.


Special File
Rewind on Close
Retension on Open
Density Setting
/dev/rmt0
Yes
No
#1
/dev/rmt0.1
No
No
#1
/dev/rmt0.2
Yes
Yes
#1
/dev/rmt0..3
No
Yes
#1
/dev/rmt0.4
Yes
No
#2
/dev/rmt0.5
No
No
#2
/dev/rmt0.6
Yes
Yes
#2
/dev/rmt0.7
No
Yes
#2


For Tape Drive characteristics go to: -

cpio

Copies files to/from an archive storage device. This command is often used to copy files from UNIX to AIX systems. This command will span across multiple tapes. cpio stands for Copy Input to Output.

-c: -     Writes header information in ascii format for portability across UNIX systems.
-r: -     When restoring will prompt for new path/file to restore to.
-v: -   List the file name as it's being copied.
-i:-        Read from standard input, i.e. keyboard -u Copies unconditionally. Older file replaces a  newer one. Files with older modification times will replace files with newer modification times.
-d: -     Creates directories,  if applicable -t For table of contents.
-C1: -    Performs block I/O in 512 byte blocks, if the block size of the device that wrote the data on the tape was set to 512 bytes

-o: -    Create a cpio image
-t: -    read/verify the content of a cpio image.
-m: -   retain original modification times associated with file.

Reads file names using the find command and copies to the floppy drive (/dev/fd0).
#cd /u/roger
#find . -print | cpio -ocv > /dev/fd0

Saves files in current directory and writes this info to floppy. Same command as above except much faster.
#find . -cpio /dev/fd0 -print

Restore files and directories saved on the floppy device. These files are restored under the current directory (/u/roger) Only if relative pathnames (./<filename>) were used.
#cd /u/roger
#cpio -icuvd < /dev/fd0

List the table of contents from a tape device.
#cpio -itvcC1 < /dev/rmt0

Copies all files FROM one directory TO another WITHOUT changing the permissions, owner/group or modification date of the file. Use the following command to verify that all files were copied:
#cd /u/roger
#find . -print | cpio -dumpv /u/jerry

If the number of files encountered is the same for both directories its safe to assume that the directories are identical. NOTE: that the number of blocks allocated to the SOURCE directory (/u/roger) may be larger than the DESTINATION directory (/u/jerry), since compaction of the directory structure will have occurred at the destination end.
#find /u/roger -print | wcfind /u/jerry -print | wc

Selectively restore the /home/roger/.profile file from floppy
#cpio -imv /home/roger/.profile < /dev/fd0

Selectively restore only the *.f and *.c files from floppy
#cpio -i "*.f" "*.c" </dev/fd0


                        DD

Converts/copies files to/from an output device. DD stands for Data Dump. This command will NOT span across multiple tapes. Common utility found on most versions of UNIX.
Read the files off the tape device faster because of the blocking factor (bs=blocksize of 512K or cache upto 1/2 MB at a time)
#dd if=/dev/rmt0 bs=512k | cpio -icdmv
Copies the data from the input file (if=rs6000.dat) to the output tape device (/dev/rmt0). The rmt*.4 device extension means output is written in 1600 bpi format. This creates an EBCDIC low density tape, resulting in a 1024 byte blocked non-labeled file. To extract this file on the AS/400, create a physical file with a record length of 1024 bytes. Use the CPYFRMTAP command to copy the file. NOTE: When copying data from an EBCDIC machine, make sure your BLOCK SIZE is set to 0 on the tape device
#dd if=rs6000.data of=/dev/rmt0.4 bs=1024 conv=ebcdic
Copies the data from the input file (if=unixfile.txt) to output name (of=DOSFILE.TXT) and converts the source data to UPPERCASE characters
#dd if=unixfile.txt of=DOSFILE.TXT conv=ucase.
Copies the ABSOLUTE path /u/roger using the tar utility. To speed this process up, these files are piped to the dd utility using a cache buffer size of 1 MB.
#tar -cvf- /u/roger | dd of=/dev/rmt0 bs=1024k
Copies the raw physical volume named hdisk0 to the raw physical volume named hdisk1. This represents a copy disk utility
#dd if=/dev/rhdisk0 of=/dev/rhdisk1 bs=5120b.
Copies the data from the tape device (if=/dev/rmt0) and creates an output file (/tmp/ascii_file) - which is BYTE swapped (conv=swab) as it is being written out. This needs to be done if your copying ascii files from a System V Unix machine (unisys to the RS/6000)
#dd if=/dev/rmt0 of=/tmp/ascii_file conv=swab
Useful when reading an ASCII file that is NOT delimited by a NL character.
#dd if=/dev/rmt0.1 of=/tmp/data1 cbs=242 ibs=3240 conv=sync,unblock
Will read a record size of 147 bytes, a block size of 2940 bytes, and convert the output to an ASCII file.
#dd if=/dev/rmt0.1 of=/tmp/data1 cbs=147 ibs=2940 conv=ascii
If a filesystem superblock is corrupted, as a backup copy of superblock is kept at 31st block of filesystem, to repair the corrupted superblock copy the backed up superblock from 31st location.
        #dd count=1 bs=4k skip=31 seek=1 if=/dev/hd4 of=/dev/hd4

 

                                                Tapechk

Performs consistency checks on a tape device. Primarily used to check tapes written in backup format.
 # tapechk 2 ( Checks the first 2 files found on the tape device.)

 

                        Tcopy


Copies from one magnetic tape device to another. This command will work for copying multiple backup images from one media type to another. It will continue to copy until two end-of-tape marks are encountered
Displays ALL the backup images and their size for the tape your currently viewing.
#tcopy /dev/rmt0
Copies all the data from one media type to another until two end of tape marks are encountered. In the example above, rmt0 could be a 8mm device and rmt1 may be a 1/4" tape device. If the error message: tcopy: Cannot open /dev/rmt?' is displayed, make sure the destination device is not write-protected.
#tcopy /dev/rmt0 /dev/rmt1

 

                                    Tctl

Command used to fast forward a tape device (Tape ConTroL).
Options: -      rewind = rewind a tape, fsf = fast forward a tape, offline=ejects a tape                     rewoffl  = rewind and ejects a tape
Rewind the tape device
#tctl -f/dev/rmt0 rewind.       
Move tape forward to the second tape mark. The .1 on the rmt0 device instructs the device NOT to rewind after performing the command. Use this command to skip past unwanted tape images - assumming there are multiple archive images on the tape to skip past.
#tctl -f/dev/rmt0.1 fsf
Moves the tape to the beginning, end, and back to the beginning again. Used to retension the tape when encountering multiple read errors on restore operations.
#tctl -f/dev/rmt0 retension

 








                                      MT

# mt status    Print status information about the tape unit.
# mt rewind    Rewind the tape.
# mt erase     Erase the tape.
# mt retension Re-tension the tape (one full wind forth and back.
# mt fsf 1     Forward space count by one file. One can be any number.
# mt -f /dev/rmt/1n fsf 3


                                    Backup files from a remote computer


The local host MUST be included in remote's hosts /etc/hosts.equiv file. The local host and user name MUST be included in the $HOME/.rhosts file at the user account at the remote machine.
Restores files FROM a remote tape drive on a host named 'lanai'
#rsh lanai -l roger "dd if=/dev/rmt0" | tar -xvf-
The tar command will write it's output to the rsh command which pipes the data to the remote host (lanai) and the tape drive (/dev/rmt0). Specify -l <UserName> if the local user is different from the remote user.
#tar -cvf- * | rsh lanai -l roger "dd of=/dev/rmt0 bs=64k conv=block"
Uses the floppy drive device on node lanai to store files in tar format.
#tar -cvf- * | rexec lanai " dd of=/dev/fd0 bs=4096”
 
Commands for remote tape backup
#tar cvf - $DIRNAME | rsh $SYS dd of=$TAPEDEV
To retrieve the backed up info...
#rsh $REM dd if=$TAPEDEV | tar xvf –















                             SECURITY & USER ADMINISTRATOR

            I am not covering, what is chmod, chown, chgrp, SUID, SGID, SVTX (sticky bit) basics,
SUID is set on executable file, no meaning on directories, completely insecure becoz for some time normal users gain access of root or become as root for ex: -
 
Create a shell script named shell.sh that contains the following two lines. These
lines should begin in the left most column. 
 
    #!/bin/ksh 
    id 
 
Set the shell script's file owner to root, and the permissions to rwsr-xr-x (SETUID bit on). Execute the following commands: 
    chown root shell.sh 
    chmod 4755 shell.sh 
 
Prior to AIX 3.1.7, if an ordinary user named "joeuser" ran shell.sh, the output
would be : - uid=200(joeuser) gid=200(staff) euid=0(root) 
 
The euid=0(root) indicates that the user was effectively root while the shell script executed. For AIX 3.1.7 and later, the output is: uid=200(joeuser) gid=200(staff) 
 
The SETUID bit no longer has any meaning for shell scripts. The means that the
SETUID does not function as it does on other UNIX systems. Other versions of UNIX do pass the euid 0 to other kornshell scripts and child processes; thus, creating a security vulnerability unacceptable to AIX. 
 
File systems are mounted over a directory mount point. Both the mount point and the file system have permissions. The permissions on the mount point are determined by the current umask setting at the time the file system is created. Even though the permissions on the mounted file system take precedence over the permissions on the mount point, the mount point must have at least search permissions for everyone (that is, 111) to avoid unpredictable results. Remember, after the file system is mounted, you cannot see the permissions on the mount point. You must umount the file system before the mount point permissions can be examined and changed. 
 
Your user id (uid) is used to set the owner of the file. Your primary group is used to set the group (unless the directory in which the file is created has the sgid permission bit set; then the group is the same as the group on the directory entry). 
        The id command can be used to see the uid and primary group for that user. Your umask setting is used to set the initial permissions. Type umask at the command line to see the current setting. To change the umask setting, type umask number, as in:  umask 022
 
NOTE: You do not use the equal sign (=) when setting umask. 
umask does not set the execute bit on a text file or shell script but only on a
directory. To determine what umask to use, take the umask setting and subtract it
from 777 for a directory or from 666 for a text file or shell script. Then, if you create a directory or text file, you see permissions as follows: 
Example with umask 022: 
777 - 022 = 755  (Default rights for directory)
666 - 022 = 644  (Default rights for file)
Executing ls -l shows the following permissions: for a directory: - rwxr-xr-x
for a text file:        rw-r--r--
 
Similar case is for SGID, sticky bit SVTX is removed from AIX.


                             LOGIN SEQUENCE


Before I continue with this understand the main files and there field needed, for login up to the, users shell prompt comes.  Please read the “login sequence file.doc” file first which explain you all the required files and there directives in depth.

I
Since init is last stage of system initialization, when init runs it start the getty process because of following entry in /etc/inittab
cons:0123456789:respawn:/usr/sbin/getty /dev/console
A getty process is started for all ports who is responsible for providing login prompt.

II
Whenever a request is received for login from user, a message is displayed by getty process from the file /etc/security/login.cfg’s hearld directive and getty process waits for user’s intervation by giving login prompt. Know login program take the control.

III
User enter’s username and password, login program passed the username and then checks /etc/passwd weather its valid username, /etc/security/passwd is checked if a password is required or not. In this step, if username or password is invalid or not exist, a error is thrown on users terminal and entry is made /etc/security/failedlogin, Number of failed login attempt’s are also tracked by /etc/security/lastlog attribute: - unsuccessful_login_count. A user account is locked after if loginretries field in /etc/security/user reaches to the value specified.

IV
If a user enter a successful or valid username and password, then usw(user conf. Stanza)
/etc/security/login.cfg is checked for number of maximum simultaneous login made by each user, if it exceed then the value specified, then login is denied and a message is display.

V
Now users environment is set up using /etc/environment (Setups global variables), /etc/security/eviron(setup environment attributes for users, /etc/security/limits(setup users file and system usage limits), and /etc/security/user(setup individual users roles and security)





VI
If /etc/nologin file exist then no one can login except root, login program setup’s users home directory login shell after displaying the content of /etc/motd(message of the day), if .nohushlogin file exist in users home directory then all the login messages are ignored i.e date of last successful and unsuccesfull login

VII
Finally control is passed to login shell, which will run the /etc/profile(read and executed by every login) and $HOME/.profile, $HOME/.profile  customized by user, overwrites the variables of /etc/profile.

Smit security, smit user, smit mkuser

List all users, all attributes i.e username, uid, primary group, login shell and so on.
#lsuser ALL

To display the user id and group-related information about the smith account in stanza form, enter:
#lsuser -f -a id pgrp groups admgroups smith
Information similar to the following appears:
     smith:
               ID=2457
               pgrp=system
               groups=system,finance,staff,accounting

To display the user id, groups, and home directory of smith in colon format, enter:
#lsuser -c -a id home groups smith
Information like the following appears:
    # name: ID:home:groups
       smith:  2457:/home/smith:system,finance,staff,accounting


                                      USER CREATION

File Involved in user creation

/etc/passwd                                Username is created, with * in password field.    

/etc/security/.ids                         UID is chosen from this file for normal/admin user.       

/usr/lib/security/mkuser.default      Default user/admin stanza in picked if no argument supplied while creating users i.e primary group, login shell.
/etc/shells                                  All valid shells on scripts are mentioned here, /etc/security/login.cfg’s  shell directive pick shells from /etc/shells                  

/usr/lib/security/mkusers.sys         Script executed for creating users home directory

/etc/security/.profile                     This .profile is copied into users home directory by /usr/lib/security/mkusers.sys script.

/etc/security/user                         User Name entries are made here with all default attributes of this file.




/etc/security/passwd                    No entry is made here if password is not set for user.
If password is specified then /etc/passwd’s password field changes to “!” sign indicate that password is in /etc/security/shadow

/etc/security/group                      valid group to which user belongs is picked from this file.

/etc/security/roles                        contain predefined roles for users

/etc/security/user.roles                 Contains the administrative role attributes of users.

/etc/security/limits                       Defines resource quotas and limits for each user.

/etc/security/environ                         contains the environment attributes of users.

/etc/nologin                                if exist then no user can login.

Whenever a mkuser or smit mkuser command is executed the below process come into picture.

Step I
 
          An entry of username is made in /etc/passwd file. When a useradd/mkuser command is executed, /usr/lib/security/mkuser.default file is being used, the user stanza is picked up if ordinary user is being added and admin stanza is being picked up if admin. User is added.

Step II
If the user ID is not specified, the default user id number is chosen from /etc/security/.ids file, For admin users, id’s are given starting from 6 above and for normal users starting from 200, or u can say that user id 6 to 199 is fixed for admin. and above for normal users.

Step III
         
          Then the /usr/lib/security/mkusers.sys shell scripts is run during user creation. These scripts create users home directory, copy /etc/security/.profile to users home directory.

Step IV

          When a users get created, its ID is disabled in /etc/passwd i.e an *(aestrik) is placed in the password field of /etc/passwd file. As soon as password is set using passwd or smitty * field of a password changes to ! (Exclamation sign).








          Users are created in 2 ways
                   1.       only mkuser username is command is executed or just username is enter in smit mkuser, no other parameters are specified.
                             First /usr/lib/security/mkusers.sys script is run to create users home directory and .profile is also being copied from /etc/securioty/.profile to users home directory.
mkuser add’s username in /etc/passwd, put * in password field, then read
 the /etc/security/.ids file for available user ID and        
                             Since no other parameters are specified while creating user then the default parameters are picked up from /etc/security/mkusers.default, if users is normal user then user stanza come into picture and if user is admin users then admin


Create USER: -                 Smit mkuser, users, security

Mkuser add user name in username field of /etc/passwd, put * in password field, take uid from /etc/security/.ids second column and place it in UID field of /etc/passwd, takes the group id from /etc/security/group and place it to GID field, take a home directory and login shell path from /usr/lib/security/mkuser.default and place it to 6th and 7th field of /etc/passwd.


/etc/passwd
test:*:213:1::/home/test:/usr/bin/ksh

/etc/security/.ids
8 214 14 202

/usr/lib/security/mkuser.default
User:
        pgrp = staff
        groups = staff
        shell = /usr/bin/ksh
        home = /home/$USER

/usr/lib/security/mkuser.sys
          script create users home directory and copy .profile.

After entering password /etc/passwd changes to: -
test:!:213:1::/home/test:/usr/bin/ksh

if ROLES is specified while creating user say  “test” user is created with roles as manageRoles, then this entry gets added into /etc/security/users.roles as

test:
        roles = manageRoles

if only expiration date is specified for user roltest, entries get appended into a file /etc/security/user as
                      roltest:
                                admin = false
                                expires = 0320144206

if the users account is expired and if he is currently working in his home directory, he will not receive any message of expiration until and unless he/she logout or login again.
Following message appair if account expires

Login: roltest
roltest's Password:
3004-302 Your account has expired; please see the system administrator.

To reset expiration go to smit chuser à expiration date=0.
Just type 0 and press enter, user can login

If “is the account is locked  is set to true, entry is appended in /etc/securiuty/user if users logout login again user will receive a following message:-
Login: roltest
roltest's Password:
3004-301 Your account has been locked; please see the system administrator.

After this message, login program wait for 60 seconds by reading file /etc/security/login.cfg’s logintimeout directive, and if user doesn’t do anything then terminal is closed automatically after 60 sec. 
logintimeout = 60

If a login prompt is not used within 60 seconds by a user. then that telnet or terminal is cloed automatically after 60 seconds i.e its reads /etc/security/login.cfg’s logintimeout.

For ex : user enter a username/password and system says that username/password is wrong then at that time system will wait for only 60 seconds for users input after that terminal/session closed after 60 sec.

And unsuccessful_login_count in /etc/security/lastlog is incremented by 1, if same user whose account is locked is trying again.
roltest:
        unsuccessful_login_count = 2

if “user can login is specified to false”, then user have to change a password at the time of login i,e
               Login: roltest
               roltest's Password:
               [compat]: 3004-610 You are required to change your password.
               Please choose a new one.
               roltest's New password:
               Enter the new password again:

Otherwise user cant login. An entry of user can login = false is made in /etc/security/user as
roltest:
        admin = false
        account_locked = false
        login = false

Password updated entry is modified in /etc/security/passwd file as
              roltest:
                    password = USe/fr10rIW4Y
                    lastupdate = 1142889261

from this lastupdate field you can calculate when the user has changed his/her password.

If  Number of FAILED LOGINS before user account is locked is set to 2, then user account is locked, i.e if he enter wrong username/password for atleast 2 times, and then again he is attempting for entering u/n or p/w then his account will get locked, on next login he receive message like :-
Login: roltest
roltest's Password:
3004-303 There have been too many unsuccessful login attempts; please see
        the system administrator.

Entries are updated in /etc/security/user as: -

And /etc/security/lastlog’s  unsuccessful_login_count get incremented by how many times user tried invalid usename/password.

If Login AUTHENTICATION GRAMMAR  : - files the only local users of system can only login, no NIS users are accepted, for NIS plus local user compat variable is to be specified

Entry of this field is appended in /etc/security/user’s as: - SYSTEM = "files"


If you specify Valid TTYs: - /dev/pts/10, then a user roltest can login only from /dev/pts/10, any attempt made to login from other terminal will give below message

roltest's Password:
3004-309 You are not allowed to access the system via this terminal.

Entries of this change is made in /etc/security/user: - ttys = /dev/pts/10

If u specify : - Days to WARN USER before password expires to 1, then user will receive password expiration message before 1 day.

(expire)                  EXPIRATION date (MMDDhhmmyy)                       [0321101506
(pwdwarntime)        Days to WARN USER before password expires                      [1]
(histsize)                NUMBER OF PASSWORDS before reuse                               [2]                                                                   
(histexpire)             WEEKS before password reuse                                          [1]                                                                                            
(maxexpired)          Weeks between password EXPIRATION and LOCKOUT            [1]
(maxage)                Password MAX. AGE                                                       [2]                                                                      (minage)                 Password MIN. AGE                                                        [1]                                                                    (minlen)                  Password MIN. LENGTH                                                   [4]                                                                    
(minalpha)              Password MIN. ALPHA characters                                       [1]                                                                      (minother)              Password MIN. OTHER characters                                      [1]                                                                    
Password MAX. REPEATED characters                                 [8]             








Entries are made in /etc/security/user as: - 
                    expires = 0321101506
          pwdwarntime = 1
                     histsize = 2
                     histexpire = 1
                     maxexpired = 1
                     maxage = 2
                     minage = 1
                     minlen = 4
                     minalpha = 1
                     minother = 1



if roltest try to change password then histexpire, histsize, minage fields comes into picture, user will get message if above setting is done.

$ passwd
Changing password for "roltest"
roltest's Old password:
roltest's New password:
        a minimum of 1 elapsed week between changes.
3004-320 Only the system administrator can change this password.

If u specify NUMBER OF PASSWORDS before reuse : -   to 1, then if current password of user roltest is rolt, then if he tries to change the password first time as rolt then he/she is not allowed and below message is thrown.

roltest's New password:
3004-314 Password was recently used and is not valid for reuse.

A user can use password rolt again, until he changes password for atleast 1 time.
i.e I mean to say, if user get above message password was recently used, and if user current password is rolt, and password changes action comes, then user cant use the password rolt again, then he hve to user some other password i.e rolp or any other not matching to rolt password, after changing if he willing to change password then he can use the password rolt again, if NUMBER OF PASSWORDS before reuse : - 1, cant use same password for atleast 1 time.

If Password MIN. LENGTH is set to 8
Means if user a changing a password, and its password length is less then 8 characters user will get below message.
$ passwd
Changing password for "roltest"
roltest's Old password:
roltest's New password:
3004-602 The required password characteristics are:
        a maximum of 8 repeated characters.
        a minimum of 8 characters in length.



PASSWORD AUTHENTICATION


If roltest user password is changed by root then this action gets updated in /etc/security/passwd file at flags stanza.
If ADMCHG flag is there this means root has changes the password for user roltest
If ADMIN flag is set, then only root can change password for roltest, no one else can.
If NOCHECK flag is set, which is default no password change restriction is forced.

roltest:
        password = nbVJtQoUG0KE.
        lastupdate = 1143741824
        flags = ADMCHG


How to change this flag using command line.
pwdadm command is used to do this task.
Change /etc/security/passswd flag dircteive using below command.
# pwdadm -f ADMIN roltest

To set a password for user susan, a member of the security group enters:
               # pwdadm roltest
                  Changing password for "roltest"
                  roltest's New password:
                  Enter the new password again:

When prompted, the user who invoked the command is prompted for a password before Susan's password can be changed.

To query the password status for user susan, a member of the security group enters:
# pwdadm -q roltest
roltest:
        lastupdate = 1143743135
        flags = ADMIN

To change your full name in the /etc/passwd file, type: passwd -f
# passwd -f roltest
 roltest's current gecos:
                ""
 Change (yes) or (no)? > y
 To?>rtest

To use a different shell the next time you log in, type: passwd -s
# passwd -s roltest
 Current available shells:
                /bin/sh
                /bin/bsh
                /bin/csh
                /bin/ksh
                /bin/tsh
                /bin/ksh93
                /usr/bin/sh
                /usr/bin/bsh
                /usr/bin/csh
                /usr/bin/ksh
                /usr/bin/tsh
                /usr/bin/ksh93
                /usr/bin/rksh
                /usr/bin/rksh93
                /usr/sbin/uucp/uucico
                /usr/sbin/sliplogin
                /usr/sbin/snappd
 roltest's current login shell:
                /usr/bin/ksh
 Change (yes) or (no)? > y
 To?>/bin/sh

Mkuser command lines
To create the davis user account with the default values in the /usr/lib/security/mkuser.default file, type:
            mkuser davis

To create the davis account with davis as an administrator, type:
mkuser -a davis
Only the root user or users with the UserAdmin authorization can create davis as an administrative user.

To create the davis user account and set the su attribute to a value of false, type:
            mkuser su=false davis

chuser command lines
To enable user smith to access this system remotely, type:
             chuser rlogin=true smith

To change the expiration date for the davis user account to 8 a.m., 1 May, 1995, type:
             chuser expires=0501080095 davis

To add davis to the groups finance and accounting, type:
              chuser groups=finance,accounting davis

Remove user using rmuser command
#rmuser –p roltest
-p: -   will remove authetication information from the /etc/security/*

Removing user command, remove the user instance from all this below files, home directory is not removed.
/etc/passwd, /etc/security/passwd, /etc/security/group, /etc/security/user, /etc/security/user.roles, /etc/security/lastlog










                             GROUPS

List all groups on system
# lsgroup ALL
# lsgroup -f -a id users adms finance

Nothing else to discuss in groups, since its similar with rest of unix /etc/group.

                                    VALIDATING ENVIRONMENT


#pwdck command validates the correctness of local authentication information i.e it will check the format, correctness and validity of /etc/passwd and  /etc/security/passwd are consisitent with each other, /etc/security/user, /etc/security/login.cfg, if any error found it report and try to fix depend upon user action.
      -n   Reports errors but does not fix them.
      -p   Fixes errors but does not report them.
      -t    Reports errors and asks if they should be fixed.
      -y   Fixes errors and reports them.

To verify that all local users have valid passwords, enter:
pwdck -y ALL

#usrck verifies the validity of users defination.

      -n   Reports errors but does not fix them.
      -p   Fixes errors but does not report them.
      -t    Reports errors and asks if they should be fixed.
      -y   Fixes errors and reports them.

To verify that all the users exist in the user database, and have any errors reported (but not fixed), enter:
           #usrck -n ALL

To delete from the user definitions those users who are not in the user database files, and have any errors reported, enter:
#usrck -y ALL

Checks each username entries in /etc/passwd, /etc/security/passwd, /etc/security/user, /etc/security/limits. Checks are also made on /etc/group, /etc/security/group to ensure the user entries.

#grpck verify the validity of group.
Verifies files in /etc/passwd, /etc/security/user, /etc/group and /etc/security/group are consistent
                        WORKING WITH SCHEDULING JOBS


Started by init from /etc/inittab file.
cron:23456789:respawn:/usr/sbin/cron

Due to respawn, if cron daemon gets killed, it get automatically started by init by reading the above line in /etc/inittab file.

Cron event scheduling depends upon /var/adm/cron/queuedefs.

/var/adm/cron/queuedefs file specifies the maximum number of processes per event type to schedule at one time, the nice value of the event type, and how long to wait before retrying to execute a process.

Each entry in the queuedefs file is of the form:  EventType.[Jobs j][Nice n][Wait w]
a Specifies an at command event.
b Specifies a batch command event.
c Specifies a crontab command event.
d Specifies a sync subroutine event.
e Specifies a ksh command event.
f Specifies a csh command event.

Jobs j Specifies the maximum number of jobs the cron daemon can start at one time. The default value is 100.

Nice n Specifies the nice value for job execution. The default value is 2.

Wait w Specifies the time, in seconds, to wait before attempting to execute the command again. The default value is 60 seconds.

To set the crontab command job queue to handle 200 concurrent jobs with a nice value of 10 and a retry in 120 seconds if the fork subroutine fails.

Ex: -   c.200j10n120w

EventType.[Jobs j][Nice n][Wait w]

      c.           200  j    10    n    120 w
         

Schedule is defined in the:- /var/spool/cron/crontabs/

when you use crontab –e command, by default system with execute vi command like this
#vi /var/spool/cron/crontabs/root

Depend upon user, last paramater changes i.e if user roltest is executing crontab –e then
#vi /var/spool/cron/crontabs/roltest file get create, edited or used by cron.


/var/adm/cron/cron.allow and /var/adm/cron/cron.deny 

cron.deny file exist by default, this two files are used to restrict user weather to allow executing cron job or to deny executing cron jobs.

If cron.allow file exist, and if it’s a empty file then no one can execute cron not even root. If cron.allow contain username’s then only listed user are allow to execute cron. If both cron.allow and cron.deny file exist then cron.allow file is used, cron.deny doesn’t come in picture because cron will work for only those user’s whose name is specified in cron.allow for others its denied.

If neither cron.allow or cron.deny exist then only root can execute cron jobs.


Crontab Format: -

Minute   Hour   Date   Month    Day-of-week                 Command

(0-59)  (0-23)  (1-31)  (1-12)   (0-6 where 0=Sunday   
                                             1=Monday, etc)



Safer Method to edit crontab

#crontab –l > /home/cmsadmin/crontab
# vi /home/cmsadmin/crontab
Do the changes, save file and exit vi
#crontab /home/cmsadmin/crontab


                            









1 comment:

  1. Remote Infrastructure Management: Ibm Aix Learning - A Simple Way >>>>> Download Now

    >>>>> Download Full

    Remote Infrastructure Management: Ibm Aix Learning - A Simple Way >>>>> Download LINK

    >>>>> Download Now

    Remote Infrastructure Management: Ibm Aix Learning - A Simple Way >>>>> Download Full

    >>>>> Download LINK dh

    ReplyDelete