一、LVM概述
LVM(Logical Volume Manager):逻辑卷管理,是在硬盘分区和文件系统之间添加的一个逻辑层可用来提高磁盘分区管理的灵活性,动态扩展我们的磁盘空间。
LVM 屏蔽了底层磁盘布局,便于动态调整磁盘容量。
LVM的优点
1.空间利用率高
2.可以在线扩展容量
3.数据备份方便
4.可随意定义逻辑卷卷标
[root@jenkins ~]# fdisk -l /dev/sda
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000ad090
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
/boot分区用于存放引导文件,不能应用LVM机制。
LVM机制的基本概念
PV(Physical Volume,物理卷)
整个硬盘,或使用fdisk等工具建立的普通分区
包括许多默认4MB的PE(physical Extent,基本单元)
VG(Volume Group,卷组)
一个或多个物理卷组合而成的整体
LV(Logical Volume,逻辑卷)
从卷组中分割出的一块空间,用于建立文件系统
LE(Logical Extent)与PE大小相同并一一对应
二、lVM的管理命令
建立命令的用法
pvcreate 设备名
vgcreate 卷组名 物理卷名1 物理卷名2
lvcreate -L 大小 -n 逻辑卷名 卷组名
[root@jenkins ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7a04f19d
设备 Boot Start End Blocks Id System
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+3G
分区 1 已设置为 Linux 类型,大小设为 3 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (6293504-41943039,默认为 6293504):
将使用默认值 6293504
Last 扇区, +扇区 or +size{K,M,G} (6293504-41943039,默认为 41943039):+5G
分区 2 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (16779264-41943039,默认为 16779264):
将使用默认值 16779264
Last 扇区, +扇区 or +size{K,M,G} (16779264-41943039,默认为 41943039):+4G
分区 3 已设置为 Linux 类型,大小设为 4 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7a04f19d
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 6293503 3145728 83 Linux
/dev/sdb2 6293504 16779263 5242880 83 Linux
/dev/sdb3 16779264 25167871 4194304 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
[root@jenkins ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
[root@jenkins ~]# pvremove /dev/sdb2
Labels on physical volume "/dev/sdb2" successfully wiped.
[root@jenkins ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@jenkins ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
[root@jenkins ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <19.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4863
Free PE 0
Allocated PE 4863
PV UUID pySxxi-bn7d-DFIq-nUdr-NOyP-ku3z-NmdDQA
"/dev/sdb1" is a new physical volume of "3.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 3.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID u09J4Z-imlt-1zgT-w2wg-EP3d-hEdF-bUF7ve
"/dev/sdb2" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb2
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID Ffj9YI-NzUM-NcR0-s5HK-ux00-oMV7-VxZTlN
[root@jenkins ~]# vgcreate sc /dev/sdb1 /dev/sdb2
Volume group "sc" successfully created
[root@jenkins ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <19.00 GiB
PE Size 4.00 MiB
Total PE 4863
Alloc PE / Size 4863 / <19.00 GiB
Free PE / Size 0 / 0
VG UUID 2eEsYZ-tNB2-W1lo-Ope9-Rj4q-8yVd-zFUybV
--- Volume group ---
VG Name sc
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 7.99 GiB
PE Size 4.00 MiB
Total PE 2046
Alloc PE / Size 0 / 0
Free PE / Size 2046 / 7.99 GiB
VG UUID xMHOKD-SlNK-1gPK-B1wt-nUTW-2nL8-dsW5HX
[root@jenkins ~]# lvcreate -L 4G -n sanchuang sc
Logical volume "sanchuang" created.
[root@jenkins ~]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000ad090
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7a04f19d
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 6293503 3145728 83 Linux
/dev/sdb2 6293504 16779263 5242880 83 Linux
/dev/sdb3 16779264 25167871 4194304 83 Linux
磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/sc-sanchuang:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
# 查看当前有多少逻辑卷
[root@jenkins ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
sanchuang sc -wi-a----- 4.00g
# 查看当前有多少卷组
[root@jenkins ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
sc 2 1 0 wz--n- 7.99g 3.99g
# 查看当前有多少物理卷
[root@jenkins ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb1 sc lvm2 a-- <3.00g <3.00g
/dev/sdb2 sc lvm2 a-- <5.00g 1020.00m
# 格式化
[root@jenkins ~]# mkfs.ext4 /dev/mapper/sc-sanchuang
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
# 挂载
[root@jenkins ~]# mount /dev/mapper/sc-sanchuang /feng
[root@jenkins ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.8M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 6.5G 11G 39% /
/dev/sda1 xfs 1014M 190M 825M 19% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/mapper/sc-sanchuang ext4 3.9G 16M 3.6G 1% /feng
# 扩容 2G
[root@jenkins ~]# lvextend -L +2G /dev/mapper/sc-sanchuang
Size of logical volume sc/sanchuang changed from 4.00 GiB (1024 extents) to 6.00 GiB (1536 extents).
Logical volume sc/sanchuang successfully resized.
[root@jenkins ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.8M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 6.5G 11G 39% /
/dev/sda1 xfs 1014M 190M 825M 19% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/mapper/sc-sanchuang ext4 3.9G 16M 3.6G 1% /feng
# 对文件系统大小进行调整
[root@jenkins ~]# resize2fs /dev/mapper/sc-sanchuang
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/sc-sanchuang is mounted on /feng; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mapper/sc-sanchuang is now 1572864 blocks long.
[root@jenkins ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.8M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 6.5G 11G 39% /
/dev/sda1 xfs 1014M 190M 825M 19% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/mapper/sc-sanchuang ext4 5.8G 16M 5.5G 1% /feng
# 扩容 1G ,[ -r|--resizefs ]
[root@jenkins ~]# lvextend -r -L +1G /dev/mapper/sc-sanchuang
Size of logical volume sc/sanchuang changed from 6.00 GiB (1536 extents) to 7.00 GiB (1792 extents).
Logical volume sc/sanchuang successfully resized.
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/sc-sanchuang is mounted on /feng; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mapper/sc-sanchuang is now 1835008 blocks long.
[root@jenkins ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.8M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 6.5G 11G 39% /
/dev/sda1 xfs 1014M 190M 825M 19% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/mapper/sc-sanchuang ext4 6.8G 18M 6.5G 1% /feng
扩容物理卷、卷组
[root@jenkins ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created.
[root@jenkins ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb1 sc lvm2 a-- <3.00g 1016.00m
/dev/sdb2 sc lvm2 a-- <5.00g 0
/dev/sdb3 lvm2 --- 4.00g 4.00g
[root@jenkins ~]# vgextend sc /dev/sdb3
Volume group "sc" successfully extended
[root@jenkins ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
sc 3 1 0 wz--n- <11.99g <4.99g
删除物理卷、卷组、逻辑卷
删除--》lvs--》vg--》pv
[root@jenkins ~]# lvdisplay
--- Logical volume ---
LV Path /dev/sc/sanchuang
LV Name sanchuang
VG Name sc
LV UUID 1BXg1k-O3fk-A5hp-F2mC-lfKo-fx62-qIPJTl
LV Write Access read/write
LV Creation host, time jenkins, 2023-07-15 23:25:58 +0800
LV Status available
# open 0
LV Size 7.00 GiB
Current LE 1792
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID tOG8xL-84Iv-g8i8-KHCY-K6W1-yjf9-dK7s2t
LV Write Access read/write
LV Creation host, time localhost, 2023-03-11 12:05:27 +0800
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID n13UGw-jy8H-cLSB-igzo-x4gv-KA0U-QjClbC
LV Write Access read/write
LV Creation host, time localhost, 2023-03-11 12:05:28 +0800
LV Status available
# open 1
LV Size <17.00 GiB
Current LE 4351
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
[root@jenkins ~]# lvremove /dev/sc/sanchuang
Do you really want to remove active logical volume sc/sanchuang? [y/n]: y
Logical volume "sanchuang" successfully removed
[root@jenkins ~]# vgdisplay
--- Volume group ---
VG Name sc
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 7.99 GiB
PE Size 4.00 MiB
Total PE 2046
Alloc PE / Size 0 / 0
Free PE / Size 2046 / 7.99 GiB
VG UUID uuzYvZ-9dhT-fSE2-yRjE-HFHc-5qdo-et1ZJe
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <19.00 GiB
PE Size 4.00 MiB
Total PE 4863
Alloc PE / Size 4863 / <19.00 GiB
Free PE / Size 0 / 0
VG UUID 2eEsYZ-tNB2-W1lo-Ope9-Rj4q-8yVd-zFUybV
[root@jenkins ~]# vgremove sc
Volume group "sc" successfully removed
[root@jenkins ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <19.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4863
Free PE 0
Allocated PE 4863
PV UUID pySxxi-bn7d-DFIq-nUdr-NOyP-ku3z-NmdDQA
"/dev/sdb1" is a new physical volume of "3.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 3.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID ogNQIS-T3we-TtcI-FqZA-wdV9-4kxR-2oyihC
"/dev/sdb2" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb2
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID oz69y0-MTL2-3eCO-ThNt-W8w4-FwV2-Py5lcr
[root@jenkins ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
[root@jenkins ~]# pvremove /dev/sdb2
Labels on physical volume "/dev/sdb2" successfully wiped.
RAID廉价冗余磁盘阵列
一、raid 磁盘阵列介绍
RAID(Redundant Arrays of Independent Disks,
独立冗余磁盘阵列)
, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。
分类
硬件RAID
速度快,性能好,支持热插拔
需专门的RAID磁盘阵列卡,价格昂贵,还需配合相应的驱动
软件RAID
使用mdadm软件仿真磁盘阵列功能
无需专门硬件,性价比较好 设备文件标识是/dev/md0
RADI划分了等级
RAID0、RAID1、RAID5、RAID6、RAID10、RAID01等
RAID0:条带(striping)
优点
1.低成本
2.高性能读写
3.100% 的高存储空间利用率
缺点
1.只是单纯地提高性能,而且其中的一个磁盘失效将影响到所有数据
2.不能应用于数据安全性要求高的场合
RAID1:镜像(mirroring)
1.通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据,磁盘空间利用率为 50% 。
2.原始数据繁忙时,可以直接从镜像拷贝中读取数据,RAID 1可以提高读取性能
3.成本高,但是提供了很高的数据安全性和可用性。
RAID4:带校验的条带
RAID5:条带+分布校验
1.N(N≥3)块盘组成阵列,一份数据产生N-1个条带,同时还有1份校验数据。
2.N块盘同时读写,读性能很高,写性能相对低。重建数据时,性能会受到很大影响。
3.磁盘利用率(N-1) /N可靠性高,允许坏1块盘,而不丢失数据,坏2块盘,就不能用了。
RAID6:条带+分布校验+分布校验
1.N(N≥4)块盘组成阵列,(N-2) /N磁盘利用率。
2.成本高于raid5,写入性能较低
3.允许两个物理磁盘发生故障,而不丢失数据。
RAID10:镜像+条带
1.N (偶数,N≥4)块盘两两镜像后,再组合成一个RAID
2.N/2磁盘利用率
3.N/2块盘同时写入,N块盘同时读取
4.性能高,可靠性高。
RAID01:条带+镜像
1.读写性能与RAID 10相同
2.安全性低于RAID 10
RAID配置总结