Monday, 29 September 2014

Inode issue in solaris

Description

It is not possible to dynamically increase the number of inodes on a UFS filesystem. If you need to increase the number of inodes you will need to build the filesystem afresh using newfs.

Note that the newfs command will create a new filesystem on the slice you specify; this will destroy all data already on the slice. If you wish to access the data on the slice after running newfs you must back it up first, and restore after running the newfs command as described below.


Steps to Follow

You can have a file system reporting that is it full, and yet when you
look at the df -k output it looks like there should still be space left
on the file system.


The cause of this problem is due to a large number of small files on the
file system. This can use up all of the inodes allocated for that file
system while there is still plenty of disk space. To check for inodes,
run the following command df -o i filesystem

df -o i /work
Filesystem iused ifree %iused Mounted on
/dev/dsk/c0t0d0s7 13 1241587 0% /work

or run as below with out specifying a file system.

# df -o i
df: operation not applicable for FSType autofs
df: operation not applicable for FSType fd
df: operation not applicable for FSType mntfs
df: operation not applicable for FSType nfs
df: operation not applicable for FSType proc
df: operation not applicable for FSType tmpfs
Filesystem iused ifree %iused Mounted on
/dev/dsk/c0t0d0s0 5184 490432 1% /
/dev/dsk/c0t0d0s6 61652 680748 8% /usr
/dev/dsk/c0t0d0s1 7375 488241 1% /var
/dev/dsk/c0t0d0s5 16718 975282 2% /opt
/dev/dsk/c0t0d0s4 4 499196 0% /test
/dev/dsk/c0t0d0s7 13 1241587 0% /work

As you can see I don't have a problem with the inodes, if you did have a
problem the output from would indicate %iused 100%.

There is a way to resolve this issue, first you need to get a good backup
of the affected file system.

Then you can run the mkfs -m command to see how any filystem was created,
as seen below. See man page for mkfs

# mkfs -m /dev/rdsk/c0t0d0s7
mkfs -F ufs -o
nsect=255,ntrack=16,bsize=8192,fragsize=1024,cgsize=26,free=1,rps=90,nbpi=8235,opt=t,apc=0,gap=0,nrpos=8,maxcontig=16
/dev/rdsk/c0t0d0s7 20481600

The key field from the about output is nbpi=8235 (number bytes per inode)

The nbpi can be changed when running the newfs command to create a new file
system.
The following is from the newfs man page.

-i nbpi
The number of bytes per inode. This specifies
the density of inodes in the file system. The
number is divided into the total size of the
file system to determine the fixed number of
inodes to create. It should reflect the expected
average size of files in the file system. If
fewer inodes are desired, a larger number should
be used; to create more inodes a smaller number
should be given. The default for nbpi is as fol-
lows:.

Disk size Density

-1GB 2048
-2GB 4096
-3GB 6144
3GB- 8192


After you backup the file system you want to increase the inodes on,
then you newfs the file system using the -i nbpi option specifing a
smaller number. As the output from the mkfs -m /dev/rdsk/c0t0d0s7
shows nbpi=8235. If you cut that number in half when running the
newfs command with the -i nbpi=4117 will double your inodes on that
file system. Then after doing a newfs and increasing ther inodes you
restore your file system from the backup you created prior to starting
this process. See man page on newfs

No comments:

Post a Comment