Linux学习-管理基本存储

实验目的

        在本实验中,您将在新磁盘上创建多个分区,将其中一些分区格式化为相应的文件系统且予以挂载,并激活其他分区作为交换空间。

1、使用parted 命令显示和创建分区。

2、在分区上创建新文件系统并进行持久挂载。

3、创建交换空间并在启动时将其激活。

实验内容

准备工作

        以student用户身份并使用student 作为密码登录workstation。
        在workstation上,运行lab storage-review start 命令。此命令将运行一个起始脚本,它将确定serverb计算机是否可从网络访问。此外,它还在 serverb 上准备了另一个磁盘,供练习使用。

[student@workstation ~]$ lab storage-review start

具体内容

1、在serverb上有新的磁盘可用。在第一个新磁盘上,创建一个名为 backup的2GBGPT分区。由于可能难以设置确切的大小,因此介于1.8 GB和2.2GB 之间的大小都是可以接受的。为该分区设置正确的文件系统类型,以托管XFS文件系统。
serverb上的student 用户帐户的密码为student。通过sudo,该用户具有完全root访问权限。

2、将2GB分区格式化为XFS文件系统并持久挂载于/backup。

3、在同一新磁盘上创建两个512 MB GPT分区,分别命名为 swap1和swap2。介于460 MB和564MB之间的大小是可以接受的。为这些分区设置正确的文件系统类型,以托管交换空间。

4、将两个512MiB分区初始化为交换空间,并将它们配置为在启动时激活。将 swap2分区上的交换空间设置为优先于另一个交换空间。

5、要验证您的工作,请重启 serverb。确认系统是否自动将第一个分区挂载于/backup。同时,确认系统是否激活了这两个交换空间。

完成后,从serverb注销。

评估

在workstation上,运行lab storage-review grade 脚本来确认是否成功完成本练习。

[student@workstation -]$ lab storage-review grade

完成

在workstation 上,运行 lab storage-review finish 脚本来完成实验

[student@workstation -]$ lab storage-review finish

本实验到此结束。


所需知识

1、MBP分区方案和GPT分区方案

MBP分区方案

        即主启动记录方案,此方案支持最多四个主分区。在Linux系统上,管理员可以使用扩展分区和逻辑分区来创建最多15个分区。由于分区大小数据以32位值存储,使用MBR方案分区时,最大磁盘和分区大小为2 TiB。由于物理磁盘变得越来越大,而基于SAN的卷甚至更大,因此针对MBR分区方案的2TiB磁盘和分区大小限制已不再是理论限制,而是系统管理员在生产环境中越来越频繁遇到的实际问题。因此,新的GUID分区表(GPT)正在取代传统的MBR方案用于磁盘分区。

GPT分区方案

        对于运行统一可扩展固件接口(UEFI)固件的系统,GPT是在物理硬盘上布置分区表的标准。GPT是UEFI标准的一部分,可以解决原有基于MBR的方案所带来的许多限制。GPT最多可提供128个分区。MBR使用32位来存储逻辑块地址和大小信息;与此不同,GPT为逻辑块地址分配64位。这就使得GPT可支持最多8ZiB,即80亿太字节的分区和磁盘。除解决MBR分区方案的限制以外,GPT还可提供一些其他功能特性和优势。GPT使用全局唯一标识符(GUID)来识别每个磁盘和分区。与MBR存在单一故障点不同,GPT提供分区表信息的冗余。主GPT位于磁盘头部,而备份副本(次要GPT)位于磁盘尾部。GPT使用校验和来检测GPT 头和分区表中的错误与损坏。
 

2、使用Parted命令管理分区

命令作用备注
parted [磁盘设备名] print显示磁盘上的分区表
parted [磁盘设备名] mklabel msdos以root用户身份,使用命令将MBR磁盘标签写入磁盘注意:
mklabel子命令可擦除现有的分区表。仅当想重复使用磁盘而不考虑现有数据时,才应使用mklabel。如果新标签更改了分区边界,则现有文件系统中的所有数据都将无法访问。
parted [磁盘设备名] mklabel gpt以root用户身份,使用命令将GPT磁盘标签写入磁盘

parted /dev/vdb mkpart primary/extended xfs 2048s 1000MB

该命令用于创建MBR分区

/dev/vdb为磁盘设备名

mkpart子命令用于创建新的主分区(primary)或扩展分区(extended)。

xfs是分区上创建的文件系统类型,这不会在分区上创建文件系统,仅仅指示分区类型;还有其他类型可以选择,如ext4等,可通过命令parted [磁盘设备名] help mkpart获取支持的文件系统类型的列表。

2048s为磁盘上新分区开始的扇区,s后缀提供了扇区的值,也可使用MiB、GiB、TiB、MB、GB、或TB后缀;未提供后缀,默认MB。对于大多数磁盘而言,假设起始扇区为2048的倍数较为安全。

1000MB为指定结束新分区的磁盘扇区。size=End - Start。

在交互模式中,使用quit退出parted。

注意:
对于在MBR分区的磁盘上需要超过四个分区的情况,可以创建三个主分区和一-个扩展分区。此扩展分区用作一个容器,可在其中创建多个逻辑分区。
 

parted /dev/vdb mkpart usersdata xfs/ext4 2048s 1000MB

该命令用于创建GPT分区

usersdata为分区名称,在GPT方案中,每个分区都会获得一个名称。

GPT分区无主分区(primary)或扩展分区(extended)

其他命令与MBR分区一致。

udevadm settle此命令会等待系统检测新分区并在/dev目录下创建关联的设备文件。只有在完成上述操作后,它才会返回。

3、创建并挂载文件系统

命令作用备注
mkfs.xfs /dev/vdb

/dev/vdb为磁盘设备名;

以root用户身份,使用mkfs.xfs命令为块设备应用XFS文件系统。对于ext4,请使用mkfs.ext4。
 

mount /dev/vdb1 /mnt管理员可以使用mount命令将设备手动附加到目录位置(或挂载点)。mount命令预期的参数包括设备、挂载点和文件系统选项(可选)。文件系统选项将自定义文件系统的行为。手动挂载文件系统
mount | grep vdb1使用mount命令来查看当前已挂载的文件系统、挂载点和选项。
vim /etc/fstab向/etc/fstab文件中添加一个条目,第一个字段指定设备,使用UUID或设备文件;第二个字段是目录挂载点;第三个字段包含文件系统类型;第四个字段是以逗号分隔的、应用于设备的选项列表;持久挂载文件系统
systemctl daemon-reload重新加载 systemd 守护进程配置文件,以确保最新的配置生效。这通常在修改 systemd 服务配置后执行,以使更改生效,而不必重新启动整个系统。

实验步骤

详细步骤

1、在serverb上有新的磁盘可用。在第一个新磁盘上,创建一个名为backup的2GBGPT分区。由于可能难以设置确切的大小,因此介于1.8GB和22GB 之间的大小都是可以接受的。为该分区设置正确的文件系统类型,以托管XFS 文件系统。serverb上的student用户帐户的密码为student。通过 sudo,该用户具有完全root访问权限。

1.1使用ssh命令,以student 用户身份登录serverb。系统已配置为使用SSH密钥来进行身份验证,因此不需要提供密码。

[student@workstation -]$ ssh student@serverb

1.2.由于创建分区和文件系统需要root 访问权限,因此请使用sudo 命令切换到root用户。收到提示时,使用student 作为密码。

[student@serverb -]$ sudo -i
[sudo] password for student: student

1.3使用lsblk命令来标识新磁盘。这些磁盘应该还没有任何分区。

[root@serverb -]# lsblk

注意第一个新磁盘 vdb 没有任何分区。

1.4.确认磁盘没有标签

[root@serverb -]# parted /dev/vdb print

1.5使用 parted和mklabel子命令,定义GPT分区方案。

[root@serverb -]# parted /dev/vdb mklabel gpt

1.6.创建2GB分区。将其命名为 backup,将其类型设为 xfs。从扇区2048 开始分区

[root@serverb -]# parted /dev/vdb mkpart backup xfs 2048s 2GB

1.7.确认是否已正确创建新分区

[root@serverb ~]# parted /dev/vdb print

1.8.运行udevadm settle命令。此命令会等待系统检测新分区并创建 /dev/vdb1 设备文件。只有在完成上述操作后,它才会返回。

[root@serverb -]# udevadm settle

 2、将2GB分区格式化为XFS文件系统并持久挂载于 /backup

2.1使用mkfs.xfs 命令格式化 /dev/vbd1分区

[root@serverb -]# mkfs.xfs /dev/vdb1

2.2创建/backup 挂载点。

[root@serverb -]# mkdir /backup

2.3在向 /etc/fstab 中添加新文件系统之前,检索其UUID

[root@serverb -]# Isblk --fs /dev/vdb1

您的系统的UUID可能有所不同。

2.4编辑/etc/fstab 并定义新文件系统。

[root@serverb -]# vim /etc/fstab

2.5强制 systemd 重新读取 /etc/fstab 文件。

[root@serverb -]# systemctl daemon-reload     

2.6手动挂载/backup 以验证您的工作。确认挂载是否成功。

[root@serverb -]# mount /backup
[root@serverb -]# mount ! grep /backup

3、在同一新磁盘上创建两个512 MB GPT分区,分别命名为 swap1和 swap2。介于460 MB和3564MB之间的大小是可以接受的。为这些分区设置正确的文件系统类型,以托管交换空间。

3.1通过在 /dev/vdb 上显示当前分区表来检索第一个分区的结束位置。在下一步中,将使用该值作为swap1分区的起始位置。

[root@serverb -]# parted /dev/vdb print

3.2创建第一个512MB分区并命名为 swap1。将该分区的类型设为linux-swap。使用第个分区的结束位置作为起始点。结束位置为2000MB+12MB=2512MB

[root@serverb -]# parted /dev/vdb mkpart swap1 linux-swap 2000MB 2512M

3.3创建第二个512MB分区并命名为 swap2。将该分区的类型设为linux-swap。使用上3.3.个分区的结束位置2512M作为起始点。结束位置为2512MB+512MB=3024MB

[root@serverb -]# parted /dev/vdb mkpart swap2 linux-swap 2512M 3024M

3.4显示分区表以验证您的工作。

[root@serverb ~]# parted /dev/vdb print

3.5运行udevadm settle 命令。此命令会等待系统注册新分区并创建设备文件。

[root@serverb -]# udevadm settle

4、将两个512MiB分区初始化为交换空间,并将它们配置为在启动时激活。将swap2分区上的交换空间设置为优先于另一个交换空间。

4.1使用mkswap命令初始化交换分区。

[root@serverb ~]# mkswap /dev/vdb2

记下两个交换空间的UUID。您会在下一步中使用此信息。如果再也看不到 mkswap输出,则使用lsblk --fs 命令来检索UUID。

4.2编辑/etc/fstab并定义新的交换空间。要将swap2分区上的交换空间设置为优先于swap1,请通过pri选项为它赋予一个更高的优先级。

[root@serverb -]# vim /etc/fstab

4.3强制 systemd 重新读取 /etc/fstab 文件。4.3.

[root@serverb ~]# systemctl daemon-reload

4.4使用swapon-a命令激活新交换空间。使用swapon --show 命令确认交换空间是否已正确激活。

[root@serverb -]# swapon -a
[root@serverb -T# swapon--show

 5、要验证您的工作,请重启serverb。确认系统是否自动将第一个分区挂载于/backup。同时,确认系统是否激活了这两个交换空间。

完成后,从serverb注销。

5.1重启 serverb。

[root@serverb -]# systemctl reboot

5.2等待几分钟,让serverb 重新启动,然后以student 用户身份登录

[student@workstation ~]$ ssh student@serverb

5.3验证系统是否自动将 /dev/vdb1挂载于 /backup

[student@serverb -]$ mount | grep /backup

5.4使用swapon--show命令确认系统是否激活了这两个交换空间。

[student@serverb -]$ swapon --show

5.5从 serverb注销。

[student@serverb ~]$ exit

评估

在workstation 上,运行lab storage-review grade 脚本来确认是否成功完成本练习。

[student@workstation -]$ lab storage-review grade

完成

在workstation 上,运行lab storage-review finish脚本来完成实验。

[student@workstation -]$ lab storage-review finish

本实验到此结束。

感谢浏览,承蒙关照。

如有不足,请多指教。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Linux dm-verity是一个Linux内核模块,用于对块设备进行数据完整性校验。它通过使用哈希函数和预先计算的哈希树来实现校验,可以防止恶意修改或篡改块设备中的数据。 dm-verity的源代码位于Linux内核的"drivers/md/dm-verity.c"文件中。该文件包含了实现dm-verity功能所需的所有函数和数据结构。 dm-verity的主要流程如下: 1. 初始化:在加载模块时,dm-verity会注册自己为块设备处理器,并初始化一些数据结构和参数。 2. 设置参数:当用户通过命令行或者sysfs文件系统设置dm-verity参数时,dm-verity会解析这些参数并存储到对应的数据结构中。 3. 启动校验:当用户通过命令行或者sysfs文件系统启动dm-verity时,dm-verity会从块设备中读取哈希树,并使用哈希函数进行校验。 4. 处理请求:当用户对块设备发出读写请求时,dm-verity会拦截这些请求并进行数据校验。如果数据完整,则将请求转发到原始的块设备中;如果数据不完整,则返回错误 ### 回答2: Linux dm-verity是一种用于数据完整性校验的Linux内核模块。它通过计算数据块的校验值,确保数据在存储或传输过程中没有被篡改。下面对dm-verity的源码进行解析。 dm-verity的源码位于Linux内核的源码树中的drivers/md/dm-verity目录下。主要的源码文件包括verity_target.c、verity_blk.c和verity_metadata.c。 verity_target.c文件实现了dm-verity的核心逻辑。它定义了用于创建和管理verity设备的API接口函数。在这个文件中,dm-verity模块会将读取和写入请求传递给真实的存储设备,并使用verity_blk.c中的函数来计算和验证数据的校验值。它还负责处理校验失败的情况,例如将读取请求重定向到镜像设备。 verity_blk.c文件实现了校验块设备的功能。它使用了基本块设备的API函数,例如bio和request_queue,来处理请求。在这个文件中,校验模块会计算每个数据块的哈希值,将其与元数据中的预期值进行比较,并确定数据的完整性。这个过程是通过使用散列函数和加密算法来计算和比较校验值的。 verity_metadata.c文件定义了元数据的结构和操作函数。元数据是用于存储每个数据块的哈希值和其他校验相关信息的地方。它使用了dm自带的二叉树数据结构来组织数据块。 除了这些源码文件,dm-verity还涉及到一些其他的文件,如kconfig和Makefile等。这些文件用于配置和编译dm-verity模块,并将其与Linux内核进行集成。 总结起来,Linux dm-verity源码的解析涉及到多个文件,用于实现数据完整性校验的各个方面,包括读写请求的管理、校验值的计算和验证、元数据的存储等。通过分析这些源码文件,我们可以更深入地了解dm-verity模块的工作原理和实现细节。 ### 回答3: DM-Verity 是一种用于保护 Linux 文件系统完整性的技术。它基于数据验证和完整性保护,可防止篡改和数据损坏。DM-Verity的源代码解析可以帮助我们了解其工作原理和实现细节。 DM-Verity 的源代码主要分为两个部分:内核模块和用户空间工具。 内核模块部分是通过 Linux 内核的 Device Mapper(DM)框架实现的。它包含了核心的验证逻辑,在存储设备的块层进行数据验证。DM-Verity使用 Merkle 树的数据结构来计算和验证每个块的哈希值,这些哈希值存储在一个元数据区域中。当读取文件时,DM-Verity会对读取的数据块进行哈希计算,并与元数据中的哈希进行比对,以验证数据的完整性。如果哈希不匹配,则说明数据已被篡改。 用户空间工具部分提供了一套命令行工具来配置和管理 DM-Verity。主要的工具有 veritysetup 和 fsverityctl。veritysetup用于创建和配置DM-Verity设备,包括进行根文件系统的完整性保护。fsverityctl用于管理和查询已配置的 DM-Verity 设备,提供了一些实用的操作,比如启用和禁用 DM-Verity,查询校验结果等。 通过分析 DM-Verity 的源代码,我们可以了解到其实现的核心原理和具体实现细节。例如,可以了解到 DM-Verity 是如何在内核中通过设备映射层实现数据验证和完整性保护的。此外,还可以学习到DM-Verity如何使用 Merkle 树来计算和验证数据块的哈希值,以及如何通过元数据区域存储管理这些哈希值。对于学习和理解 Linux 文件系统的完整性保护机制以及数据安全性的提升,DM-Verity的源代码解析是非常有价值的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值