本教程适用于linux
lvm为逻辑磁盘,raid为阵列,两种技术可以单独使用也可以搭配使用
2023.9.3更新
前三节是操作命令和基础知识,后面是实操。
一、存储硬件查看相关命令
硬盘分区相关操作在后面用的到,可以先略过,有需要了再回来查
(一)查看
1.查看所有存储硬件详细信息
bash
fdisk -l
2.查看文件系统
bash
df -h
3.查看硬件挂载情况
bash
lsblk
4.硬盘温度、通电时间等信息
查看这篇详细说明:linux查看硬盘详细信息
(二)新建分区和格式化
使用fdisk -l获取所有连接的硬盘,比如要在/dev/sde这个盘新建分区,挂载到/cloud目录(之前没有这个目录)
新建ext4文件系统分区
bash
fdisk /dev/sde
n->回车->p(查看分区)->w(保存)->q(退出)
bash
mkfs.ext4 /dev/sde1
bash
mkfs -t ext4 /dev/sde1
新建目录
bash
mkdir /cloud
将目录和硬盘关联
bash
mount /dev/sde1 /cloud
(三)开机挂载
linux非桌面版本,新加入的磁盘,如果不设置挂载,重启后会失效
使用磁盘的uuid进行挂载,不要用/dev/xxx进行挂载,否则部分情况重启可能会串盘
使用fdisk -l获取硬盘的uuid
bash
vi /etc/fstab
比如将5607a174-cfb3-476f-b509-a0e2e5f9654b挂载到/cloud下,加入这条信息
UUID=5607a174-cfb3-476f-b509-a0e2e5f9654b /cloud ext4 defaults 0 2
(四)删除分区
比如要删除/dev/sde1这个分区,这个分区挂载在/cloud目录
卸载目录
bash
umount /cloud
删除
bash
fdisk /dev/sde1
d->回车->w(可能需要删除多次)
二、raid讲解和基本命令
具体案例详细操作见四
(一)说明
(二)依赖软件安装
bash
apt-get install mdadm
或
bash
dnf install mdadm
(三)命令
1.禁用raid
禁用/dev/md0
bash
mdadm -S /dev/md0
三、lvm讲解和命令
LVM如果其中的一个盘坏了,其它的还是不受影响的,并不是一个坏了全部都坏了
具体案例详细操作见四
(一)说明
1.物理硬件
一个具体的硬盘,由于linux中每个硬件都是一个"文件",在系统层面,形如是/dev/sda
2.物理卷PV (physical volume)
可以是一个硬盘分区或者一个组好的raid
3.卷组VG(Volume Group)
一个或多个物理卷组成一个卷组
4.逻辑卷LV(logical volume)
在卷组上的分区
(二)依赖软件安装
如果缺失这个软件,已有的lvm也无法正常运行(假如无意之中卸载了)
bash
apt-get install lvm2
或
bash
dnf install lvm2
(三)命令
lvm在linux中是默认有的,最近几年的版本在安装系统时也推荐使用lvm
1.查看类相关命令
查看物理卷PV
bash
pvdisplay
查看卷组VG
bash
vgdisplay
查看逻辑卷lv
bash
lvdisplay
查看逻辑卷lv挂载状态
bash
lvscan
2.创建类相关命令
创建物理卷PV
bash
pvcreate /dev/sdc1
创建卷组VG
3.卸载类相关命令
``
三、具体应用-创建
(一)raid0-并行-追求速度
1.说明
这种情况下一个块硬盘的损坏会导致数据的丢失,不同容量的组raid0会按照最小的那块计算容量,建议使用容量一致的硬盘。
2.优缺点
优点:速度快,相当于并行
缺点:坏一个盘,整体数据都无法直接使用
3.实操
下面操作将/dev/sda /dev/sdc组成一个raid0,组合后的raid叫/dev/md0
bash
mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdc
查看创建结果,能输出结果说明可以
bash
cat /proc/mdstat
(二)raid1-镜像-安全
1.说明
这种情况下组合的raid只会有最小的那块盘的容量,一般选用一样容量的硬盘。
2.优缺点
优点: 除非两个盘同时坏,否则数据完整,如果两块盘同时坏,但是没有坏在一个地方,可以恢复,数据仍然在。就是说除非两块盘同时坏在一个地方,且无法恢复,而这块丢失的数据又是需要的情况下,数据才会丢失。
缺点: 速度相对于一个盘略微降低,空间利用率最大50%(两块盘一样大)
3.实操
下面操作将/dev/sda /dev/sdc组成一个raid1,组合后的raid叫/dev/md1
bash
mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sda /dev/sdc
查看创建结果,能输出结果说明可以
bash
cat /proc/mdstat
(三)raid10-速度和安全性
1.思路
相当于每2块组成一个镜像(raid1),然后两个raid1再组成raid0
(还有一种是raid01,两块盘组成raid0,然后两个raid0组成raid1,这种方法继承了raid0和raid1的缺点,不推荐使用raid01,只推荐raid10)
2.优缺点:
优点:速度快且安全
缺点:硬盘利用率最大为50%
3.实操
假设4块硬盘
先创建两个raid1
/dev/sda 和 /dev/sdb组 /dev/mda
/dev/sdc 和 /dev/sdd组 /dev/mdb
bash
mdadm --create --verbose /dev/mda --level=1 --raid-devices=2 /dev/sda /dev/sdb
bash
mdadm --create --verbose /dev/mdb --level=1 --raid-devices=2 /dev/sdc /dev/sdd
再创建一个raid0
bash
mdadm --create --verbose /dev/md10 --level=0 --raid-devices=2 /dev/mda /dev/mdb
最后组合的是/dev/md10,在这个raid上分区格式化即可(操作方法在上面,看目录找)
(四)灵活扩容且安全(raid1+lvm)
1.思路
每两块硬盘组一个raid1镜像,多个raid1组一个lvm,可以只用2块,然后后期扩容,这样最后可以在系统层面只是一个分区。对于重要数据,强烈推荐使用这种方法
2.优缺点
优点:灵活扩容且安全
缺点:硬盘利用率为50%
3.实操
/dev/sda 和 /dev/sdb组 /dev/mda
/dev/sdc 和 /dev/sdd组 /dev/mdb
然后2个raid1组lvm,最后格式化,挂载到/mirror目录
先组2个raid1
bash
mdadm --create --verbose /dev/mda --level=1 --raid-devices=2 /dev/sda /dev/sdb
bash
mdadm --create --verbose /dev/mdb --level=1 --raid-devices=2 /dev/sdc /dev/sdd
2个raid1组lvm
2个raid1都先创建pv
bash
pvcreate /dev/mda
bash
pvcreate /dev/mdb
创建vg,名称为GroupMirror
bash
vgcreate GroupMirror /dev/mda /dev/mdb
激活
bash
vgchange -a y GroupMirror
bash
lvcreate -l 100%FREE -n mirror_data GroupMirror
注意大小写,小写-l 可以写比例,大写是具体值
bash
mkfs.ext4 /dev/GroupMirror/mirror_data
bash
mkdir /mirror && mount -t ext4 /dev/GroupMirror/mirror_data /mirror
(五)raid5
以后更新
(六)raid6
以后更新
四、具体应用-调整
(一)LVM卷组扩容
lvm可以用一个物理磁盘或者一个raid作为基础,建立lvm。
下面将一个磁盘/dev/md2扩容到名为GroupMirror的卷组
创建lvm物理卷
bash
pvcreate /dev/md2
扩容卷组
bash
vgextend GroupMirror /dev/md2
此时仍然未生效,下面根据自己的名称修改命令(100%新磁盘的空间扩容到原来的)
bash
lvextend -l +100%FREE /dev/mapper/GroupMirror-mirror_data
上面的操作后仍然未生效
-------如果是ext格式用这个刷新(-p是现实百分比)
bash
resize2fs -p /dev/mapper/GroupMirror-mirror_data
-------如果是xfs格式则用以下的即可
bash
xfs_growfs /dev/mapper/GroupMirror-mirror_data
我拓展了一个8T的机械盘用了一个小时左右
五、具体应用-卸载
(一)卸载lvm
1.移除挂载的分区
比如挂载的分区叫/mirror
bash
umount /mirror
2.删除逻辑卷LV
比如逻辑卷为 /dev/GroupMirror/mirror_data
bash
lvremove /dev/GroupMirror/mirror_data
会询问是否删除,输入y
注意:此时vg卷组还在,数据还在,重新挂载LV和之前数据一样
如果需要重新挂载,看五、(一)误删LV恢复
3.删除卷组VG
bash
vgremove /dev/GroupMirror
会提示,全部选择y即可
注意:此时物理卷还在,数据还在,仍然可以恢复
如果需要重新挂载,看五、(二)误删LV、VG恢复
4.删除物理卷PV
查看pv
bash
pvs
移除对应的物理卷,这个物理卷有可能是raid
bash
pvremove /dev/sde
注意:此时仍然有机会恢复,建议找专业人士
5.删除物理磁盘
注意,这次删除数据就真的没了!
bash
fdisk /dev/sde
依次选择:m、d、3、w
六、具体应用-LVM相关恢复
(一)误删LV(逻辑卷)
1.查询achieve记录
需要通过VG卷组进行恢复
查看VG
bash
vgdisplay
可以看到VG还在,假设VG名称为GroupMirror
查看VG操作记录
bash
vgcfgrestore --list GroupMirror
可以看到类似以下的操作
2.恢复到指定的节点
bash
vgcfgrestore -f /etc/lvm/archive/GroupMirror_00008-1277402051.vg GroupMirror
然后会显示恢复成功
激活LV(和新建的时候操作一样)
bash
lvchange -ay /dev/GroupMirror/mirror_data
创建挂载点并挂载,使用原来的挂载点即可
如果是挂载到新的挂载点,mkdir /xxx即可
bash
mount -t ext4 /dev/GroupMirror/mirror_data /mirror
(二)误删LV(逻辑卷)、VG(卷组)恢复
如果删掉了LV和VG仍然可以恢复,先恢复VG,然后再恢复LV(同上面恢复LV)
1.查询achieve记录
bash
vgcfgrestore --list GroupMirror
会看到很多文件,还有修改时间,找到误删时候的文件,y以.vg结尾(通常是最近的一个)
可以看到很多操作记录,比如下面的
2.恢复卷组VG和LV
这个命令一次性就恢复了两次操作,当然你要选好恢复的.VG文件
bash
vgcfgrestore -f /etc/lvm/archive/GroupMirror_00010-1053623108.vg GroupMirror
完成后会提示
3.恢复逻辑卷LV
激活LV(和新建的时候操作一样)
bash
lvchange -ay /dev/GroupMirror/mirror_data
创建挂载点并挂载,使用原来的挂载点即可
如果是挂载到新的挂载点,mkdir /xxx即可
bash
mount -t ext4 /dev/GroupMirror/mirror_data /mirror