磁盘运维需要学什么

磁盘运维是确保计算机系统中磁盘(硬盘或固态硬盘)正常运行和有效利用的一项重要任务。要成为一名磁盘运维专家,你需要学习以下内容:

  1. 磁盘基础知识
    • 了解磁盘的基本工作原理和结构。
    • 理解磁盘的物理组成、接口类型、转速、缓存等关键参数。
  2. 文件系统
    • 理解不同类型的文件系统,如ext4、NTFS、FAT32等。
    • 学习如何创建、格式化、挂载和卸载文件系统。
    • 掌握文件系统的检查和修复工具,如fsck、chkdsk等。
  3. 磁盘管理工具
    • 学习使用命令行和图形界面工具来管理磁盘,如fdisk、parted、Disk Management(Windows)等。
    • 掌握磁盘分区、扩展、收缩和合并等操作。
  4. RAID 技术
    • 了解 RAID(Redundant Array of Independent Disks)技术的原理和不同级别(如RAID 0、RAID 1、RAID 5等)。
    • 学习如何配置和管理 RAID 阵列,以提高数据冗余性和性能。
  5. 磁盘性能优化
    • 学习磁盘性能优化的技术,如磁盘分区、文件系统选择、磁盘碎片整理等。
    • 熟悉磁盘读写性能测试工具,如hdparm、dd、iostat等。
  6. 磁盘备份与恢复
    • 掌握磁盘备份和恢复的策略和方法。
    • 学习使用备份软件和工具进行全盘备份、增量备份、差异备份等操作。
  7. 磁盘故障处理
    • 学习识别磁盘故障的常见症状,如声音异常、读写速度下降等。
    • 掌握故障诊断工具和方法,如SMART 检测、磁盘健康检查等。
    • 学习磁盘数据恢复的基本原理和方法。
  8. 安全性与数据保护
    • 学习磁盘加密技术,保护敏感数据的安全性。
    • 了解数据安全策略和备份存储的最佳实践,确保数据不丢失和不被篡改。
  9. 监控与性能调优
    • 学习使用监控工具来监视磁盘使用情况和性能指标。
    • 掌握性能调优技术,如调整文件系统参数、优化磁盘 I/O 操作等。
  10. 持续学习与更新

  11. 磁盘技术和工具在不断发展和更新,因此持续学习和跟进行业最新发展是非常重要的。

通过系统学习以上知识和技能,你将能够成为一名磁盘运维专家,并能够有效地管理和维护计算机系统中的磁盘设备。

服务器存储介质

服务器存储介质是指服务器系统中用于存储数据的各种物理设备或介质。以下是一些常见的服务器存储介质:

  1. 硬盘驱动器(HDD)
    • HDD 是一种机械式存储介质,通过旋转磁盘和磁头来读写数据。
    • HDD 通常有较大的存储容量,并且相对较便宜,适合存储大量数据。
  2. 固态硬盘(SSD)
    • SSD 是一种电子式存储介质,使用闪存存储技术来存储数据。
    • SSD 具有更快的读写速度、更低的延迟和更高的耐用性,适合用于对性能要求较高的应用。
  3. NVMe SSD
    • NVMe(Non-Volatile Memory Express)是一种高性能的 SSD 接口协议,比传统的 SATA 接口 SSD 有更高的速度和更低的延迟。
    • NVMe SSD 通常用于需要极高性能的应用,如大规模数据库、虚拟化环境等。
  4. 光盘驱动器(CD/DVD/Blu-ray)
    • 光盘驱动器用于读取和写入光盘介质,如CD、DVD、蓝光光盘等。
    • 光盘通常用于存储和传输数据、安装操作系统和软件等。
  5. 磁带存储(Tape Storage)
    • 磁带存储是一种传统的数据备份和存档介质,具有较高的容量和较低的成本。
    • 磁带存储通常用于长期数据存档和备份,对数据保留时间要求较长的场景。
  6. 网络存储(Network Attached Storage,NAS)
    • NAS 是一种通过网络连接到服务器的存储设备,提供共享存储空间和文件服务。
    • NAS 可以通过网络访问、共享和备份数据,适用于小型办公室、家庭网络和企业环境。
  7. 存储区域网络(Storage Area Network,SAN)
    • SAN 是一种专用的高速网络,连接服务器和存储设备,提供块级别的存储访问。
    • SAN 提供高性能、可靠性和可扩展性的存储解决方案,适用于企业级应用和大规模数据中心。

以上是一些常见的服务器存储介质,不同的存储需求和应用场景可能需要选择不同类型的存储介质来满足性能、可靠性、成本和管理等方面的要求。

磁盘写入数据流程

image-20240326171053179

磁盘写入数据的流程通常涉及以下几个步骤:

  1. 应用程序请求: 应用程序通过操作系统的文件系统接口(例如 POSIX 接口或 Windows API)向操作系统发出写入数据的请求。这可以是来自用户的文件写入请求,也可以是系统进程或服务产生的数据写入请求。
  2. 文件系统缓存: 操作系统内核接收到写入请求后,通常会先将数据写入文件系统的内存缓存中,而不是直接写入磁盘。这样可以提高写入性能,因为内存速度远远快于磁盘。
  3. 写入磁盘缓存: 如果磁盘有自己的缓存(例如硬盘驱动器的缓存),操作系统也可以将数据写入到磁盘的缓存中。这样可以减少磁盘的物理读写次数,提高性能。
  4. 写入磁盘控制器: 操作系统将数据传输到磁盘控制器,这个控制器可能是硬盘驱动器的控制器,也可能是 RAID 控制器等。控制器负责管理磁盘的读写操作,包括将数据写入磁盘的正确位置。
  5. 磁盘写入: 磁盘控制器将数据写入磁盘的存储介质(例如硬盘的磁盘盘片或固态硬盘的闪存芯片)中。写入的过程通常包括寻找可用的空闲磁盘块、将数据写入磁盘、更新磁盘索引等操作。
  6. 确认写入完成: 一旦数据成功写入磁盘,磁盘控制器将向操作系统发送确认信号,表示写入操作已完成。操作系统可以根据需要向应用程序发送写入成功或失败的通知。
  7. 更新文件系统元数据: 文件系统在写入数据后,还需要更新相应的元数据信息,例如文件的大小、最后修改时间等。这些元数据信息通常也会被写入磁盘,以确保文件系统的一致性和可靠性。

以上是磁盘写入数据的基本流程,实际的写入过程可能会受到硬件、操作系统、文件系统以及应用程序等因素的影响。在高性能或者大规模数据处理的场景下,可能会采取一些优化措施来提高写入性能,例如使用 RAID 阵列、使用高速 SSD、调整文件系统参数等。

磁盘运维流程

磁盘运维流程涉及到对服务器中的磁盘进行管理、监控、维护和故障处理,以确保服务器存储系统的正常运行和高可用性。以下是一个通用的磁盘运维流程:

  1. 监控磁盘状态
    • 定期监控磁盘的健康状态,包括磁盘温度、读写错误率、SMART(Self-Monitoring, Analysis and Reporting Technology)数据等。
    • 使用监控工具来实时监视磁盘的性能指标,如磁盘使用率、I/O 响应时间、磁盘队列长度等。
  2. 定期备份数据
    • 建立定期备份策略,将重要数据备份到可靠的存储介质中,以防止数据丢失。
    • 定期测试备份数据的可用性和完整性,并确保备份数据可以快速恢复。
  3. 磁盘容量规划
    • 定期评估服务器磁盘的使用情况,预测未来的存储需求。
    • 根据需求调整磁盘分区大小、添加新的存储设备或者迁移数据以满足容量需求。
  4. 磁盘性能优化
    • 分析磁盘性能瓶颈,调整文件系统参数、优化磁盘 I/O 操作以提高性能。
    • 使用高性能的存储介质(如 SSD 或 NVMe SSD)替换低性能的硬盘驱动器。
  5. 故障排除和维修
    • 及时识别和处理磁盘故障,例如硬盘读写错误、磁盘损坏等。
    • 替换故障磁盘,并进行数据恢复和重建(如果使用了 RAID 技术)。
  6. 磁盘安全管理
    • 加密重要数据,保护数据的安全性和隐私。
    • 定期审计和更新访问控制策略,防止未经授权的访问或数据泄露。
  7. 持续优化和改进
    • 定期评估磁盘运维流程,识别潜在的改进点并采取措施优化流程。
    • 持续学习新的磁盘技术和工具,以跟进行业的发展和最佳实践。

以上是一个通用的磁盘运维流程,实际的运维流程可能会根据具体的环境和需求进行调整和优化。在进行磁盘运维工作时,务必保持谨慎和及时响应,以确保服务器存储系统的稳定性和可靠性。

服务器怎么用硬盘

  1. 磁盘选择
    • 根据服务器需求和预算,选择适合的磁盘类型,如传统的机械硬盘(HDD)、固态硬盘(SSD)或者NVMe SSD等。
    • 考虑磁盘的容量、性能、可靠性和成本等因素。
  2. 硬件配置
    • 安装选定的磁盘到服务器中,确保磁盘与服务器硬件兼容,并连接好数据和电源线。
    • 根据需要进行RAID配置,设置RAID级别(如RAID 0、RAID 1、RAID 5等)和其他参数。
  3. 磁盘初始化
    • 在操作系统中识别新安装的磁盘,并初始化磁盘,以便操作系统能够识别和管理它。
    • 这通常涉及使用工具如fdisk或者parted来创建分区,或者直接使用整个磁盘作为单个分区。
  4. 文件系统格式化
    • 为磁盘上的每个分区创建文件系统,以便在上面存储数据。
    • 使用工具如mkfs来格式化磁盘分区,选择合适的文件系统类型(如ext4、XFS、NTFS等)和其他参数。
  5. 挂载磁盘
    • 将格式化好的分区挂载(mount)到文件系统的挂载点(mount point)上,以便操作系统可以访问和使用它们。
    • 编辑/etc/fstab文件,配置在系统启动时自动挂载磁盘分区。
  6. 数据存储和管理
    • 将需要存储的数据存放在挂载的磁盘分区上,并根据需要进行管理、备份和恢复。
    • 确保数据的安全性、完整性和可用性,定期备份重要数据,并建立合适的容灾和恢复策略。
  7. 性能优化和监控
    • 对磁盘进行性能优化,例如调整文件系统参数、优化磁盘 I/O 操作等,以提高磁盘的读写性能。
    • 定期监控磁盘的健康状态和性能指标,及时发现并处理潜在的问题,确保磁盘系统的稳定性和可靠性。

以上是一个简要的服务器磁盘使用流程,涉及了磁盘选择、硬件配置、文件系统格式化、挂载和数据管理等关键步骤。在实际操作中,可能会根据具体的需求和环境进行调整和优化。

image-20240326171331417

机械硬盘原理

首先简单认识一下硬盘的物理结构,硬盘内部的物理结构很复杂,只能从大的颗粒度去看内部的结构

image-20220228162158296

硬盘长什么样

image-20220228162409864

磁盘内部

image-20220228162422924


image-20220228165658359

基本的结构就是这样子的,至于硬盘是如何进行读写的,必须要知道磁盘盘片是如何划分的?否则你只知道磁头在盘片上动来动去。

机械硬盘是一种传统的数据存储设备,它使用机械部件来实现数据的存储和读写。以下是机械硬盘的基本原理:

  1. 磁盘结构
    • 机械硬盘由多个盘片(或称为碟片)组成,每个盘片都是一个圆形的金属盘,在盘片的两侧被涂上了可磁化的磁性材料。
    • 盘片之间由一个或多个活动的磁头(磁读写头)分隔开,这些磁头可以在盘片上移动以读取或写入数据。
  2. 数据存储原理
    • 机械硬盘使用磁性材料来存储数据,通过在盘片上的不同区域磁化来表示数据的0和1。
    • 当磁头在盘片上移动时,它可以读取或写入磁盘上的磁性区域,从而实现数据的读取和存储。
  3. 磁头移动
    • 磁头可以在盘片的表面上移动,通常是径向移动,从盘片的外缘向内缘移动或者反之。
    • 磁头的移动由磁盘驱动器的电机控制,它可以精确地定位到盘片的特定位置以进行读取或写入操作。
  4. 数据访问速度
    • 机械硬盘的数据访问速度受到磁头的移动速度和延迟的影响,以及盘片的旋转速度影响。
    • 盘片的旋转速度通常以每分钟转数(RPM)来衡量,更高的转速意味着更快的数据访问速度。
  5. 寻道和扇区
    • 磁盘被划分成一个个的同心圆区域,称为磁道(Track),每个磁道又被划分成多个扇区(Sector)。
    • 磁头通过移动到不同的磁道和扇区来读取或写入数据,这个过程称为寻道(Seek)。
  6. 写入数据
    • 写入数据时,磁头将磁性区域磁化为表示数据的0或1,这个过程称为磁化(Magnetization)。
    • 机械硬盘使用磁性材料来保存数据,磁性材料的磁化状态可以长期保持,因此数据可以持久存储。

总的来说,机械硬盘通过磁化盘片上的磁性区域来表示数据,并通过磁头的移动和定位来读取和写入数据。虽然机械硬盘在性能和速度上不如固态硬盘,但它们仍然被广泛用于存储大容量的数据,因为它们具有较低的成本和较高的存储密度。

磁盘盘片

  • 整个硬盘上一般有很多的盘片组成

  • 每个盘片如同切西瓜一样被“切”成一块一块的扇面

  • 同时沿着半径的方向被划分成了很多同心圆,就是传说中的磁道

  • 磁道被扇面切成很多的扇形区域叫做扇区(扇区是从磁盘读出和写入信息的最小单位,通常大小为512字节),不同盘片上的同半径磁道组成了柱面

这些都是磁盘物理上的概念,知道便可。

image-20240326171416530


image-20240326171423924

机械硬盘由坚硬金属材料制成的涂以磁性介质的盘片,盘片两面称为盘面或扇面,都可以记录信息,由磁头对盘面进行操作,一般用磁头号区分。

结构特性决定了机械硬盘如果受到剧烈冲击,磁头与盘面可能产生的哪怕是轻微撞击都有可能报废。

image-20191202104831397

磁头不动,硬盘旋转,磁头就会在磁盘表面画出一个圆形轨迹且磁化,数据就保存在磁化区域中,称之为磁道。

img

每个磁道分段,一个弧就是一个扇区。

一个硬盘表面可以有多个扇面,每个扇面磁道数相同,具有相同周长的磁道形成的圆柱称之为柱面,柱面数与磁道数相等。

image-20220228164036478


img

磁盘容量单位

磁盘容量通常以字节为单位进行表示,但由于磁盘容量非常大,所以常常使用以下更大的单位来表示:

  1. 字节(Byte):最基本的存储单位,通常用于表示小容量的文件或数据。
  2. 千字节(Kilobyte,KB):等于1024字节,用于表示稍大一点的数据量。
  3. 兆字节(Megabyte,MB):等于1024 KB,用于表示更大的数据量,如照片或短视频文件。
  4. 吉字节(Gigabyte,GB):等于1024 MB,用于表示大型文件、视频、音频或软件等。
  5. 太字节(Terabyte,TB):等于1024 GB,用于表示极大容量的数据,如大型数据库、高清视频存储等。
  6. 拍字节(Petabyte,PB):等于1024 TB,用于表示非常大型的数据存储,如云存储系统或大规模数据中心。
  7. 艾字节(Exabyte,EB):等于1024 PB,用于表示超大规模的数据存储,如全球互联网数据总量。
  8. 泽字节(Zettabyte,ZB):等于1024 EB,用于表示极其庞大的数据存储,如全球互联网的预计数据增长量。
  9. 尧字节(Yottabyte,YB):等于1024 ZB,用于表示极其巨大的数据存储,通常用于科幻小说中描述的未来虚构的超大规模数据存储容量。

这些单位可以根据实际的存储容量进行转换和比较,帮助人们更好地理解和管理数据存储。

linux磁盘分区规则

在Linux系统中,磁盘分区遵循一些常见的规则和约定,这些规则有助于管理和组织磁盘空间。以下是一些常见的Linux磁盘分区规则:

  1. MBR和GPT分区表
    • Linux系统支持使用传统的主引导记录(MBR)分区表或者GUID分区表(GPT)来管理磁盘分区。
    • MBR分区表最多支持4个主分区,或者3个主分区加上一个扩展分区(可包含多个逻辑分区)。而GPT分区表则可以支持更多的分区,且没有主/扩展分区的限制。
  2. 分区命名约定
    • Linux系统中的磁盘分区通常被称为设备文件,如/dev/sda、/dev/sda1等。
    • 设备文件名的命名约定一般是/dev/后跟磁盘控制器类型(如sd表示SCSI/SATA磁盘)、磁盘编号(如a、b、c)以及分区号(如1、2、3)。
  3. 根分区(/)
    • Linux系统的根分区是整个文件系统的起点,包含操作系统的核心文件和目录。
    • 根分区通常被挂载在文件系统的根目录/上。
  4. 其他常见分区
    • /boot:包含用于引导系统的启动文件。
    • /home:用于存储用户的主目录和个人数据。
    • /var:存放可变数据,如日志文件、数据库文件等。
    • /tmp:临时文件目录,存放临时性的文件。
    • /usr:包含用户安装的软件和大部分系统文件。
    • /swap:交换分区,用于虚拟内存交换。
  5. 分区类型
    • Linux系统支持多种文件系统类型,如ext4、XFS、btrfs等。
    • 在分区时需选择适合的文件系统类型,不同的文件系统有不同的特性和适用场景。
  6. 分区工具
    • Linux系统中常用的分区工具包括fdisk、parted、gparted等,它们可以用于创建、调整和删除磁盘分区。
  7. 挂载分区
    • 在Linux系统中,磁盘分区需要被挂载到文件系统的目录中才能被访问和使用。
    • 使用mount命令可以将分区挂载到指定的挂载点上,使其在文件系统中可见。
  8. 自动挂载
    • 可以将分区信息添加到/etc/fstab文件中,实现在系统启动时自动挂载分区。
    • 这样可以确保在系统重启后,所有需要的分区都能够正确挂载。

这些规则和约定有助于在Linux系统中有效地管理和使用磁盘空间,并且保证系统的稳定性和可靠性。

image-20240326175903027


image-20240326175910467

分区类型

image-20240326175939163

在传统的MBR(Master Boot Record)分区方案中,有主分区、扩展分区和逻辑分区这三种类型。这种分区方案可以管理硬盘上的分区,每个硬盘最多只能有四个主分区,但可以有一个扩展分区,扩展分区可以包含多个逻辑分区。

  1. 主分区(Primary Partition)
    • 主分区是MBR分区表中的一部分,用于存储操作系统和用户数据。
    • 一个硬盘最多只能有4个主分区。每个主分区都有一个唯一的分区号,编号从1到4。
  2. 扩展分区(Extended Partition)
    • 扩展分区是MBR分区表中的一种特殊类型,它本身不存储数据,而是用于扩展主分区的数量。
    • 一个硬盘可以有一个扩展分区,但不能同时存在其他类型的分区。
    • 扩展分区只占据一个主分区的位置,但可以包含多个逻辑分区。
  3. 逻辑分区(Logical Partition)
    • 逻辑分区是扩展分区中的子分区,用于存储操作系统和用户数据。
    • 逻辑分区的数量没有限制,可以根据需求动态调整。
    • 逻辑分区的编号从5开始,依次递增。

在使用MBR分区方案时,如果需要创建多个分区,但硬盘的主分区数量已经用完,就可以使用扩展分区来容纳额外的逻辑分区。这种设计可以帮助克服MBR分区表的4个主分区限制,灵活管理硬盘上的分区。但是,由于MBR分区表的限制,硬盘容量不能超过2TB,且每个分区的大小也受到限制。

需要注意的是,在新的计算机系统中,通常会使用更现代的GPT(GUID Partition Table)分区方案来管理磁盘分区。GPT不限制主分区和扩展分区的数量,并且支持更大的硬盘容量。因此,在新的系统中,主分区、扩展分区和逻辑分区的概念可能不再适用。

linux磁盘分区命令

在Linux系统中,有多种命令和工具可以用于管理磁盘分区。以下是一些常用的Linux磁盘分区命令:

  1. fdisk
    • fdisk是一个用于磁盘分区管理的命令行工具,可以创建、删除和调整磁盘分区。
    • 使用fdisk命令可以列出磁盘上的分区表、创建新的分区、删除现有的分区等操作。
    • 例如,使用fdisk -l命令可以列出系统上所有的磁盘及其分区信息。
  2. parted
    • parted是一个功能更加强大的磁盘分区管理工具,支持更多的文件系统类型和分区表类型。
    • 与fdisk不同,parted支持更大容量的磁盘和GPT分区表。
    • 使用parted可以进行类似于fdisk的操作,如创建、删除、调整分区等。
    • 例如,使用parted /dev/sda命令可以打开/dev/sda磁盘进行分区操作。
  3. gdisk
    • gdisk是一个专门用于GPT分区表管理的工具,与fdisk类似,但专门用于处理GPT分区表。
    • gdisk提供了与GPT分区表相关的一些特定功能和选项。
    • 例如,使用gdisk /dev/sda命令可以打开/dev/sda磁盘进行GPT分区操作。
  4. lsblk
    • lsblk命令用于列出系统上所有的块设备(包括磁盘、分区、逻辑卷等)及其相关信息。
    • 使用lsblk可以方便地查看磁盘及其分区的层次结构和关系。
    • 例如,使用lsblk命令可以列出系统上所有的块设备及其相关信息。
  5. blkid
    • blkid命令用于显示块设备的UUID和文件系统类型等信息。
    • 使用blkid可以方便地查看磁盘分区的UUID以及文件系统类型。
    • 例如,使用blkid /dev/sda1命令可以显示/dev/sda1分区的UUID和文件系统类型。
  6. mkfs
    • mkfs命令用于格式化磁盘分区,将文件系统写入分区中。
    • 使用mkfs可以为分区选择合适的文件系统类型,并进行格式化操作。
    • 例如,使用mkfs.ext4 /dev/sda1命令可以将/dev/sda1分区格式化为ext4文件系统。

这些命令和工具提供了丰富的功能,可以满足不同场景下的磁盘分区管理需求。使用时需要谨慎操作,以免造成数据丢失或系统损坏。

fdisk命令实战

fdisk是一个常用的磁盘分区管理工具,在Linux系统中用于创建、删除、调整和显示磁盘分区。下面是fdisk命令的一些实战用法:

  1. 列出磁盘分区表信息

    
    fdisk -l
    

    这个命令用于列出系统上所有磁盘的分区表信息,包括分区类型、分区大小、起始位置等。

  2. 交互式创建新的分区


   fdisk /dev/sda

这个命令会进入交互式界面,允许您对指定的磁盘进行分区操作。您可以按照提示逐步创建新的分区,设置分区的类型、起始位置、大小等。

  1. 创建新的分区

    fdisk /dev/sda
    n
    

    在交互式界面中,输入n命令可以创建新的分区。然后按照提示设置分区的起始位置、大小等参数。

  2. 删除分区

    fdisk /dev/sda
    d
    

    在交互式界面中,输入d命令可以删除指定的分区。然后输入要删除的分区号即可。

  3. 保存分区表更改: 在进行完分区操作后,需要保存分区表的更改才能生效。

    
    w
    

    在交互式界面中,输入w命令可以保存更改并退出fdisk。请注意,这个操作会立即写入更改,务必谨慎操作。

  4. 显示分区表信息

    
    fdisk -l /dev/sda
    

    这个命令用于显示指定磁盘的分区表信息,包括分区的数量、大小、类型等。

  5. 查看特定分区的信息

    
    fdisk -l /dev/sda1
    

    这个命令用于显示指定分区的详细信息,包括分区的起始位置、大小、分区类型等。

  6. 更改分区的类型

    fdisk /dev/sda
    t
    

    在交互式界面中,输入t命令可以更改指定分区的类型。然后按照提示选择新的分区类型码。

这些是fdisk命令的一些常见用法,可以帮助您管理系统中的磁盘分区。使用时请务必谨慎,避免对数据造成不可逆的影响。

磁盘运维相关命令

磁盘运维涉及到管理、监控、维护和诊断磁盘及文件系统的操作。以下是一些常见的磁盘运维相关命令:

  1. df:显示文件系统的磁盘空间使用情况。

    
    df -h
    

    以人类可读的方式显示磁盘空间使用情况,包括磁盘总容量、已用容量、可用容量等信息。

  2. du:显示目录或文件的磁盘使用情况。

    
    du -h
    

    以人类可读的方式显示指定目录或文件的磁盘使用情况,包括占用的磁盘空间大小。

  3. fdisk:对磁盘进行分区管理。

    
    fdisk -l /dev/sda
    

    列出指定磁盘的分区表信息,包括分区号、起始位置、大小等。

  4. parted:对磁盘进行分区管理(支持GPT)。

    
    parted /dev/sda
    

    进入交互式界面,可以创建、删除、调整分区等操作。

  5. mkfs:创建文件系统。

    
    mkfs -t ext4 /dev/sda1
    

    在指定分区上创建ext4文件系统,用于存储数据。

  6. mount:挂载文件系统。

    
    mount /dev/sda1 /mnt
    

    将指定分区挂载到指定挂载点上,使其可用于文件系统。

  7. umount:卸载文件系统。

    
    umount /mnt
    

    卸载指定挂载点上的文件系统,使其不再可用。

  8. fsck:检查和修复文件系统。

    
    fsck /dev/sda1
    

    对指定分区上的文件系统进行检查和修复,确保文件系统的完整性和一致性。

  9. smartctl:监控磁盘的SMART信息。

    
    smartctl -a /dev/sda
    

    显示指定磁盘的SMART信息,包括磁盘健康状态、温度、错误率等。

  10. hdparm:显示和设置磁盘的性能参数。


hdparm -I /dev/sda

显示指定磁盘的详细信息,包括传输模式、缓存策略等。

这些命令可以帮助您管理和维护系统中的磁盘和文件系统,确保系统的稳定性和可靠性。在使用这些命令时,请务必谨慎操作,避免对系统和数据造成不可逆的损坏。

lsblk命令

lsblk命令用于列出系统上所有的块设备(block devices)以及这些块设备的相关信息,包括磁盘、分区、逻辑卷等。以下是lsblk命令的常见用法:

  1. 列出所有块设备及其信息

    
    lsblk
    

    这个命令将列出系统上所有的块设备及其相关信息,包括磁盘、分区、逻辑卷等。

  2. 以树形结构显示块设备

    
    lsblk -t
    

    添加-t选项可以以树形结构显示块设备,清晰展示块设备之间的层次结构关系。

  3. 显示指定设备的信息

    
    lsblk /dev/sda
    

    添加设备路径参数可以只显示指定设备的信息,例如显示/dev/sda设备及其相关分区信息。

  4. 显示详细信息

    
    lsblk -a
    

    添加-a选项可以显示块设备的更详细信息,包括挂载点、UUID、文件系统类型等。

  5. 显示指定列的信息

    
    lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT
    

    添加-o选项可以指定要显示的列,这个例子中显示设备名称、大小、文件系统类型和挂载点。

  6. 以JSON格式输出

    
    lsblk -J
    

    添加-J选项可以以JSON格式输出块设备的信息,方便进行解析和处理。

lsblk命令是一个非常有用的工具,可以帮助您快速了解系统上的块设备以及其相关信息,用于系统管理、磁盘分区和挂载管理等操作。

什么是linux文件系统

在Linux系统中,文件系统(File System)是一种用于组织和管理计算机存储设备上的文件和数据的结构化方式。它定义了文件和目录的组织方式、存储格式以及访问权限等规则。Linux文件系统可以分为以下几种主要类型:

  1. ext文件系统:Extended文件系统是Linux系统中最常用的文件系统之一。它有几个版本,包括ext2、ext3和ext4。ext文件系统使用索引节点(inode)来跟踪文件和目录,支持文件权限、符号链接、扩展属性等特性。
  2. XFS文件系统:XFS是一种高性能的日志文件系统,最初由SGI公司开发。它适用于大型文件系统和大容量磁盘,支持快速的文件系统检查和修复。
  3. btrfs文件系统:Btrfs是一种新型的复制文件系统,支持多种高级特性,如快照、压缩、数据校验和RAID等。它设计用于提供更高的性能、可靠性和灵活性。
  4. ZFS文件系统:ZFS是一种开源的高级文件系统,最初由Sun Microsystems开发。它具有强大的数据完整性检查和修复能力,支持快照、数据压缩、数据镜像和RAID等特性。
  5. FAT文件系统:FAT(File Allocation Table)是一种简单的文件系统格式,最初由微软开发,适用于可移动存储设备和早期的Windows系统。它支持在不同操作系统间进行文件共享。
  6. NTFS文件系统:NTFS(New Technology File System)是Windows系统中使用的主要文件系统,具有高级的安全性、压缩和加密功能。在Linux系统中通过NTFS-3G驱动可以支持读写NTFS文件系统。
  7. ISO9660文件系统:ISO9660是一种标准的光盘文件系统格式,通常用于制作光盘镜像和光盘制作。它支持只读访问,并且能够在不同平台上进行兼容性保证。
  8. NFS文件系统:NFS(Network File System)是一种用于在网络上共享文件的协议和文件系统。它允许客户端系统通过网络访问远程服务器上的文件和目录。

这些是常见的Linux文件系统类型,每种文件系统都有其自己的特点和适用场景。在选择文件系统时,需要根据应用场景和需求进行权衡和选择。

文件系统作用

文件系统是计算机操作系统中的一个重要组成部分,它的作用包括以下几个方面:

  1. 组织和管理文件:文件系统负责组织和管理计算机存储设备上的文件和目录。它定义了文件和目录的组织结构、命名规则、存储格式等,使得用户能够方便地创建、查找、修改和删除文件。
  2. 数据存储:文件系统提供了对数据的存储和管理功能。它将文件和数据存储在物理存储介质上,并通过索引节点(inode)等数据结构来跟踪和管理文件的元数据信息(如文件名、权限、大小、创建时间等)和数据内容。
  3. 数据访问:文件系统提供了对文件和数据的访问接口,使得用户和应用程序能够读取、写入和执行文件。通过文件系统提供的文件路径和文件描述符等机制,用户能够方便地访问和操作存储在文件系统中的数据。
  4. 安全性管理:文件系统通过文件权限和访问控制列表(ACL)等机制来管理文件和数据的安全性。它定义了文件的所有者、组和其他用户的权限,控制用户对文件的访问权限,保护文件免受未经授权的访问和修改。
  5. 故障恢复:文件系统具有故障检测和恢复功能,能够在发生存储介质故障或文件系统损坏时进行检测、修复和恢复操作。例如,文件系统可以通过日志(journaling)和校验和等机制来确保数据的完整性和一致性,防止数据丢失或损坏。
  6. 性能优化:文件系统通过优化数据存储和访问方式,提高数据的读写性能和效率。它可以通过文件缓存、数据压缩、磁盘碎片整理等技术来减少数据访问延迟和提高系统性能。

综上所述,文件系统在计算机系统中扮演着至关重要的角色,它不仅负责组织和管理数据,还保证了数据的安全性、可靠性和高效性,为用户和应用程序提供了方便、安全和高效的数据访问和管理环境。

格式化文件系统流程

分区完毕之后,就得进行格式化文件系统,磁盘才可以使用,这就好比,你买了个房,打完隔断之后,装修一下才能住!

磁盘格式化是因为不同的操作系统设置的文件属性、权限各不相同,还得将分区格式化后,成为操作系统能够识别、兼容的文件系统(filesystem)。

分区搞明白之后,下一步就是要进行分区格式化文件系统

1.分区等于是对磁盘的扇区做分配处理,每一个分区,占用哪一段连续的分区。

2.分区完了之后,你是一个普通人类,如何去读写扇区里的数据?答案就是文件系统

image-20240326180801040

格式化流程

格式化文件系统是为存储设备(如硬盘、分区等)创建一个新的文件系统,这个过程会清除设备上的所有数据,并为文件系统初始化必要的数据结构和元数据信息。下面是格式化文件系统的一般流程:

  1. 备份数据(可选): 在格式化文件系统之前,如果存储设备上有重要的数据,建议先进行备份,以防数据丢失。

  2. 确定要格式化的设备: 确定要格式化的存储设备,可以是整个硬盘或者特定的分区。使用lsblkfdisk -l等命令查看系统上的存储设备和分区信息,确定要格式化的目标设备。

  3. 卸载文件系统: 如果存储设备上已经挂载了文件系统,需要先卸载文件系统,以确保文件系统不被访问。可以使用umount命令来卸载文件系统,例如:

    
    umount /dev/sdb1
    
  4. 选择文件系统类型: 确定要创建的文件系统类型。常见的文件系统类型包括ext4、XFS、btrfs等。根据实际需求和应用场景选择合适的文件系统类型。

  5. 格式化文件系统: 使用相应的文件系统格式化命令来创建新的文件系统。不同的文件系统类型有不同的格式化命令,以下是一些常见的例子:

    • ext4文件系统:

      
      mkfs.ext4 /dev/sdb1
      
    • XFS文件系统:

      
      mkfs.xfs /dev/sdb1
      
    • btrfs文件系统:

      
      mkfs.btrfs /dev/sdb1
      
  6. 确认格式化: 在格式化之前,系统会显示一个警告,提醒用户确认是否要执行格式化操作。确认后,格式化程序会擦除设备上的所有数据并创建新的文件系统。

  7. 挂载文件系统(可选): 如果需要使用新的文件系统,可以将其挂载到文件系统树中。可以使用mount命令来挂载文件系统,例如:

    
    mount /dev/sdb1 /mnt
    
  8. 恢复数据(如果有备份): 如果之前备份了数据,可以将备份的数据恢复到新的文件系统中。

这就是格式化文件系统的一般流程。在执行格式化操作时,请务必谨慎操作,并确保已备份重要数据以防止意外数据丢失。

mkfs命令

mkfs命令用于在指定的设备上创建新的文件系统。具体命令格式为:


mkfs [options] [device]

其中,options是可选的参数,用于指定文件系统的类型、选项等,device是要格式化的设备路径。

以下是常用的mkfs命令选项和示例:

  1. 指定文件系统类型
    • -t <type>:指定要创建的文件系统类型。常见的文件系统类型有ext4、XFS、btrfs等。
    • 示例:mkfs -t ext4 /dev/sdb1
  2. 指定文件系统标签
    • -L <label>:为新创建的文件系统指定标签。
    • 示例:mkfs -t ext4 -L mydisk /dev/sdb1
  3. 指定块大小
    • -b <block-size>:指定文件系统的块大小(以字节为单位)。
    • 示例:mkfs -t ext4 -b 4096 /dev/sdb1
  4. 指定inode大小
    • -I <inode-size>:指定文件系统的inode大小(以字节为单位)。
    • 示例:mkfs -t ext4 -I 256 /dev/sdb1
  5. 强制执行
    • -F:在格式化时不进行确认,直接执行。
    • 示例:mkfs -F -t ext4 /dev/sdb1

注意:使用mkfs命令格式化设备会擦除设备上的所有数据,因此在执行格式化操作之前,请务必确认选择正确的设备,并确保已备份重要数据。

什么是挂载

在计算机中,挂载(Mounting)是指将一个文件系统与计算机的文件系统树中的特定目录(称为挂载点)关联起来,使得文件系统中的文件和目录可以在该目录下被访问和操作。

挂载是将存储设备上的文件系统(如硬盘、分区、光盘、网络存储等)连接到文件系统树中的过程。

简单来说,挂载就是将存储设备中的数据在逻辑上“安放”到计算机的文件系统中的一个特定目录下,使得这些数据在该目录下可被访问和使用。

在Linux和类Unix系统中,挂载通常通过mount命令来执行。具体地,可以使用以下命令来挂载一个文件系统:


mount [options] <device> <mount-point>

其中,options是可选的挂载选项,<device>是要挂载的设备路径(如硬盘分区的设备文件),<mount-point>是要挂载到的目录路径(即挂载点)。

例如,如果要将名为/dev/sdb1的硬盘分区挂载到目录/mnt/data下,可以使用以下命令:


mount /dev/sdb1 /mnt/data

当挂载成功后,/mnt/data目录下的文件和目录即代表了/dev/sdb1分区中的数据,用户可以在该目录下读取、写入和执行文件。Unmounting是与挂载相反的过程,即将文件系统从挂载点上卸载,使其不再可用。

挂载案例

假设你有一个名为/dev/sdb1的硬盘分区,你想将其挂载到系统的/mnt/data目录下。下面是一个挂载案例的步骤:

  1. 检查分区: 首先,你需要确定要挂载的分区是哪一个。可以使用lsblk命令来列出系统上的块设备和分区信息:

    
    lsblk
    

    确认/dev/sdb1是你要挂载的分区。

  2. 创建挂载点: 如果/mnt/data目录不存在,你需要先创建它作为挂载点:

    
    sudo mkdir -p /mnt/data
    
  3. 挂载分区: 使用mount命令将分区挂载到目标目录:

    
    sudo mount /dev/sdb1 /mnt/data
    
  4. 验证挂载: 可以使用df命令来验证挂载是否成功,它会列出系统上已挂载的文件系统:

    
    df -h
    

    确保/dev/sdb1已经成功挂载到了/mnt/data目录下。

  5. 访问挂载的数据: 现在,你可以通过/mnt/data目录来访问并操作/dev/sdb1分区中的文件和目录。例如,可以使用ls命令来列出该分区下的文件和目录:

    
    ls /mnt/data
    
  6. 卸载分区(可选): 当你不再需要挂载的分区时,可以将其卸载。使用umount命令来卸载分区:

    
    sudo umount /mnt/data
    

这就是一个简单的挂载案例,展示了如何将一个硬盘分区挂载到系统的指定目录下,并访问其中的数据。

mount参数案例

以下是一些常用的mount命令的参数案例:

  1. 指定文件系统类型

    
    mount -t ext4 /dev/sdb1 /mnt/data
    

    这个命令将/dev/sdb1分区以ext4文件系统类型挂载到/mnt/data目录下。

  2. 只读挂载

    
    mount -o ro /dev/sdb1 /mnt/data
    

    这个命令将/dev/sdb1分区以只读模式挂载到/mnt/data目录下,防止对其进行写操作。

  3. 指定挂载点权限

    
    mount -o umask=000 /dev/sdb1 /mnt/data
    

    这个命令将/dev/sdb1分区挂载到/mnt/data目录下,并设置挂载点的权限为全权限(umask=000),允许任何用户进行读写操作。

  4. 强制挂载

    
    mount -f /dev/sdb1 /mnt/data
    

    这个命令将/dev/sdb1分区强制挂载到/mnt/data目录下,即使文件系统已经标记为需要检查。

  5. 安静模式

    
    mount -q /dev/sdb1 /mnt/data
    

    这个命令在挂载过程中不显示任何提示或警告信息,只在操作失败时显示错误信息。

  6. 显示详细信息

    
    mount -v /dev/sdb1 /mnt/data
    

    这个命令在挂载过程中显示详细信息,包括挂载点和文件系统类型等。

  7. 使用UUID挂载

    
    mount UUID=12345678-1234-1234-1234-123456789abc /mnt/data
    

    这个命令使用UUID(Universally Unique Identifier)来标识要挂载的设备,而不是使用设备路径。

  8. 使用标签挂载

    
    mount LABEL=mydisk /mnt/data
    

    这个命令使用设备的标签(LABEL)来标识要挂载的设备,而不是使用设备路径。

这些是mount命令的一些常用参数案例,可以根据需要选择合适的参数来进行挂载操作。

自动挂载

自动挂载可以通过编辑/etc/fstab文件来实现。/etc/fstab文件是用于指定系统启动时自动挂载文件系统的配置文件。以下是一个自动挂载的案例:

假设你有一个名为/dev/sdb1的硬盘分区,你希望在系统启动时自动将其挂载到/mnt/data目录下。你可以按照以下步骤进行配置:

  1. 确定设备和挂载点: 确定要挂载的设备和挂载点。假设/dev/sdb1是要挂载的设备,/mnt/data是挂载点。

  2. 获取设备的UUID或标签(可选): 获取设备的UUID或标签。你可以使用以下命令来获取设备的UUID或标签:

    
    blkid /dev/sdb1
    
  3. 编辑/etc/fstab文件: 打开/etc/fstab文件进行编辑:

    
    sudo nano /etc/fstab
    
  4. 添加自动挂载条目: 在/etc/fstab文件中添加一行来描述要自动挂载的设备和挂载点。例如,如果要挂载的设备是/dev/sdb1,挂载点是/mnt/data,并且设备的文件系统类型是ext4,可以添加如下一行:

    
    UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/data ext4 defaults 0 2
    

    如果你使用设备的标签(LABEL)来进行挂载,可以这样写:

    
    LABEL=mydisk /mnt/data ext4 defaults 0 2
    

    其中,UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx是设备的UUID,/mnt/data是挂载点,ext4是文件系统类型,defaults是挂载选项,02是dump和fsck顺序的参数。

  5. 保存并退出: 保存对/etc/fstab文件的修改并退出编辑器。

  6. 测试配置: 可以使用mount -a命令来测试/etc/fstab文件的配置,确保没有错误。

    
    sudo mount -a
    

现在,当系统启动时,会自动将/dev/sdb1分区挂载到/mnt/data目录下。

什么是LVM

LVM(Logical Volume Manager)是Linux系统中用于管理磁盘和存储的逻辑卷管理器。它允许管理员动态地管理存储,包括创建、调整大小、迁移、快照和备份逻辑卷等操作。以下是对LVM运维的详细解释:

  1. 物理卷(Physical Volumes,PV): 物理卷是LVM中的第一层,它是实际的物理磁盘或分区。管理员将一个或多个物理磁盘或分区划分为物理卷,并将其添加到LVM管理中。
  2. 卷组(Volume Group,VG): 卷组是由一个或多个物理卷组成的逻辑单元。管理员可以将多个物理卷合并到一个卷组中,形成一个大的存储池。卷组是LVM中的第二层,用于提供可扩展的存储空间。
  3. 逻辑卷(Logical Volume,LV): 逻辑卷是由卷组划分出来的逻辑存储单元,类似于传统的分区。管理员可以在卷组中创建一个或多个逻辑卷,并对其进行大小调整、快照和备份等操作。
  4. 扩展卷(Extend): 扩展卷是LVM中的最小存储单元,用于扩展逻辑卷的大小。管理员可以将一个或多个扩展卷添加到逻辑卷中,从而增加逻辑卷的容量。
  5. LVM运维操作
    • 创建物理卷:使用pvcreate命令创建物理卷,将物理磁盘或分区加入LVM管理。
    • 创建卷组:使用vgcreate命令创建卷组,将一个或多个物理卷合并到卷组中。
    • 创建逻辑卷:使用lvcreate命令创建逻辑卷,从卷组中划分出逻辑存储空间。
    • 调整逻辑卷大小:使用lvresize命令调整逻辑卷的大小,增加或减少逻辑卷的容量。
    • 创建快照:使用lvcreate --snapshot命令创建逻辑卷的快照,用于备份和恢复数据。
    • 备份和恢复:管理员可以使用LVM的快照功能来创建数据备份,以便在需要时进行数据恢复。
  6. LVM管理工具
    • 命令行工具:Linux系统提供了一系列的命令行工具来管理LVM,包括pvcreatevgcreatelvcreate等。
    • 图形化工具:除了命令行工具外,还有一些图形化工具可用于管理LVM,如system-config-lvmgnome-disks等。

通过LVM,管理员可以实现灵活的存储管理和配置,提高存储资源的利用率和管理效率。 LVM提供了对存储空间的动态管理能力,使得管理员能够根据需要调整存储空间的大小,并且可以方便地进行备份和恢复操作。

为什么学LVM

学习逻辑卷管理(Logical Volume Management,LVM)在管理存储和文件系统方面是非常有益的,特别是对于需要灵活管理存储资源的情况。以下是学习LVM的一些理由:

  1. 灵活性:LVM允许对存储设备进行动态管理,包括创建、调整大小、合并、迁移和删除逻辑卷等操作。这种灵活性使得存储资源可以根据需要进行动态调整,而无需重新分区或格式化硬盘。
  2. 性能优化:LVM提供了一些性能优化的功能,如条带化(striping)和缓存(caching),可以提高存储系统的性能,特别是对于需要高性能存储的应用场景。
  3. 数据保护:LVM支持数据快照(snapshot)和数据镜像(mirror)等功能,可以帮助实现数据的备份和恢复,保护数据免受意外损坏或丢失。
  4. 资源共享:通过LVM,多个物理卷可以被汇总到一个卷组中,然后从该卷组中创建逻辑卷。这种资源共享的方式可以更有效地利用存储资源,并简化管理。
  5. 在线扩展:LVM允许在线扩展逻辑卷和文件系统,而无需停机或重新启动系统。这使得存储容量的扩展变得更加方便和高效。
  6. 虚拟化支持:LVM与虚拟化技术(如KVM、Xen等)结合使用时,可以为虚拟机提供灵活的存储管理和动态调整的功能,满足虚拟化环境下的存储需求。
  7. 错误恢复:LVM提供了一些故障恢复的功能,如故障转移(failover)和恢复(recovery),可以帮助应对存储设备故障和数据损坏等情况。

综上所述,学习LVM可以帮助你更好地管理存储资源,提高存储系统的灵活性、性能和可靠性,适用于各种规模和类型的存储环境。

LVM术语

image-20240326181710858

在逻辑卷管理(Logical Volume Management,LVM)中,有一些常用的术语需要了解:

  1. 物理卷(Physical Volume,PV): 物理卷是实际的物理存储设备,如硬盘分区或整个硬盘。在LVM中,物理卷用于存储数据,并将其组织成逻辑卷组。
  2. 卷组(Volume Group,VG): 卷组是由一个或多个物理卷组成的逻辑存储池。物理卷被添加到卷组中,并且卷组可以用来创建逻辑卷。
  3. 逻辑卷(Logical Volume,LV): 逻辑卷是从卷组中创建的虚拟分区。它们类似于传统的分区,但是具有更灵活的管理能力,可以动态调整大小、迁移和快照等。
  4. 物理区段(Physical Extent,PE): 物理区段是LVM中的基本单位,用于将物理卷划分为固定大小的块。每个物理区段通常为4MB或更大,可以根据需要进行调整。
  5. 逻辑区段(Logical Extent,LE): 逻辑区段是逻辑卷中的基本单位,它们对应于物理区段,并且在逻辑卷上进行分配。逻辑区段的大小与物理区段的大小相同。
  6. 快照(Snapshot): 快照是逻辑卷的一个只读副本,它记录了逻辑卷在某个时间点的状态。快照可以用于数据备份、恢复和测试等操作。
  7. 元数据(Metadata): 元数据是LVM用来记录卷组、物理卷和逻辑卷配置信息的数据。元数据包含了卷组和逻辑卷的结构、大小、位置等信息。

以上是LVM中常用的一些术语,了解这些术语可以帮助你更好地理解LVM的工作原理和使用方法。

LVM怎么用

image-20240326181558607


image-20240326181611932

逻辑卷管理(Logical Volume Management,LVM)是一种在Linux系统中管理存储设备和逻辑卷的方法。下面是使用LVM的基本步骤:

  1. 安装LVM工具: 首先,确保系统上安装了LVM相关的工具包。在大多数Linux发行版中,LVM工具通常已经预装了,如果没有,可以使用包管理器进行安装。

  2. 创建物理卷(Physical Volumes,PV): 首先,你需要将物理存储设备(如硬盘分区)划分为物理卷。使用pvcreate命令来创建物理卷,例如:

    
    sudo pvcreate /dev/sdb1
    

    这将创建一个物理卷 /dev/sdb1

  3. 创建卷组(Volume Group,VG): 接下来,将一个或多个物理卷添加到卷组中。使用vgcreate命令来创建卷组,例如:

    
    sudo vgcreate myvg /dev/sdb1
    

    这将创建一个名为myvg的卷组,并将物理卷 /dev/sdb1 添加到该卷组中。

  4. 创建逻辑卷(Logical Volumes,LV): 在卷组上创建逻辑卷。使用lvcreate命令来创建逻辑卷,例如:

    
    sudo lvcreate -L 10G -n mylv myvg
    

    这将在卷组myvg上创建一个名为mylv、大小为10GB的逻辑卷。

  5. 格式化逻辑卷: 使用mkfs命令来格式化逻辑卷,例如:

    
    sudo mkfs.ext4 /dev/myvg/mylv
    

    这将在逻辑卷 /dev/myvg/mylv 上创建一个ext4文件系统。

  6. 挂载逻辑卷: 创建一个目录作为挂载点,然后将逻辑卷挂载到该目录下,例如:

    sudo mkdir /mnt/mylv
    sudo mount /dev/myvg/mylv /mnt/mylv
    

    这将逻辑卷 /dev/myvg/mylv 挂载到目录 /mnt/mylv 下。

  7. 管理逻辑卷: 可以使用各种命令来管理逻辑卷,如调整大小、重命名、删除等操作。例如,要调整逻辑卷的大小,可以使用lvresize命令:

    
    sudo lvresize -L +5G /dev/myvg/mylv
    

    这将逻辑卷 /dev/myvg/mylv 的大小增加5GB。

  8. 卸载逻辑卷: 在不需要逻辑卷时,可以使用umount命令卸载它,例如:

    
    sudo umount /mnt/mylv
    

    这将卸载逻辑卷 /mnt/mylv

以上是使用LVM的基本步骤,通过这些步骤,你可以灵活地管理存储设备和逻辑卷,根据需要动态调整存储资源。

lvm工作流程

  1. 物理磁盘
  2. 命令创建pv
  3. 创建卷组vg
  4. 创建逻辑卷lv
  5. 格式化lv文件系统
  6. 挂载使用
  1. 物理分区阶段:将物理磁盘fdisk格式化修改System ID为LVM标记(8e)
  2. PV阶段:通过pvcreatepvdisplay将Linux分区处理为物理卷PV
  3. VG阶段:接下来通过vgcreatevgdisplay将创建好的物理卷PV处理为卷组VG
  4. LV阶段:通过lvcreate将卷组分成若干个逻辑卷LV
  5. 开始使用:通过mkfs对LV格式化,最后挂载LV使用

image-20240326181808322

lv管理命令

在计算机系统中,“lv”通常指的是逻辑卷(Logical Volume),它是在逻辑上创建的磁盘分区,允许更灵活地管理存储空间。针对逻辑卷的管理,通常可以使用以下命令:

  1. lvcreate: 创建一个逻辑卷。

    
    lvcreate -L <size> -n <name> <volume_group>
    
  2. lvremove: 删除一个逻辑卷。

    
    lvremove <logical_volume>
    
  3. lvextend: 扩展一个逻辑卷。

    
    lvextend -L +<size> <logical_volume>
    
  4. lvreduce: 缩小一个逻辑卷。

    
    lvreduce -L -<size> <logical_volume>
    
  5. lvresize: 调整逻辑卷的大小(通常结合lvextend和lvreduce使用)。

    
    lvresize -L <new_size> <logical_volume>
    
  6. lvdisplay: 显示逻辑卷的信息。

    
    lvdisplay
    
  7. lvscan: 扫描系统中的逻辑卷。

    
    lvscan
    
  8. lvrename: 重命名逻辑卷。

    
    lvrename <volume_group> <old_name> <new_name>
    

这些命令通常需要在管理员权限下运行,并且需要对存储设备有足够的权限。请谨慎使用这些命令,因为对逻辑卷的操作可能导致数据丢失或破坏文件系统。建议在执行任何修改操作之前备份重要数据。

VG管理

在Linux系统中,VG通常指的是卷组(Volume Group),它是物理卷(Physical Volume)的逻辑集合,物理卷可以来自单个磁盘或者多个磁盘的分区。VG管理主要涉及对卷组的创建、扩展、收缩、显示等操作,以下是一些常用的VG管理命令:

  1. vgcreate:创建一个卷组。

    
    vgcreate <volume_group_name> <physical_volume>
    
  2. vgextend:向现有卷组添加一个或多个物理卷。

    
    vgextend <volume_group_name> <additional_physical_volume>
    
  3. vgreduce:从卷组中移除一个或多个物理卷。

    
    vgreduce <volume_group_name> <physical_volume>
    
  4. vgdisplay:显示卷组的详细信息,如大小、物理卷、逻辑卷等。

    
    vgdisplay <volume_group_name>
    
  5. vgscan:扫描系统中的卷组。

    
    vgscan
    
  6. vgchange:更改卷组的属性,如可用性。

    arduinoCopy codevgchange -a y <volume_group_name> // 激活卷组
    vgchange -a n <volume_group_name> // 停用卷组
    
  7. vgremove:删除卷组。

    
    vgremove <volume_group_name>
    
  8. vgs:以简洁的格式显示所有卷组的摘要信息。

    
    vgs
    

这些命令通常需要在管理员权限下运行。在执行任何修改操作之前,请务必备份重要数据,因为对卷组的操作可能导致数据丢失或破坏文件系统。

lvm扩容案例

假设你有一个名为data的卷组,其中包含一个名为lv_data的逻辑卷,现在需要将lv_data扩展到更大的大小。以下是一个简单的LVM扩容案例的步骤:

  1. 检查当前状态:首先,使用lvdisplay命令检查lv_data的当前大小和卷组的可用空间。

    
    lvdisplay /dev/data/lv_data
    
  2. 扩展文件系统:如果lv_data上有文件系统(例如ext4或XFS),需要先扩展文件系统以适应新的逻辑卷大小。这一步通常需要使用文件系统特定的工具,例如resize2fs(对于ext4)或xfs_growfs(对于XFS)。

    对于ext4文件系统

    
    resize2fs /dev/data/lv_data
    

    对于XFS文件系统

    
    xfs_growfs /mnt/mount_point
    
  3. 扩展逻辑卷:使用lvextend命令将lv_data扩展到所需的大小。假设你想将其扩展到50GB:

    
    lvextend -L +50G /dev/data/lv_data
    
  4. 检查扩展后的大小:再次运行lvdisplay命令,确保逻辑卷的大小已经被扩展到你所期望的大小。

  5. 完成:扩容完成后,你可以再次检查文件系统的可用空间以确保扩展成功。

请注意,在执行任何扩容操作之前,务必备份重要数据。此外,确保逻辑卷扩展后,文件系统也被扩展,以充分利用新的可用空间。

lvm缩容建议

LVM的缩容操作需要谨慎对待,因为它可能会导致数据丢失或文件系统损坏。在考虑缩小逻辑卷之前,有几个因素需要考虑:

  1. 备份数据:首先,确保在执行缩小操作之前对数据进行了充分的备份。虽然LVM提供了一些工具来支持逻辑卷的缩小,但这种操作仍然存在风险。因此,备份数据是非常重要的,以防止意外发生。
  2. 文件系统支持:不是所有的文件系统都支持在线缩小。某些文件系统可能需要卸载并以只读模式重新挂载才能进行缩小操作。在执行缩小操作之前,请确保了解所使用的文件系统是否支持在线缩小,以及如何正确地执行该操作。
  3. 数据移动:缩小逻辑卷通常涉及数据的移动或重新分配。这可能会导致数据碎片化或性能下降。因此,在执行缩小操作之前,请考虑逻辑卷上的数据布局以及可能的影响。
  4. 容量规划:确保缩小逻辑卷不会导致存储空间不足或其他方面的问题。在缩小逻辑卷之前,请考虑将来的容量需求以及系统可能会面临的增长。

综上所述,虽然LVM提供了缩小逻辑卷的功能,但这并不总是建议的做法。在执行任何缩小操作之前,请谨慎评估风险,并确保采取适当的预防措施,例如备份数据和了解文件系统支持情况。

lvm清理

LVM(逻辑卷管理)在某些情况下可能需要清理,尤其是在管理多个卷组、逻辑卷和物理卷时,可能会产生不再需要的卷组或逻辑卷等情况。清理LVM可以帮助整理存储资源,提高系统效率,并确保资源的最佳利用。

以下是一些建议的LVM清理步骤:

  1. 识别不再使用的卷组、逻辑卷和物理卷:通过使用vgdisplaylvdisplaypvdisplay等命令,检查系统中的所有卷组、逻辑卷和物理卷,并识别哪些是不再使用的或者不再需要的。

  2. 备份重要数据:在执行清理操作之前,务必备份所有重要数据,以防意外发生。

  3. 删除不再使用的逻辑卷:使用lvremove命令删除不再需要的逻辑卷。例如:

    
    lvremove /dev/vg_name/lv_name
    
  4. 从卷组中移除物理卷:如果某个物理卷不再需要,可以使用vgreduce命令从卷组中移除它。例如:

    
    vgreduce vg_name pv_path
    
  5. 删除不再使用的卷组:如果某个卷组不再需要,可以使用vgremove命令删除它。例如:

    
    vgremove vg_name
    
  6. 物理卷重新分配:如果某个物理卷上有可用空间,可以考虑将其重新分配给其他卷组或逻辑卷,以充分利用资源。

  7. 检查并释放空间:清理完成后,使用pvdisplaylvdisplay等命令检查存储资源的分配情况,并确保没有残留的不必要空间占用。

  8. 验证系统稳定性:清理操作完成后,验证系统的稳定性和功能性,确保清理操作不会对系统造成不良影响。

在清理LVM之前,请务必谨慎操作,并确保了解清理操作的影响。

Copyright © www.yuchaoit.cn 2024 all right reserved,powered by Gitbook作者:猿来教育 2024-05-11 17:53:31

results matching ""

    No results matching ""