[net.unix-wizards] HELP!! SVr2 grow filesystem panic!!

rcj@burl.UUCP (Curtis Jackson) (08/27/85)

Firstly:  We are running SysVr2 on a Vax 11/780 with 4meg of memory
and a process size limit of 2meg.

My news filesystem is running out of space, so I decided to move it
and double its size.  I tried volcopy, forgetting that no matter what
size you make the new (larger) filesystem as your destination, volcopy
kicks its size back down to that of the 'from' filesystem.

Next, I mounted both the new and old filesystems.  (I also fsck'd them
prior to mounting and they were clean.)  I tried to 'cpio -p' from
one to the other.  No dice; cpio gave me "Too many links" and, contrary
to the man page which says that it will just forget about links at
that point, it scrogged the new fs totally.  I tried this twice.

Next, I noticed that dcopy(1M) will take an fs size and inode list size
as arguments.  GREAT!!  I dcopy from the old fs (raw) to the new fs (block)
with both unmounted.  It gets through with phase 1 OK, then tries to
work on inums for directories.  "dcopy:  Can't get mem for directories"
or some such rot, and IT quits.

Now what do I do?  I came up with 3 possibles, but it has been an awful
long day and I refuse to try either one until at least tomorrow:

1) If I run dcopy in single-user mode, will that override the per-process
size limit of 2 meg and allow it to get more memory?

2) If I use the '-d' switch on dcopy (leaves subdirectories where they
are rather than moving them to the front of their parents), does anyone
think there is a snowball's chance that it will go ahead and finish
correctly?

3) It doesn't matter what I do, because the computer is out to get me.
If that is so, and it was cocky enough to send out this request for help
anyway (you are reading this, aren't you?) then I'm in BIG TROUBLE.

Thanks very much in advance for any light you may shed on this,

wcs@ho95e.UUCP (x0705) (08/28/85)

_From Curtis Jackson:
> Firstly:  We are running SysVr2 on a Vax 11/780 with 4meg of memory
> and a process size limit of 2meg.
> 
> My news filesystem is running out of space, so I decided to move it
> and double its size.  I tried volcopy, forgetting that no matter what
> size you make the new (larger) filesystem as your destination, volcopy
> kicks its size back down to that of the 'from' filesystem.
> 
> Next, I mounted both the new and old filesystems.  (I also fsck'd them
> prior to mounting and they were clean.)  I tried to 'cpio -p' from
> one to the other.  No dice; cpio gave me "Too many links" and, contrary
> to the man page which says that it will just forget about links at
> that point, it scrogged the new fs totally.  I tried this twice.
> .....
> 1) If I run dcopy in single-user mode, will that override the per-process
> size limit of 2 meg and allow it to get more memory?
To override the per-process limit, you need to set your ulimit bigger.
Become superuser and type "ulimit 100000".  Unfortunately, ulimit affects both
process size and max file size (flame, flame).  Maybe this will help, although
there may be other limits as well.

I've never had cpio die from too many links, but netnews has a way of hitting
	program limits that haven't been stressed before.  Maybe the large
	ulimit will help.

Two other approaches: use tar instead of cpio, and use find.
The manual page for tar gives this method:
	cd fromdir; tar cf - . | (cd todir; tar xf -)
Alternatively, use a brute-force find:
	cd $OLDFS
	find . -type d -exec mkdir "$NEWFS"{} \;
	find . -exec cp {} "$NEWFS"{} \;
-- 
## Bill Stewart, AT&T Bell Labs, Holmdel NJ 1-201-949-0705 ihnp4!ho95c!wcs

am@vilya.UUCP (MALEK) (08/28/85)

> My news filesystem is running out of space, so I decided to move it
> and double its size.

> Next, I mounted both the new and old filesystems.  (I also fsck'd them
> prior to mounting and they were clean.)  I tried to 'cpio -p' from
> one to the other.  No dice; cpio gave me "Too many links" and, contrary
> to the man page which says that it will just forget about links at
> that point, it scrogged the new fs totally.  I tried this twice.

 Please try checking that your mkfs(1m) was run with the proper options.
You may not have given the new file system enough inodes; The news 
filesystem has relatively more files than many filesystems.
If you still have problems, use cpio -o and copy back with cpio -i, so
you will be sure where the problem is coming from.
	These cpio's can be done with a simple shell for each subdirectory 
if necessary.
		Avi Malek
-- 
Avi Malek @ATT Bell Labs Parsippany, NJ

gwyn@brl-tgr.ARPA (Doug Gwyn <gwyn>) (08/29/85)

> > size limit of 2 meg and allow it to get more memory?
> To override the per-process limit, you need to set your ulimit bigger.
> Become superuser and type "ulimit 100000".  Unfortunately, ulimit affects both
> process size and max file size (flame, flame).

ulimit strikes again.  The default ulimit should be OFF (perhaps -1
should mean this); the site manager can set a ulimit in /etc/profile
according to site needs.  I hope somebody FIXES this nuisance.

alan@drivax.UUCP (Alan Fargusson) (08/29/85)

> My news filesystem is running out of space, so I decided to move it
> and double its size.

 .
 .
 .

> 1) If I run dcopy in single-user mode, will that override the per-process
> size limit of 2 meg and allow it to get more memory?
> 
> 2) If I use the '-d' switch on dcopy (leaves subdirectories where they
> are rather than moving them to the front of their parents), does anyone
> think there is a snowball's chance that it will go ahead and finish
> correctly?
> 
> 3) It doesn't matter what I do, because the computer is out to get me.
> If that is so, and it was cocky enough to send out this request for help
> anyway (you are reading this, aren't you?) then I'm in BIG TROUBLE.
> 
> Thanks very much in advance for any light you may shed on this,

You might try tar(1), however you will have to fix it. If you have source
that is. As in the example in the manual type:

	cd fromdir; tar cf - . | ( cd todir; tar xf - )

The problem with this is that when tar tries to make a directory in todir
it execs mkdir(1), then waits for ALL of its children to complete. But in
the bourne shell the first tar is a child of the second tar, so it can hang
forever. All you have to do is fix tar(1) so it only waits for the process
that it forked.

System V, a standard to live down to. :-)
-- 

Alan Fargusson.

{ ihnp4, amdahl, mot }!drivax!alan

peter@graffiti.UUCP (Peter da Silva) (09/04/85)

> 	cd fromdir; tar cf - . | ( cd todir; tar xf - )
> 
> The problem with this is that when tar tries to make a directory in todir
> it execs mkdir(1), then waits for ALL of its children to complete. But in
> the bourne shell the first tar is a child of the second tar, so it can hang
> forever. All you have to do is fix tar(1) so it only waits for the process
> that it forked.
> 
> System V, a standard to live down to. :-)

Far be it for me to do something for SV, but:

	( cd fromdir; tar cf - . ) | ( cd todir; tar xf - )

rcj@burl.UUCP (Curtis Jackson) (09/09/85)

In article <181@graffiti.UUCP> peter@graffiti.UUCP (Peter da Silva) writes:
>> 	cd fromdir; tar cf - . | ( cd todir; tar xf - )
>>
>> <more from original article>
>>
>Far be it for me to do something for SV, but:
>
>	( cd fromdir; tar cf - . ) | ( cd todir; tar xf - )

Huh?  The only difference I can see is that the stdout from the cd command
gets piped to the 'tar xf'.  BFD.  If you agree with me that it makes no
difference which way you execute this command, don't bother to write; otherwise
please mail me and tell me what I'm missing.

Thanks,
-- 

The MAD Programmer -- 919-228-3313 (Cornet 291)
alias: Curtis Jackson	...![ ihnp4 ulysses cbosgd mgnetp ]!burl!rcj
			...![ ihnp4 cbosgd akgua masscomp ]!clyde!rcj

alan@drivax.UUCP (Alan Fargusson) (09/11/85)

> > 	cd fromdir; tar cf - . | ( cd todir; tar xf - )
> > 
> > The problem with this is that when tar tries to make a directory in todir
> > it execs mkdir(1), then waits for ALL of its children to complete. But in
> > the bourne shell the first tar is a child of the second tar, so it can hang
> > forever. All you have to do is fix tar(1) so it only waits for the process
> > that it forked.
> > 
> > System V, a standard to live down to. :-)
> 
> Far be it for me to do something for SV, but:
> 
> 	( cd fromdir; tar cf - . ) | ( cd todir; tar xf - )

I am not sure if you are trying to say that this solves the problem or
not, but if you think it does you are wrong. If you want a long explenation
of the problem then send me mail.
-- 

Alan Fargusson.

{ ihnp4, amdahl, mot }!drivax!alan