Re: No space left on device - Solved!
From: Salman Haq (salman_at_wam.umd.edu)
Date: Sun, 27 Jul 2003 17:38:42 -0400 (EDT) To: firstname.lastname@example.org
I finally fixed the problem by creating two new partitions, one for /home
(~26.5 Gb) and one for /var (~512 Mb).
Here are the steps I followed (suggested by David Bree):
0. Reboot the computer using parted boot floppy.
1. Invoke parted and resize hda5 by shrinking it down to 10 Gbs:
(parted) resize 5 15868.925 26367.424
2. Make two new partitions:
(parted) mkpartfs logical ext2 26367.424 53503.424
(parted) mkpartfs logical ext2 53503.424 54015.456
Note: the new partitions are called hda7 and hda8. You can always
hit 'p' and check that in parted.
3. Reboot the computer normally and copy /home and /var into hda7 and
hda8 respectively. Change to root and:
# mount -t ext2 /dev/hda7 /mnt
# cd /home
# tar cf - . | tar --same-owner -C /mnt -xf -
# diff -r /home /mnt
# umount /mnt
# mount -t ext2 /dev/hda8 /mnt
# cd /var
# tar cf - . | tar --same-owner -C /mnt -xf -
# diff -r /var /mnt
# umount /mnt
# rm -rf /home
# mkdir /home
# rm -rf /var
# mkdir /var
4. Edit /etc/fstab, add the 2 new lines:
"/dev/hda7 /home ext2 defaults 0 2"
"/dev/hda8 /var ext2 defaults 0 2"
5. All done (almost)! Reboot normally.
When I rebooted after step 5, the Xserver would not start. The error
on the screen said "gdm already running. Aborting!"
Morever, I could not bring up Xserver by typing 'startx' because of
"xauth: timeout in locking authority file /home/user/.Xauthority". So
here's what I had to do:
# chown <user> /home/<user> (for all users on the system)
# rm /var/log/gdm.pid
This finally allowed me to start gdm as root but kde would complain:
"Could not read netowrk connection list. ... Please check that dcopserver
program is running". Here's what I did:
# rm ~/.DCOP*
Now kde runs fine, and I'm really done! See for yourself:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda3 463M 101M 338M 23% /
/dev/hda5 10G 2.8G 6.7G 30% /usr
/dev/hda7 26G 257M 24G 2% /home
/dev/hda8 478M 68M 385M 15% /var
Thank you everyone for your useful suggestions! ... salman
On Sun, 20 Jul 2003, David wrote:
> On Sat, Jul 19, 2003 at 09:10:14PM -0400, Salman Haq wrote:
> > > > #df -h
> > > > Filesystem Size Used Avail Use% Mounted on
> > > > /dev/hda3 463M 440M 1.0k 100% /
> > > > /dev/hda5 37G 2.5G 32G 8% /usr
> > > >
> > > > # df -ih
> > > > Filesystem Inodes IUsed IFree IUse% Mounted on
> > > > /dev/hda3 120k 20k 100k 17% /
> > > > /dev/hda5 4.7M 149k 4.5M 4% /usr
> > > >
> > > > Now, I realize that this a very bad partition scheme but I'm just a
> > > > newbie. When I was installing debian a few months ago, I didn't intend to
> > > > have this scheme. I wanted root to be mounted as '/' and everything else
> > > > under '/usr' since thats the bigger partition. Unfortunately, most of
> > > > everything is mounted under '/'. I wonder where I went wrong...
> > > >
> > > > Can I change this situation, without re-formatting/re-partitioning? Or,
> > > > atleast for now, which files can I safely delete to free-up some space?
> > Thanks everybody for your helpful responses. To make some temporary room
> > I cleaned up some logs and unnecessary directories in a few of the home
> > directories of some of the users.
> > Then I resolved to fix the problem once and for all by using parted to
> > resize the partitions. When I finally got around to doing it this past
> > weekend, things didn't go as smoothly as I thought they would.
> > This is the information that parted shows about my partitions:
> > Disk geometry for /dev/hda: 0.000-57220.458 megabytes
> > Disk lable type: msdos
> > Minor Start End Type Filesystem Flags
> > 1 0.031 31.376 primary fat 16
> > 2 31.377 15390.395 primary ntfs boot
> > 3 15390.396 15868.894 primary ext2
> > 4 15868.894 54493.923 extended
> > 5 15868.925 54015.424 logical ext2
> > 6 54015.456 54390.396 logical linux-swap
> > Since my original problem requires me to shrink hda5 down to ~10 gigs and
> > expand hda3 to ~30 gigs I set about to do the following:
> > (parted) resize 5 40869.024 54015.424
> > and saw this:
> > attempt to access ... of device
> > 03:00: rw-=0, ... limit=58593750 <-(same error msg as before)
> > Warning: You requested to resize the partition to 40869.024-54015.424Mb.
> > The closest Parted can manage is 15868.925-54015.424.
> > So parted doesn't want to resize the partition that way.
> I believe that Florian Ernst answered this problem...
> > Then I quit
> > parted and restarted it as "parted /dev/hda5" and typed:
> > (parted) resize 1 0.000 13146.4
> > That actually resized something... when I restarted my computer normally,
> > /dev/hda5 mounted to /usr and "df" showed its size as 12 gigs (as opposed
> > to the old 37 gigs). However, parted continues to show the original
> > numbers. Morever, I still haven't solved my original problem, which is
> > expanding /dev/hda3. When I try:
> > (parted) resize 3 15390.393 40000.000
> > it says "The closest parted can manage is 15390.393 15868.894"
> > I also tried "parted /dev/hda4" but that just says "can't partition
> > outside of disk" even if I simply try to print info.
> > What do I have to do to get rid of that disk access error and
> > shrink hda5 (or hda4,5,6) and expand hda3?
> > In the meanwhile, I have 'resized' hda5 back to its original size
> > so that 'df' show its size as 37 gigs. I hope this makes sense.
> There are a couple of ways to go about this..
> 1) Keep everything you currently have on "/" and expand it.
> 2) Create additional partitions and move some directories out of "/"
> In either case, the first thing you are going to have to do is shrink
> hda5.. Someone suggested that you'd never need more than 5-10G on /usr,
> so.. assuming you want 10 G, after issuing the command "parted /dev/hda"
> 1) if you want to keep only the two partitions and not add more..
> (parted) resize 5 15868.925 44015 ( leaving about a 10-G space above
> (parted) mkpartfs ext2 <new top of hda5> 54390.396
> <copy existing hda5 to new partition> - see below..
> (parted) del <old hda5> ( should still be hda5)
> I'm not sure now what hda4 will look like - I've never tried this.. if
> it's now moved to the begin of the new hda5, you are sitting fine..
> just resize hda3 up to the bottom of hda5...
> 2) -- probably easier.. create new partition(s) and move director(ies)
> out of "/".. "/home" should give you a bunch of space.. also /etc takes
> up quite a bit.. "du -ch" of the /home and /etc dirs should give you
> an idea of what you might need..
> (parted) resize 5 15868.925 25868.925 (adjust to taste)..
> then create new partition(s) in the new free space and copy the
> director(ies) into the new partition(s) (see below).. delete (or empty)
> these directories from within hda3 - if you delete them, you need to
> make new empty dirs in hda3 for mounting purposes..
> Then edit /etc/fstab to the new setup and remount..
> Note on copying dirs: parted has a copy facility for copying one
> partition to another, but I'm not sure if it works on differently-sized
> partitions.. the simplest way is to do this, IMO, is to pipe tar into
> itself.. Basically:
> cd <source directory>
> tar . -cf - | tar -C <destination dir> -xf - (tar has another
> stdout/stdin option, but this works for me)
> Don't forget to mount the new partition before doing this. For example,
> if you want to copy /etc to hda6:
> <do this as root>
> mount -t ext2 /dev/hda6 /mnt
> cd /etc
> tar . -cf - | tar -C /mnt -xf -
> (maybe check new directory.. might run diff if you wish..)
> diff -r /etc /mnt
> umount /mnt..
> One other thing.. man tar.. I think there is an option to preserve
> uid/gid.. you need to watch and include this.. If not, for /home,
> especially, after mounting the new /home partition on /mnt (or
> whatever), as root, mkdir /mnt/<user>; chown user.user /mnt/<userdir>,
> then cd into /home/<user> and run the tars as <user>, also, what follows
> -C in this case would be -C /mnt/<user>.. this being done for each
> user.. but I do believe that tar does have an option to preserve owner,
> doesn't it?
> I hope this helps and works for you ..
> To UNSUBSCRIBE, email to email@example.com
> with a subject of "unsubscribe". Trouble? Contact firstname.lastname@example.org
-- To UNSUBSCRIBE, email to email@example.com with a subject of "unsubscribe". Trouble? Contact firstname.lastname@example.org