• If you’ve ever gone to mirror a system drive with Solstice Disk suite, you know how frustrating it can be when you either don’t have any more slices to use for your meta database partitions, or all the space on the disk has already been allocated to existing partitions. While Disk Suite only requires one partition be reserved for its meta database information on boot drives, two are really suggested for redundancy purposes, and in the example below, I found myself needing to mirror a system disk that had only one remaining partition, and no space left that could be used for the meta database.

    While I could have taken a small amount of space from the swap partition and re-allocated it to a new meta database partition on slice 7, this solution would not have been elegant, and I would have still only had one meta database partition. As it stood, the system had the following filesystems on the following disk slices:

    c1t0d0

    Part Tag
    0 root
    1 swap
    2 backup
    3 usr
    4 usr/local
    5 opt
    6 var
    7 unused

    In order to bring the system into line with my standards and prepare it for proper mirroring, I would have to carve up another disk, and migrate the data to it.

    Here is what the partition table on the new disk looked like:

    c1t2d0
    Current partition table (original):
    Total disk cylinders available: 24620 + 2 (reserved cylinders)

    Part Tag Flag Cylinders Size Blocks
    0 root wm 0 - 1088 1.50GB (1089/0/0) 3146121
    1 swap wu 1089 - 6896 8.00GB (5808/0/0) 16779312
    2 backup wu 0 - 24619 33.92GB (24620/0/0) 71127180
    3 - wm 6897 - 6967 100.16MB (71/0/0) 205119
    4 - wm 6968 - 7038 100.16MB (71/0/0) 205119
    5 opt wm 7039 - 8853 2.50GB (1815/0/0) 5243535
    6 usr wm 8854 - 12483 5.00GB (3630/0/0) 10487070
    7 var wm 12484 - 24619 16.72GB (12136/0/0) 35060904

    Now that everything is all laid out, we can start moving all the data from c1t0d0 to c1t2d0, keeping in mind that we will be merging /usr/local onto /usr on the new system disk… Here we go

    Make a new filesystem for /:

    # newfs /dev/rdsk/c1t2d0s0
    newfs: /dev/rdsk/c1t2d0s0 last mounted as /
    newfs: construct a new file system /dev/rdsk/c1t2d0s0: (y/n)? Y

    Mount the new / filesystem as /mnt:
    # mount -F ufs -o rw /dev/dsk/c1t2d0s0 /mnt
    Move the data from c1t0d0s0 to c1t2d0s0:
    # ufsdump 0f – / | ( cd /mnt ;ufsrestore xvf – )
    Add links
    Set directory mode, owner, and times.
    set owner/mode for ‘.’? [yn] y
    Directories already exist, set modes anyway? [yn] y
    DUMP: 405886 blocks (198.19MB) on 1 volume at 406 KB/sec
    DUMP: DUMP IS DONE

    Unmount /mnt
    # umount /mnt

    That’s the general idea… Now we just have to do the same thing for the other partitions, leaving out swap, backup, and our two meta database partitions of course. These partitions (1,2,3 and 4) should be left alone for the time being, as they are never mounted as filesystems.

    # newfs /dev/rdsk/c1t2d0s5
    # mount -F ufs -o rw /dev/dsk/c1t2d0s5 /mnt
    # ufsdump 0f – /opt | ( cd /mnt ;ufsrestore xvf – )
    # umount /mnt
    # newfs /dev/rdsk/c1t2d0s6
    # mount -F ufs -o rw /dev/dsk/c1t2d0s5 /mnt
    # ufsdump 0f – /usr | ( cd /mnt ;ufsrestore xvf – )
    # umount /mnt
    # newfs /dev/rdsk/c1t2d0s7
    # mount -F ufs -o rw /dev/dsk/c1t2d0s5 /mnt
    # ufsdump 0f – /var | ( cd /mnt ;ufsrestore xvf – )
    # umount /mnt
    Finally, the /usr/local partition
    # mount -F ufs -o rw /dev/dsk/c1t2d0s5 /mnt
    # ufsdump 0f – /usr/local | ( cd /mnt/local ;ufsrestore xvf – )
    # umount /mnt

    Now that we have all the data moved, we still don’t have a disk that is bootable. Since the whole idea here is for us to end up with a new bootable system disk, we have to install bootblocks onto the new system disk. This is done with the installboot command:

    # installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c1t2d0s0

    Now that we have the bootblocks needed to boot the solaris kernel, the last thing we have to do is make sure our new vfstab file points to all the right partitions.

    Mount the new / partition:
    # mount -F ufs -o rw /dev/dsk/c1t2d0s0 /mnt
    Edit the new vfstab file:
    # vi /mnt/etc/vfstab
    For the information given in this example, this file will contain the following entries:

    #device device mount FS fsck mount mount
    #to mount to fsck point type pass at boot options
    #
    fd - /dev/fd fd - no -
    /proc - /proc proc - no -
    /dev/dsk/c1t2d0s1 - - swap - no -
    /dev/dsk/c1t2d0s0 /dev/rdsk/c1t2d0s0 / ufs 1 no -
    /dev/dsk/c1t2d0s5 /dev/rdsk/c1t2d0s5 /usr ufs 1 no -
    /dev/dsk/c1t2d0s6 /dev/rdsk/c1t2d0s6 /var ufs 1 no -
    /dev/dsk/c1t2d0s7 /dev/rdsk/c1t2d0s7 /opt ufs 2 yes -
    swap - /tmp tmpfs - yes -

    Notice that the target number will remain 2, not move to 0 when we swap the disks and boot from the new one. To resolve this, it is strongly suggested that you rebuild the solaris device tree and change the vfstab file to reflect the new disk position.

    That is everything! We now shutdown the system, swap the positions of c1t0d0 and c1t2d0 and reboot off our new system disk. We are now ready to move onto the mirroring process.

    This entry was posted on Tuesday, May 10th, 2005 at 11:51 am and is filed under Data and Technology. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
  • 14 Comments

    Take a look at some of the responses we've had to this article.

    1. [...] If you ever shift around any bootable drives within a Sun Solaris box, you may find that either the device names (cxtxd0sx) do not follow the disk position within the server, or, the system just fails to boot because it can’t mount the other disk slices. [...]

    2. [...] I had great fun following this process today. I made it to the last bit, but after rebooting the system wants to mount / as a read-only file system, freaks out about not being able to create /tmp, execute cron jobs and do a handful of other really important things and then presents a login prompt. [...]

    3. Feb 2nd
      Reply

      This sounds like it may be caused by mixed up device links. Did you rebilid them?

    4. [...] What is the reputation of the site in question from other, possibly more reputable sites? For instance, Cliff wrote some instructions on Solaris partitioning which were linked by Sun support shortly after that. A link like that gives a high level of confidence in the content presented. [...]

    5. [...] You can also use my instructions for copying a Solaris boot drive to a disk with a different partition layout as a safer alternative. [...]

    6. Maelstrom
      Mar 9th
      Reply

      Should these be set to slice 6 and 7 respectively?

      EG # mount -F ufs -o rw /dev/dsk/c1t2d0s6/mnt
      and
      # mount -F ufs -o rw /dev/dsk/c1t2d0s7 /mnt
      instead of just using s5

      # newfs /dev/rdsk/c1t2d0s6
      # mount -F ufs -o rw /dev/dsk/c1t2d0s5 /mnt
      # ufsdump 0f – /usr | ( cd /mnt ;ufsrestore xvf – )
      # umount /mnt
      # newfs /dev/rdsk/c1t2d0s7
      # mount -F ufs -o rw /dev/dsk/c1t2d0s5 /mnt
      # ufsdump 0f – /var | ( cd /mnt ;ufsrestore xvf – )
      # umount /mnt
      Finally, the /usr/local partition
      # mount -F ufs -o rw /dev/dsk/c1t2d0s5 /mnt
      # ufsdump 0f – /usr/local | ( cd /mnt/local ;ufsrestore xvf – )
      # umount /mnt

    7. kjs
      Jun 27th
      Reply

      I have used the above procedure to copy the contents of an entire disk over to a different disk. It worked very nicely, and now I have a system with a mirrored disk set (using DiskSuite).
      Thanks, great article
      js

    8. Jun 27th
      Reply

      Hey JS,

      I’m glad the article was helpful to you :)

    9. BaffyOfDaffy
      Jul 23rd
      Reply

      You may also want to boot to an alternative source (cd/dvd/net) in order to ensure that you are not trying to deal with changing content

    10. [...] some of the files in those directories are larger than 8 Gigabytes. One solution is to use a “ufsdump pipe to ufsrestore” command, but I have even had problems with this from time to time. My perfered method these [...]

    11. Prasen
      Aug 20th
      Reply

      Good document.

      With this document I did on SUNfire 440 with Solaris 10. But problem is that its took long time to take backup & restore with 3 GB data using #ufsdump 0f – /usr | ( cd /mnt ;ufsrestore xvf – )

      Near about 3 hours it tooks take backup & restore with 3 gb data.

      Is there any solution to minimise the time.

      One more thing I am not able to rebuild /etc/path_to_inst file with following command in Solaris 10 release 10/6

      # devfsadm -r /mnt -p /mnt/etc/path_to_inst

      Thanks …
      Prasen

    12. [...] Link:http://spiralbound.net/2005/05/10/how-to-copy-a-solaris-boot-drive-to-a-disk-with-a-different-partit… BookmarkBookmark and Share This Page | « CloseSave to Browser FavoritesAskbackflipblinklistBloglinesBlogMarksBlogsvineBUMPzee!CiteULikeco.mmentsConnoteadel.icio.usDotNetKicksDiggdiigodropjack.comdzoneFacebookFarkFavesFeed Me LinksFriendsitefolkd.comFurlGoogleHuggJeqqKaboodlelinkaGoGoLinksMarkerMa.gnoliaMister WongMixxMySpaceMyWebNetvouzNewsvinePlugIMpopcurrentPropellerRedditRojoSegnaloShoutwireSimpysk*rtSlashdotSphereSphinnSpurl.netSquidooStumbleUponTailrankTechnoratiThisNextWebrideWindows LiveYahoo!Email This to a FriendHTML: If you like this then please subscribe to the RSS feed or Email feed.Powered by Bookmarkify™ More » Tags: boot, computer, disk, disk cylinder, disk label, disk suite, disksuite, howto, metadb, mirroring, mirroring scripts, partition, partition layout, process, risky, server, Solaris, Solaris, solaris 8, Storage, sun microsystems, swap [...]

    13. DaveK
      Jun 17th
      Reply

      Thanks for this article, I’ve just used it to move to a bigger drive in my E4500.

    14. rob
      Dec 17th
      Reply

      if you have nfs-shares remember to boot in single user mode, otherwise the procedure will fail

  • Leave a Reply

    Let us know what you thought.

  • Name (required):

    Email (required):

    Website:

    Message:

Visitors have tagged this post: solaris installboot (1133) - t (781) - ufsdump ufsrestore (759) - installboot solaris (554) - tag/storage (493) - solaris ufsdump (371) - Solaris 10 installboot (238) - Solaris Disk copy (222) - solaris ufsdump ufsrestore (214) - installboot solaris 10 (214) - ufsdump to disk (161) - solaris 10 ufsdump (160) - ufsdump ufsrestore solaris (119) - solaris ufsrestore (118) - ufsrestore solaris (118) - ufsdump (110) - ufsdump example (110) - ufsdump solaris (109) - ufsdump solaris 10 (105) - ufsdump examples (100) - No Entries in the Drive Database (100) - solaris copy partition (99) - solaris copy partition table (87) - solaris copy disk (84) - ufsdump howto (80) - ufsdump copy (70) - Solaris boot -b (66) - copy disk solaris (65) - disk copy solaris (59) - f (59) - all (56) - solaris copy filesystem (56) - solaris make disk bootable (51) - ufsdump pipe ufsrestore (50) - solaris disk to disk copy (49) - ufsrestore example (46) - solaris boot net (43) - ufsdump disk to disk (43) - solaris boot disk (43) - "ufsrestore examples" (43) - ufsdump copy disk (42) - installboot in solaris (42) - copy solaris disk (39) - solaris 10 disk mirror (38) - ufsrestore Solaris 10 (38) - ufsrestore examples (37) - Solaris 10 disk copy (36) - copy partition table solaris (36) - solaris copy (36) - solaris boot (36) - ufsdump and ufsrestore (36) - mirroring Solaris boot drives. (35) - solaris copy boot disk (35) - ufsdump root (35) - netbackup No Entries in the Drive Database (34) - solaris 10 mirror boot disk (33) - ufsdump ufsrestore copy (33) - ufsdump disk copy (33) - ufsrestore howto (32) - solaris ufsdump example (32) - solaris 10 mirror disk (32) - ufsrestore in solaris (32) - solaris bootable (31) - solaris ufsdump examples (30) - solaris mount disk (29) - solaris ufsrestore example (29) - solaris copy root disk (28) - ufsdump in solaris (28) - solaris diskcopy (28) - disk to disk copy in solaris (28) - copy solaris (27) - ufsrestore ufsdump (27) - copy partition solaris (26) - solaris 10 ufsrestore (26) - solaris (25) - solaris partition copy (24) - ufsdump copy filesystem (23) - Solaris 10 disk mirroring (23) - copy filesystem solaris (23) - ufsdump installboot (23) - disk to disk copy solaris (23) - solaris boot mirror (23) - solaris boot block (23) - solaris copy drive (23) - mount disk solaris (22) - copy solaris partition (22) - solaris copy boot block (22) - solaris ufsdump to disk (22) - solaris copy "disk to disk" (22) - copy boot disk solaris (22) - solaris 10 ufsdump ufsrestore (22) - solaris copy root partition (21) - solaris ufsdump root (21) - "boot -b" solaris (21) - solaris copy partitions (20) - ufsdump ufsrestore pipe (20) - copy solaris boot disk (19) - copy disk to disk solaris (19) - solaris disk dump (18) - ufsdump/ufsrestore (18) - ufsdump in solaris 10 (18) - ufsdump disk | (17) - ufsdump ufsrestore copy disk (17) - make solaris disk bootable (17) - installboot solaris 8 (17) - disk copy ufsdump (16) - ufsdump copy partition (16) - ufsdump mirror (16) - solaris ufsdump disk (16) - copy root disk solaris (16) - solaris 10 mirror boot drive (16) - ufsdump to copy filesystem (16) - solaris filesystem copy (16) - copy boot block solaris (16) - solaris boot partition (16) - solaris move boot disk (15) - ufsrestore installboot (15) - ufsrestore slow (15) - solaris 10 boot disk (15) - copy filesystem ufsdump (15) - solaris ufsdump disk to disk (15) - tag/Solaris (14) - ufsdump 0f (14) - ufsdump slow (14) - solaris 10 "boot net" (14) - solaris copy slice (14) - solaris change boot disk (14) - "no entries in the drive database" netbackup (14) - mss (14) - solaris 10 copy partition table (14) - sun disk copy (14) - solaris 8 disk copy (14) - solaris 10 x86 installboot (14) - solaris unmount swap (13) - ufsdump boot (13) - disk copy solaris 10 (13) - solaris boot disk copy (13) - mirror disk solaris 10 (13) - solaris ufsdump howto (13) - Diskcopy Solaris 9 (13) - installboot command in solaris (13) - ufsrestore from disk (13) - boot -b solaris (13) - ufsdump ufsrestore copy filesystem (12) - "ufsrestore" (12) - copy ufsdump ufsrestore (12) - solaris ufsrestore examples (12) - solaris copy disk partition (12) - solaris: installboot command (12) - installboot in solaris 10 (12) -