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.
LATEST COMMENTS
MC Press Online