Linux LVM

 

LVM 常用命令。

添加新磁盘

查找新增磁盘文件 /dev/sdb

列出系统当前的块设备

$ lsblk
NAME                 MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                    8:0    0  500G  0 disk
├─sda1                 8:1    0    1M  0 part
├─sda2                 8:2    0    1G  0 part /boot
├─sda3                 8:3    0   99G  0 part
│ ├─vg00-rootvol     253:0    0  210G  0 lvm  /
│ ├─vg00-swapvol     253:1    0    2G  0 lvm  [SWAP]
│ ├─vg00-homevol     253:2    0 50.3G  0 lvm  /home
│ ├─vg00-tmpvol      253:3    0 20.5G  0 lvm  /tmp
│ ├─vg00-auditvol    253:4    0  256M  0 lvm  /var/log/audit
│ ├─vg00-crashvol    253:5    0  1.9G  0 lvm  /var/crash
│ ├─vg00-varvol      253:6    0  102G  0 lvm  /var
│ └─vg00-roothomevol 253:7    0   55G  0 lvm
└─sda4                 8:4    0  400G  0 part
  ├─vg00-rootvol     253:0    0  210G  0 lvm  /
  ├─vg00-homevol     253:2    0 50.3G  0 lvm  /home
  ├─vg00-tmpvol      253:3    0 20.5G  0 lvm  /tmp
  ├─vg00-varvol      253:6    0  102G  0 lvm  /var
  └─vg00-roothomevol 253:7    0   55G  0 lvm
sdb                    8:16   0  300G  0 disk
sr0                   11:0    1 1024M  0 rom

或者使用 fdisk -l 命令

sudo fdisk -l

对新磁盘 /dev/sdb 进行分区

使用 fdisk /dev/sdb 命令进入交互模式

$ sudo fdisk /dev/sdb
Command (m for help):
  1. 键入 n 创建新分区

  2. 键入 p 选择分区类型为主分区

  3. 键入 1 选择第一个主分区

  4. 最后选择起始扇区和结束扇区
    起始扇区选择默认值,直接回车
    结束扇区可以使用 +size{K,M,G,T,P} 格式,比如 +10G 会分配 10GB 空间到第一个主分区。如果将整个磁盘空间分配给第一个主分区,则直接敲回车。

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039):

Created a new partition 1 of type 'Linux' and of size 20 GiB.
  1. 键入 t 选择分区类型

  2. 键入 1 选择第一个分区

  3. 键入 8e 修改分区类型为 Linux LVM

Command (m for help): t
Selected partition 1
Partition type (type L to list all types): 8e
Changed type of partition 'Linux' to 'Linux LVM'.

键入 p 命令打印当前磁盘设备的分区表

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:322.1 GB, 322122547200 字节,629145600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xf143983b

设备        Boot  Start           End       Blocks   Id  System
/dev/sdb1   *     2048      629145599   314571776   8e  Linux LVM

最后键入 w 保存并退出,或者键入 q 不保存退出。

使用 LVM 管理新磁盘

物理卷操作 (Physical Volume)

查看物理卷

sudo pvs
sudo pvdisplay

将分区 /dev/sdb1 初始化为物理卷

sudo pvcreate /dev/sdb1

删除物理卷

sudo pvremove -y /dev/sdb1

卷组操作 (Volume Group)

查看卷组

sudo vgs
sudo vgdisplay

创建卷组 vg00 并使用物理卷 /dev/sda1/dev/sda2

sudo vgcreate vg00 /dev/sda1 /dev/sda2

添加物理卷 /dev/sdb1 到卷组 vg00

sudo vgextend vg00 /dev/sdb1

从卷组 vg00 删除物理卷 /dev/sdb1

sudo vgreduce vg00 /dev/sdb1

重命名卷组 vgvg00

sudo vgrename vg vg00
sudo vgrename /dev/vg /dev/vg00

删除卷组 vg00

sudo vgremove vg00

逻辑卷操作 (Logical Volume)

查看逻辑卷

sudo lvs
sudo lvdisplay

创建逻辑卷,大小 100G,名称为 datavol,使用卷组 vg00

sudo lvcreate -L 100G -n datavol vg00

创建逻辑卷,大小为卷组所有可用空间,名称为 datavol,使用卷组 vg00

sudo lvcreate -l 100%FREE -n datavol vg00

扩展逻辑卷大小,新增 50G 空间

sudo lvextend -L +50G vg00/datavol
# 或
sudo lvextend -L +50G /dev/vg00/datavol

扩展逻辑卷大小,将所在卷组的剩余空间全部添加到逻辑卷

sudo lvextend -l +100%FREE /dev/vg00/datavol

减少逻辑卷大小,减少 10G 空间。注意:XFS 文件系统不支持空间缩减,在 XFS 文件系统上使此命令会导致逻辑卷损毁。

sudo lvreduce -L -10G vg00/datavol

重命名卷组 vg00 上的逻辑卷 datadatavol

sudo lvrename vg00 data datavol

删除卷组 vg00 上的逻辑卷 datavol

sudo lvremove vg00/datavol

# Remove all logical volumes in volume group vg00
sudo lvremove vg00

创建逻辑卷后,需要格式化逻辑卷,创建文件系统

# xfs file system
sudo mkfs.xfs /dev/vg00/datavol

# ext4 file system
sudo mkfs.ext4 /dev/vg00/datavol

增加或减少逻辑卷大小后,需要调整文件系统大小

使用 mount 命令查看挂载的文件系统

mount -l

mount -l -t ext4

mount -l -t xfs

注意:此命令用于 EXT3/4 文件系统,但不适用于 XFS 文件系统.

sudo resize2fs /dev/vg00/datavol

增加 XFS 文件系统的逻辑卷大小后,可以使用以下命令调整文件系统

sudo xfs_growfs /dev/vg00/datavol

将逻辑卷 datavol 挂载到 /data

sudo mkdir -p /data
sudo mount /dev/vg00/datavol /data

写入 /etc/fstab 文件,确保开机自动挂载

# 使用 vi 编辑
$ sudo vi /etc/fstab
/dev/vg00/datavol /data xfs defaults 0 0
# or
/dev/mapper/vg00-datavol /data xfs defaults 0 0

# 使用 echo 添加
$ sudo echo '/dev/vg00/datavol /data xfs defaults 0 0' >> /etc/fstab

查看主机文件系统信息

$ df -h /data
Filesystem                   Size  Used  Avail  Use%  Mounted on
/dev/mapper/vg00-datavol     120G   34M  120G   1%    /data

查看文件系统是 XFS 的挂载点

mount -t xfs

参考

RedHat / CentOS : A beginners guide to LVM