之前解决过这么一个需求:服务器的一块或者两块磁盘坏了,服务器里的数据不会丢。并且当磁盘空间不足的时候可以非常方便的扩大容量。
首先,先来介绍一下RAID
RAID,廉价的磁盘阵列
RAID分为硬件RAID和软件RAID
硬件RAID:
速度快,性能好,支持热插拔。
需专门的RAID磁盘阵列卡,价格昂贵,还需要配合相应的驱动
软件RAID:
通过Linux内核来实现。
使用mdadm软件仿真磁盘列阵功能。
无需专门硬件,性价比较好
设备文件识别标识是/dev/md0
根据可靠性、性能和成本对RAID划分了等级:RAID0/1/5/6/10/01
级别 | RAID0 | RAID1 | RAID5 | RAID6 |
磁盘数 | >=2 | 2 | >=3 | >=4 |
容错功能 | 无 | 有 | 有 | 较强 |
读写速度 | 最快 | 写入较慢 | 较快 | 较快 |
磁盘空间利用 | 100% | 50% | n-1 | n-2 |
然后再来讲一下LVM
LVM主要就是跟传统分区作比较
传统分区 | LVM逻辑卷管理 | |
磁盘空间独立性 | 不能充分利用,尤其是一个fs 只能对应一个分区 |
多次盘PV组成存储池VG,再根据应 用细分逻辑卷LV,空间利用率提高 |
空间扩展性 | 重新分区 | 采取动态或静态在线扩展卷组容量 |
数据备份 | 业务繁忙时,IO接口读写频繁 | 可采取快照方式捕捉某一逻辑卷的 瞬间精确拷贝已完成在线备份工作 |
用户使用性 | 分区标识无法满足大量用户需求。 | 可根据用户需求定义LV逻辑卷的卷标 |
所以根据这些,我做出如下方案:
1.将10块磁盘做成RAID5,2块做热备
2.然后将RAID5做成PV,然后创建单PV的VG,从而做成LVM管理,从VG中划分出LV供公司使用
当空间不够时,将新磁盘做成RAID5,然后也做成PV,并且加入到这个VG,那么就达到了扩容的目的
创建RAID5
首先查看磁盘设备文件
[root@memeda ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 Sep 13 04:08 /dev/sda
brw-rw----. 1 root disk 8, 1 Sep 13 04:08 /dev/sda1
brw-rw----. 1 root disk 8, 2 Sep 13 04:08 /dev/sda2
brw-rw----. 1 root disk 8, 3 Sep 13 04:08 /dev/sda3
brw-rw----. 1 root disk 8, 16 Sep 13 04:08 /dev/sdb
brw-rw----. 1 root disk 8, 32 Sep 13 04:08 /dev/sdc
brw-rw----. 1 root disk 8, 48 Sep 13 04:08 /dev/sdd
brw-rw----. 1 root disk 8, 64 Sep 13 04:08 /dev/sde
brw-rw----. 1 root disk 8, 80 Sep 13 04:08 /dev/sdf
brw-rw----. 1 root disk 8, 96 Sep 13 04:08 /dev/sdg
brw-rw----. 1 root disk 8, 112 Sep 13 04:08 /dev/sdh
brw-rw----. 1 root disk 8, 128 Sep 13 04:08 /dev/sdi
brw-rw----. 1 root disk 8, 144 Sep 13 04:08 /dev/sdj
brw-rw----. 1 root disk 8, 160 Sep 13 04:08 /dev/sdk
sda为系统盘,从sdb到sdk正好10块磁盘
[root@memeda /]# mdadm -C /dev/md0 -l5 -n8 -x2 /dev/sd[bcdefghijk] //RAID级别5,两块热备盘
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@memeda /]# cat /proc/mdstat
Personalities : [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sdi[10]sdk[9](S) sdj[8](S)sdh[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
58688000 blocks super 1.2 level 5, 512k chunk, algorithm 2 [8/7] [UUUUUUU_]
[==>..................] recovery = 12.3% (1037824/8384000) finish=0.9min speed=129728K/sec
unused devices: <none>
RAID正在创建,sdk、sdj为热备盘
再次查看
[root@memeda /]# cat /proc/mdstat
Personalities : [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sdi[10] sdk[9](S) sdj[8](S) sdh[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
58688000 blocks super 1.2 level 5, 512k chunk, algorithm 2 [8/8] [UUUUUUUU]
unused devices: <none>
RAID创建完成
查看RAID详细信息
[root@memeda /]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Sep 13 04:22:23 2015
Raid Level : raid5
Array Size : 58688000 (55.97 GiB 60.10 GB)
Used Dev Size : 8384000 (8.00 GiB 8.59 GB)
Raid Devices : 8
Total Devices : 10
Persistence : Superblock is persistent
Update Time : Sun Sep 13 04:25:27 2015
State : clean
Active Devices : 8
Working Devices : 10
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Name : memeda:0 (local to host memeda)
UUID : 619fa09f:aca65c16:d6d752a4:84d63d1d
Events : 18
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
4 8 80 4 active sync /dev/sdf
5 8 96 5 active sync /dev/sdg
6 8 112 6 active sync /dev/sdh
10 8 128 7 active sync /dev/sdi
8 8 144 - spare /dev/sdj
9 8 160 - spare /dev/sdk
扫描RAID配置信息,并重定向成mdadm.conf文件
[root@memeda /]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 spares=2 name=memeda:0 UUID=619fa09f:aca65c16:d6d752a4:84d63d1d
[root@memeda /]# mdadm -Ds>/etc/mdadm.conf
[root@memeda /]# cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 spares=2 name=memeda:0 UUID=619fa09f:aca65c16:d6d752a4:84d63d1d
创建LVM
1、创建PV
[root@memeda /]# pvcreate /dev/md0
Physical volume "/dev/md0" successfully created
查看PV信息
[root@memeda /]# pvscan
PV /dev/md0 lvm2 [55.97 GiB]
Total: 1 [55.97 GiB] / in use: 0 [0 ] / in no VG: 1 [55.97 GiB]
[root@memeda /]# pvdisplay
"/dev/md0" is a new physical volume of "55.97 GiB"
--- NEW Physical volume ---
PV Name /dev/md0
VG Name
PV Size 55.97 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID rd3YxS-wSoy-k1EH-RzlV-ad5C-T0rk-SRFcCi
2、创建VG
[root@memeda /]# vgcreate laoliu /dev/md0
Volume group "laoliu" successfully created
再次查看PV
[root@memeda /]# pvscan
PV /dev/md0 VG laoliu lvm2 [55.96 GiB / 55.96 GiB free]
Total: 1 [55.96 GiB] / in use: 1 [55.96 GiB] / in no VG: 0 [0 ]
[root@memeda /]# pvdisplay
--- Physical volume ---
PV Name /dev/md0
VG Name laoliu
PV Size 55.97 GiB / not usable 4.50 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 14327
Free PE 14327
Allocated PE 0
PV UUID rd3YxS-wSoy-k1EH-RzlV-ad5C-T0rk-SRFcCi
查看VG
[root@memeda /]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "laoliu" using metadata type lvm2
[root@memeda /]# vgdisplay
--- Volume group ---
VG Name laoliu
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 55.96 GiB
PE Size 4.00 MiB
Total PE 14327
Alloc PE / Size 0 / 0
Free PE / Size 14327 / 55.96 GiB
VG UUID vX1ADB-bFa7-vjoQ-Q0KJ-B8mz-7Vpn-0MSMuy
3、从卷组划分LV使用
[root@memeda /]# lvcreate -L 5G -n laoliu_lv1 laoliu //-L大小5G,-n name逻辑卷名laoliu_lv_1
Logical volume "laoliu_lv1" created
查看lv信息
[root@memeda /]# lvscan
ACTIVE '/dev/laoliu/laoliu_lv1' [5.00 GiB] inherit
[root@memeda /]# lvdisplay /dev/laoliu/laoliu_lv1
--- Logical volume ---
LV Path /dev/laoliu/laoliu_lv1
LV Name laoliu_lv1
VG Name laoliu
LV UUID HyEfed-F9vw-oETY-Z5Kc-0DPt-vQ5G-tUF3dk
LV Write Access read/write
LV Creation host, time memeda, 2015-09-13 04:48:28 +0800
LV Status available
# open 0
LV Size 5.00 GiB
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 14336
Block device 253:0
4、格式化LV,挂载使用
[root@memeda /]# mkfs.ext4 /dev/laoliu/laoliu_lv1
[root@memeda /]# mkdir /lv1
[root@memeda /]# mount /dev/laoliu/laoliu_lv1 /lv1/