磁盘分区
对于硬盘通常有两种分区方式 MBR 分区、GPT 分区。
区别 | MBR | GPT |
---|---|---|
适用硬盘大小 | 小于 2TB | 大于 2TB |
分区工具 | fdisk | gdisk |
可分区数量 | 4 个主分区或 3 个主分区 + 1 个拓展分区(N 个逻辑分区) | 128 个主分区 |
一、MBR 分区实战
1、列出存储设备
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom
- sda:第一块磁盘,sda1 第一个分区,sda2 第二个分区
- sdb:第二块磁盘,未分区的磁盘
- sr0:光驱设备
2、给磁盘分区
接下来使用 fdisk
工具给 sdb
硬盘进行分区,要求:
- sdb1 分区 3G 空间
- sdb2 分区 2G 空间
- sdb3 分区获得剩下的硬盘空间
[root@localhost ~]# fdisk /dev/sdb
命令(输入 m 获取帮助):n # 新建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p # 创建主分区
分区号 (1-4,默认 1):1 # 分区号
起始 扇区 (2048-20971519,默认为 2048):2048 # 起始扇区的大小,默认
Last 扇区, +扇区 or +size{
K,M,G} (2048-20971519,默认为 20971519):+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):2
起始 扇区 (6293504-20971519,默认为 6293504):6293504
Last 扇区, +扇区 or +size{
K,M,G} (6293504-20971519,默认为 20971519):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (10487808-20971519,默认为 10487808):10487808
Last 扇区, +扇区 or +size{
K,M,G} (10487808-20971519,默认为 20971519):20971519
分区 3 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
分区结束后,查看查看分区结果
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 3G 0 part
├─sdb2 8:18 0 2G 0 part
└─sdb3 8:19 0 5G 0 part
sr0 11:0 1 4.4G 0 rom
3、格式化分区
Linux 下使用 ext4
格式
[root@localhost ~]# mkfs.ext4 /dev/sdb1
[root@localhost ~]# mkfs.ext4 /dev/sdb2
[root@localhost ~]# mkfs.ext4 /dev/sdb3
查看每个分区的信息
[root@localhost ~]# blkid /dev/sdb*
/dev/sdb1: UUID="a11591fd-94d0-4315-9068-d2e194de8c66" TYPE="ext4"
/dev/sdb2: UUID="5943c953-7b66-47f2-8e74-96676c8dce74" TYPE="ext4"
/dev/sdb3: UUID="6ccf4814-e34a-4d2a-a857-cc6af19a8a77" TYPE="ext4"
4、将分区挂载到目录
挂载磁盘有三个方式:手动挂载、开机自动挂载、自动挂载
将 sdb1
、sdb2
、sdb3
分区挂载到 /data/
目录下的 db1(手动挂载)
、db2(开机自动挂载)
、 db3(自动挂载)
[root@localhost ~]# mkdir -p /data/db{1..3}
- 手动挂载
特点:系统重启后需要重新挂载,手动卸载后,需要手动挂载
# 挂载命令
[root@localhost ~]# mount /dev/sdb1 /data/db1/
# 查看挂载后的分区信息
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 1.5G 16G 9% /
/dev/sda1 xfs 1014M 151M 864M 15% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb1 ext4 2.9G 9.0M 2.8G 1% /data/db1
- 开机自动挂载
特点:系统重启后自动挂载,手动卸载后,重启也会自动挂载。
# 编辑配置文件 /etc/fstab,追加内容
# 第一列:要挂载的设备,设备的文件名、卷标或者 UUID
# 第二列:挂载点,建议是一个空目录
# 第三列:文件系统类型
# 第四列:挂载选项,default 同时拥有 rw、dev、exec、acl、async、nouser 参数
# 第五列:dump 备份支持, 0 不 dump 备份,1 每天 dump 备份
# 第六列:是否使用 fsck 进行文件系统检测,0 不检验,1 检验
/dev/sdb2 /data/db2 ext4 defaults 0 0
查看分区信息
[root@localhost data]# mount -a
[root@localhost data]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 1.5G 16G 9% /
/dev/sda1 xfs 1014M 151M 864M 15% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb1 ext4 2.9G 9.0M 2.8G 1% /data/db1
/dev/sdb2 ext4 2.0G 6.0M 1.8G 1% /data/db2
- 自动挂载
安装命令
[root@localhost ~]# yum install -y autofs
[root@localhost ~]# systemctl start autofs && systemctl enable autofs
Created symlink from /etc/systemd/system/multi-user.target.wants/autofs.service to /usr/lib/systemd/system/autofs.service.
特点:挂载是由访问产生的,卸载是由访问延迟产生的,需要安装 autofs
服务
需求1:让系统自动挂载 /dev/sdb3
设备,3 分钟没有使用,则自动卸载
主配置文件 /etc/auto.master
声明哪个目录支持自动挂载
/data/db3 /etc/db3.misc --timeout 180
子配置文件 /etc/db3.misc
支持自动挂载的目录激活自动挂载的条件
# 第一列:挂载目录
# 第二列:挂载文件类型及权限
# 第三列::设备名称
db3 -fstype=ext4,rw :/dev/sdb3
重启服务
[root@localhost ~]# systemctl restart autofs
二、GPT 分区实战
GPT 分区除了使用分区工具不同,其他流程都是一样的
1、列出存储设备
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom
- sda:第一块磁盘,sda1 第一个分区,sda2 第二个分区
- sdb:第二块磁盘,未分区的磁盘
- sr0:光驱设备
2、给磁盘分区
接下来使用 gdisk
工具给 sdb
硬盘进行分区
[root@localhost ~]# gdisk /dev/sdb
Command (? for help): n # 新建一个分区
Partition number (1-128, default 1): 1 # 分区编号
First sector (34-41943006, default = 2048) or {
+-}size{
KMGTP}: 2048 # 起始扇区,默认
Last sector (2048-41943006, default = 41943006) or {
+-}size{
KMGTP}: +10G # 容量大小
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8300 # 8300 代码为 Linux filesystem
Changed type of partition to 'Linux filesystem'
Command (? for help): w # 保存,退出
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
分区结束后,查看查看分区结果
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 10G 0 part
sr0 11:0 1 4.4G 0 rom
3、格式化分区
Linux 下使用 ext4
格式
[root@localhost ~]# mkfs.ext4 /dev/sdb1
查看每个分区的信息
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="965c743e-2069-4750-9fc2-5d4f718242d7" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="9f050b2f-5ca3-475c-a23b-5a6486e6021c"
4、将分区挂载到目录
# 挂载命令
[root@localhost ~]# mount /dev/sdb1 /mnt/
# 查看挂载后的分区信息
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 1.4G 16G 8% /
/dev/sda1 xfs 1014M 151M 864M 15% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb1 ext4 9.8G 37M 9.2G 1% /mnt
逻辑卷
逻辑卷(LVM):它是 Linux 环境下对磁盘分区进行管理的一种机制,它是建立在物理设备之上的一个抽象层,优点在于灵活管理。
特点:
- 动态在线扩容
- 逻辑卷条带化
- 逻辑卷快照
- 数据镜像
- 离线裁剪
- 物理卷(Physical Volume,PV)
物理卷是底层提供存储的物理设备,它可以是整个硬盘或硬盘上的一个分区
- 卷组(Volume Group,VG)
卷组建立在物理卷之上,它是由一个或多个物理卷组成。即:把物理卷整合起来提供容量分配。
一个 LVM 系统中,可以有多个卷组。
- 逻辑卷(Logic Volume,LV)
逻辑卷建立在卷组之上,它是从卷组中划出的一块空间。它是用户最终使用的逻辑设备。逻辑卷创建之后,其大小可以伸缩。
一、基本使用
1、创建物理卷 PV
列出存储设备
# sdb、sdc 为服务器的硬盘,大小 20g,未分区
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom
将这两个硬盘创建成物理卷
[root@localhost ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
[root@localhost ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
查看物理卷
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb lvm2 --- 20.00g 20.00g
/dev/sdc lvm2 --- 20.00g 20.00g
2、创建卷组 VG
将 /dev/sdb
/dev/sdc
物理卷组合成卷组 vg01
[root@localhost ~]# vgcreate vg01 /dev/sdb /dev/sdc
Volume group "vg01" successfully created
查看创建的 vg01
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg01 2 0 0 wz--n- 39.99g 39.99g
3、创建逻辑卷 LV
# 从 vg01 创建一个逻辑卷 lv01 容量为 5G
[root@localhost ~]# lvcreate -n lv01 -L 5G vg01
Logical volume "lv01" created.
# 将 vg01 剩余的空间创建 lv02
[root@localhost ~]# lvcreate -n lv02 -l 100%free vg01
Logical volume "lv02" created.
查看创建的逻辑卷
[root@localhost ~]# 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
lv01 vg01 -wi-a----- 5.00g
lv02 vg01 -wi-a----- 34.99g
4、格式化逻辑卷
[root@localhost ~]# mkfs.ext4 /dev/vg01/lv01
[root@localhost ~]# mkfs.ext4 /dev/vg01/lv02
5、挂载到目录
[root@localhost ~]# mkdir -p /db1 /db2
[root@localhost ~]# mount /dev/vg01/lv01 /db1/
[root@localhost ~]# mount /dev/vg01/lv02 /db2/
查看挂载情况
[root@localhost ~]# df -Th | grep lv
/dev/mapper/vg01-lv01 ext4 4.8G 20M 4.6G 1% /db1
/dev/mapper/vg01-lv02 ext4 35G 49M 33G 1% /db2
6、删除逻辑卷
删除 lv01
逻辑卷
# 先卸载已挂载的逻辑卷
[root@localhost ~]# umount /dev/vg01/lv01
# 删除逻辑卷
[root@localhost ~]# lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
Logical volume "lv01" successfully removed
再次查看只剩 lv02
了
[root@localhost ~]# 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
lv02 vg01 -wi-ao---- 34.99g
再次查看 vg01
剩余空间,多出了 5G
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg01 2 1 0 wz--n- 39.99g 5.00g
二、动态在线扩容
1、卷组扩容
给卷组新添加一个物理卷,完成扩容
# 查看硬盘,sdd 为新添加的硬盘
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─vg01-lv02 253:2 0 35G 0 lvm
sdc 8:32 0 20G 0 disk
└─vg01-lv02 253:2 0 35G 0 lvm
sdd 8:48 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom
将新硬盘直接添加到 vg01
卷组中,系统会自动将硬盘创建为物理卷
[root@localhost ~]# vgextend vg01 /dev/sdd
Physical volume "/dev/sdd" successfully created.
Volume group "vg01" successfully extended
查看扩容后的 vg01
容量
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg01 3 1 0 wz--n- <59.99g <25.00g
2、逻辑卷扩容
将 lv02
逻辑卷扩容至 50G
,它会自动从 vg01
获取容量,所以要保证卷组容量充足。
[root@localhost ~]# lvextend /dev/vg01/lv02 --size 50G
Size of logical volume vg01/lv02 changed from 34.99 GiB (8958 extents) to 50.00 GiB (12800 extents).
Logical volume vg01/lv02 successfully resized.
重新同步文件系统
[root@localhost ~]# resize2fs /dev/vg01/lv02
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg01/lv02 is mounted on /db2; on-line resizing required
old_desc_blocks = 5, new_desc_blocks = 7
The filesystem on /dev/vg01/lv02 is now 13107200 blocks long.
查看扩容后的目录
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.3G 16G 8% /
/dev/sda1 1014M 151M 864M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vg01-lv02 50G 52M 47G 1% /db2
三、逻辑卷条带化
逻辑卷除了动态扩容的优点,还有一个功能就是可以实现条带化读写,加快读写速度。这样的缺点就是,任何一个物理卷出现故障,数据都会丢失。
1、创建条带化逻辑卷
# 查看当前的物理卷
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb vg01 lvm2 a-- <20.00g 5.00g
/dev/sdc vg01 lvm2 a-- <20.00g 0
/dev/sdd vg01 lvm2 a-- <20.00g <4.99g
# 从 sdb sdd 两个物理卷创建一个 lv03 的条带化逻辑卷,容量 2G
[root@localhost ~]# lvcreate -n lv03 -L 2G -i 2 vg01 /dev/sdb /dev/sdd
Using default stripesize 64.00 KiB.
WARNING: ext4 signature detected on /dev/vg01/lv03 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/vg01/lv03.
Logical volume "lv03" created.
2、挂载到目录
# 格式化 lv03
[root@localhost ~]# mkfs.ext4 /dev/vg01/lv03
# 挂载到 db3
[root@localhost ~]# mkdir /db3
[root@localhost ~]# mount /dev/vg01/lv03 /db3/
3、写入测试
- 写入条带化逻辑卷
[root@localhost ~]# time dd if=/dev/zero of=/db3/file3 bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,8.86603 秒,121 MB/秒
real 0m8.869s
user 0m0.000s
sys 0m8.865s
- 写入常规逻辑卷
[root@localhost ~]# time dd if=/dev/zero of=/db2/file2 bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,9.04438 秒,119 MB/秒
real 0m9.047s
user 0m0.000s
sys 0m9.042s
四、逻辑卷快照
1、创建快照
注:逻辑卷的快照也是存储在相同的卷组中,要保证卷组有足够的空间来存放快照。
# 给 lv02 创建一个名为 lv02_snap 的快照,容量 100M,此容量为真实设备的允许数据变化量。
[root@localhost ~]# lvcreate -n lv02_snap -L 100M -s /dev/vg01/lv02
Logical volume "lv02_snap" created.
查看逻辑卷,可以看到 lv02_snap
逻辑卷,属于 vg01
卷组,容量为 100M
,源是 lv02
,使用量为 0.03%
[root@localhost ~]# 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
lv02 vg01 owi-aos--- 50.00g
lv02_snap vg01 swi-a-s--- 100.00m lv02 0.03
lv03 vg01 -wi-ao---- 2.00g
2、还原快照
直接将快照逻辑卷挂载到 /snap
目录,即可还原快照
[root@localhost ~]# mkdir /snap
[root@localhost ~]# mount /dev/vg01/lv02_snap /snap/
查看挂载后的目录
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 1.3G 16G 8% /
/dev/sda1 xfs 1014M 151M 864M 15% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vg01-lv02 ext4 50G 1.4G 46G 3% /db2
/dev/mapper/vg01-lv03 ext4 2.0G 1.3G 528M 72% /db3
/dev/mapper/vg01-lv02_snap ext4 50G 1.4G 46G 3% /snap
db02
写入 50M
的数据测试
[root@localhost ~]# dd if=/dev/zero of=/db2/bigfile2 bs=1M count=50
查看快照的使用量,已经增加了 50%
[root@localhost ~]# 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
lv02 vg01 owi-aos--- 50.00g
lv02_snap vg01 swi-aos--- 100.00m lv02 50.29
lv03 vg01 -wi-ao---- 2.00g
那么,如果快照的使用量已经满了怎么办呢,可以测试一下,再给 db2
目录写入一个文件
[root@localhost ~]# dd if=/dev/zero of=/db2/bigfile3 bs=1M count=100
查看快照的使用量,已经 100%
[root@localhost ~]# 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
lv02 vg01 owi-aos--- 50.00g
lv02_snap vg01 swi-I-s--- 100.00m lv02 100.00
lv03 vg01 -wi-ao---- 2.00g
查看挂载的目录,发现 lv02_snap
逻辑卷已经自动卸载了
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 1.3G 16G 8% /
/dev/sda1 xfs 1014M 151M 864M 15% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vg01-lv02 ext4 50G 1.6G 46G 4% /db2
/dev/mapper/vg01-lv03 ext4 2.0G 1.3G 528M 72% /db3
重新挂载也会失败
[root@localhost ~]# mount /dev/vg01/lv02_snap /snap/
mount: /dev/mapper/vg01-lv02_snap:不能读超级块
解决方案:快照自动扩容!!!
3、快照自动扩容
修改配置文件 /etc/lvm/lvm.conf
,找到 snapshot
配置项
# 当容量达到 70% 时
snapshot_autoextend_threshold = 70
# 自动扩容 20% 的容量
snapshot_autoextend_percent = 20
验证
删除 lv02_snap
[root@localhost ~]# lvremove /dev/vg01/lv02_snap
Do you really want to remove active logical volume vg01/lv02_snap? [y/n]: y
Logical volume "lv02_snap" successfully removed
重新给 lv02
创建一个名为 lv02_snap_auto
的快照,容量 100M
。
[root@localhost ~]# lvcreate -n lv02_snap_auto -L 100M -s /dev/vg01/lv02
Logical volume "lv02_snap_auto" created.
查看快照
[root@localhost ~]# 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
lv02 vg01 owi-aos--- 50.00g
lv02_snap_auto vg01 swi-a-s--- 100.00m lv02 0.01
lv03 vg01 -wi-ao---- 2.00g
将快照逻辑卷挂载到 /snap
目录
[root@localhost ~]# mount /dev/vg01/lv02_snap_auto /snap/
db02
写入 80M
的数据测试
[root@localhost ~]# dd if=/dev/zero of=/db2/bigfile4 bs=1M count=80
查看快照已经自动扩容了 20%
[root@localhost ~]# 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
lv02 vg01 owi-aos--- 50.00g
lv02_snap_auto vg01 swi-aos--- 120.00m lv02 67.03
lv03 vg01 -wi-ao---- 2.00g
磁盘 RAID
RAID 就是一种由多块廉价磁盘构成的冗余阵列,在操作系统中作为一个独立的大型存储设备出现。
RAID 可以充分发挥出多块硬盘的优势,可以提升磁盘速度,增大容量,提供容错功能,确保数据安全,易于管理。
一、常见的 RAID 级别
1、RAID 0
- 至少需要两块硬盘
- 数据条带化分布到磁盘,高的读写性能, 100% 空间使用率
- 数据没有冗余策略,一块硬盘故障,数据无法恢复
- 应用场景:对读写性能要求高,但对数据安全可靠性要求不高的场景
2、RAID 1
- 至少需要两块磁盘
- 数据镜像备份写到另一块磁盘上,可靠性高,磁盘利用率为 50%
- 一块磁盘故障,不会影响数据的读写
- 应用场景:对数据安全可靠要求高的场景
3、RAID 5
- 至少需要三块硬盘
- 数据条带化存储在磁盘,读写性能好,磁盘利用率为 (n-1)/n
- 以奇偶校验位(p)做数据冗余,可允许一块硬盘故障
- 一块磁盘故障,可通过其他数据块和对应的校验数据重构损坏的数据(消耗性能)
- 适用大部分场景
4、RAID 6
- 至少需要四块硬盘
- 数据条带化存储,读写性能好容错能力强
- 采用双重校验方式保证数据的安全性
- 可以允许两块硬盘故障
- 适用于对数据安全要求非常高的场景
5、RAID 1 0
- RAID 1 0 是 RAID 1 和 RAID 0 的组合
- 两组 RAID 1 ,组合成 RAID 0
- 至少需要四块硬盘
- 兼顾条带化读写(RAID 0),与数据冗余(RAID 1)
- 磁盘利用率 50%