growfs

Growfs From Hackepedia

Here is a breakdown on how to grow an ffs filesystem. Let's make a big file which will represent our disk, 32MB in size:

# dd if=/dev/zero of=disk bs=32m count=1
1+0 records in
1+0 records out
33554432 bytes transferred in 0.164 secs (204133427 bytes/sec)
# vnconfig -cv svnd0 disk
svnd0: 33554432 bytes on disk
/dev/svnd0c is now our disk. Create a partition on it, this time we'll make it too small so that there is space left on the disk:
# disklabel -E svnd0
disklabel: Can't get bios geometry: Device not configured 
Initial label editor (enter '?' for help at any prompt)
> a
partition: [a]
offset: [0]
size: [65536] 32768
FS type: [4.2BSD]
> p
device: /dev/rsvnd0c
type: SCSI
disk: vnd device
label: fictitious
bytes/sector: 512
sectors/track: 100
tracks/cylinder: 1
sectors/cylinder: 100
cylinders: 655
total sectors: 65536
free sectors: 32768
rpm: 3600
16 partitions:
#             size        offset  fstype [fsize bsize  cpg]
  a:         32768             0  4.2BSD   2048 16384   16 # Cyl     0 -   327*
  c:         65536             0  unused      0     0      # Cyl     0 -   655*
> q
Write new label?: [y] y
Write the filesystem on it:
# newfs /dev/rsvnd0a
Warning: cylinder groups must have a multiple of 8 cylinders
Warning: 32 sector(s) in last cylinder unallocated
/dev/rsvnd0a:   32768 sectors in 328 cylinders of 1 tracks, 100 sectors
        16.0MB in 1 cyl groups (328 c/g, 16.02MB/g, 2048 i/g)
super-block backups (for fsck -b #) at:
 32,
Mount the filesystem and populate it with files:
# mount /dev/svnd0a /mnt
# cd /mnt
# cp /bin/* .
# cp /sbin/* .
/mnt: write failed, file system is full
...
# df .
Filesystem  512-blocks      Used     Avail Capacity  Mounted on
/dev/svnd0a      32156     31992     -1440   105%    /mnt
...
# df -i .
Filesystem  512-blocks      Used     Avail Capacity iused   ifree  %iused  Mounted on
/dev/svnd0a      32156     31740     -1188   104%     134    1912     7%   /mnt
# cd /tmp
# umount /mnt
Note the reason the filesystem Capacity changed from 105% to 104% is because the author had deleted some files and represented this with "...". Don't get confused! Now we grow the partition:
# disklabel -e svnd0
# growfs /dev/rsvnd0a
We strongly recommend you make a backup before growing the Filesystem
Did you backup your data (Yes/No) ? Yes
new file system size is: 16384 frags
growfs: 65536 sectors in 656 cylinders of 1 tracks, 100 sectors
       32.0MB in 2 cyl groups (328 c/g, 16.02MB/g, 2048 i/g)
superblock backups (for fsck -b #) at:
 32832
Mount it and check it: \
# mount /dev/svnd0a /mnt
# cd /mnt
# df .
Filesystem  512-blocks      Used     Avail Capacity  Mounted on
/dev/svnd0a      64348     31740     29392    52%    /mnt
# df -i .
Filesystem  512-blocks      Used     Avail Capacity iused   ifree  %iused  Mounted on
/dev/svnd0a      64348     31740     29392    52%     134    3960     3%   /mnt
Conclusions: growfs not only increased the data space on the filesystem but also the index (inodes).


German - von Hackepedia

Hier sind die Schritte um ein FFS Dateisystem zu vergroessern.

Wir fangen an mit einer grossen Datei die unser Dateisystem repraesentiert, es ist 32 MB gross:

# dd if=/dev/zero of=disk bs=32m count=1
1+0 records in
1+0 records out
33554432 bytes transferred in 0.164 secs (204133427 bytes/sec)
# vnconfig -cv svnd0 disk
svnd0: 33554432 bytes on disk
/dev/svnd0c ist nun das gesammte Disk. Wir werden eine Partition darauf erstellen aber kleiner als das gesamte Disk so das wir es vergroessern koennen.
# disklabel -E svnd0
disklabel: Can't get bios geometry: Device not configured 
Initial label editor (enter '?' for help at any prompt)
> a
partition: [a]
offset: [0]
size: [65536] 32768
FS type: [4.2BSD]
> p
device: /dev/rsvnd0c
type: SCSI
disk: vnd device
label: fictitious
bytes/sector: 512
sectors/track: 100
tracks/cylinder: 1
sectors/cylinder: 100
cylinders: 655
total sectors: 65536
free sectors: 32768
rpm: 3600
16 partitions:
16 partitions:
#             size        offset  fstype [fsize bsize  cpg]
  a:         32768             0  4.2BSD   2048 16384   16 # Cyl     0 -   327*
  c:         65536             0  unused      0     0      # Cyl     0 -   655*
> q
Write new label?: [y] y
Nun schreiben wir das neue Dateisystem auf die Partition:
# newfs /dev/rsvnd0a
Warning: cylinder groups must have a multiple of 8 cylinders
Warning: 32 sector(s) in last cylinder unallocated
/dev/rsvnd0a:   32768 sectors in 328 cylinders of 1 tracks, 100 sectors
        16.0MB in 1 cyl groups (328 c/g, 16.02MB/g, 2048 i/g)
super-block backups (for fsck -b #) at:
 32,
Jetzt mounten wir das neue Dateisystem und erstellen viele Dateien darauf:
# mount /dev/svnd0a /mnt
# cd /mnt
# cp /bin/* .
# cp /sbin/* .
/mnt: write failed, file system is full
...
# df .
Filesystem  512-blocks      Used     Avail Capacity  Mounted on
/dev/svnd0a      32156     31992     -1440   105%    /mnt
...
# df -i .
Filesystem  512-blocks      Used     Avail Capacity iused   ifree  %iused  Mount
ed on
/dev/svnd0a      32156     31740     -1188   104%     134    1912     7%   /mnt
# cd /tmp
# umount /mnt
Der Grund das dieses filesytem nur 104% Kapazitaet hat ist weil ich ein paar Dateien wieder geloescht habe und es mit "..." abgekuertzt habe. Bitte nicht denken das dieses Dateisytem speziell ist.

Jetzt werden wir das Dateisystem vergroessern:

# disklabel -e svnd0
...
# growfs /dev/rsvnd0a
We strongly recommend you make a backup before growing the Filesystem
Did you backup your data (Yes/No) ? Yes
new file system size is: 16384 frags
growfs: 65536 sectors in 656 cylinders of 1 tracks, 100 sectors
       32.0MB in 2 cyl groups (328 c/g, 16.02MB/g, 2048 i/g)
superblock backups (for fsck -b #) at:
 32832
Dateisystem mounten und ueberpruefen:
# mount /dev/svnd0a /mnt
# cd /mnt
# df .
Filesystem  512-blocks      Used     Avail Capacity  Mounted on
/dev/svnd0a      64348     31740     29392    52%    /mnt
# df -i .
Filesystem  512-blocks      Used     Avail Capacity iused   ifree  %iused  Mount
ed on
/dev/svnd0a      64348     31740     29392    52%     134    3960     3%   /mnt
Endergebniss: "growfs" hat nicht nur den Daten Speicher vergroessert sondern auch inodes.