Sunday 24 March 2013

Managing Disks and File Systems on AIX


Determine the size and type of disks, change a file system size, or add or remove a VG. It's all right here for you.

Managing disk or data storage is a common task for system administrators. As data grows on the disks or file systems, you have to expand the storage area. In some cases, you have to reduce storage from one area and give it to another data area. To be able to do this, you must understand the information presented to you when you run any commands related to disk or file system data.

In this article, I will cover how to determine the type of disks being used and the size of the disks. I will also demonstrate how to add a disk to or remove a disk from a Volume Group (VG). File systems that are contained in the VGs can also be increased or reduced in their size; this will be demonstrated as well.

Assume a couple of new disks have been added to the AIX system. To bring the disks in (and by that I mean to ensure that AIX recognizes each disk and adds it to its internal Object Database Manager (ODM), use this command:

# cfgmgr

The disks will now be presented as shown below. Use the lspv command to view the disks:

# lspv
hdisk0         00c23bed42b3aefe                   rootvg         active
hdisk1         00c23bed42b3afff                   rootvg         active
hdisk2         00525c6a888e32cd                   None
hdisk3         00c23bed32883598                   None

What Type of Disk Is Present

In this example, the new disks come in as hdisk2 and hdisk3. New disks will not necessarily come in sequential order. This is particularly true if the disks use disk slots and you do not populate them one after the other. Notice that the new disks have not yet been assigned to a VG, so the third column states None. We can tell what sort of disk each is by querying the ODM using the lsdev command:

# lsdev -Cc disk
hdisk0 Available 04-08-00-3,0 16 Bit LVD SCSI Disk Drive
hdisk1 Available 04-08-00-4,0 16 Bit LVD SCSI Disk Drive
hdisk2 Available 04-08-00-5,0 16 Bit LVD SCSI Disk Drive
hdisk3 Available 04-08-00-8,0 16 Bit LVD SCSI Disk Drive

The new disks are SCSI disks as are the others.

Disk Sizes: How to Tell

Let's now determine the size of the disks. There are a few methods you can use to see the disk size. Let's look at the most common methods. First, we'll use the lsattr command, which returns device information on the system. The format of the command is this:

lsattr -El < device>

# lsattr -El hdisk2
PCM             PCM/friend/scsiscsd               Path Control Module
False
algorithm       fail_over                        Algorithm
True


size_in_mb     18200                             Size in Megabytes
False
unique_id       21080006CB0A0AST318305LC03IBMscsi Unique device identifier
False

The above lsattr output states that the disk is 18200 MB or 17.7 GB.

You can also use the undocumented command bootinfo. Though this is discouraged by IBM, it will return the usable amount of disk that can be used by the system after formatting. Here's the format of the command:

bootinfo -s <device>
# bootinfo -s hdisk2
17357

The above output states we have a 17357 MB disk or 16.9 GB.

The best and recommended way to determine the size of a disk is to use the getconf command. The getconf will extract the systemwide variables from the kernel. Here's the format:

getconf DISK_SIZE <path_to_device>
# getconf DISK_SIZE /dev/hdisk2
17357

In the above output, the getconf returns 17357MB or 16.9 GB.

We have used three commands to get the disk sizes. Two of them agree on the size. Not bad, I guess. To get the correct disk size, use getconf, as this comes from the kernel, the heart of the AIX system.

Creating a Volume Group

For a disk to be used for storage, it needs to be added to an existing VG or a new VG. Let's first add it to a new VG called testvg. The format for the command I am now going to run is this:

mkvg -B -y <vg_name> <hdiska, hdiskb,..., hdiskn>

here, -B means it should be a big VG. It will be able to have up to 128 disks if required in the VG. The vg_name is the name you are going to call it, followed by a list of hdisks you wish to assign to the VG. Here is the command:

# mkvg -B -y testvg hdisk2
testvg

Viewing the current VGs on the system, we can see that it is present.

# lsvg
rootvg
holdvg
testvg

You can see that hdisk2 is now assigned to the VG testvg. Use the lspv command to confirm:

# lspv
hdisk0         00c23bed42b3aefe                   rootvg         active
hdisk1         00c23bed42b3afff                   rootvg        active
hdisk2         00525c6a888e32cd                   testvg         active
hdisk3         00c23bed32883598                   None

You can also query the disks contained in a VG by issuing the lsvg command:

# lsvg -p testvg
testvg:
PV_NAME           PV STATE         TOTAL PPs   FREE PPs   FREE DISTRIBUTION
hdisk2           active           542         542         109..108..108..108..109

Volume Group Maintenance

Let's now add another disk, hdisk3 to the volume group testvg. First, though, determine the disk size:

# getconf DISK_SIZE /dev/hdisk3
70006

It's 70 GB or thereabouts. Now, let's add the disk to the existing VG testvg, using the extendvg comamnd. The format for the command I am now going to run is this:

extendvg <vg_name>   <hdiska, hdiskb,..., hdiskn>

Here, vg_name is the name of the VG, followed by a list of hdisks you wish to add to the VG. Here's the command:

# extendvg testvg hdisk3

Now let's view the disks and to see what VG is assigned to them. The following output states that hdisk2 and hdisk3 are assigned to the VG testvg:

# lspv
hdisk0         00c23bed42b3aefe                   rootvg         active
hdisk1         00c23bed42b3afff                   rootvg         active
hdisk2         00525c6a888e32cd                   testvg         active
hdisk3         00c23bed32883598                   testvg         active

Now that we've added the extra disk, let's get the size of the VG. In the following output, we can determine the size of the VG by locating the TOTAL PP value (total number of physical partitions on the disks). In this example, it's 87328 MB or 85.2 GB.

# lsvg testvg
VOLUME GROUP:       testvg                   VG IDENTIFIER: 00c23bed00004c00000
0013805b7d417
VG STATE:               active             PP SIZE:       32 megabyte(s)
VG PERMISSION:     read/write               TOTAL PPs:     2729 (87328 megabytes



To calculate the size of the VG, you can also use the following formula, using the values from the above lsvg command:

PP SIZE * TOTAL PP

Like so:
# expr 2729 \* 32
87328

To remove a disk from a VG, first be sure you have removed all data from that disk. You will be warned if there is data on the disk and you try to remove it, which is a good reminder in my books.

Typically, you would unmount any file systems and remove them using the rmfs command on the disk you want to remove. Alternatively, you could use migratepv to literally migrate the data from that disk to another disk contained in that VG. Let's assume all data has been removed from that disk. To remove a hdisk from a VG, use the reducevg command. The format for this example is this:

reducevg <vg_name> <hdiska, hdiskb,..., hdiskn>

Here, the vg_name is the name of the VG, followed by a list of hdisks you wish to remove from the VG. Here's the command:

# reducevg testvg hdisk2

The VG testvg now has only hdisk3 assigned to it:

# lsvg -p testvg
testvg:
PV_NAME           PV STATE         TOTAL PPs  FREE PPs   FREE DISTRIBUTION
hdisk3           active           2187       1866       438..116..437..437..438

Dynamically Changing File System Sizes

In our VG, we also now have some data. A file system called /data_fs is present with a size of 8 GB. The file system has data residing in it; it's 71% used and has only 2.38 GB of free space left:

# df -g
Filesystem   GB blocks     Free %Used   Iused %Iused Mounted on
….
….
/dev/fslv00       8.00     2.38   71%       27     1% /data_fs

That file is getting pretty full, so let's now increase that file system to 12G. The format for increasing or decreasing a file system in GB or MB increments in this example is this:

chfs -a size=<size_in_units_of_gigabyte|megabyte M|G> /file_filesystem

So to increase the file system from 8 GB to 12 GB, I could use this:

# chfs -a size=12G /data_fs
Filesystem size changed to 25165824

Looking at the newly change file system size, we see the change:

# df -g| grep data_fs
Filesystem   GB blocks     Free %Used   Iused %Iused Mounted on

...
/dev/fslv00       12.00     6.38   47%       27     1% /data_fs

Now suppose we wanted to reduce the file system size by 2G, so the new size would be 10G. We could use this:

# chfs -a size=10G /data_fs
Filesystem size changed to 20971520

Let's view the new file system size:

# df -g| grep data_fs
Filesystem   GB blocks     Free %Used   Iused %Iused Mounted on
..
...
/dev/fslv00       10.00     4.38   57%       27     1% /data_fs

Now You Know

In this demonstration, I have shown some of the commands required to determine the size and type of disks. I also explained how to create or remove a VG. Changing a file system size has also been demonstrated. These are the basic tools you need when dealing with simple data storage commands that relate to a VG or file system.

No comments:

Post a Comment