Path: utzoo!utgpu!news-server.csri.toronto.edu!bonnie.concordia.ca!thunder.mcrcim.mcgill.edu!snorkelwacker.mit.edu!bloom-beacon!eru!hagbard!sunic!dkuug!ideal!lhoe From: lhoe@iddth.id.dk (Lasse H Oestergaard (EMP)) Newsgroups: comp.unix.ultrix Subject: Re: A question about swap Keywords: swap Message-ID: Date: 19 Jun 91 11:43:51 GMT References: <1991Jun14.184609.21178@mlb.semi.harris.com> <1991Jun17.083956.20788@tkou02.enet.dec.com> Sender: news@iddth.id.dk (Nick Sandru (news adm)) Organization: Dept. of Computer Science Lines: 114 Nntp-Posting-Host: iddth2 diamond@jit533.swstokyo.dec.com (Norman Diamond) writes: >In article <1991Jun14.184609.21178@mlb.semi.harris.com> dcb@dave.mis.semi.harris.com writes: >>On one of our 5500s, we have configured over 500M of swap space. Someone >>recommended using the 'a' and 'b' partitions over five drives, with the >>a/b partitions combined into a larger 'a' partition. >I believe that if you swap onto your 'a' partition, then you overwrite the >partition information and corrupt the entire disk. It might be possible to >make a really tiny 'a' partition and larger 'b' partition while leaving the >rest of the disk alone; I haven't tried it. >I believe that if you swap onto a disk's 'c' partition (an entire disk), >then you are usually safe, but if a random memory that happens to look like >a partition table happens to get swapped out onto the lucky block, and then >you reboot, you have a corrupted disk. >Warning: this post is a combination of vague recollections and logical >thinking, both of which are risky and should not be depended upon when using >a derivative of the Unix operating system. Do your own reading and/or obtain >advice from an expert on the topic before relying on it. HOW TO DO IT RIGHT: The following is correct, and tested by experience on VAXes, but should be true for RISCS also: If you swap on a partition, no matter which, it should NOT start at segment 0, which the a and c partitions usually do. Use chpt -p /dev/r...c 64 to leave room for the bootblock, partition table and whatever, by starting the partion at 64, and shrinking the size correspondingly. Or change the a-partition to have a small length (64 should do it) (while still starting at 0), discard it, and use (for instance) an extended b-partition (which can start at 64) for swapping. The current (or if no valid partition table exists, the default) size of partitions can be found with chpt -q /dev/r...c MISUSE: If a partition starting at 0 is used to swap on, AND any partition on the same disk is used for filesystems, the effect depends on whether 1. The partitions used for filesystems have been redefined (i.e. have either a non-standard placement or size, or both). In this case the disk will become unreadable, probably on the next boot, because the partition table has been overwritten, AND THE DISK DRIVER THEREFORE APPLIES THE COMPILED-IN DEFAULT. Unless (one of) the swappartition(s) is the primary swap partition and further, the DEFAULT placement/size for that partition overlays part of a filesystem partition, the boot to multi user mode should fail, and NO INFORMATION SHOULD BE DESTROYED, and the disk can be recovered, PROVIDED THAT you can remember the original partitioning. 2. The partition is the a-partition (and no partitions have been re-defined). THIS SEEMS TO WORK, because the compiled-in default is used instead of the destroyed partition table. BUT see below. However, WHENEVER a partition starts at 0 is used to swap on (which includes, when the whole disk is used as a c-partition), the swapping may (as Norman Diamond writes) create a 'false partition table', though this is very unlikely. Then all bets are off, of course, and you may get filesystems overwritten. (In case 2, and when the whole disk is used as a c-partition, you can probably recover by dd -ing 64 segments of 0-s to the raw disk, however). CORRECTING: To correct the partitioning of a disk, which has a partition, that starts at segment 0, that is used as a swapfile, WITHOUT COPYING THE DATA, proceed as follows: . Make sure, that the partition is not active. This normally implies a re-boot to single user mode. If the partition is the primary swapfile, make an alternative kernel, or boot from the net. . Read the current partition table by chpt -q /dev/r...c If you know, what the contents should be, and it isn't, restore it by successive chpt -p. /dev/r...c ... ... commands, then use the above commands to modify the (relevant) swapfile. (Also check the filesystems.) . Othewise, if the partition table is NOT standard, it is (probably) un-corrupted, so, unless you KNOW different, just use the above commands to modify the (relevant) swapfile. . Otherwise set the partition table to the default with chpt -d /dev/r... , then use the above commands to modify the (relevant) swapfile.c NOTE: This may fail, if no filesystem exist, in what would be the a-partition, if the default applied (i.e. starting at 0). Then one must make a small dummy filesystem there first (which will NOT overwrite anything useful, in this situation): . Find a partition, that starts at 0, in the current partition table. Either the actual swap-partition or the default a-partition must do this. Assume this is X . Use /etc/mkfs /dev/r...X 1000 to create a mini-filesystem. DO NOT USE newfs . . Either restore a (known) nonstard partitiontable partition by partition, or set it to the default. This should work now. Then use the above commands to modify the (relevant) swapfile. Lasse H. Ostergaard lhoe@id.dth.dk