• 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 (1309) - ufsdump ufsrestore (881) - t (781) - installboot solaris (722) - tag/storage (493) - solaris ufsdump (401) - Solaris 10 installboot (271) - installboot solaris 10 (266) - Solaris Disk copy (247) - solaris ufsdump ufsrestore (246) - solaris 10 ufsdump (199) - ufsdump to disk (175) - ufsrestore solaris (155) - ufsdump example (155) - ufsdump ufsrestore solaris (150) - solaris ufsrestore (147) - ufsdump solaris 10 (140) - ufsdump solaris (123) - ufsdump (114) - solaris copy disk (109) - ufsdump examples (108) - solaris copy partition (107) - No Entries in the Drive Database (101) - solaris copy partition table (96) - ufsdump howto (80) - ufsdump copy (74) - copy disk solaris (71) - ufsdump pipe ufsrestore (67) - Solaris boot -b (66) - disk copy solaris (62) - f (59) - solaris disk to disk copy (58) - solaris make disk bootable (58) - solaris copy filesystem (57) - all (56) - ufsdump disk to disk (54) - solaris boot net (49) - ufsrestore examples (48) - installboot in solaris (47) - ufsrestore example (46) - ufsdump copy disk (45) - ufsrestore Solaris 10 (45) - solaris boot disk (45) - Solaris 10 disk copy (44) - "ufsrestore examples" (43) - copy solaris disk (43) - ufsdump and ufsrestore (43) - ufsrestore in solaris (42) - solaris copy boot disk (41) - ufsdump ufsrestore copy (39) - copy partition table solaris (39) - solaris copy (39) - solaris ufsdump example (39) - solaris boot (39) - solaris 10 disk mirror (38) - solaris 10 mirror boot disk (37) - solaris copy root disk (37) - ufsdump root (37) - mirroring Solaris boot drives. (35) - ufsdump disk copy (35) - netbackup No Entries in the Drive Database (35) - disk to disk copy in solaris (34) - ufsrestore howto (32) - solaris ufsdump examples (32) - copy partition solaris (32) - solaris 10 mirror disk (32) - solaris bootable (31) - solaris ufsrestore example (30) - solaris boot block (30) - ufsdump ufsrestore pipe (30) - solaris mount disk (29) - ufsdump in solaris (29) - solaris diskcopy (29) - copy solaris boot disk (29) - solaris install boot (29) - copy solaris (28) - solaris 10 ufsrestore (28) - ufsrestore ufsdump (28) - solaris 10 ufsdump ufsrestore (28) - copy solaris partition (27) - ufsdump installboot (27) - disk to disk copy solaris (27) - solaris partition copy (27) - solaris copy boot block (26) - solaris (25) - copy filesystem solaris (25) - solaris boot mirror (25) - solaris ufsdump to disk (24) - ufsdump in solaris 10 (24) - solaris copy drive (24) - solaris boot partition (24) - ufsdump copy filesystem (23) - Solaris 10 disk mirroring (23) - solaris copy root partition (23) - solaris change boot disk (23) - solaris copy partitions (23) - copy boot disk solaris (23) - solaris ufsdump root (23) - copy disk to disk solaris (23) - mount disk solaris (22) - solaris disk dump (22) - solaris copy "disk to disk" (22) - copy filesystem ufsdump (21) - "boot -b" solaris (21) - ufsdump mirror (20) - make solaris disk bootable (20) - solaris move boot disk (18) - ufsdump copy partition (18) - ufsdump/ufsrestore (18) - solaris boot disk copy (18) - ufsdump ufsrestore solaris 10 (18) - installboot solaris 8 (18) - installboot command in solaris (18) - ufsdump 0f (17) - ufsdump disk | (17) - ufsdump ufsrestore copy disk (17) - solaris x86 installboot (17) - solaris ufsdump disk (17) - copy root disk solaris (17) - solaris 10 mirror boot drive (17) - ufsdump to copy filesystem (17) - solaris filesystem copy (17) - copy boot block solaris (17) - solaris 8 disk copy (17) - ufsrestore from disk (17) - solaris 10 x86 installboot (17) - ufsdump pipe to ufsrestore (17) - ufsrestore slow (16) - disk copy ufsdump (16) - ufsdump solaris example (16) - solaris copy disk partition (16) - boot net solaris (16) - ufsrestore installboot (15) - solaris 10 boot disk (15) - solaris copy slice (15) - solaris ufsdump disk to disk (15) - disk copy solaris 10 (15) - solaris 10 copy partition table (15) - sun disk copy (15) - make disk bootable solaris (15) - installboot on solaris (15) - ufsdump disk (15) - copy a solaris boot drive to a new disk (15) - tag/Solaris (14) - ufsdump slow (14) - solaris ufsrestore examples (14) - solaris 10 "boot net" (14) - ufsdump boot (14) - "no entries in the drive database" netbackup (14) - mss (14) -