1、RAID
1.1、阵列分析
目前常用的 RAID 磁盘阵列的方案有四种:RAID0、RAID1、RAID5、RAID10
阵列技术 | 作用 | 优势 | 劣势 |
---|---|---|---|
RAID0 | 两块盘合为一块 | 提升硬盘数据的吞吐速度 | 数据不安全,某一块盘换了就读取不了 |
RAID1 | 一比一复制 | 数据安全 | 磁盘利用率只有50% |
RAID5 | 把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中 | 0和1的折中结合体,既能提高吞吐速度又能做到数据安全保障 | 提供数据安全保障,但保障程度要比 RAID1 低,磁盘空间利用率要比RAID1高 |
RAID10 | RAID0和RAID1的结合体,先分别两两制作成 RAID 1 磁盘阵列,再对两个 RAID 1 磁盘阵列实施 RAID 0 技术 | 完美解决数据吞吐速度和安全问题 | 成本高,比较费盘 |
1.2、磁盘阵列的部署
mdadm 命令用于管理 Linux 系统中的软件 RAID 硬盘阵列
参数:
-a 检测设备名称
-n 指定设备数量
-l 指定 RAID 级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止 RAID 磁盘阵列
创建RAID10阵列
1、将虚拟机上增加4块硬盘
2、将增加的盘创建分区
[root@localhost ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xdac4b323 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n #创建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p #创建主分区
分区号 (1-4,默认 1):
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):5G
值超出范围。
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):
将使用默认值 10485759
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
3、创建RAID区
[root@localhost ~]# mdadm -Cv /dev/md0 -a yes -l 10 -n 4 /dev/sdc /dev/sdd /dev/sde /dev/sdf
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: /dev/sdc appears to be part of a raid array:
level=raid10 devices=4 ctime=Thu Apr 28 13:50:25 2022
mdadm: partition table exists on /dev/sdc but will be lost or
meaningless after creating array
mdadm: /dev/sdd appears to be part of a raid array:
level=raid10 devices=4 ctime=Thu Apr 28 13:50:25 2022
mdadm: partition table exists on /dev/sdd but will be lost or
meaningless after creating array
mdadm: /dev/sde appears to be part of a raid array:
level=raid10 devices=4 ctime=Thu Apr 28 13:50:25 2022
mdadm: partition table exists on /dev/sde but will be lost or
meaningless after creating array
mdadm: /dev/sdf appears to be part of a raid array:
level=raid10 devices=4 ctime=Thu Apr 28 13:50:25 2022
mdadm: partition table exists on /dev/sdf but will be lost or
meaningless after creating array
mdadm: size set to 5237760K
Continue creating array?
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
4、挂载RAID区
[root@localhost ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
655360 inodes, 2618880 blocks
130944 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2151677952
80 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, 1605632
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@localhost ~]# mount /dev/md0 /RAID/
[root@localhost ~]# df -TH
/dev/md0 ext4 11G 38M 9.9G 1% /RAID
5、永久挂载
5、永久挂载
[root@localhost ~]# vi /etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
UUID=41ff41fd-8e69-450d-9ebb-7551b9a76153 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /nesFs xfs defaults 0 0
/dev/md0 /RAID ext4 defaults 0 0
6、查看阵列信息
[root@localhost ~]# mdadm -D
mdadm: No devices given.
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Apr 28 14:06:40 2022
Raid Level : raid10
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Thu Apr 28 14:08:34 2022
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 4aeb4a9c:b44cddab:f8595c65:ebdc5a0e
Events : 19
Number Major Minor RaidDevice State
0 8 32 0 active sync set-A /dev/sdc
1 8 48 1 active sync set-B /dev/sdd
2 8 64 2 active sync set-A /dev/sde
3 8 80 3 active sync set-B /dev/sdf
7、移除阵列
[root@localhost ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
[root@localhost ~]# mdadm -D #再次查看阵列就没有了
mdadm: No devices given.
1.3、修复阵列
在RAID10级别的磁盘阵列中,当RAID1磁盘阵列中存在一个故障盘时并不影响RAID10磁盘阵列的使用。当购买了新的硬盘设备后再使用mdadm命令来予以替换即可,在此期间我们可以在/RAID 目录中正常地创建或删除文件。由于我们是在虚拟机中模拟硬盘,所以先重启。再把新的硬盘添加到 RAID 磁盘阵列中
1、模拟损坏/dev/sdc盘损坏
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# mdadm -D
mdadm: No devices given.
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Apr 28 14:06:40 2022
Raid Level : raid10
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Thu Apr 28 14:22:56 2022
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 4aeb4a9c:b44cddab:f8595c65:ebdc5a0e
Events : 21
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 48 1 active sync set-B /dev/sdd
2 8 64 2 active sync set-A /dev/sde
3 8 80 3 active sync set-B /dev/sdf
0 8 32 - faulty /dev/sdc
[root@localhost ~]#
2、重新分区挂载
mdadm /dev/md0 -a /dev/sdb
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Apr 28 14:06:40 2022
Raid Level : raid10
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Thu Apr 28 14:39:06 2022
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 4aeb4a9c:b44cddab:f8595c65:ebdc5a0e
Events : 44
Number Major Minor RaidDevice State
4 8 32 0 active sync set-A /dev/sdc
1 8 48 1 active sync set-B /dev/sdd
2 8 64 2 active sync set-A /dev/sde
3 8 80 3 active sync set-B /dev/sdf
[root@localhost ~]#
2、LVM
2.1 部署逻辑卷
1、支持LVM 技术
#让两块新增的盘支持LVM技术
[root@localhost ~]# pvcreate /dev/sdg /dev/sdh
Physical volume "/dev/sdg" successfully created.
Physical volume "/dev/sdh" successfully created.
2、把硬盘设备加入到 storage 卷组
[root@localhost ~]# vgcreate storage /dev/sdg /dev/sdh
Volume group "storage" successfully created
[root@localhost ~]# 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 qRB4Xz-Z6BH-NNJz-yKdB-dkyB-3N1W-Vyko4D
--- Volume group ---
VG Name storage
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 9.99 GiB
PE Size 4.00 MiB
Total PE 2558
Alloc PE / Size 0 / 0
Free PE / Size 2558 / 9.99 GiB
VG UUID gJACUj-0EUM-Ji8B-0quN-8cgC-Md7y-xlnHGu
[root@localhost ~]#
3、切割逻辑卷
这里需要注意切割单位的问题。在对逻辑卷进行切割时有两种计量单位。第一种是以容
量为单位,所使用的参数为-L。例如,使用-L 150M 生成一个大小为 150MB 的逻辑卷。另外
一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为 4MB。例
如,使用-l 37 可以生成一个大小为 37×4MB=148MB 的逻辑卷
#方式一切割
[root@localhost ~]# lvcreate -L 150M storage
Rounding up size to full physical extent 152.00 MiB
Logical volume "lvol0" created.
[root@localhost ~]#
#方式二切割
[root@localhost ~]# lvcreate -n vo -l 37 storage
Logical volume "vo" created.
[root@localhost ~]# lvcreate -L 150M storage #显示逻辑卷
--- Logical volume ---
LV Path /dev/storage/lvol0
LV Name lvol0
VG Name storage
LV UUID 71Avnv-XsAg-1faG-cQqB-ViSM-uUuF-bW9ZMs
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2022-04-28 16:44:13 +0800
LV Status available
# open 0
LV Size 152.00 MiB
Current LE 38
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/storage/vo
LV Name vo
VG Name storage
LV UUID S2pXqR-2WVH-sAFA-0Gdn-Rhj8-NFsb-2dZ7N5
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2022-04-28 16:45:22 +0800
LV Status available
# open 0
LV Size 148.00 MiB
Current LE 37
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
4、将逻辑卷格式化,挂载使用
[root@localhost ~] mkfs.ext4 /dev/storage/lvol0 #格式化为ext4格式
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
38912 inodes, 155648 blocks
7782 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33816576
19 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@localhost data]# mount /dev/storage/vo /data/a
[root@localhost data]# mount /dev/storage/lvol0 /data/b/
[root@localhost data]# df -Th
/dev/mapper/storage-vo ext4 140M 1.6M 128M 2% /data/a
/dev/mapper/storage-lvol0 ext4 144M 1.6M 132M 2% /data/b
5、永久写入
echo "/dev/mapper/storage-vo /data/a ext4 defaults 0 0" >>/etc/fstab
echo "/dev/mapper/storage-lvol0 /data/b ext4 defaults 0 0" >>/etc/fstab
2.2 扩容逻辑卷
1、扩容
[root@localhost vo]# lvextend -L 290M /dev/storage/vo
Rounding size to boundary between physical extents: 292.00 MiB.
Size of logical volume storage/vo changed from 148.00 MiB (37 extents) to 292.00 MiB (73 extents).
Logical volume storage/vo successfully resized.
2、检查硬盘完整性,并重置硬盘容量。
[root@localhost vo]# e2fsck -f /dev/storage/vo #可不做
e2fsck 1.42.9 (28-Dec-2013)
/dev/storage/vo is mounted.
e2fsck: 无法继续, 中止.
[root@localhost vo]# resize2fs /dev/storage/vo
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/storage/vo is mounted on /data/vo; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/storage/vo is now 299008 blocks long.
3、查看容量
[root@localhost vo]# mount -a #重新挂载 可不做
[root@localhost vo]# df -TH
/dev/mapper/storage-vo ext4 293M 2.2M 274M 1% /data/vo
2.3 缩小逻辑卷
相较于扩容逻辑卷,在对逻辑卷进行缩容操作时,其丢失数据的风险更大。所以在生产 环境中执行相应操作时,一定要提前备份好数据。在执 行缩容操作前记得先把文件系统卸载掉。
1、检查文件的完整性
[root@localhost lvol0]# umount /data/vo/ #先取消挂载
[root@localhost lvol0]# e2fsck -f /dev/storage/vo
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/storage/vo: 12/74000 files (0.0% non-contiguous), 15509/299008 blocks
2、缩小
[root@localhost lvol0]# resize2fs /dev/storage/vo 100M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/vo to 102400 (1k) blocks.
The filesystem on /dev/storage/vo is now 102400 blocks long.
[root@localhost lvol0]# lvreduce -L 100M /dev/storage/vo
WARNING: Reducing active logical volume to 100.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce storage/vo? [y/n]: y
Size of logical volume storage/vo changed from 292.00 MiB (73 extents) to 100.00 MiB (25 extents).
Logical volume storage/vo successfully resized.
3、挂载查看大小
[root@localhost lvol0]# mount /dev/storage/vo /data/vo/
[root@localhost lvol0]# df -Th
/dev/mapper/storage-vo ext4 93M 1.6M 85M 2% /data/vo
2.4 逻辑卷快照(没研究懂是干嘛的)
LVM 还具备有“快照卷”功能,该功能类似于虚拟机软件的还原时间点功能。例如,可
以对某一个逻辑卷设备做一次快照,如果日后发现数据被改错了,就可以利用之前做好的快
照卷进行覆盖还原。
LVM 的快照卷功能有两个特点:
第一个就是:快照卷的容量必须等同于逻辑卷的容量
第二个就是:快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。
1、生成快照卷
#先查看卷组的信息
[root@localhost vo]# vgdisplay
[root@localhost data]# lvcreate -L 100M -s -n SNAP /dev/storage/vo
Logical volume "SNAP" created.
[root@localhost data]# lvdisplay
2、查看效果
再向逻辑卷中添加文件之前使用lvdisplai查看分配给快照的空间是
Allocated to snapshot 0.01%
再向逻辑卷中添加文件后再使用lvsidplay查看分配给快照空间
Allocated to snapshot 5.45%
3、使用功能
[root@localhost dev]# umount /data/vo/
[root@localhost dev]# lvconvert --merge /dev/storage/SNAP
Merging of volume storage/SNAP started.
storage/vo: Merged: 100.00%
[root@localhost dev]# mount /dev/storage/vo /data/vo/
4、检查快照
[root@localhost dev]# lvdisplay #发现之前的快照卷没有了
2.5 删除逻辑卷
1、取消挂载
[root@localhost vo]# umount /data/vo
vi /etc/fstab #将之前永久挂载的配置删除
2、删除逻辑卷
[root@localhost vo]# lvremove /dev/storage/vo
Do you really want to remove active logical volume vo? [y/n]: y
Logical volume "vo" successfully removed
3、删除卷组
[root@localhost vo]# vgremove storage
Volume group "storage" successfully removed
4、删除物理卷设备
[root@localhost vo]#pvremove /dev/sdg /dev/sdh
Labels on physical volume "/dev/sdg" successfully wiped
Labels on physical volume "/dev/sdh" successfully wiped