很多时候服务器的功能没确定或是分区的时候没做好规划,导主机没用多久根分区就满了,管理员要不停的清空不用的数据。使得管理员头疼不已,现在有方法可以解决这个问题。以下是思想与步骤。

1:创建LV

2:挂载LV,数据迁移

3:查看迁移目录与数据

4:定制initrd

    1),增加驱动

    2),修改init,创建LV0

     3),复制LVM相关命令与配置文件

5:复盖原有initrd.img

6 : 修改grub.conf

7 : 修改 fstab

fdisk /dev/sda
partprobe  /dev/sda
pvcreate  /dev/sda7 
vgcreate  vg0 /dev/sda7
lvcreate -L 18G -n lv0 vg0
df -h
mkfs.ext3 /dev/vg0/lv0
mkidr /lv0
mount /dev/vg0/lv0 /lv0
tar cf - bin dev etc lib opt root sbin tftpboot var | tar xf - -C /lv0/
mkdir /lv0/{boot,home,media,misc,mnt,proc,selinux,srv,sys,tmp,usr}
chmod 1777 /lv0/tmp
mkdir initrd
cd initrdfdisk /dev/sda
partprobe /dev/sda
pvcreate /dev/sda7
vgcreate vg0 /dev/sda7
lvcreate -L 18G -n lv0 vg0
df -h
mkfs.ext3 /dev/vg0/lv0
mkidr /lv0
mount /dev/vg0/lv0 /lv0
tar cf - bin dev etc lib opt root sbin tftpboot var | tar xf - -C /lv0/
mkdir /lv0/{boot,home,media,misc,mnt,proc,selinux,srv,sys,tmp,usr}#这个要根据自己/ 根目录所存放的文件来检查一下,不要少文件夹了。
chmod 1777 /lv0/tmp
mkdir initrd
cd initrd
ls
mkinitrd initrd-$(uname -r).img $(uname -r)   #复制initrd本机驱动IMG
ll initrd-2.6.18-194.el5.img
ll /boot/initrd-2.6.18-194.el5.img
zcat initrd-2.6.18-194.el5.img | cpio -id   #解压 initrd-2.6.18-194.el5.img
ls
rm -rf initrd-2.6.18-194.el5.img
vim init
修改解压出来的init文件添加以下内容
lvm vgscan --ignorelockingfailure
lvm vgchange -ay --ignorelockingfailure vg0
resume /dev/vg0/lv0
mkrootdev -t ext3 -o defaults,ro /dev/vg0/lv0

cp -p /sbin/lvm sbin/ 
cp -r /etc/lvm/ etc/
find | cpio -H newc -o > ../initrd.img
cd ..
gzip -9 initrd.img
cp /boot/initrd-2.6.18-194.el5.img /boot/initrd-2.6.18-194.el5.img.bak
cp initrd.img.gz /boot/initrd-2.6.18-194.el5.img
vi /boot/grub/grub.conf
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/vg0/lv0 rhgb quiet selinux=0
initrd /initrd-2.6.18-194.el5.img

vi /lv0/etc/fstab
/dev/vg0/lv0          /         ext3       defaults 1 1
LABEL=/usr         /usr    ext3       defaults 1 2

 

8  :reboot 测试