Benutzer-Werkzeuge

Webseiten-Werkzeuge


freebsd:clone_disks

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

freebsd:clone_disks [2013/12/16 14:36] (aktuell)
idefix angelegt
Zeile 1: Zeile 1:
 +====== ​ Cloning disks  ======
 +=====  dump/​restore ​ =====
 +If it were me, I would plub the second disk in.
 +It is SCSI so it should show up as da1   (or higher if you have
 +more disks you haven'​t mentioned).
 +
 +Then I would use fdisk(8) and bsdlabel(8) to slice and partition it to
 +be like the other disk.  Use newfs(8) to create the file systems and then
 +use dump(8) and restore(8) to copy the file systems.
 +
 +Lets presume you have 1 slice all FreeBSD on the disk and in that slice
 +you have /, swap, /tmp, /usr, /var and /home  just for example and you
 +don't need to copy swap and /tmp, of course.
 +
 +The following would do it nicely.
 +<​code>​
 +  dd if=/​dev/​zero of=/dev/da1 bs=512 count=1024
 +  fdisk -BI da1
 +  bsdlabel -w -B da1s1
 +  bsdlabel -e
 +    --- At this point you will be put in to an editor file with a
 +        nominal 1 partition created. ​  Just for example I will
 +        pick some sizes. ​  ​Actually,​ you want to do a bsdlabel on
 +        your da0s1 to see what values to use.  Make them the same.
 +  Leave alone all the stuff above the partition information
 +</​code>​
 +
 +So, starting here, edit it to be:
 +<​code>​
 +  8 partitions:
 +#        size   ​offset ​   fstype ​  ​[fsize bsize bps/cpg]
 +  a:   ​393216 ​       0    4.2BSD ​    2048 16384    94   #
 +  b:  2572288 ​       *      swap                        # (Cyl.   32*- 192*)
 +  c:​156119670 ​       0    unused ​       0     ​0 ​        # (Cyl.    0 - 4858)
 +  e:  1048576 ​       *    4.2BSD ​    2048 16384    89   # (Cyl.  192*- 258*)
 +  f:  4194304 ​       *    4.2BSD ​    2048 16384    89   # (Cyl.  258*- 519*)
 +  g:  6291456 ​       *    4.2BSD ​    2048 16384    89   # (Cyl.  519*- 910*)
 +  h:        *        *    4.2BSD ​    2048 16384    89   # (Cyl.  910*- 4826*)
 +~
 +That would be /     = 192 MB
 +              swap  = 1256 MB
 +              /tmp  = 512 MB
 +              /usr  = 2048 MB
 +              /var  = 3072 MB
 +              /home = all the rest of the slice on a nominal 76 GB drive.
 +</​code>​
 +Sizes are before newfs or system reserves.
 +As mentioned above, use the partition identifiers the same as on your
 +other disk that you want to copy.
 +
 +Write and exit the editor and your label is done.
 +
 +<​code>​
 +newfs /​dev/​da1s1a ​           becomes /
 +newfs -U /​dev/​da1s1e ​        ​becomes /tmp
 +newfs -U /​dev/​da1s1f ​        ​becomes /usr
 +newfs -U /​dev/​da1s1g ​        ​becomes /var
 +newfs -U /​dev/​da1s1h ​        ​becomes /home
 +</​code>​
 +Swap does not get newfs-ed.
 +
 +Add mount points
 +<​code>​
 +mkdir /cproot
 +mkdir /cpusr
 +mkdir /cpvar
 +mkdir /cphome
 +</​code>​
 +You don't need one for the copy of /tmp since you don't need to copy it.
 +
 +Edit /etc/fstab to add mount instructions.
 +
 +<​code>​
 +# Presuming your original fstab has the following as per my example
 +/​dev/​da0s1a ​            / ​              ​ufs ​    ​rw ​             1       1
 +/​dev/​da0s1b ​            ​none ​           swap    sw              0       0
 +/​dev/​da0s1e ​            /​tmp ​           ufs     ​rw ​             2       2
 +/​dev/​da0s1f ​            /​usr ​           ufs     ​rw ​             2       2
 +/​dev/​da0s1g ​            /​var ​           ufs     ​rw ​             2       2
 +/​dev/​da0s1h ​            /​home ​          ​ufs ​    ​rw ​             2       2
 +# add something like the following according to your setup needs.
 +/​dev/​da1s1a ​            /​cproot ​        ​ufs ​    ​rw ​             2       2
 +/​dev/​da1s1f ​            /​cpusr ​         ufs     ​rw ​             2       2
 +/​dev/​da1s1g ​            /​cpvar ​         ufs     ​rw ​             2       2
 +/​dev/​da1s1h ​            /​cphome ​        ​ufs ​    ​rw ​             2       2
 +</​code>​
 +
 +Note that you want to change the pass on the cproot to '​2'​ so it
 +won't mess up boots.
 +
 +Now mount everything.
 +
 +<​code>​
 +mount -a
 +</​code>​
 +
 +Then do the copies.
 +
 +<​code>​
 +cd /cproot
 +dump -0af - / | restore -rf -
 +cd /cpusr
 +dump -0af - /usr | restore -rf -
 +cd /cpvar
 +dump -0af - /var | restore -rf -
 +cd /cphome
 +dump -0af - /home | restore -rf -
 +</​code>​
 +You are finished.
 +
 +In the future, if you make the same copies on to the same disk, you
 +do not have to reslice, relabel and renewfs everything.
 +You can just go in to each filesystem and rm -rf it.
 +Or you could just umount, ​ newfs and remount each partition to clear them.
 +<​code>​
 +cd /cproot
 +rm -rf *
 + etc or
 +umount /cproot
 +newfs /dev/da1s1a
 +   etc etc
 +mount -a
 +</​code>​
 +
 +Then do copies.
 +
 +It looks a bit complicated to set up, but it really isn't and it is
 +the most complete way to create bootable copies of disks.
 +
 +If you do periodic copies, it would be easy to create a script to
 +clean the copy (using either rm -rf * or newfs method) and do the
 +dump/​restores. ​   It could even run on the cron if you want.  I would
 +actually suggest setting up a three disk rotation for copies.
  
freebsd/clone_disks.txt · Zuletzt geändert: 2013/12/16 14:36 von idefix