LVM基本术语
前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。首先我们讨论以下几个LVM术语:
物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
简单来说就是:
PV:是物理的磁盘分区
VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为一个仓库或者是几个大的硬盘。
LV:也就是从VG中划分的逻辑分区
如下图所示PV、VG、LV三者关系:
创建一个大小为300M,分区类型为LVM的sdb1
[root@IHS ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x9d2251e5. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-2610, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +300M Command (m for help): p Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x9d2251e5 Device Boot Start End Blocks Id System /dev/sdb1 1 39 313236 83 Linux Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): p Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x9d2251e5 Device Boot Start End Blocks Id System /dev/sdb1 1 39 313236 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
让内核同步分区信息(此步骤仅在没有找到分区设备的情况下才需要执行,非必要动作。):
[root@IHS ~]# partprobe
启用LVM并创建lv_data逻辑卷
1.将新建的分区设置为物理卷:
[root@IHS ~]# pvcreate /dev/sdb1 dev_is_mpath: failed to get device for 8:17 Physical volume "/dev/sdb1" successfully created
2.将物理卷加入卷组vg_data:
[root@IHS ~]# vgcreate vg_date /dev/sdb1 Volume group "vg_date" successfully created
3.查看卷组信息
[root@IHS ~]# vgdisplay --- Volume group --- VG Name vg_date 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 304.00 MiB PE Size 4.00 MiB Total PE 76 Alloc PE / Size 0 / 0 Free PE / Size 76 / 304.00 MiB VG UUID LfClWd-y3Oo-pZ0U-Nwmb-6QiA-L0sb-dJgASE [root@IHS ~]# vgs VG #PV #LV #SN Attr VSize VFree vg_date 1 0 0 wz--n- 304.00m 304.00m
4.生成150M的逻辑卷lv_data
[root@IHS ~]# lvcreate -L 150M -n lv_data vg_date Rounding up size to full physical extent 152.00 MiB Logical volume "lv_data" created
5.格式化逻辑卷
[root@IHS ~]# mkfs.ext4 /dev/vg_date/lv_data Writing superblocks and filesystem accounting information: done
6.创建挂载目录/data,并将lv_data挂载在该目录。
[root@IHS ~]# mkdir /data [root@IHS ~]# mount /dev/vg_date/lv_data /data
7.查看挂载信息
[root@IHS ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 89G 20G 66G 23% / tmpfs 4.1G 72K 4.1G 1% /dev/shm /dev/sda1 194M 34M 151M 19% /boot /dev/mapper/vg_date-lv_data 148M 5.6M 135M 4% /data
扩容卷组
vgextend vg_wls12c /dev/sdb1
扩容逻辑卷
将逻辑卷lv_data扩大到500M
1.若要对LVM进行调整,一定要先卸载:
[root@IHS /]# umount /data
2.将逻辑卷拓展到250M
[root@IHS ~]# lvextend -L 250M /dev/vg_date/lv_data Rounding size to boundary between physical extents: 252.00 MiB Extending logical volume lv_data to 252.00 MiB Logical volume lv_data successfully resized
3.检查磁盘完整性
[root@IHS ~]# e2fsck -f /dev/vg_date/lv_data e2fsck 1.41.12 (17-May-2010) 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/vg_date/lv_data: 12/38912 files (0.0% non-contiguous), 10562/155648 blocks
4.重置磁盘容量
[root@IHS ~]# resize2fs /dev/vg_date/lv_data resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/vg_date/lv_data to 258048 (1k) blocks. The filesystem on /dev/vg_date/lv_data is now 258048 blocks long.
5.挂载磁盘
[root@IHS ~]# mount /dev/vg_date/lv_data /data
6.查看挂载信息
[root@IHS ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 89G 20G 66G 23% / tmpfs 4.1G 72K 4.1G 1% /dev/shm /dev/sda1 194M 34M 151M 19% /boot /dev/mapper/vg_date-lv_data 244M 6.1M 226M 3% /data
减小逻辑卷到100M
1.卸载文件系统
[root@IHS ~]# umount /data
2.检查文件系统的完整性
root@IHS ~]# e2fsck -f /dev/vg_date/lv_data e2fsck 1.41.12 (17-May-2010) 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/vg_date/lv_data: 12/65536 files (0.0% non-contiguous), 14432/258048 blocks
3.将逻辑卷的减小到100M:
[root@IHS ~]# resize2fs /dev/vg_date/lv_data 100M resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/vg_date/lv_data to 102400 (1k) blocks. The filesystem on /dev/vg_date/lv_data is now 102400 blocks long.
4.将逻辑卷lv_data减小到100M
[root@IHS ~]# lvreduce -L 100M /dev/vg_date/lv_data WARNING: Reducing active logical volume to 100.00 MiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lv_data? [y/n]: y Reducing logical volume lv_data to 100.00 MiB Logical volume lv_data successfully resized
5.挂载文件系统,查看逻辑卷大小是否是100M
[root@IHS ~]# mount /dev/vg_date/lv_data /data/ [root@IHS ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 89G 20G 66G 23% / tmpfs 4.1G 72K 4.1G 1% /dev/shm /dev/sda1 194M 34M 151M 19% /boot /dev/mapper/vg_date-lv_data 97M 5.6M 87M 7% /data
使用逻辑卷快照功能
1.移动一些文件到/data目录下,做测试
[root@IHS ~]# ls /data
2.docx 3.docx 4.docx 5.docx lost+found
2.查看逻辑卷的使用量
[root@IHS data]# df -h Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_date-lv_data 97M 75M 18M 81% /data
3.创建逻辑卷快照
[root@IHS data]# lvcreate -L 50M -s -n SNAP /dev/vg_date/lv_data Rounding up size to full physical extent 52.00 MiB Logical volume "SNAP" created
4.删除/data下的文件,看恢复快照后是否能恢复该时间点的文件
[root@IHS data]# rm -rf /data/*
5.卸载目录
[root@IHS data]# umount /data umount: /data: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
出现报错,则执行: [root@IHS data]# fuser -k /data
重新挂载:
[root@IHS data]# umount /data
6.恢复快照
[root@IHS ~]# lvconvert --merge /dev/vg_date/SNAP Merging of volume SNAP started. lv_data: Merged: 100.0% Merge of snapshot into logical volume lv_data has finished. Logical volume "SNAP" successfully removed
7.挂载文件系统
[root@IHS ~]# mount /dev/vg_date/lv_data /data
8.检验效果,文件是否恢复
[root@IHS ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 89G 20G 66G 23% / tmpfs 4.1G 72K 4.1G 1% /dev/shm /dev/sda1 194M 34M 151M 19% /boot /dev/mapper/vg_date-lv_data 97M 75M 18M 81% /data [root@IHS ~]# ls /data 2.docx 3.docx 4.docx 5.docx lost+found
开机自动挂载
echo "/dev/vg_date/lv_data /data ext4 defaults 0 0" >> /etc/fstab