介绍
Linux具有强大的系统和工具来管理硬件设备,包括存储驱动器。 在本文中,我们将从更高层次介绍Linux如何表示这些设备,以及原始存储如何构成服务器上的可用空间。
什么是块存储?
块存储是Linux内核调用块设备的另一个名称。 块设备是一个硬件,可用于存储数据,如一个传统的纺丝硬盘驱动器(HDD),固态驱动器(SSD),闪存棒等,这被称为块设备,因为内核接口与硬件通过引用固定大小的块,或大块的空间。
所以基本上,块存储是你认为在计算机上的常规磁盘存储。 一旦设置,它基本上充当当前文件系统树的扩展,并且您可以无缝地写入或读取驱动器中的信息。
什么是磁盘分区?
磁盘分区是将存储驱动器分解成更小的可用单元的一种方式。 分区是存储驱动器的一部分,可以以与驱动器本身相同的方式进行处理。
分区允许您分割可用空间并使用每个分区用于不同的目的。 这为用户提供了大量的灵活性,允许用户潜在地分段安装,以便轻松升级,多操作系统,交换空间或专用文件系统。
虽然可以在不进行分区的情况下格式化和使用磁盘,但是某些操作系统希望找到一个分区表,即使只有一个分区写入磁盘。 通常建议分区新的驱动器,以获得更大的灵活性。
MBR和GPT
当磁盘分区,重要的是要知道将使用哪些分区格式 。 这通常归结为MBR(主引导记录)和GPT(GUID分区表)之间的选择。
MBR是传统的分区系统,该系统已经使用了30多年。 由于它的年龄,它有一些严重的限制。 例如,它不能用于大小超过2TB的磁盘,并且最多只能有四个主分区。 因此,第四分区通常被设置为“扩展分区”,其中可以创建“逻辑分区”。 这允许您细分最后一个分区以有效地允许其他分区。
GPT是试图解决一些固有的MBR的问题的更现代的分区方案。 运行GPT的系统每个磁盘可以有更多的分区。 这通常仅受操作系统本身强加的限制。 此外,GPT不存在磁盘大小限制,并且分区表信息在多个位置可用,以防止损坏。 GPT还可以写一个“保护MBR”,告诉MBR工具,磁盘正在使用。
在大多数情况下,GPT是更好的选择,除非您的操作系统或工具阻止您使用它。
格式化和文件系统
虽然Linux内核可以识别原始磁盘,但驱动器不能按原样使用。 要使用它,则必须进行格式化。 格式化是写一个文件系统的磁盘,并准备它的文件操作的过程。 一个文件系统是系统结构中的数据和控制信息如何写入和基础磁盘检索。 如果没有文件系统,则无法将存储设备用于任何与文件相关的操作。
有许多不同的文件系统格式,每个格式都有在许多不同维度上的权衡,包括操作系统支持。 在基本层面上,它们都向用户呈现了磁盘的类似表示,但是每个支持的功能和用于启用用户和维护操作的机制可能非常不同。
一些更流行的Linux文件系统有:
- EXT4:最流行的默认文件系统EXT4是,或扩展文件系统的第四个版本。 Ext4文件系统是日志记录,向后兼容传统系统,非常稳定,并具有成熟的支持和工具。 如果您没有专门的需求,这是一个不错的选择。
- XFS:XFS专业性能和大型数据文件。 它格式化快,并且在处理大文件和使用大磁盘时具有良好的吞吐量特性。 它还具有实时快照功能。 XFS使用元数据日记,而不是记录元数据和数据。 这导致快速的性能,但是可能导致在突然的功率损耗的情况下的数据损坏。
- BTRFS:BTRFS是现代的,功能丰富的写入时复制文件系统。 这种架构允许将一些卷管理功能集成到文件系统层中,包括快照,克隆,卷等。当处理完整磁盘时,Btrfs仍然遇到一些问题。 对于生产工作负载的准备情况有一些争论,许多系统管理员正在等待文件系统达到更高的成熟度。
- ZFS:ZFS是一个写入时复制的文件系统和卷管理器有一个强大的和成熟的功能集。 它具有出色的数据完整性功能,可以处理大文件系统大小,具有典型的卷功能,如快照和克隆,并且可以将卷组织为RAID和RAID类阵列,以实现冗余和性能目的。 在Linux上的使用方面,由于许可问题,ZFS有一个有争议的历史。 Ubuntu现在为它提供了一个二进制内核模块,而Debian在其存储库中包含了源代码。 对其他分布的支持还有待确定。
Linux如何管理存储设备
/ dev中的设备文件
在Linux中,几乎所有内容都由一个文件表示。 这包括硬件像存储驱动器,这是本系统中的文件上所表示/dev
目录。 通常情况下,代表存储设备的文件开始sd
或hd
后跟一个字母。 例如,一台服务器上的第一个驱动器通常是这样/dev/sda
。
这些驱动器分区也有内部文件/dev
,通过附加分区号到驱动器名称的末尾表示。 例如,从前面例子中的驱动器上的第一个分区是/dev/sda1
。
而/dev/sd*
和/dev/hd*
设备文件表示的传统方式来指驱动器和分区,有一个在由自己使用这些值一显著劣势。 Linux内核决定哪个设备在每次引导时获取哪个名称,因此这可能导致混乱的情况,其中设备更改设备节点。
要解决这个问题, /dev/disk
目录中包含不同的,更持久的方法来识别系统中的磁盘和分区对应的子目录。 这些包含在引导创建回到正确的符号链接/dev/[sh]da*
文件。 这些链接根据目录的识别特征(例如,通过分区标签中为命名/dev/disk/by-partlabel
目录)。 这些链接将始终指向正确的设备,因此它们可以用作存储空间的静态标识符。
部分或全部下列子目录下可能存在/dev/disk
:
-
by-label
:大多数文件系统有一个标签机制,允许磁盘或分区的任意用户指定名称的分配。 此目录包含以这些用户提供的标签命名的链接。 -
by-uuid
:的UUID,或通用唯一标识符,是字母和数字长,唯一的字符串,可以用来作为一个存储资源的ID。 这些通常不是非常人类可读,但是几乎保证是独特的,甚至跨系统。 因此,使用UUID来引用可能在系统之间迁移的存储可能是个好主意,因为命名冲突的可能性较小。 -
by-partlabel
和by-partuuid
:GPT表提供他们自己的标签集和的UUID的,这也可用于识别。 此函数的作用方式与前两个目录相同,但使用GPT特定的标识符。 -
by-id
:该目录包含由硬件自身的序列号和它们所连接的硬件生成的链接。 这并不完全是持久的,因为该设备被连接到系统的方式可以改变其by-id
名称。 -
by-path
:像by-id
,这个目录依赖于存储设备连接到系统本身。 这里的链接是使用系统对用于访问设备的硬件的解释来构造的。 此具有相同的缺点by-id
作为设备连接到不同的端口可以改变这个值。
通常情况下, by-label
或by-uuid
是特定设备的持续性鉴定的最佳选择。
by-id
分类为在此平台上可靠持久。
这是引用DigitalOcean卷的首选方法,因为它在第一次引导时具有持久性和可预测性。
安装块设备
内的设备文件/dev
用来与内核驱动程序有关的设备进行通信。 然而,需要更有帮助的抽象来将设备看作可用空间的一部分。
在Linux和其他类Unix操作系统中,整个系统,无论涉及多少物理设备,都由单个统一文件树表示。 这样,当一个驱动器或分区上的文件系统被使用,它必须被钩到现有树中。 安装是附加格式的分区或开车到Linux文件系统中的目录的过程。 然后可以从该目录访问驱动器的内容。
驱动器几乎总是安装在专用的空目录上(安装在非空目录上意味着该目录的常规内容将不可访问,直到驱动器被卸载)。 有许多不同的安装选项可以设置来改变安装的设备的行为。 例如,驱动器可以以只读模式安装,以确保其内容不会被更改。
该文件系统层次标准建议使用/mnt
或临时安装的文件系统下,它的子目录。 如果这符合你的用例,这可能是最好的地方挂载它。 它不建议在哪里挂载更永久的存储,所以你可以选择你想要的方案。 在许多情况下, /mnt
或/mnt
子目录用于更永久存储。
使用/ etc / fstab使装载永久
Linux系统看一个名为/etc/fstab
(文件系统表),以确定哪些文件系统在启动过程中安装。 没有在这个文件中的条目的文件系统将不会自动地安装(唯一的例外是那些由systemd定义.mount
单元文件,虽然这些是不常见的时刻)。
在/etc/fstab
的文件是相当简单的。 每行代表应该安装的不同文件系统。 此行指定块设备,要将其附加到的安装点,驱动器的格式,安装选项以及其他一些信息。
更加复杂的存储管理
虽然大多数简单的用例不需要额外的管理结构,但是可以通过更复杂的管理范例获得更多的性能,冗余或灵活性。
什么是RAID?
RAID表示对R edundant 一个 rray 我 ndependentðisks。 RAID是一种存储管理和虚拟化技术,允许您将驱动器分组在一起,并将其作为具有额外功能的单一单元进行管理。
RAID阵列的特性取决于其RAID级别,其基本定义阵列中的磁盘如何相互关联。 所选择的级别对该集合的性能和冗余度有影响。 一些更常见的级别是:
- RAID 0:此级别指示驱动器的条带化。 这意味着,当数据写入到数组时,它被拆分并分布在集合中的磁盘之间。 这提供了性能提升,因为多个磁盘可以同时写入或读取。 缺点是,单个驱动器故障可能会丢失整个数组中的所有数据,因为没有一个磁盘包含有关要重建的内容的足够信息。
- RAID 1:RAID 1基本上是驱动器镜像。 写入RAID 1阵列的任何内容都会写入多个磁盘。 主要优点是数据冗余,允许数据在镜像的任一侧丢失硬盘驱动器。 由于多个驱动器包含相同的数据,可用容量减少了一半。
- RAID 5:在多个驱动器的RAID 5将数据条带,类似于RAID 0,但这一水平也实现了跨越驱动器分布式奇偶校验。 这基本上意味着如果驱动器发生故障,剩余的驱动器可以使用它们之间共享的奇偶校验信息重建阵列。 奇偶校验信息足以重建任何一个磁盘,这意味着阵列可以承受任何一个磁盘丢失。 奇偶校验信息通过一个磁盘的容量减少阵列中的可用空间。
- RAID 6:RAID 6具有相同的特性的RAID 5,但提供了双重校验。 这意味着RAID 6阵列可以承受任何2个驱动器的损失。 阵列的容量再次受到奇偶校验量的影响,意味着可用容量减少了两个磁盘空间。
- RAID 10:RAID 10是级别1和0的组合首先,镜像阵列的两套制成。 然后,数据在其间条带。 这创建了具有一些冗余特性同时提供良好性能的阵列。 这需要相当多的驱动器,总容量是组合磁盘空间的一半。
什么是LVM?
LVM,或L ogical V olume 中号 anagement,是抽象,以提供更大的灵活性和功率底层存储设备的物理特性的系统。 LVM允许您创建物理设备组,并将其管理为一个单一的空间块。 然后,您可以根据需要将空间分段成逻辑卷,作为分区。
LVM在常规分区之上实现,并解决了传统分区固有的许多限制。 例如,使用LVM卷,您可以轻松地扩展分区,创建跨多个驱动器的分区,拍摄分区的实时快照以及将卷移动到不同的物理磁盘。 LVM可以与RAID结合使用,为传统的RAID性能特性提供灵活的管理。
下一步去哪里?
如果你有,你希望在你的Linux系统中使用新的存储设备, 本文将指导您完成分区的基本过程,格式化和安装新的文件系统。 在大多数情况下,您主要关注增加额外容量,这应该足够了。 要了解如何执行基本的存储管理任务,请查看这篇文章 。