Centos6 标准分区转换为 LVM 分区就这么简单

文章目录

  • 1. 整体操作思路图
  • 2. 文件系统现状分析
    • (1) 用 df 指令查看文件系统的磁盘空间使用情况。
    • (2) 用 fdisk 指令查看分区情况。
  • 3. 重新划分磁盘剩余可用空间
    • (1) 关闭系统交换区
    • (2) 重新划分可用空间
  • 4. 建立 LVM 分区
  • 5. 备份根目录和 /home 目录,并还原到 LVM 分区
    • (1) dump 和 restore 指令对根目录备份及还原操作
    • (2) dd 克隆 /home 目录到新分区
  • 6. 修改启动引导配置文件 /boot/grub/grub.conf 和 文件系统配置表 /ect/fstab
    • (1) 修改还原后的根目录所在分区的 /etc/fstab
    • (2) 修改 /boot/grub/grub.conf 文件
    • (3) 进入系统,再次查看系统信息
  • 7. 后继对 /dev/sda2 和 /dev/sda3 修改

1. 整体操作思路图

Centos6 标准分区转换为 LVM 分区就这么简单_第1张图片

2. 文件系统现状分析

(1) 用 df 指令查看文件系统的磁盘空间使用情况。

[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G  4.2G   14G  23% /
tmpfs           499M 1004K  498M   1% /dev/shm
/dev/sda1        93M   52M   36M  60% /boot
/dev/sda3        20G   18G  690M  97% /home

以上信息显示 /home 目录已占用分区97%的空间。因为采用标准分区,不能在原有的基础上扩容。为了以后更好地管理磁盘,我们需要将现有的标准分区转换成 LVM 分区。

目前有两种可选方案:

  • 一添加新的磁盘,划分 LVM 分区,迁移旧磁盘文件到新磁盘;
  • 二把原磁盘剩余空间划分为 LVM 分区,迁移旧分区文件到新的 LVM 分区。

(2) 用 fdisk 指令查看分区情况。

[root@localhost ~]# fdisk -l
 Device Boot    Start     End      Blocks   Id  System
/dev/sda1   *       1      13      102400   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2          13    2563    20480000   83  Linux
/dev/sda3        2563    5113    20480000   83  Linux
/dev/sda4        5113   12162    56622080    5  Extended
/dev/sda5        5113    5374     2097152   82  Linux swap / Solaris

以上信息显示 /dev/sda4 为扩展分区,约有56G的可用空间。所以,选用第二种方案为皆。

3. 重新划分磁盘剩余可用空间

因为swap交换区在 /dev/sda4 扩展分区内,为数据安全起见,我们需要先关闭 swap 交换区,再通过 fdisk 指令的一系列操作来实现分区的删除和建立。

(1) 关闭系统交换区

# 查看系统物理内存及 swap 内存情况
[root@localhost ~]# free
             total       used       free     shared    buffers     cached
Mem:       1020936     476744     544192     142312      17996     293256
-/+ buffers/cache:     165492     855444
Swap:      2097148     135024    1962124  # 交换区在使用中

# 关闭所有交换区,并显示详细信息
[root@localhost ~]# swapoff -av
swapoff on /dev/sda5

[root@localhost ~]# free
             total       used       free     shared    buffers     cached
Mem:       1020936     579804     441132     177268      18152     329192
-/+ buffers/cache:     232460     788476
Swap:            0          0          0    # 交换区已关闭

(2) 重新划分可用空间

[root@localhost ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's ...

Command (m for help): d       # 删除 /dev/sda4 扩展分区
Partition number (1-6): 4

Command (m for help): p

Disk /dev/sda: 100.0 GB, 100030242816 bytes
........此处省略........

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      102400   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              13        2563    20480000   83  Linux
/dev/sda3            2563        5113    20480000   83  Linux

Command (m for help): n   # 新建 /dev/sda4 主要分区
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 4
....下面的步骤按回车即可

Command (m for help): p
........此处省略........
Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      102400   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              13        2563    20480000   83  Linux
/dev/sda3            2563        5113    20480000   83  Linux
/dev/sda4            5113       12161    56619808+  83  Linux

Command (m for help): w
The partition table has been altered!
........此处省略........

重启系统,使分区改动生效。

4. 建立 LVM 分区

在 /dev/sda4 主要分区的基础上,遵循 LVM 分区建立的原则,根据新建物理卷(pv),生成卷组(vg),新建逻辑卷(lv)这几个步骤即可完成 LVM 分区的建立。

# 新增物理卷
[root@localhost ~]# pvcreate /dev/sda4
  Physical volume "/dev/sda4" successfully created

# 新增卷组
[root@localhost ~]# vgcreate VG2019 /dev/sda4
  Volume group "VG2019" successfully created

# 查看卷组详情
[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               VG2019
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               53.99 GiB
  PE Size               4.00 MiB
  Total PE              13822
  Alloc PE / Size       0 / 0   
  Free  PE / Size       13822 / 53.99 GiB   # 可用空间
  VG UUID               oPptrC-aPF6-Dre1-H3Tu-4LfL-Dm6I-2zBbA5

# 新增逻辑卷 LVroot 和 LVhome 分别用于还原旧分区的根目录和 /home 目录
[root@localhost ~]# lvcreate -L 20G -n LVroot VG2019
  Logical volume "LVroot" created.
[root@localhost ~]# mkfs -t ext4 /dev/VG2019/LVroot 

[root@localhost ~]# lvcreate -L 33G -n LVhome VG2019
  Logical volume "LVhome" created.
[root@localhost ~]# mkfs -t ext4 /dev/VG2019/LVhome 

[root@localhost ~]# lvscan
  ACTIVE            '/dev/VG2019/LVroot' [20.00 GiB] inherit
  ACTIVE            '/dev/VG2019/LVhome' [33.00 GiB] inherit

5. 备份根目录和 /home 目录,并还原到 LVM 分区

用 dump 指令和 restore 指令备份及还原根目录到新分区。
用 dd 指令克隆 /home 目录到新分区。

为什么要选用两种不同的方法?

  • dump 指令仅针对根目录已占用的 4.2G 数据进行操作,dd 指令针对整个分区(20G)进行操作,太费时。
  • /home 目录数据占总分区的 97% , 从 dump 备份到 restore 还原,所用的时间与 dd 直接拷贝到新分区的时间几乎一样。但 dump 备份文件需要占用空间,而 dd 指令直接把原分区搬过去。

(1) dump 和 restore 指令对根目录备份及还原操作

# 新建 backup, restore 目录。
[root@localhost ~]# mkdir /mnt/backup /mnt/restore
[root@localhost ~]# ls /mnt/
backup  restore  usb

# 把 /dev/mapper/VG2019-LVhome 挂载到 /mnt/backup 目录,用于存放根目录备份文件。
# 把 /dev/mapper/VG2019-LVroot 挂载到 /mnt/restore 目录,用于还原根目录。
[root@localhost ~]# mount /dev/mapper/VG2019-LVhome /mnt/backup/
[root@localhost ~]# mount /dev/mapper/VG2019-LVroot /mnt/restore/
[root@localhost ~]# df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/sda2                   20G  4.2G   14G  24% /
tmpfs                      499M  148K  499M   1% /dev/shm
/dev/sda1                   93M   52M   36M  60% /boot
/dev/sda3                   20G   18G  690M  97% /home
/dev/mapper/VG2019-LVhome   33G   48M   31G   1% /mnt/backup
/dev/mapper/VG2019-LVroot   20G   44M   19G   1% /mnt/restore
# 备份根目录
[root@localhost ~]# dump -0f /mnt/backup/rootfs0913.bak /

# 还原根目录 
[root@localhost ~]# cd /mnt/restore/
[root@localhost restore]# restore -rf /mnt/backup/rootfs0913.bak 

# 查看 LVroot 逻辑卷使用情况
[root@localhost restore]# df -h /dev/mapper/VG2019-LVroot
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/VG2019-LVroot    20G  4.2G   15G  23% /mnt/restore

从还原前后的逻辑卷 LVroot 的空间使用情况进行对比,可知道根目录已还原到此卷上。

(2) dd 克隆 /home 目录到新分区

# 移动根目录备份文件到其他目录保存,如后继不需要此备份,可省略此步骤
[root@localhost mnt]# mv backup/rootfs0913.bak /mnt/

# 用 dd 指令克隆 /home 目录所在分区到 LVhome 逻辑卷分区
[root@localhost ~]# dd if=/dev/sda3 of=/dev/mapper/VG2019-LVhome

另一个终端窗口输入以下指令,可在 dd 指令所在窗口中显示拷贝进度。

[root@localhost ~]# watch -n 5 pkill -USR1 -x dd

Centos6 标准分区转换为 LVM 分区就这么简单_第2张图片
dd 指令拷贝数据完成后,查看各分区的 UUID。我们会发现一个问题, /dev/sda3 与 /dev/mapper/VG2019-LVhome 的 UUID 是一样的。此时,我们修改其中一个分区的 UUID 即可。

[root@localhost ~]# blkid
/dev/sda1: UUID="3b93bfac-1a0d-4735-85c3-ae5f721ad84e" TYPE="ext4"
/dev/sda2: UUID="8b50a8ab-931f-4bd6-a0b7-ca826b4c93c3" TYPE="ext4"
/dev/sda3: UUID="5a8cd0b9-f8b9-4b73-9a7b-d655e855df5a" TYPE="ext4"
/dev/sda4: UUID="fmLY2K-ELmg-74IX-EtAM-FG3Z-f016-KstZfp" TYPE="LVM2_member"
/dev/mapper/VG2019-LVroot: UUID="51fde19e-463e-4efb-b2af-554a74656bfc" TYPE="ext4"
/dev/mapper/VG2019-LVhome: UUID="5a8cd0b9-f8b9-4b73-9a7b-d655e855df5a" TYPE="ext4"

我们选择修改 /dev/mapper/VG2019-LVhome 的 UUID ,方法如下:

[root@localhost ~]# uuidgen | xargs tune2fs /dev/mapper/VG2019-LVhome -U 

再次查看各分区的 UUID :

[root@localhost restore]# blkid
/dev/sda1: UUID="3b93bfac-1a0d-4735-85c3-ae5f721ad84e" TYPE="ext4" 
/dev/sda2: UUID="8b50a8ab-931f-4bd6-a0b7-ca826b4c93c3" TYPE="ext4" 
/dev/sda3: UUID="89dc312e-4099-43ae-aa2b-4a25c5607d87" TYPE="ext4" 
/dev/sda4: UUID="fmLY2K-ELmg-74IX-EtAM-FG3Z-f016-KstZfp" TYPE="LVM2_member" 
/dev/mapper/VG2019-LVroot: UUID="51fde19e-463e-4efb-b2af-554a74656bfc" TYPE="ext4" 
/dev/mapper/VG2019-LVhome: UUID="3cd0bb7c-ba62-4bf0-8507-c424b7f2ef2b" TYPE="ext4" 

6. 修改启动引导配置文件 /boot/grub/grub.conf 和 文件系统配置表 /ect/fstab

为了系统能够使用新的根目录和 /home 目录,我们需要修改启动引导配置文件和文件系统配置表。 grub.conf 文件决定系统从哪个分区启动,fstab 文件决定根目录和 /home 挂载到哪个分区。

(1) 修改还原后的根目录所在分区的 /etc/fstab

切记不要直接 /etc/fstab

# 修改根目录( /home 目录)所要挂载到的分区的 UUID, blkid 指令可查各分区 UUID
[root@localhost ~]# vim /mnt/restore/etc/fstab

修改以下两项的 UUID :
UUID=51fde19e-463e-4efb-b2af-554a74656bfc /
UUID=3cd0bb7c-ba62-4bf0-8507-c424b7f2ef2b /home

(2) 修改 /boot/grub/grub.conf 文件

如果 /boot 目录不是独立分区,需要到还原后的根目录所在分区找到此文件修改。

[root@localhost ~]# vim /boot/grub/grub.conf

修改 UUID: root=UUID=51fde19e-463e-4efb-b2af-554a74656bfc
删除所有 rd_NO_LVM 选项这个很重要

改好以上两个文件后,重启系统:

[root@localhost ~]# reboot

(3) 进入系统,再次查看系统信息

用 df -h 查看磁盘情况:
Centos6 标准分区转换为 LVM 分区就这么简单_第3张图片

以上信息显示,根目录和 /home 目录已挂载到 LVM 分区,并且能正常工作。但是这里 /home 目录还有个问题: 经过 dd 指令克隆到新分区后,新分区的总容量变为之前 /home 目录所在分区 /dev/sda3 的容量(20G),与 lv 逻辑卷划分的33G容量明显矛盾。我们可以通过对新分区扩容来解决这个问题。

[root@localhost ~]# lvextend -L +200M /dev/VG2019/LVhome
[root@localhost ~]# e2fsck -f /dev/VG2019/LVhome 
[root@localhost ~]# resize2fs -p /dev/VG2019/LVhome

再次用 df -h 查看磁盘情况:
Centos6 标准分区转换为 LVM 分区就这么简单_第4张图片
/home目录总容量信息显示正常了

7. 后继对 /dev/sda2 和 /dev/sda3 修改

修改思路: 删除两分区,新建一个主要分区(相当于两分区合并),生成物理卷,加入 VG2019 这个卷组。

最终结果如图:
Centos6 标准分区转换为 LVM 分区就这么简单_第5张图片

你可能感兴趣的:(Centos6)