一个小题外话:这是综合的。
这里描述的某些任务可以轻松完成,但是由于l / r的任务是要熟悉raid,lvm功能,因此某些操作是人为地复杂的。
执行l \ r的工具要求:
- 虚拟化工具(例如Virtualbox)
- Linux安装映像,例如Debian9
- Internet可供下载多个软件包
- 通过ssh连接到已安装的VM(可选)
注意事项
这项实验室工作与诸如数据安全性之类的微妙问题相关联。在这个区域中,由于最小的错误(一个额外的字母或数字),您可以丢失所有数据。
由于您正在做实验室工作,因此您没有危险,除非您必须重新开始。
在现实生活中,所有事情都更加严重,因此您应该非常仔细地输入磁盘的名称,了解当前命令正在执行的操作以及使用的磁盘。
第二个重点是磁盘和分区的命名:根据情况,磁盘号可能与实验室命令中显示的值不同。
因此,例如,如果从阵列中删除sda驱动器,然后添加新驱动器,则新驱动器将以sda名称显示在系统上。 如果在添加新磁盘之前重新引导,则新磁盘将命名为sdb,而旧磁盘将命名为sda
实验室工作应该在超级用户(root)下完成,因为大多数命令都需要提升的特权,而通过sudo不断提升特权是没有意义的。
学习资料
- 磁盘阵列
- LVM
- Linux磁盘命名
- 什么是节
- 什么是分区表及其存储在哪里
- 什么是g
实用工具
- 查看磁盘信息:
- lsblk -o名称,大小,FSTYPE,TYPE,MOUNTPOINT
- fdisk -l
- 查看信息并使用LVM
- 聚苯乙烯
- pvextend
- pvcreate
- 大小
- vgs
- vgreduce
- lvs
- lvextend
- 查看信息并使用RAID:
- 挂载点:
- 重新分区磁盘:
- 复制部分:
- dd if = / dev / xxx of = / dev / yyy
- 使用分区表:
- 使用引导程序:
- grub-install / dev / XXX
- 更新grub
- 杂项
实验室工作包括3个部分:
- 使用lvm和raid配置运行状况良好的系统。
- 模拟其中一个驱动器的故障。
- 快速更换磁盘,并添加新磁盘和分区传输。
任务1(安装操作系统并配置LVM,RAID)
创建具有以下功能的新虚拟机:
- 1 GB内存
- 1个CPU
- 2个硬盘(将其命名为ssd1,ssd2并分配相同的大小,请选中热插拔和ssd框)
- 在4个端口上配置的SATA控制器:

开始安装Linux并选择硬盘驱动器,请执行以下操作:
- 分区方法:手动,之后应看到下图:

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

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

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

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

- 完成LVM配置后,您应该看到以下内容:

- 分区:依次选择在LVM中创建的每个卷并对其进行分区,例如,对于root这样:
- 标记根分区的结果应如下所示:

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

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

通过在第一台设备(sda)上安装grub来完成操作系统的安装并引导系统。
将/引导分区的内容从sda(ssd1)驱动器复制到sdb(ssd2)驱动器
dd if=/dev/sda1 of=/dev/sdb1
在第二台设备上安装grub:
查看系统中的驱动器:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
- 列出上一个命令发布给您的所有磁盘,并描述它是哪种磁盘。
找到未安装grub的驱动器,然后完成此安装:
grub-install /dev/sdb
- 使用cat / proc / mdstat查看当前团队,并写下您看到的内容。
- 查看命令的输出:pvs,vgs,lvs,安装并写下您所看到的内容。
用自己的语言描述完成任务后您做了什么以及得到了什么结果。
完成此任务后,建议您使用虚拟机备份文件夹或创建一个无用信息框 。
结果:具有ssd1,ssd2磁盘的虚拟机。
任务2(模拟其中一个驱动器的故障)
- 如果选中了热插拔复选框,则可以即时删除磁盘:
- 在计算机属性中删除ssd1驱动器。
- 找到虚拟机文件的存储目录,然后删除ssd1.vmdk。
- 确保您的虚拟机仍在运行。
- 重新启动虚拟机,并确保它仍然可以工作
- 检查RAID阵列的状态:
cat /proc/mdstat
- 在VM接口中添加相同大小的新磁盘,并将其命名为ssd3。
- 执行操作:
- 使用
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
。 您应该看到同步已经开始。
现在,您需要手动同步不属于RAID的分区。 为此,我们将使用dd实用程序,将其从“活动”磁盘复制到您最近安装的新磁盘:
dd if=/dev/XXX of=/dev/YYY
- 同步完成后,在新磁盘上安装grub。
- 重新启动VM,以确保一切正常。
用自己的语言描述完成任务后您做了什么以及得到了什么结果。
结果:卸下了ssd1驱动器,保存了ssd2驱动器,添加了ssd3驱动器。
任务3(添加新磁盘和分区)
这是所有提出的最困难和最艰巨的任务。 仔细检查您在做什么以及使用哪些磁盘和分区。 建议您在执行之前制作一份副本。 无论任务2是什么,此任务都可以在任务1之后执行,并根据磁盘名称进行调整。
该实验室分配的第二部分应进入与完成第一部分后完全相同的状态。
为了使您更轻松地工作,我建议您不要从主机上物理删除磁盘,而只是在计算机的属性中断开它们的连接。 从VM中的OS的角度来看,这看起来完全相同,但是在这种情况下,可以将驱动器连接回去,并通过回滚几个点来继续工作(以防万一)。 例如,您可能执行不正确或忘记将/ boot分区复制到新磁盘。 我只能建议您仔细检查您正在使用的磁盘和分区,甚至更好的是,在一张纸上写下磁盘,分区和“物理”磁盘编号的对应关系。 lsblk
命令绘制一棵美丽且易于理解的树,并尽可能多地使用它来分析您已完成的工作和需要完成的工作。
故事...
想象一下,您的服务器在2个ssd磁盘上工作了很长时间,突然之间...
通过从VM属性中删除磁盘并重新引导来模拟ssd2磁盘故障。
查看磁盘和RAID的当前状态:
cat /proc/mdstat fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
您很幸运-当局允许购买几张新光盘:
2个SATA大容量卷,用于将日志部分移动到单独的磁盘上的长期任务。 2个SSD替换死者,以及替换仍在运行的SSD。
请记住,服务器的存储篮仅支持安装4个驱动器。 同时,因此您无法一次添加所有磁盘。
选择的HDD的容量是SSD的2倍。
SSD的容量选择为以前SSD的1.25倍。
添加一个新的ssd驱动器,将其命名为ssd4,并在添加后检查发生了什么:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
首先,您应该注意旧磁盘数据的安全性。 这次我们将使用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
在新的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,并将其输出与上一个调用进行比较。 有什么变化?
下一步是配置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
应该显示几个文件和文件夹。 检查此部分中存储的内容,并记下哪个文件/目录负责什么。
取出ssd3磁盘并根据上述TK添加ssd5,hdd1,hdd2,最终得到:
- ssd4-第一个新的ssd
- ssd5-第二个新的ssd
- hdd1-第一个新硬盘
- HDD2-第二个新HDD
检查添加磁盘后发生了什么:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
让我们还原主要的raid数组:
复制分区表,替换正确的磁盘:
sfdisk -d /dev/XXX | sfdisk /dev/YYY
请注意,当我们从旧磁盘复制分区表时,事实证明新大小不会占用整个硬盘空间。 因此,很快我们将需要调整此部分的大小并扩展raid。 通过输入以下命令亲自查看:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
将/ boot引导分区从ssd4复制到ssd5:
dd if=/dev/XXX of=/dev/YYY
在新磁盘(ssd5)上安装grub。
更改ssd5驱动器的第二个分区的大小。
运行该实用程序以处理磁盘布局:
fdisk /dev/XXX
- 输入d键以删除现有分区(选择2)。
- 输入n键创建一个新分区。
- 输入键p以指示主分区的类型。
- 输入密钥2,以便新分区具有第二个数字。
- 第一个扇区:按Enter键以接受自动计算的部分起始尺寸。
- 最后一个扇区:按Enter键以接受自动计算的末端尺寸。
- 输入l键以查看所有可能的分区类型的列表,并在其中找到Linux raid auto。
- 输入键t更改创建的分区的类型(2),然后输入在上一步中找到的数字。
- 输入w键将更改写入磁盘。
重新读取分区表并检查结果:
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
增加ssd4磁盘上分区的大小
运行该实用程序以处理磁盘布局:
fdisk /dev/XXX
- 输入d键以删除现有分区(选择2)。
- 输入n键创建一个新分区。
- 输入键p以指示主分区的类型。
- 输入密钥2,以便新分区具有第二个数字。
- 第一个扇区:按Enter键以接受自动计算的部分起始尺寸。
- 最后一个扇区:按Enter键以接受自动计算的末端尺寸。
- 在标记的最后,选择“否”以保留该部分属于数组的签名。
- 输入w键将更改写入磁盘。
我们重新读取分区表并检查结果。
partx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
请注意,现在sda2,sdc2分区大于RAID设备的大小。
现在,可以扩大团队规模:
mdadm --grow /dev/md63 --size=max lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
浏览lsblk并写下已更改的内容。
但是,即使我们更改了raid的大小,vg root,var,log本身的大小也没有改变。
看一下PV的大小是多少:
pvs
扩大我们的光伏发电规模:
pvresize /dev/md63
看一下PV的大小是多少:
pvs
添加新出现的地方VG var,root:
lvs
至此,您已经完成了将主阵列迁移到新磁盘的操作。 使用ssd1,ssd2完成。
我们的下一个任务是将/ 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
在ext4中格式化创建的分区:
mkfs.ext4 /dev/mapper/data-var_log
让我们看看结果:
lsblk
将日志数据从旧部分传输到新部分
我们将安装一个临时的新日志存储:
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
编辑/ etc / fstab
fstab-一个文件,其中根据启动时将挂载的分区写入规则。 我们的任务是找到安装/ var / log的行,并将system-log
设备固定为data-var_log
。
在此阶段最重要的事情是记住要更改分区表(例如,ext4)。 由于无论我们如何更改各种raid,lvm-在通知分区上的文件系统分区大小已更改之前,我们将无法使用新空间。 使用resize2fs
命令更改FS。
最终和弦
[可选]按照步骤