LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分LVM区管理的灵活性。其结构为:PV——VG——LV——PE,LVM分区比较灵活的一个功能就是可以无损更改分区大小。目前我现网中的服务器也使用的是LVM分区,目前也遇到了某分区分间不足的问题,所以在测试环境上演练下更改分区大小,在此记录下。
1).PV(Physical Volume):物理巻,处于LVM最底层,可以是物理硬盘或者分区。
2).VG(Volume Group):巻组,建立在PV之上,可以含有一个到多个PV。
3).LV(Logical Volume):逻辑巻,建立在PV之上,相当于原来分区的概念。不过大小可动态改变。
4).PE(Physical Extend):物理区域,PV中可以用于分配的最小存储单位,可以在建立PV时指定,如1,2,4,8… …64M,同一VG中的所有PV的PE应该相同。
一、无损减小LVM分区大小
1、查看目前的分区情况
[root@localhost ~]# df -hl 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda5 48G 3.5G 42G 8% / /dev/sda1 190M 12M 169M 7% /boot tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/mapper/vg01-opt 403G 199M 382G 1% /opt You have mail in /var/spool/mail/root
当前测试环境下的/opt分区为LVM分区(普通分区也可以通过pvcreate、vgcreate、lvcreate等一系统命令完成),我在/opt分区下新建了一个文件abc,里面胡乱写了些东西。方便操作完成后,查看该文件的完整性,验证是否无损。
[root@localhost opt]# cat abc dfafadfdafdfasdfsdsdsdsdsdsdffqwr23refasdfafdsafafa12423422323232323
<br />
2、卸载分区,调整大小
[root@localhost /]# umount /opt/ [root@localhost /]# e2fsck -f /dev/mapper/vg01-opt //强制检查文件系统的正确性 e2fsck 1.39 (29-May-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/mapper/vg01-opt: 12/53575680 files (8.3% non-contiguous), 1732039/107149312 blocks
<br />
缩小ext3文件系统,因为LVM分区还是在基本文件系统之上建立的,其更改需要文件系统也要做相应的更改。不然两大小是对等的,就会出问题了。
[root@localhost /]# resize2fs /dev/mapper/vg01-opt 250G //250G为调整后opt分区的大小 resize2fs 1.39 (29-May-2006) Resizing the filesystem on /dev/mapper/vg01-opt to 65536000 (4k) blocks. The filesystem on /dev/mapper/vg01-opt is now 65536000 blocks long.
接下来,缩小LVM分区的大小。
[root@localhost /]# lvresize -L 250G /dev/mapper/vg01-opt //250G为调整后opt分区的大小 WARNING: Reducing active logical volume to 250.00 GB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce opt? [y/n]: y Reducing logical volume opt to 250.00 GB Logical volume opt successfully resized
3、重新挂载,查看更改
[root@localhost /]# mount /opt/ [root@localhost /]# df -hl 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda5 48G 3.5G 42G 8% / /dev/sda1 190M 12M 169M 7% /boot tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/mapper/vg01-opt 247G 188M 236G 1% /opt
<span style="color:#e53333;">注:fsck和e2fsck命令要慎用,尤其是fsck命令,使用不当会造成文件系统紊乱,系统重启后无法启动</span>。<span style="background-color:#FFFFFF;color:#006600;">缩减后的大小一定要大于现有数据文件占用的空间大小,不然,会造成文件丢失。</span> 以上步骤顺序不能更改,如果更改可能会出现下面的错误:
<br />
[root@localhost /]# e2fsck -f /dev/mapper/vg01-opt e2fsck 1.39 (29-May-2006) The filesystem size (according to the superblock) is 80924672 blocks The physical size of the device is 65536000 blocks Either the superblock or the partition table is likely to be corrupt! Abort?
<br />
二、创建新的测试分区
我们利用刚刚/opt分区减小的分区,创建新的lv分区
[root@localhost /]# pvscan PV /dev/sda3 VG vg01 lvm2 [408.74 GB / 158.74 GB free] Total: 1 [408.74 GB] / in use: 1 [408.74 GB] / in no VG: 0 [0 ] [root@localhost /]# lvcreate -l 100%FREE -n /dev/vg01/home Logical volume "home" created
格式化为ext3格式
<br />
[root@localhost /]# mkfs.ext3 /dev/vg01/home mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 20807680 inodes, 41613312 blocks 2080665 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 1270 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 22 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
挂载并使用
<br />
[root@localhost /]# mount /dev/mapper/vg01-home /home/ [root@localhost /]# df -hl 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda5 48G 3.5G 42G 8% / /dev/sda1 190M 12M 169M 7% /boot tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/mapper/vg01-opt 247G 188M 236G 1% /opt /dev/mapper/vg01-home 157G 188M 149G 1% /home
三、无损增大LVM分区
<br />
重复上面的减小空间步骤,使opt分区再减小50G的大小。在此就不再记录上面的无损减少的步骤,操作完成后,查看的结果如下:
[root@localhost /]# pvscan PV /dev/sda3 VG vg01 lvm2 [408.74 GB / 50.00 GB free] Total: 1 [408.74 GB] / in use: 1 [408.74 GB] / in no VG: 0 [0 ] [root@localhost /]# df -hl 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda5 48G 3.5G 42G 8% / /dev/sda1 190M 12M 169M 7% /boot tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/mapper/vg01-home 157G 188M 149G 1% /home /dev/mapper/vg01-opt 197G 188M 189G 1% /opt
卸载home分区,并增加大小 (不进行umount操作也可以, 不过在操作过程中会引起IO增高的问题)
[root@localhost /]# umount /home/ [root@localhost /]# lvextend -L +50G /dev/vg01/home //新增50G的空间 Extending logical volume home to 208.74 GB Logical volume home successfully resized
使更改生效
<br />
[root@localhost /]# resize2fs /dev/vg01/home resize2fs 1.39 (29-May-2006) Please run 'e2fsck -f /dev/vg01/home' first.
提示需要先运行e2fsck检查,按照提示先进行分区检查(若无上面的提示,下面的步骤可以省略)
<br />
[root@localhost /]# e2fsck -f /dev/vg01/home e2fsck 1.39 (29-May-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/vg01/home: 11/20807680 files (9.1% non-contiguous), 700963/41613312 blocks [root@localhost /]# resize2fs /dev/vg01/home resize2fs 1.39 (29-May-2006) Resizing the filesystem on /dev/vg01/home to 54720512 (4k) blocks. The filesystem on /dev/vg01/home is now 54720512 blocks long.
重新挂载,查看大小
<br />
[root@localhost /]# mount /dev/vg01/home /home/ [root@localhost /]# df -hl 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda5 48G 3.5G 42G 8% / /dev/sda1 190M 12M 169M 7% /boot tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/mapper/vg01-opt 197G 188M 189G 1% /opt /dev/mapper/vg01-home 206G 188M 197G 1% /home
验证opt分区文件
<br />
[root@localhost opt]# cat abc dfafadfdafdfasdfsdsdsdsdsdsdffqwr23refasdfafdsafafa12423422323232323
注:操作不当时,有数据文件丢失的风险,乱用命令时,甚至会引起系统无法重启。因此,如果在生产环境上操作前,最好先备份数据再操作。
<br />
大佬您好,今天在服务器上进行硬盘扩容,误用fuer -km之后导致/home无法挂载,出现类似
[root@localhost /]# e2fsck -f /dev/mapper/vg01-opt
e2fsck 1.39 (29-May-2006)
The filesystem size (according to the superblock) is 80924672 blocks
The physical size of the device is 65536000 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort?
这样的错误。
请问还有救么?