1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<code>選擇從u盤啟動系統</code>
<code>#vgdisplay 檢視原盤vgname</code>
<code>#vgchange -ay vgname 激活原盤vg</code>
<code>#lsbk</code>
<code>NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT</code>
<code>sr0 11:0 1 1024M 0 rom</code>
<code>sda 8:0 0 10G 0 disk</code>
<code>├─sda1 8:1 0 500M 0 part /boot</code>
<code>└─sda2 8:2 0 9.5G 0 part</code>
<code> </code><code>├─VolGroup-lv_root (dm-0) 253:0 0 8.5G 0 lvm /</code>
<code> </code><code>└─VolGroup-lv_swap (dm-1) 253:1 0 1G 0 lvm [SWAP]</code>
<code>sdb 8:16 0 8G 0 disk</code>
<code>├─sdb1 8:17 0 102M 0 part</code>
<code>└─sdb2 8:18 0 7.9G 0 part</code>
<code> </code><code>├─VolGroup00-LogVol00 (dm-2) 253:2 0 5.9G 0 lvm</code>
<code> </code><code>└─VolGroup00-LogVol01 (dm-3) 253:3 0 2G 0 lvm</code>
<code> </code><code>其中sdb1是原系統的boot分區,VolGroup00-LogVol00是原系統的/分區</code>
<code>可以采用cpio或者tar備份,本文采用tar(實驗中,cpio報錯歸檔不完整)</code>
<code>挂載原盤</code>
<code>#cd /home && mkdir aa bb</code>
<code>#mount /dev/sdb1 /home/aa 挂載/boot分區</code>
<code>#mount /dev/VolGroup00/LogVol00 /home/bb 挂載/分區</code>
<code>#tar -cvzf /home/boot.tgz -C /home/ aa --exclude=dirname 打包boot分區(不打包dirname的資料)</code>
<code>#tar -cvzf /home/root.tgz -C /home/ bb --exclude=dirname 打包/分區</code>
<code>#umount /home/aa</code>
<code>#umount /home/bb</code>
<code>若目标檔案大于2G以上,請考慮分割壓縮,如下:</code>
<code>#tar -cvzf - / --exclude=/home --exclude=/proc --exclude=/lost+found --exclude=/tmp --exclude=/mnt --exclude=/sys |split -b 2000m - /home/root.tgz 将/目錄壓縮成2G一個的檔案并排除某些目錄</code>
<code>#tar -cvzf - /boot |split -b 2000m - /home/boot.tgz 壓縮boot分區</code>
二、目的磁盤建立lv
<code>#fdisk /dev/sdb 将目的磁盤分成兩個區,其中第一個區(boot分區)500M,其他容量分給第二個分區(root分區+swap),輸入t指定第二個分區格式為8e</code>
<code>#pvcreate /dev/sdb2</code>
<code>#vgcreate VolGroup00 /dev/sdb2 将pv為sdb2的建立成一個vg(VolGroup00)</code>
<code>ps:注意此處的vgname必須和原系統的vgname嚴格一緻,否則啟動會報錯!!!!</code>
<code>#vgchange -ay VolGroup00</code>
<code>#lvcreate -L +5.9G -n LogVol00 VolGroup00</code>
<code>#lvcreate -L +1G -n LogVol01 VolGroup00</code>
<code>#mkfs.ext4 /dev/sdb1</code>
<code>#mkfs.ext4 /dev/VolGroup00/LogVol00 将目的盤的 root分區格式化成ext3</code>
<code>#mkswap /dev/VolGroup00/LogVol01 格式化目的磁盤的swap分區</code>
<code>PS:請注意,目标磁盤的vgname和lvname必須和原盤的嚴格一緻,否則啟動會報錯</code>
三、恢複資料到目的盤
<code>#cd /home</code>
<code>#mount /dev/sdb1 aa</code>
<code>#mount /dev/VolGroup00/LogVol00 bb</code>
<code>#tar -xvzf boot.tgz</code>
<code>#tar -xvzf root.tgz</code>
<code>若采用的分割壓縮,則解壓指令如下:</code>
<code>#cd /home/aa && cat boot.tgza*|tar -zxv</code>
<code>#cd /home/bb && cat root.tgza*|tar -zxv</code>
<code>解壓完成後,請手動建立上面排除的目錄,并確定目錄結構和原系統一緻</code>
四、寫引導和挂載
<code>#grub-install --root-directory=/home/aa --no-floppy /dev/sdb</code>
<code>#cd /home/aa/boot</code>
<code>#rm -rf grub && ln -s ../grub grub</code>
<code>改挂載檔案</code>
<code>#vi /home/bb/etc/fstab</code>
<code>...</code>
<code>/dev/sda1 /boot ext3 defaults 1 2</code>
<code>rh系列的系統,啟動挂載在/etc/fstab檔案</code>
五、測試
<code>重新開機測試是否報錯,若啟動報“permit denied”相關的錯誤,檢查selinux是否已經關閉</code>