学习Linux LVM,第1部分


1.  逻辑卷管理器的存储管理魔术

LVM介绍

在这一系列中,我要向您介绍如何安装和使用新的内置在Linux 2.4内核中的“逻辑卷管理”支持。如果您以前从未使用过任何形式的LVM,那么您得好好学一学;它是一种非常棒的技术。在我们真正设置和运行LVM之前,我要解释一下它究竟是什么以及它是如何工作的。然后,我们准备对LVM做一些测试来充分了解它。

如果您象我一样,那么您对UNIX和Linux的体验是从PC平台,而不是从大型的商业UNIX服务器和工作站上开始的。在一台pc裸机上,我们总是不得不对硬盘驱动器执行分区。使用PC的人通常相当了解fdisk这样的在硬盘上创建和删除主要分区和扩展分区的工具。硬盘分区是一种令人厌烦,但公认是使操作系统设置和运行进程不可或缺的一部分。

硬盘分区可能是非常烦人的事,如果要把它分好,确实需要精确地估计每个分区需要多少空间。如果估计得不准确,Linux系统很可能会顾此失彼──为解决这个问题,您甚至可能需要执行整个系统备份、将硬盘清除干净,然后将所有数据恢复到新的(可能比原来好一些)分区布局中。讨厌!这正是系统管理员在一开始就竭力避免的情况。

一直以来我们的分区都是一些大小固定的存储区域,但值得庆幸的是,我们现在有许多PC重新分区工具(PowerQuest的Partition Magic产品就是最流行的一种)。这些工具可以让您用一个特殊磁盘来引导系统,并可以动态地重新调整分区和文件系统的大小。重新引导后,您就拥有了重新调整过大小的新分区,这样就有望将您从存储器困境中解脱出来。这些重新调整分区大小的工具很有效,并从某种程度上解决了一些存储器管理问题。但它们是不是就完美了呢?不一定。

象Partition Magic这样的工具对于工作站来说非常有效,但对服务器来说就不合适了。首先,它们需要重启系统。而这正是大多数系统管理员想尽量避免的。如果在每次需要调整存储器(例如每周都需要动态调整的存储器)时就是不能重启机器怎么办?如果需要扩充文件系统使它能跨越多个硬盘驱动器会发生什么,或者如果在允许Apache继续提供Web服务的同时需要动态扩充或缩减分区的存储容量,您该怎么做?在一个使用率高、机动性强的环境中,原始的分区大小调整工具无法满足这些要求。对于这样一些和其它一些情况,“逻辑卷管理”是一种非常出色(如果还算不上完美)的解决方案。

走进LVM

现在,让我们看看LVM是如何解决这些问题的。我们执行下面的三步骤来创建LVM逻辑卷。首先,我们需要选择用于LVM的物理存储器资源。这些通常是标准分区,但也可以是我们已创建的Linux Software RAID卷。如果使用LVM术语,这些存储器资源称为物理卷”。设置LVM的第一步是正确初始化这些分区以使它们可以被LVM系统识别。如果添加物理分区,它还包括设置正确的分区类型,以及运行pvcreate命令。

在初始化LVM使用的一个或多个物理卷后,可以继续进行第二步──创建卷组。您可以把卷组看作是由一个或多个物理卷所组成的存储器池。在LVM运行时,我们可以向卷组添加物理卷,亦或移除它们。不过,我们不能直接在卷组上安装或创建文件系统。而是告诉LVM使用我们的卷组存储器池创建一个或多个“逻辑卷”:


图示 1.1: 在物理卷上创建卷组

Fig. 1

创建LVM逻辑卷非常容易,而且一旦创建它以后,我们就可以把文件系统放在它上面、安装它,然后开始使用卷来存储文件。使用“lvcreate”命令来创建逻辑卷,指定新卷的名称、所希望的卷的大小,以及希望这个特定逻辑卷所属的卷组。然后,LVM系统从我们指定的卷组中分配存储量来创建准备使用的新卷。创建新卷后,可以将ext2或ReiserFS文件系统放在上面、安装它,然后照我们喜欢的方式使用它。


图示 1.2: 从现有卷组创建两个逻辑卷

Fig. 2

范围

在幕后,LVM系统以大小相等的“块”(称为“范围”)为单位分配存储量。我们可以指定在创建卷组时使用的特定的范围大小。范围的大小缺省为4Mb,这对于大多数情况来说相当理想。LVM的一个好处是在已经安装了逻辑卷并在使用逻辑卷的情况下,可以动态地改变逻辑卷使用的范围的物理存储位置(换句话说,就是存储它们所在的磁盘)。LVM系统确保逻辑卷在管理员物理地改变存储位置的同时能够继续正常操作。

当然,因为所有事物都是在大小相等的范围之上创建的,所以要为已存在的逻辑卷分配一些额外的范围实际上很容易──换句话说,动态“增长”卷:


图示 1.3: 从卷组添加额外的范围, 扩展逻辑卷的大小

Fig. 3

一旦扩充了逻辑卷,接下来就可以扩充ext2或ReiserFS文件系统来利用这一新的磁盘空间。如果使用例如resize_reiserfs这样的程序,也可以在已安装和正使用卷时扩充文件系统!真正令人称奇的是──使用LVM和联机文件系统扩充实用程序,可以在改变存储器配置时不再需要重新引导系统,甚至不需要降低到运行级别1。

唯一需要关闭系统的情况是在需要添加新的物理磁盘时。添加了新磁盘后,可以将这些新的物理卷添加到卷组中来创建新的范围补给。

设置LVM

好,让我们开始安装LVM。LVM由两部分组成:内核部分和一套用户空间工具。为了开始,先跳到主要LVM页面(请参阅本文稍后部分的参考资料)并下载可以找到的最新版本的LVM tar文件(当前是lvm_0.9.1_beta3.tar.gz)。LVM tar文件包含了所有用户空间工具以及一组内核补丁程序。这正是令人感兴趣的地方。

如果已经安装了2.4系列内核,则系统上已有LVM支持,如果没有,很简单,只需要重新编译内核来启用LVM支持即可。不过,您可能不希望使用自带的(或发行版提供的)2.4内核所包括的LVM支持。如果希望使用最新的LVM版本,要将LVM tar文件中的补丁程序应用到当前的2.4内核源码树。以下是执行方法。

为了开始,进入内核源码目录 (/usr/src/linux) 并创建一个称为extras的目录。然后进入该目录并解压LVM tar文件:

代码 1.1: 解压补丁包

# cd /usr/src/linux
# mkdir extras
# cd extras
# tar xzvf /path/to/location/of/lvm_0.9.1_beta3.tar.gz

执行完这一步后,您会注意到在extras中有一个称之为LVM的目录,它包含了另一个根据您刚刚解包的LVM版本命名的目录。进入这两个目录找到LVM源码:

代码 1.2: 获取LVM源代码

# cd LVM/0.9.1_beta3
# ls
ABSTRACT      COPYING      INSTALL     Makefile     README    autoconf      config.status  kernel         make.tmpl.in
CHANGELOG     COPYING.LIB  KNOWN_BUGS  Makefile.in  TODO      config.cache  configure      lvm_input_msg  scripts
CONTRIBUTORS  FAQ          LVM-HOWTO   PATCHES      WHATSNEW  config.log    configure.in   make.tmpl      tools

您将看到几个文本文件、脚本和源目录。您会在INSTALL文件中找到安装指令;我将指导您完成这一过程。首先,我们希望运行配置脚本,如下:

代码 1.3: 配置LVM源代码

# ./configure --prefix=/ --mandir=/usr/man

修补

执行完这条命令后,将创建并配置Makefile,以在/sbin中安装所有LVM工具,在/usr/man中安装帮助页面。如果您的帮助页面位于/usr/share/man中(按照FHS2.1),则对上述路径作相应的调整。如果内核源码不在/usr/src/linux中,还需要将--with-kernel_dir=/path/to/usr/src/linux选项添加到一行中。配置脚本完成后,我们就可以准备安装这些工具并生成当前内核的补丁了。让我们首先对内核加以修补。进入PATCHES目录:

代码 1.4: 切换文件夹

# cd PATCHES

现在输入make。makefile将生成专用于特定2.4系列内核源码的补丁:

代码 1.5: 创建patch

# make

补丁名为lvm-[lvmversion]-[kernelversion].patch。例如,因为我使用的是版本0.9.1_beta3的LVM和内核2.4.0-ac11,所以补丁名为lvm-0.9.1_beta3-2.4.0-ac11.patch。您可以在当前目录中找到它。现在该应用补丁了。要应用补丁,需要将目录切换到内核源码所在的位置,然后使用patch命令:

代码 1.6: patch命令

# cd /usr/src/linux
# patch -l -p1 < /usr/src/linux/extras/LVM/0.9.1_beta3/PATCHES/lvm-0.9.1_beta3-2.4.0-ac11.patch

虽然LVM INSTALL文档并没有提到,但我通常将-l选项传递给patch。该选项让补丁程序补偿空白中的任何变化(例如细微的缩排变化),这些变化一般会造成补丁的某些部分失败。如果上述命令完成时没有任何带有"FAILED"的行,那么就可以准备安装用户磁盘空间工具了。如果不是这样,您需要审视/usr/src/linux目录来查找.rej文件,然后使用文本编辑器手工将被拒绝的部分插入到源码中──真麻烦!不过,在大多数情况下,应用补丁都很顺利,您可以迅速使用它。

配置、编译和安装

好,现在有了一个经过修补的内核,因此它具有最新可用的LVM代码。现在需要配置内核来启用LVM支持。我建议您直接将LVM支持编译到内核中而不是将它配置成作为一个模块编译。启动您喜爱的Linux内核配置方法:

代码 1.7: 配置内核

# cd /usr/src/linux
# make menuconfig

您在 "Multi-device support (RAID and LVM)" 部分中可以找到LVM选项。一旦启用了第一个选项:

代码 1.8: RAID与LVM支持

[*] Multiple devices driver support (RAID and LVM)

. . .您将看到以下选项,您也应该启用它们:

代码 1.9: 启用LVM支持

<*>   Logical volume manager (LVM) support

根据您使用的LVM版本,可能还有其它一些希望启用的与LVM相关的选项。完成后,保存内核配置,并执行标准内核编译例程,然后重新引导。恭喜──您现已启用了内核LVM支持;现在,我们需要编译和安装用户磁盘空间工具。这一步很简单:

代码 1.10: 安装用户磁盘空间工具

# cd /usr/src/linux/extras/LVM/0.9.1_beta3
# make
# make install

另外还有一步,它是可选的。如果您要做的不仅是测试LVM,还需要将以下几行添加到startup rc脚本中:

代码 1.11: 编辑startup rc脚本

/sbin/vgscan
/sbin/vgchange -a y

这些行将浏览所有可用的卷组并激活它们。然后,将以下这行添加到shutdown rc脚本中,并确保它在卸装了所有文件系统后执行:

代码 1.12: 编辑shutdown rc脚本

/sbin/vgchange -a n

如果只是测试LVM,可以跳过这些步骤。只是要记住,在每次重新引导后,在逻辑卷可以使用前,需要以root输入vgscanvgchange -a y

以上就是这篇文章的内容。在下一篇文章中,我将介绍如何创建您自己的逻辑卷,以及如何发挥LVM的威力。到时候再见!

参考资料

  • 从RedHat下载LVM源代码包
  • 等不及的读者可以查看Heinz Mauelshagen的LVM HOWTO,它介绍了如何设置物理卷、卷组和逻辑卷。这是我将在下一篇文章中涉及的内容。
  • 另外还有一个有意思的HOWTO,告诉您如何在逻辑卷上设置根文件系统
  • Andreas Dilger参与了Linux LVM项目,他有一个看上去不错的联机ext2文件系统大小调整器
  • ReiserFS是一种非常好的文件系统(特别在与LVM结合使用时)。如果使用的是ReiserFS,需要获取reiserfs-utils tar文件,它包含了一个称为reiserfs_resize的程序──允许对ReiserFS文件系统联机调整大小。
  • 有关设置Linux Software RAID卷的详细信息,请参阅Daniel在developerWorks上有关Software RAID 系列的第1部分第2部分
  • 如果想进行回顾,请参阅Daniel的Linux内核编译教程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 目标检测的定义 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。 目标检测任务可分为两个关键的子任务,目标定位和目标分类。首先检测图像中目标的位置(目标定位),然后给出每个目标的具体类别(目标分类)。输出结果是一个边界框(称为Bounding-box,一般形式为(x1,y1,x2,y2),表示框的左上角坐标和右下角坐标),一个置信度分数(Confidence Score),表示边界框中是否包含检测对象的概率和各个类别的概率(首先得到类别概率,经过Softmax可得到类别标签)。 1.1 Two stage方法 目前主流的基于深度学习的目标检测算法主要分为两类:Two stage和One stage。Two stage方法将目标检测过程分为两个阶段。第一个阶段是 Region Proposal 生成阶段,主要用于生成潜在的目标候选框(Bounding-box proposals)。这个阶段通常使用卷积神经网络(CNN)从输入图像中提取特征,然后通过一些技巧(如选择性搜索)来生成候选框。第二个阶段是分类和位置精修阶段,将第一个阶段生成的候选框输入到另一个 CNN 中进行分类,并根据分类结果对候选框的位置进行微调。Two stage 方法的优点是准确度较高,缺点是速度相对较慢。 常见Tow stage目标检测算法有:R-CNN系列、SPPNet等。 1.2 One stage方法 One stage方法直接利用模型提取特征值,并利用这些特征值进行目标的分类和定位,不需要生成Region Proposal。这种方法的优点是速度快,因为省略了Region Proposal生成的过程。One stage方法的缺点是准确度相对较低,因为它没有对潜在的目标进行预先筛选。 常见的One stage目标检测算法有:YOLO系列、SSD系列和RetinaNet等。 2 常见名词解释 2.1 NMS(Non-Maximum Suppression) 目标检测模型一般会给出目标的多个预测边界框,对成百上千的预测边界框都进行调整肯定是不可行的,需要对这些结果先进行一个大体的挑选。NMS称为非极大值抑制,作用是从众多预测边界框中挑选出最具代表性的结果,这样可以加快算法效率,其主要流程如下: 设定一个置信度分数阈值,将置信度分数小于阈值的直接过滤掉 将剩下框的置信度分数从大到小排序,选中值最大的框 遍历其余的框,如果和当前框的重叠面积(IOU)大于设定的阈值(一般为0.7),就将框删除(超过设定阈值,认为两个框的里面的物体属于同一个类别) 从未处理的框中继续选一个置信度分数最大的,重复上述过程,直至所有框处理完毕 2.2 IoU(Intersection over Union) 定义了两个边界框的重叠度,当预测边界框和真实边界框差异很小时,或重叠度很大时,表示模型产生的预测边界框很准确。边界框A、B的IOU计算公式为: 2.3 mAP(mean Average Precision) mAP即均值平均精度,是评估目标检测模型效果的最重要指标,这个值介于0到1之间,且越大越好。mAP是AP(Average Precision)的平均值,那么首先需要了解AP的概念。想要了解AP的概念,还要首先了解目标检测中Precision和Recall的概念。 首先我们设置置信度阈值(Confidence Threshold)和IoU阈值(一般设置为0.5,也会衡量0.75以及0.9的mAP值): 当一个预测边界框被认为是True Positive(TP)时,需要同时满足下面三个条件: Confidence Score > Confidence Threshold 预测类别匹配真实值(Ground truth)的类别 预测边界框的IoU大于设定的IoU阈值 不满足条件2或条件3,则认为是False Positive(FP)。当对应同一个真值有多个预测结果时,只有最高置信度分数的预测结果被认为是True Positive,其余被认为是False Positive。 Precision和Recall的概念如下图所示: Precision表示TP与预测边界框数量的比值 Recall表示TP与真实边界框数量的比值 改变不同的置信度阈值,可以获得多组Precision和Recall,Recall放X轴,Precision放Y轴,可以画出一个Precision-Recall曲线,简称P-R
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值