linux6-存储结构与硬盘管理
1.挂载设备
mount + 设备 +挂载目录
1 [root@linuxprobe ~]# mount /dev/sdb2 /backup
2.显示设备属性信息blkid
3.df -h
查看已挂载设备磁盘使用情况
4.RAID(独立冗余磁盘阵列)
5.mdadm 命令用于创建、调整、监控和管理 RAID 设备
1 其中,-C 参数代表创建一个 RAID 阵列卡;-v 2 参数显示创建的过程,同时在后面追加一个设备名称/dev/md0,这样/dev/md0 就是创建后的 3 RAID 磁盘阵列的名称;-n 4 参数代表使用 4 块硬盘来部署这个 RAID 磁盘阵列;而-l 10 参数 4 则代表 RAID 10 方案;最后再加上 4 块硬盘设备的名称就搞定了。 5 [root@linuxprobe~]# mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde 6 mdadm: layout defaults to n2 7 mdadm: layout defaults to n2 8 mdadm: chunk size defaults to 512K 9 mdadm: size set to 20954112K 10 mdadm: Defaulting to version 1.2 metadata 11 mdadm: array /dev/md0 started.
等两三分钟后,把制作好的 RAID 磁盘阵列格式化为 Ext4 格式:
[root@linuxprobe~]# mkfs.ext4 /dev/md0
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
随后,创建挂载点,将硬盘设备进行挂载操作:
[root@linuxprobe~]# mkdir /RAID
[root@linuxprobe~]# mount /dev/md0 /RAID
[root@linuxprobe~]# df -h
如果想让创建好的 RAID 磁盘阵列能够一直提供服务,不会因每次的重启操作而取消,
那么一定要记得将信息添加到/etc/fstab 文件中,这样可以确保在每次重启后 RAID 磁盘阵列 都是有效的。
[root@linuxprobe~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
[root@linuxprobe~]# cat /etc/fstab
1 [root@linuxprobe~]# mdadm /dev/md0 -r /dev/sdb 2 mdadm: hot removed /dev/sdb from /dev/md0 3 4 [root@linuxprobe~]# mdadm /dev/md0 -a /dev/sdb 5 mdadm: added /dev/sdb 6 [root@linuxprobe~]# mdadm -D /dev/md0 7 /dev/md0: 8 Version : 1.2 9 Creation Time : Thu Jan 14 05:12:20 2021 10 Raid Level : raid10 11 Array Size : 41908224 (39.97 GiB 42.91 GB) 12 Used Dev Size : 20954112 (19.98 GiB 21.46 GB) 13 Raid Devices : 4 14 Total Devices :
6.raid5
1 下面的命令中,参数-n 3代表创建这个 RAID 2 5 磁盘阵列所需的硬盘数,参数-l 5 代表 RAID 的级别,而参数-x 1 则代表有一块备份盘。 3 当查看/dev/md0(即 RAID 5 磁盘阵列的名称)磁盘阵列的时候,就能看到有一块备份盘在等 4 待中了。 5 [root@linuxprobe~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde 6 mdadm: layout defaults to left-symmetric 7 mdadm: layout defaults to left-symmetric 8 mdadm: chunk size defaults to 512K 9 mdadm: size set to 20954112K 10 mdadm: Defaulting to version 1.2 metadata 11 mdadm: array /dev/md0 started. 12 [root@linuxprobe~]# mdadm -D /dev/md0
7.删除磁盘阵列
1 首先,需要将所有的磁盘都设置成停用状态: 2 [root@linuxprobe~]# umount /RAID 3 [root@linuxprobe~]# mdadm /dev/md0 -f /dev/sdc 4 mdadm: set /dev/sdc faulty in /dev/md0 5 [root@linuxprobe~]# mdadm /dev/md0 -f /dev/sdd 6 mdadm: set /dev/sdd faulty in /dev/md0 7 [root@linuxprobe~]# mdadm /dev/md0 -f /dev/sde 8 mdadm: set /dev/sde faulty in /dev/md0 9 然后再逐一移除出去: 10 [root@linuxprobe~]# mdadm /dev/md0 -r /dev/sdb 11 mdadm: hot removed /dev/sdb from /dev/md0 12 [root@linuxprobe~]# mdadm /dev/md0 -r /dev/sdc 13 mdadm: hot removed /dev/sdc from /dev/md0 14 [root@linuxprobe~]# mdadm /dev/md0 -r /dev/sdd 15 mdadm: hot removed /dev/sdd from /dev/md0 16 [root@linuxprobe~]# mdadm /dev/md0 -r /dev/sde 17 mdadm: hot removed /dev/sde from /dev/md0 18 如果着急,也可以用“mdadm /dev/md0 -f /dev/sdb -r /dev/sdb”这一条命令搞定。但是,在早 19 期版本的服务器中,这条命令中的-f 和-r 不能一起使用,因此保守起见,还是一步步地操作吧。 20 将所有的硬盘都移除后,再来查看磁盘阵列组的状态: 21 [root@linuxprobe~]# mdadm -D /dev/md0 22 /dev/md0: 23 Version : 1.2 24 Creation Time : Fri Jan 15 08:53:41 2021 25 Raid Level : raid5 26 Array Size : 41908224 (39.97 GiB 42.91 GB) 27 Used Dev Size : 20954112 (19.98 GiB 21.46 GB) 28 Raid Devices : 3 29 Total Devices : 0 30 Persistence : Superblock is persistent 31 Update Time : Fri Jan 15 09:00:57 2021 32 State : clean, FAILED 33 Active Devices : 0 34 Failed Devices : 0 35 Spare Devices : 0 36 Layout : left-symmetric 37 Chunk Size : 512K 38 Consistency Policy : resync 39 Number Major Minor RaidDevice State 40 - 0 0 0 removed 41 - 0 0 1 removed 42 - 0 0 2 removed 43 很棒!下面继续停用整个 RAID 磁盘阵列,咱们的工作就彻底完成了: 44 [root@linuxprobe~]# mdadm --stop /dev/md0
8.逻辑卷管理器 (Logical Volume Manager,LVM)。LVM 允许用户对硬盘资源进行动态调整。
第一步:让新添加的两块硬盘设备支持 LVM 技术。 [root@linuxprobe~]# pvcreate /dev/sdb /dev/sdc Physical volume "/dev/sdb" successfully created. Physical volume "/dev/sdc" successfully created 第二步:把两块硬盘设备加入到 storage 卷组中,然后查看卷组的状态。 [root@linuxprobe~]# vgcreate storage /dev/sdb /dev/sdc Volume group "storage" successfully created [root@linuxprobe~]# vgdisplay 第三步切割出一个约为 150MB 的逻辑卷设备。 这里需要注意切割单位的问题。在对逻辑卷进行切割时有两种计量单位。第一种是以容 量为单位,所使用的参数为-L。例如,使用-L 150M 生成一个大小为 150MB 的逻辑卷。另外 一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为 4MB。例 如,使用-l 37 可以生成一个大小为 37×4MB=148MB 的逻辑卷。 [root@linuxprobe~]# lvcreate -n vo -l 37 storage Logical volume "vo" created. [root@linuxprobe~]# lvdisplay 第四步:把生成好的逻辑卷进行格式化,然后挂载使用。 Linux 系统会把 LVM 中的逻辑卷设备存放在/dev 设备目录中(实际上就是个快捷方式), 同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名称/ 逻辑卷名称)。 [root@linuxprobe ~]# mkfs.ext4 /dev/storage/vo [root@linuxprobe~]# mkdir /linuxprobe [root@linuxprobe~]# mount /dev/storage/vo /linuxprobe 永久生效 [root@linuxprobe~]# echo "/dev/storage/vo /linuxprobe ext4 defaults 0 0" >> /etc/fstab [root@linuxprobe~]# cat /etc/fstab
9.扩容逻辑卷
1 [root@linuxprobe~]# umount /linuxprobe 2 :把上一个实验中的逻辑卷 vo 扩展至 290MB。 3 [root@linuxprobe~]# lvextend -L 290M /dev/storage/vo 4 Rounding size to boundary between physical extents: 292.00 MiB. 5 Size of logical volume storage/vo changed from 148 MiB (37 extents) to 292 MiB 6 (73 extents). 7 Logical volume storage/vo successfully resized. 8 :检查硬盘的完整性,确认目录结构、内容和文件内容没有丢失。一般情况下没 9 有报错,均为正常情况。 10 [root@linuxprobe~]# e2fsck -f /dev/storage/vo 11 e2fsck 1.44.3 (10-July-2018) 12 Pass 1: Checking inodes, blocks, and sizes 13 Pass 2: Checking directory structure 14 Pass 3: Checking directory connectivity 15 使用 RAID 与 LVM 磁盘阵列技术 16 232 17 Pass 4: Checking reference counts 18 Pass 5: Checking group summary information 19 /dev/storage/vo: 11/38000 files (0.0% non-contiguous), 10453/151552 blocks 20 :重置设备在系统中的容量。刚刚是对 LV(逻辑卷)设备进行了扩容操作,但系 21 统内核还没有同步到这部分新修改的信息,需要手动进行同步。 22 [root@linuxprobe~]# resize2fs /dev/storage/vo 23 resize2fs 1.44.3 (10-July-2018) 24 Resizing the filesystem on /dev/storage/vo to 299008 (1k) blocks. 25 The filesystem on /dev/storage/vo is now 299008 (1k) blocks long. 26 :重新挂载硬盘设备并查看挂载状态。 27 [root@linuxprobe~]# mount -a 28 [root@linuxprobe~]# df -h
10.缩小逻辑卷
1 [root@linuxprobe~]# umount /linuxprobe 2 :检查文件系统的完整性。 3 [root@linuxprobe~]# e2fsck -f /dev/storage/vo 4 e2fsck 1.44.3 (10-July-2018) 5 Pass 1: Checking inodes, blocks, and sizes 6 Pass 2: Checking directory structure 7 Pass 3: Checking directory connectivity 8 Pass 4: Checking reference counts 9 Pass 5: Checking group summary information 10 /dev/storage/vo: 11/74000 files (0.0% non-contiguous), 15507/299008 blocks 11 233 12 :通知系统内核将逻辑卷 vo 的容量减小到 120MB。 13 [root@linuxprobe~]# resize2fs /dev/storage/vo 120M 14 resize2fs 1.44.3 (10-July-2018) 15 Resizing the filesystem on /dev/storage/vo to 122880 (1k) blocks. 16 The filesystem on /dev/storage/vo is now 122880 (1k) blocks long. 17 :将 LV(逻辑卷)的容量修改为 120MB。 18 [root@linuxprobe~]# lvreduce -L 120M /dev/storage/vo 19 WARNING: Reducing active logical volume to 120.00 MiB. 20 THIS MAY DESTROY YOUR DATA (filesystem etc.) 21 Do you really want to reduce storage/vo? [y/n]: y 22 Size of logical volume storage/vo changed from 292 MiB (73 extents) to 120 23 MiB (30 extents). 24 Logical volume storage/vo successfully resized. 25 咦?缩容的步骤跟扩容的步骤不一样啊。缩容操作为什么是先通知系统内核设备的容量 26 要改变成 120MB,然后再正式进行缩容操作呢?举个例子大家就明白了。小强是一名初中生, 27 开学后看到班里有位同学纹了身,他感觉很酷,自己也想纹但又怕家里责骂,于是他回家后 28 就说:“妈妈,我纹身了。”如果妈妈的反应很平和,那么他就可以放心大胆地去纹身了。如 29 果妈妈强烈不同意,他马上就可以哈哈一笑,说:“逗着玩呢。”这样也就不会挨打了。 30 缩容操作也是同样的道理,先通知系统内核自己想缩小逻辑卷,如果在执行 resize2fs 命 31 令后系统没有报错,再正式操作。 32 :重新挂载文件系统并查看系统状态。 33 [root@linuxprobe~]# mount -a 34 [root@linuxprobe~]# df
5.LVM(逻辑卷管理器)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现