背景:
由于原来的虚拟机磁盘空间异常,决定重新安装虚拟机,为了让我之前装的软件和我配置的用户环境变量等信息都保存下来。遂决定首先将以安装的软件目录用tar命令打包,然后在新的虚拟机里还原,这样就省去了安装的步骤。
还原的时候除了安装目录里的文件,还有另外几个目录需要拷贝:
1、u01目录下的安装文件
2、用户目录下的.bash_profile文件的里的环境变量
3、
涉及知识:
虚拟机添加物理磁盘、给物理磁盘分区、创建文件系统、tar命令、cp命令等。
步骤:
1、关闭虚拟机,添加新硬盘
此时需要你在宿主机上创建一个新的磁盘文件,然后添加到虚拟机里。
2、此时打开虚拟机,fdisk -l能看见sdb磁盘,df -h无法识别文件(因为还没有创建文件系统)
3、给新硬盘分区并添加文件系统
第一步:创建分区
root# fdisk /dev/had
à
进入到新添加的硬盘中
The number of cylinders for this disk is set to 10402.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
à
创建新分区
Command action
e extended
p primary partition (1-4)
p
à
创建主分区
Partition number (1-4): 1
à
新建的主分区序号
First cylinder (1-10402, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-10402, default 10402): +500M
à
创建主分区大小
Command (m for help): w
à
保存创建的主分区
|
第二步:使新创建的分区在系统中立即生效
root#partprobe
|
第三步:格式化新创建的分区(这样也就有了文件系统)
[root@server ~]# mkfs.ext3 /dev/hda1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
122400 inodes, 488848 blocks
24442 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
60 block groups
8192 blocks per group, 8192 fragments per group
2040 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@server ~]#
|
第四步:使新创建的分区挂载/mnt/rhce01 目录下
Root#mount /dev/hda1 /mnt/rhce01
|
第五步:让挂载在系统重启后仍然有效
root# vim /etc/fstab
à
编辑这个文件,添加上下面的一行,使挂载在重启后有效;
LABEL=/1 / ext3 defaults 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda3 swap swap defaults 0 0
/dev/hda1 /mnt/rhce01 ext3 defaults 0 0
|
完成之后,df -h就能看见新添加的文件挂载点了。
4、用tar命令将文件打包并压缩传送到指定的磁盘:
首先了解tar命令,参照博客:
http://blog.csdn.net/cymm_liu/article/details/7046177
——把u01目录下的所有文件打包并拷贝到
/mnt/adddisk/u01bak.tar.gz中,这是个压缩文件,需要注意的点有两个:
1、用tar命令可以保持该目录下所有文件的读写执行属性,保持用户和组的属主不变。
2、tar在执行过程中,会在原来的磁盘(有可能是系统)产生很大的缓存文件,我没有试验是不是全部tar到原来磁盘然后再写到对应目录还是怎么回事。。反正我tar的时候原磁盘空间急剧减小。。最后因为空间不足,这操作没法做了
后来改用cp命令:
这个命令是比较熟悉的,刚开始考虑到文件的属性问题,所以没敢用,等查了一下cp的说明,发现cp也是可以保存属性什么的,只不过是不能压缩,关于cp的详细介绍,参考博客:
http://blog.csdn.net/cymm_liu/article/details/7037662
cp -rhp/u01 /mnt/adddisk/u01bak 这样就可以了。。
5、删除旧的虚拟机文件,新建虚拟机,然后把磁盘挂载上,把里面的备份文件拷到虚拟机里,设置环境变量。就差不多了。