How to increase inodes on a ufs file system with newfs


How to increase inodes on a ufs file system with newfs



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.

Solution

 The procedure to increase the inode count involves the following steps.


1   Ensure a proper full backup of  file system
2  Recreate the filesystem with enhanced inode count  , need a downtime of applications.
3 Copy the files back to the new filesystem.


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

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 (1M)
# 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
Less than 1GB          2048
Less than 2GB          4096
Less than 3GB          6144
3GB to 1 Tbyte  8192
Greater than 1 Tbyte  1048576
or created with -T
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 (1M)
NOTE:
What is the maximum number of inodes you can create for a multi-TB filesystem?
Answer:
2^20 (aka 1024 * 1024) per terabyte.

Comments

Popular Posts