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

vgcfgrestore -f /etc/lvm/archive/GroupMirror_00008-1277402051.vg GroupMirror
然后会显示恢复成功

激活LV(和新建的时候操作一样)
lvchange -ay /dev/GroupMirror/mirror_data
创建挂载点并挂载,使用原来的挂载点即可
如果是挂载到新的挂载点,mkdir /xxx即可
mount -t ext4 /dev/GroupMirror/mirror_data /mirror
如果删掉了LV和VG仍然可以恢复,先恢复VG,然后再恢复LV(同上面恢复LV)
vgcfgrestore --list GroupMirror
会看到很多文件,还有修改时间,找到误删时候的文件,y以.vg结尾(通常是最近的一个)
可以看到很多操作记录,比如下面的

这个命令一次性就恢复了两次操作,当然你要选好恢复的.VG文件
vgcfgrestore -f /etc/lvm/archive/GroupMirror_00010-1053623108.vg GroupMirror
完成后会提示

激活LV(和新建的时候操作一样)
lvchange -ay /dev/GroupMirror/mirror_data
创建挂载点并挂载,使用原来的挂载点即可
如果是挂载到新的挂载点,mkdir /xxx即可
mount -t ext4 /dev/GroupMirror/mirror_data /mirror