实验室:在Linux上配置LVM和RAID

一个小题外话:这是综合的。


这里描述的某些任务可以轻松完成,但是由于l / r的任务是要熟悉raid,lvm功能,因此某些操作是人为地复杂的。


执行l \ r的工具要求:


  • 虚拟化工具(例如Virtualbox)
  • Linux安装映像,例如Debian9
  • Internet可供下载多个软件包
  • 通过ssh连接到已安装的VM(可选)

注意事项


这项实验室工作与诸如数据安全性之类的微妙问题相关联。在这个区域中,由于最小的错误(一个额外的字母或数字),您可以丢失所有数据。


由于您正在做实验室工作,因此您没有危险,除非您必须重新开始。


在现实生活中,所有事情都更加严重,因此您应该非常仔细地输入磁盘的名称,了解当前命令正在执行的操作以及使用的磁盘。


第二个重点是磁盘和分区的命名:根据情况,磁盘号可能与实验室命令中显示的值不同。
因此,例如,如果从阵列中删除sda驱动器,然后添加新驱动器,则新驱动器将以sda名称显示在系统上。 如果在添加新磁盘之前重新引导,则新磁盘将命名为sdb,而旧磁盘将命名为sda


实验室工作应该在超级用户(root)下完成,因为大多数命令都需要提升的特权,而通过sudo不断提升特权是没有意义的。


学习资料


  • 磁盘阵列
  • LVM
  • Linux磁盘命名
  • 什么是节
  • 什么是分区表及其存储在哪里
  • 什么是g

实用工具


  1. 查看磁盘信息:
    • lsblk -o名称,大小,FSTYPE,TYPE,MOUNTPOINT
    • fdisk -l
  2. 查看信息并使用LVM
    • 聚苯乙烯
    • pvextend
    • pvcreate
    • 大小
    • vgs
    • vgreduce
    • lvs
    • lvextend
  3. 查看信息并使用RAID:
    • cat / proc / mdstat
    • mdadm
  4. 挂载点:
    • 坐骑
    • 数量
    • 猫/等/ fstab
    • 猫/等/ mtab
  5. 重新分区磁盘:
    • fdisk /开发/ XXX
  6. 复制部分:
    • dd if = / dev / xxx of = / dev / yyy
  7. 使用分区表:
    • 零件
    • 磁盘
    • mkfs.ext4
  8. 使用引导程序:
    • grub-install / dev / XXX
    • 更新grub
  9. 杂项
    • lsof
    • 贴切
    • 同步

实验室工作包括3个部分:


  • 使用lvm和raid配置运行状况良好的系统。
  • 模拟其中一个驱动器的故障。
  • 快速更换磁盘,并添加新磁盘和分区传输。

任务1(安装操作系统并配置LVM,RAID)


  1. 创建具有以下功能的新虚拟机:


    • 1 GB内存
    • 1个CPU
    • 2个硬盘(将其命名为ssd1,ssd2并分配相同的大小,请选中热插拔和ssd框)
    • 在4个端口上配置的SATA控制器:

      选择ssd磁盘

  2. 开始安装Linux并选择硬盘驱动器,请执行以下操作:


    • 分区方法:手动,之后应看到下图:

      分区磁盘
    • 在/ boot下设置一个单独的分区:选择第一个磁盘并在其上创建一个新的分区表:
      • 分区大小:512M
      • 挂载点:/开机
    • 重复第二张磁盘的设置,但是由于您无法同时进行两次挂载/引导,因此选择挂载点:无,最后得到以下内容(带有边框的图片,重做懒惰):

      分区磁盘
    • RAID设置:
    • 选择第一个磁盘上的可用空间,然后将RAID的物理卷配置为分区类型。
    • 选择“完成设置分区”
    • 对第二张磁盘重复完全相同的设置,结果如下:

      分区磁盘
    • 选择“配置软件RAID”
      • 创建MD设备
      • 软件RAID设备类型:选择镜像阵列
      • RAID XXXX阵列的活动设备:选择两个驱动器
      • 备用设备:默认为0
      • RAID XX阵列的活动设备:选择在raid下创建的分区
      • 完成
    • 最后,您应该得到以下图片:

      分区磁盘
    • LVM设置:选择配置逻辑卷管理器
    • 保留当前分区布局并配置LVM:是
    • 创建卷组
    • 卷组名称:系统
    • 新卷组的​​设备:选择创建的RAID
    • 创建逻辑卷
      • 逻辑卷名称:root
      • 逻辑卷大小:磁盘大小的2 \ 5
    • 创建逻辑卷
      • 逻辑卷名称:var
      • 逻辑卷大小:磁盘大小的2 \ 5
    • 创建逻辑卷
      • 逻辑卷名称:日志
      • 逻辑卷大小:磁盘大小的1 \ 5
    • 选择显示配置详细信息,您应该得到以下图片:

      分区磁盘
    • 完成LVM配置后,您应该看到以下内容:

      分区磁盘
    • 分区:依次选择在LVM中创建的每个卷并对其进行分区,例如,对于root这样:
      • 用作:ext4
      • 挂载点:/
    • 标记根分区的结果应如下所示:

      分区磁盘
    • 通过选择适当的安装点(手动输入/ var和/ var / log)对var和log重复标记操作,得到以下结果:

      分区磁盘
    • 选择完成分区
    • 系统将询问您一些问题,您仍然有一个已卸载的分区,并且未配置交换。 这两个问题均应否定回答。
    • 最终结果应如下所示:

      分区磁盘

  3. 通过在第一台设备(sda)上安装grub来完成操作系统的安装并引导系统。


  4. 将/引导分区的内容从sda(ssd1)驱动器复制到sdb(ssd2)驱动器


    dd if=/dev/sda1 of=/dev/sdb1 

  5. 在第二台设备上安装grub:


    • 查看系统中的驱动器:


       fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

    • 列出上一个命令发布给您的所有磁盘,并描述它是哪种磁盘。
    • 找到未安装grub的驱动器,然后完成此安装:


       grub-install /dev/sdb 

    • 使用cat / proc / mdstat查看当前团队,并写下您看到的内容。
    • 查看命令的输出:pvs,vgs,lvs,安装并写下您所看到的内容。


用自己的语言描述完成任务后您做了什么以及得到了什么结果。


完成此任务后,建议您使用虚拟机备份文件夹或创建一个无用信息框


结果:具有ssd1,ssd2磁盘的虚拟机。


任务2(模拟其中一个驱动器的故障)


  1. 如果选中了热插拔复选框,则可以即时删除磁盘:
    • 在计算机属性中删除ssd1驱动器。
    • 找到虚拟机文件的存储目录,然后删除ssd1.vmdk。
  2. 确保您的虚拟机仍在运行。
  3. 重新启动虚拟机,并确保它仍然可以工作
  4. 检查RAID阵列的状态: cat /proc/mdstat
  5. 在VM接口中添加相同大小的新磁盘,并将其命名为ssd3。
  6. 执行操作:
    • 使用fdisk -l查看进入系统的新磁盘
    • 将分区表从旧磁盘复制到新磁盘: sfdisk -d /dev/XXXX | sfdisk /dev/YYY sfdisk -d /dev/XXXX | sfdisk /dev/YYY
    • 使用fdisk -l查看结果
    • 将一个新磁盘添加到raid数组: mdadm --manage /dev/md0 --add /dev/YYY
    • 查看结果: cat /proc/mdstat 。 您应该看到同步已经开始。
  7. 现在,您需要手动同步不属于RAID的分区。 为此,我们将使用dd实用程序,将其从“活动”磁盘复制到您最近安装的新磁盘:


     dd if=/dev/XXX of=/dev/YYY 

  8. 同步完成后,在新磁盘上安装grub。
  9. 重新启动VM,以确保一切正常。

用自己的语言描述完成任务后您做了什么以及得到了什么结果。


结果:卸下了ssd1驱动器,保存了ssd2驱动器,添加了ssd3驱动器。


任务3(添加新磁盘和分区)


这是所有提出的最困难和最艰巨的任务。 仔细检查您在做什么以及使用哪些磁盘和分区。 建议您在执行之前制作一份副本。 无论任务2是什么,此任务都可以在任务1之后执行,并根据磁盘名称进行调整。


该实验室分配的第二部分应进入与完成第一部分后完全相同的状态。


为了使您更轻松地工作,我建议您不要从主机上物理删除磁盘,而只是在计算机的属性中断开它们的连接。 从VM中的OS的角度来看,这看起来完全相同,但是在这种情况下,可以将驱动器连接回去,并通过回滚几个点来继续工作(以防万一)。 例如,您可能执行不正确或忘记将/ boot分区复制到新磁盘。 我只能建议您仔细检查您正在使用的磁盘和分区,甚至更好的是,在一张纸上写下磁盘,分区和“物理”磁盘编号的对应关系。 lsblk命令绘制一棵美丽且易于理解的树,并尽可能多地使用它来分析您已完成的工作和需要完成的工作。


故事...


想象一下,您的服务器在2个ssd磁盘上工作了很长时间,突然之间...


  1. 通过从VM属性中删除磁盘并重新引导来模拟ssd2磁盘故障。


  2. 查看磁盘和RAID的当前状态:


     cat /proc/mdstat fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

  3. 您很幸运-当局允许购买几张新光盘:


    2个SATA大容量卷,用于将日志部分移动到单独的磁盘上的长期任务。 2个SSD替换死者,以及替换仍在运行的SSD。


    请记住,服务器的存储篮仅支持安装4个驱动器。 同时,因此您无法一次添加所有磁盘。


    选择的HDD的容量是SSD的2倍。
    SSD的容量选择为以前SSD的1.25倍。


  4. 添加一个新的ssd驱动器,将其命名为ssd4,并在添加后检查发生了什么:


     fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

  5. 首先,您应该注意旧磁盘数据的安全性。 这次我们将使用LVM传输数据:


    • 首先,您需要将文件表从旧磁盘复制到新磁盘:


       sfdisk -d /dev/XXX | sfdisk /dev/YYY 

      替换正确的磁盘而不是x,y,然后弄清楚此命令的作用。


    • 运行lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT,并将其输出与上一个调用进行比较。 有什么变化?
    • 使用dd命令将/ boot数据复制到新磁盘:


       dd if=/dev/XXX of=/dev/YYY 

    • 如果/ boot仍安装在旧驱动器上,则应将其安装在活动驱动器上:


       mount | grep boot #     lsblk #           ,     umount /boot #  /boot mount -a #      /etc/fstab. #      /dev/sda,         

    • 在新的ssd驱动器上安装引导程序:


       grub-install /dev/YYY 

      我们为什么要执行此操作?


    • 创建一个新的RAID阵列,其中仅包含一个新的ssd驱动器:


       mdadm --create --verbose /dev/md63 --level=1 --raid-devices=1 /dev/YYY 

      如果没有指定特殊键,以上命令将无法使用,请阅读帮助并将其添加到命令中。


    • 使用cat / proc / mdstat命令来验证操作结果。 有什么变化?
    • 运行lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT,并将其输出与上一个调用进行比较。 有什么变化?

  6. 下一步是配置LVM


    • 运行pvs命令以查看有关当前物理卷的信息。
    • 通过在其中包含先前创建的RAID阵列来创建新的物理卷:


       pvcreate /dev/md63 

    • 运行lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT,并将其输出与上一个调用进行比较。 有什么变化?
    • 再次运行pvs命令。 有什么变化?
    • 使用以下命令增加卷组系统的大小:


       vgextend system /dev/md63 

    • 运行命令并写下您看到的内容和更改的内容。


       vgdisplay system -v pvs vgs lvs -a -o+devices 

      LV var,日志,root现在在哪个物理磁盘上?


    • 通过替换正确的设备名称,将数据从旧驱动器移动到新驱动器。


       pvmove -i 10 -n /dev/system/root /dev/md0 /dev/md63 

      对所有逻辑卷重复该操作。


    • 运行命令并写下您看到的内容和更改的内容。


       vgdisplay system -v pvs vgs lvs -a -o+devices lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

    • 通过移除旧团队来更改我们的VG。 替换正确的团队名称。


       vgreduce system /dev/md0 

    • 运行命令并写下您看到的内容和更改的内容。


       lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT pvs vgs 

    • 为了使图片美观,请重新安装/引导到第二个ssd驱动器(ssd4),然后运行lsblk。 因此,ssd3磁盘上不应安装任何东西。 仔细检查/ boot分区是否为空! ls /boot应该显示几个文件和文件夹。 检查此部分中存储的内容,并记下哪个文件/目录负责什么。

  7. 取出ssd3磁盘并根据上述TK添加ssd5,hdd1,hdd2,最终得到:


    • ssd4-第一个新的ssd
    • ssd5-第二个新的ssd
    • hdd1-第一个新硬盘
    • HDD2-第二个新HDD

  8. 检查添加磁盘后发生了什么:


     fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

  9. 让我们还原主要的raid数组:


    • 复制分区表,替换正确的磁盘:


       sfdisk -d /dev/XXX | sfdisk /dev/YYY 

    • 请注意,当我们从旧磁盘复制分区表时,事实证明新大小不会占用整个硬盘空间。 因此,很快我们将需要调整此部分的大小并扩展raid。 通过输入以下命令亲自查看:


       lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 


  10. 将/ boot引导分区从ssd4复制到ssd5:


     dd if=/dev/XXX of=/dev/YYY 

  11. 在新磁盘(ssd5)上安装grub。


  12. 更改ssd5驱动器的第二个分区的大小。


    • 运行该实用程序以处理磁盘布局:


       fdisk /dev/XXX 

    • 输入d键以删除现有分区(选择2)。
    • 输入n键创建一个新分区。
    • 输入键p以指示主分区的类型。
    • 输入密钥2,以便新分区具有第二个数字。
    • 第一个扇区:按Enter键以接受自动计算的部分起始尺寸。
    • 最后一个扇区:按Enter键以接受自动计算的末端尺寸。
    • 输入l键以查看所有可能的分区类型的列表,并在其中找到Linux raid auto。
    • 输入键t更改创建的分区的类型(2),然后输入在上一步中找到的数字。
    • 输入w键将更改写入磁盘。

  13. 重新读取分区表并检查结果:


     partx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

    • 将新磁盘添加到当前RAID阵列(不要忘记替换正确的磁盘):


       mdadm --manage /dev/md63 --add /dev/sda2 

    • 我们将阵列中的磁盘数扩展为2个:


       mdadm --grow /dev/md63 --raid-devices=2 

    • 看一下结果:我们标记了2个数组,但是此数组中包含的两个部分的大小都不同:


       lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 


  14. 增加ssd4磁盘上分区的大小


    • 运行该实用程序以处理磁盘布局:


       fdisk /dev/XXX 

    • 输入d键以删除现有分区(选择2)。
    • 输入n键创建一个新分区。
    • 输入键p以指示主分区的类型。
    • 输入密钥2,以便新分区具有第二个数字。
    • 第一个扇区:按Enter键以接受自动计算的部分起始尺寸。
    • 最后一个扇区:按Enter键以接受自动计算的末端尺寸。
    • 在标记的最后,选择“否”以保留该部分属于数组的签名。
    • 输入w键将更改写入磁盘。

  15. 我们重新读取分区表并检查结果。


     partx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

    请注意,现在sda2,sdc2分区大于RAID设备的大小。


  16. 现在,可以扩大团队规模:


     mdadm --grow /dev/md63 --size=max lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT # check result 

    浏览lsblk并写下已更改的内容。


  17. 但是,即使我们更改了raid的大小,vg root,var,log本身的大小也没有改变。


    • 看一下PV的大小是多少:


       pvs 

    • 扩大我们的光伏发电规模:


       pvresize /dev/md63 

    • 看一下PV的大小是多少:


       pvs 


  18. 添加新出现的地方VG var,root:


     lvs #     lvextend -l +50%FREE /dev/system/root lvextend -l +100%FREE /dev/system/var lvs #    

    至此,您已经完成了将主阵列迁移到新磁盘的操作。 使用ssd1,ssd2完成。


  19. 我们的下一个任务是将/ var / log移至新驱动器,为此,我们将在hdd驱动器上创建一个新的阵列和lvm。


    • 我们来看一下新硬盘驱动器的名称:


       fdisk -l 

    • 创建一个RAID数组:


       mdadm --create /dev/md127 --level=1 --raid-devices=2 /dev/sdc /dev/sdd 

    • 从大型磁盘的RAID中创建新的PV:


       pvcreate data /dev/md127 

    • 在此PV中,创建一个名为data的组:


       vgcreate data /dev/md127 

    • 创建一个具有所有可用空间大小的逻辑卷,并将其称为val_log:


       lvcreate -l 100%FREE -n var_log data # lvs #   

    • 在ext4中格式化创建的分区:


       mkfs.ext4 /dev/mapper/data-var_log 

    • 让我们看看结果:


       lsblk 


  20. 将日志数据从旧部分传输到新部分


    • 我们将安装一个临时的新日志存储:


       mount /dev/mapper/data-var_log /mnt 

    • 让我们同步这些部分:


       apt install rsync rsync -avzr /var/log/ /mnt/ 

    • 使用/ var /立即找出正在运行的进程:


       apt install lsof lsof | grep '/var/log' 

    • 我们停止以下过程:


       systemctl stop rsyslog.service syslog.socket 

    • 我们将对分区(自上次同步以来可能已更改的数据)执行最终同步:


       rsync -avzr /var/log/ /mnt/ 

    • 交换部分:


       umount /mnt umount /var/log mount /dev/mapper/data-var_log /var/log 

    • 检查发生了什么:


       lsblk 


  21. 编辑/ etc / fstab


    fstab-一个文件,其中根据启动时将挂载的分区写入规则。 我们的任务是找到安装/ var / log的行,并将system-log设备固定为data-var_log


  22. 在此阶段最重要的事情是记住要更改分区表(例如,ext4)。 由于无论我们如何更改各种raid,lvm-在通知分区上的文件系统分区大小已更改之前,我们将无法使用新空间。 使用resize2fs命令更改FS。


  23. 最终和弦


    • 让我们重启。 如果一切操作正确,您将再次在操作系统中找到自己(这是确保一切正常的必要步骤。除自检外,此步骤没有任何意义)
    • 检查我们想要做的所有事情是否真的完成了:


       pvs lvs vgs lsblk cat /proc/mdstat 


  24. [可选]按照步骤


    • 在启动时按F12指示不同的磁盘来重新启动,以确保您可以从任何ssd磁盘启动,因此我们不怕其中一个失败。
    • 现在,您在VG系统中有了不必要的LV日志。 在root或var之间分配此空间,但不要使用100%FREE构造,而是使用-L开关用手指定大小:


       -L 500M 

    • 解决以下问题:/引导位于两个没有同步的分区上,您不需要以正确的方式执行此操作,此处将其作为示例添加。 不要忘记将/ boot的内容复制到某个地方。
    • 创建一个新的raid,并在其中包含sda1,sda2。
    • 将这些分区包括在您现有的RAID中,并基本上进行RAID的恢复/引导,但不再安装它。

Source: https://habr.com/ru/post/zh-CN450896/


All Articles