网络存储Lab1-RAID
一、实验流程
1.登录虚拟机
在cmd中输入如下命令,输入密码后即可连接至虚拟机。
1 | ssh -l buaa 10.251.255.228 |
其中buaa为用户名,10.251.255.228为虚拟机IP.
2.虚拟机连接网络
配置校园网账号密码
1 | buaalogin config |
连接网络
1 | buaalogin login |
运行结果

3.实验
切换到root权限
1 | sudo -i |

使用LVM为根目录扩容
查看虚拟机的磁盘列表
1 | lsblk -d |

其中sda为系统所在磁盘,容量为20GB。
查看根目录/
的容量
1 | df -lh / |

根目录容量为15GB,存在在sda中没有利用到的空间。
通过fdisk
指令给空闲的磁盘空间分区
1 | fdisk /dev/sda |

在Command (m for help):
后输入n
,之后使用默认值,默认按磁盘最大容量分区。
在Command (m for help):
后输入t
,默认新创建的分区,输入31
选择Linux LVM分区类型
在Command (m for help):
后输入w
保存
创建物理卷(PV), 命名格式一般为 磁盘名+分区号
1 | pvcreate /dev/sda4 |

查看卷组(VG)列表
1 | vgdisplay |

以上内容为Ubuntu在系统安装时已创建好的默认卷组
将刚创建的物理卷加入卷组
1 | vgextend ubuntu-vg /dev/sda4 |

查看逻辑卷(LV)列表
1 | lvdisplay |

将逻辑卷扩容,然后为文件系统(ext4类型)扩容
1 | lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv |

1 | resize2fs /dev/ubuntu-vg/ubuntu-lv |

查看根目录容量
1 | df -lh / |

根目录由15GB扩容至19GB。
RAID阵列搭建
安装mdadm工具
1 | apt-get install mdadm |

RAID 1
使用命令创建 RAID 1
1 | mdadm -Cv /dev/md1 -a yes -n 2 -l 1 /dev/sd{b,c} |

将创建好的RAID 1阵列格式化为ext4文件系统
1 | mkfs.ext4 /dev/md1 |

查看 RAID 1 阵列的摘要信息
1 | mdadm -Q /dev/md1 |

可以看到两块10GB的磁盘组成的 RAID 1 阵列容量约为1GB
将 RAID 1 阵列临时挂载到/mnt/raid1
目录下,测试文件读写
1 | mkdir -p /mnt/raid1/ |

文件读写正常。
模拟阵列中的一块磁盘损坏
1 | mdadm /dev/md1 -f /dev/sdb |

再次读取文件
1 | cat /mnt/raid1/hello |

文件读写仍然正常。
删除该阵列,释放磁盘空间
1 | umount /mnt/raid1 |

RAID 5
创建RAID 5
1 | mdadm -Cv /dev/md5 -a yes -n 5 -l 5 /dev/sd{b,c,d,e,f} |

将创建好的RAID 5阵列格式化为ext4文件系统
1 | mkfs.ext4 /dev/md5 |

查看 RAID 5 阵列的摘要信息
1 | mdadm -Q /dev/md5 |

将 RAID 5 阵列临时挂载到/mnt/raid5
目录下,测试文件读写
1 | mkdir -p /mnt/raid5/ |

模拟阵列中的一块磁盘损坏
1 | mdadm /dev/md5 -f /dev/sdb |

再次读取文件
1 | cat /mnt/raid5/hello |

文件读取正常
依次模拟阵列中磁盘损坏,每损坏一块磁盘读取一次文件
1 | mdadm /dev/md5 -f /dev/sdc |

显示如上,此时/dev/md5正在重建 RAID 阵列,其他设备参与重建过程,显示忙碌。
再次读取文件
1 | cat /mnt/raid5/hello |

文件读取正常
删除该阵列并释放磁盘空间
1 | umount /mnt/raid5 |
RAID 0
给待使用的磁盘分区
1 | fdisk /dev/sdb |

在Command (m for help):
后面输入n
,之后全部采用默认值。
在Command (m for help):
后面输入w
保存。
新分区名称默认为/dev/sdb1
。
同理,为/dev/sdc
也创建一个分区/dev/sdc1
。

在这两个分区上创建RAID 0阵列
1 | mdadm -Cv /dev/md0 -a yes -n 2 -l 0 /dev/sd{b1,c1} |

使用fdisk删除分区
1 | fdisk /dev/sdb |
在Command (m for help):
后面输入d
,然后在Command (m for help):
后面输入w
保存

显示 Device or resource busy,说明设备或资源忙碌,无法删除分区
更新分区表并重启
1 | partprobe |

重启后运行
1 | mdadm -Q /dev/md0 |

发现 RAID 0 已损坏。
二、思考题
1.为什么及在什么条件下选择用 RAID
选择使用RAID的原因:
- RAID 可以提供冗余性,即使其中一个磁盘出现故障,数据仍然可用。
- RAID 可以通过数据镜像、奇偶校验等技术来保护数据。当磁盘失效时,RAID 可以自动恢复数据,从而提供数据完整性和可靠性。
- 某些RAID级别(如RAID 0)可以通过将数据分布在多个磁盘上来提高读写性能。这对于需要处理大量读写操作的应用程序(如数据库服务器)非常有益。
- RAID 可以将多个磁盘组合成一个逻辑卷,从而提供更大的存储容量。这对于大型文件服务器和数据存储需求不断增长的环境非常有用。
- RAID 可以简化存储管理和备份过程。它提供了一种集中管理多个磁盘的方法,并可以为管理员提供更好的可视化和监控功能。
什么条件下选择用RAID:
- 如果需要确保关键数据的安全性和连续性,以防止磁盘故障导致数据丢失或停机时间,可以选择使用RAID。RAID提供了不同级别的冗余,如RAID 1和RAID 5,以保护数据并提供容错能力。
- 如果特定情景的应用程序需要处理大量读写操作,比如数据库服务器或视频编辑工作站,那么RAID 0或RAID 10等级可以提供更好的性能。
- 如果需要大容量的存储空间来存储大量数据,RAID可以将多个磁盘组合在一起形成一个逻辑卷,提供更大的存储容量。RAID级别如RAID 5和RAID 6可提供相对较高的容量利用率。
- RAID可以集中管理多个磁盘,并提供易于管理和监控的界面。这简化了存储管理过程,并可以提供更好的可视化和监控功能。
- 如果特定情境下的业务需要24/7的高可用性,RAID可以提供容错和快速恢复功能。在磁盘故障时,RAID可以自动重建数据,并保持系统可用性。
2.RAID & 分布式存储 & 集中存储的区别
RAID(冗余独立磁盘阵列):
- RAID 是一种通过将多个磁盘组合在一起来提供高级数据保护和性能的技术。RAID 可以提供数据冗余、容错性和性能提升。
- RAID 技术运行在单个服务器上,并由 RAID 控制器管理。它将多个磁盘视为一个逻辑驱动器,提供冗余和/或性能。常见的 RAID 级别包括 RAID 0、RAID 1、RAID 5、RAID 6 等。
分布式存储:
- 分布式存储是一种数据存储模型,数据被存储在多个节点(通常是多台服务器)上,通过网络连接进行访问和管理。
- 分布式存储将数据划分成多个块并在不同的节点上存储这些数据块。每个节点负责存储一部分数据,并提供高可用性和扩展性。
- 分布式存储通常采用冗余备份技术,如数据复制或编码,以保证数据的可靠性和容错性。常见的分布式存储系统包括Hadoop HDFS、Ceph等。
集中存储:
- 集中存储是将数据集中存储在一个中心位置的存储设备(通常是存储服务器或网络存储设备)上的技术。
- 所有的数据都存储在一个集中的设备上,用户可以通过网络访问并共享这些数据。集中存储提供了集中管理和共享存储资源的优势。
- 集中存储可以使用各种技术,如网络附加存储(NAS)和存储区域网络(SAN),以提供高速数据访问和可扩展性