在大多数计算机系统(Linux 或其他系统)上,当您插入 USB 拇指驱动器时,系统会提醒您驱动器的存在。如果驱动器已经按照您的喜好进行了分区和格式化,您只需要您的计算机在文件管理器窗口或桌面上列出驱动器。这是一个简单的要求,计算机通常会满足这个要求。
然而,有时驱动器的设置方式不符合您的要求。对于这些情况,您需要知道如何查找和准备连接到您机器的存储设备。
什么是块设备?
硬盘通常被称为“块设备”,因为硬盘以固定大小的块读取和写入数据。这区分了硬盘与您可能插入计算机的任何其他设备,例如打印机、游戏手柄、麦克风或摄像头。列出连接到您的 Linux 系统的块设备的简单方法是使用 lsblk(列出块设备)命令
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 237.5G 0 part
└─luks-e2bb...e9f8 253:0 0 237.5G 0 crypt
├─fedora-root 253:1 0 50G 0 lvm /
├─fedora-swap 253:2 0 5.8G 0 lvm [SWAP]
└─fedora-home 253:3 0 181.7G 0 lvm /home
sdb 8:16 1 14.6G 0 disk
└─sdb1 8:17 1 14.6G 0 part
设备标识符列在左侧列中,每个标识符都以 sd 开头,并以字母结尾,从 a 开始。每个驱动器的每个分区都分配一个数字,从 1 开始。例如,第一个驱动器的第二个分区是 sda2。如果您不确定什么是分区,没关系——继续阅读即可。
lsblk 命令是非破坏性的,仅用于探测,因此您可以运行它,而无需担心损坏驱动器上的数据。
使用 dmesg 进行测试
如有疑问,您可以通过查看 dmesg 命令的末尾来测试设备标签分配,该命令显示最近的系统日志条目,包括内核事件(例如连接和分离驱动器)。例如,如果您想确保拇指驱动器确实是 /dev/sdc,请将驱动器插入您的计算机并运行此 dmesg 命令
$ sudo dmesg | tail
最近列出的驱动器是您刚刚插入的驱动器。如果您拔下它并再次运行该命令,您将看到设备已被移除。如果您再次插入它并运行该命令,设备将在那里。换句话说,您可以监视内核对您的驱动器的感知。
了解文件系统
如果您只需要设备标签,那么您的工作就完成了。但如果您的目标是创建可用的驱动器,则必须为驱动器提供文件系统。
如果您不确定什么是文件系统,那么通过了解完全没有文件系统时会发生什么,可能会更容易理解这个概念。如果您有一个备用驱动器,上面没有任何重要数据,您可以按照此示例进行操作。否则,请勿尝试此练习,因为它肯定会删除数据,这是设计使然。
可以在没有文件系统的情况下使用驱动器。一旦您确定正确地识别了驱动器,并且绝对验证了上面没有任何重要的东西,请将其插入您的计算机——但不要挂载它。如果它自动挂载,则手动卸载它。
$ su -
# umount /dev/sdx{,1}
为了防止灾难性的复制粘贴错误,这些示例使用不太可能的 sdx 标签作为驱动器。
现在驱动器已卸载,请尝试以下操作
# echo 'hello world' > /dev/sdx
您刚刚将数据写入了块设备,而没有将其挂载到您的系统上或拥有文件系统。
要检索您刚刚写入的数据,您可以查看驱动器上的原始数据
# head -n 1 /dev/sdx
hello world
这看起来效果不错,但想象一下,短语“hello world”是一个文件。如果您想使用此方法写入新“文件”,则必须
- 知道第 1 行上已经存在一个“文件”
- 知道现有的“文件”仅占用 1 行
- 找到一种方法来追加新数据,或者在写入第 2 行时重写第 1 行
例如
# echo 'hello world
> this is a second file' >> /dev/sdx
要获取第一个文件,没有任何变化。
# head -n 1 /dev/sdx
hello world
但获取第二个文件更复杂。
# head -n 2 /dev/sdx | tail -n 1
this is a second file
显然,这种写入和读取数据的方法不切实际,因此开发人员创建了系统来跟踪构成文件的内容、一个文件的开始和结束位置等等。
大多数文件系统都需要分区。
创建分区
硬盘上的分区是设备上的一种边界,告诉每个文件系统它可以占用哪些空间。例如,如果您有一个 4GB 的拇指驱动器,您可以在该设备上创建一个占用整个驱动器 (4GB) 的分区,两个每个占用 2GB 的分区(或者如果您愿意,可以是 1GB 和 3GB),三个大小各异的分区等等。组合几乎是无穷无尽的。
假设您的驱动器是 4GB,您可以使用 GNU parted 命令从终端创建一个大分区
# parted /dev/sdx --align opt mklabel msdos 0 4G
此命令首先指定设备路径,这是 parted 的要求。
--align 选项让 parted 找到分区的最佳起点和终点。
mklabel 命令在设备上创建分区表(称为磁盘标签)。此示例使用 msdos 标签,因为它是一个非常兼容且流行的标签,尽管 gpt 正变得越来越普遍。
分区的所需起点和终点在最后定义。由于使用了 --align opt 标志,parted 将根据需要调整大小以优化驱动器性能,但这些数字仅作为指导。
接下来,创建实际分区。如果您的起点和终点选择不是最佳的,parted 会警告您并询问您是否要进行调整。
# parted /dev/sdx -a opt mkpart primary 0 4G
Warning: The resulting partition is not properly aligned for best performance: 1s % 2048s != 0s
Ignore/Cancel? C
# parted /dev/sdx -a opt mkpart primary 2048s 4G
如果您再次运行 lsblk(您可能必须拔下驱动器并重新插入),您将看到您的驱动器现在有一个分区。
手动创建文件系统
有许多可用的文件系统。有些是免费和开源的,而另一些则不是。一些公司拒绝支持开源文件系统,因此他们的用户无法从开源文件系统中读取数据,而开源用户则无法在不进行逆向工程的情况下从封闭文件系统中读取数据。
尽管存在这种脱节,但您可以使用许多文件系统,而您选择的文件系统取决于驱动器的用途。如果您希望驱动器在许多系统之间兼容,那么您目前唯一的选择是 exFAT 文件系统。微软尚未向任何开源内核提交 exFAT 代码,因此您可能必须使用您的软件包管理器安装 exFAT 支持,但 Windows 和 MacOS 都包含对 exFAT 的支持。
一旦您安装了 exFAT 支持,您就可以在您创建的分区中的驱动器上创建 exFAT 文件系统。
# mkfs.exfat -n myExFatDrive /dev/sdx1
现在您的驱动器可以被封闭系统和使用附加(且尚未获得微软认可的)内核模块的开源系统读取和写入。
Linux 原生的常见文件系统是 ext4。对于便携式驱动器来说,它可以说是一个麻烦的文件系统,因为它保留了用户权限,而用户权限在不同的计算机之间通常是不同的,但它通常是一个可靠且灵活的文件系统。只要您能够轻松管理权限,ext4 就是一个适用于便携式驱动器的出色日志文件系统。
# mkfs.ext4 -L myExt4Drive /dev/sdx1
拔下您的驱动器并重新插入。对于 ext4 便携式驱动器,使用 sudo 创建一个目录,并将该目录的权限授予跨系统通用的用户和组。如果您不确定要使用哪个用户和组,您可以修改读/写权限,使用 sudo 或 root 在遇到驱动器问题的系统上进行修改。
使用桌面工具
了解如何在只有 Linux shell 站在您和块设备之间的情况下处理驱动器是很棒的,但有时您只是想让驱动器准备好使用,而无需如此深入的探测。来自 GNOME 和 KDE 开发人员的出色工具可以使您的驱动器准备工作变得轻松。
GNOME 磁盘 和 KDE 分区管理器 是图形界面,为本文迄今为止解释的所有内容提供了一体化解决方案。启动这些应用程序中的任何一个以查看附加设备列表(在左侧列中),创建或调整分区大小,并创建文件系统。

KDE 分区管理器
GNOME 版本可以预见地比 KDE 版本更简单,因此我将演示更复杂的版本——如果您手头有 GNOME 磁盘,那么很容易弄清楚它的用法。
启动 KDE 分区管理器并输入您的 root 密码。
从左侧列中,选择您要格式化的磁盘。如果您的驱动器未列出,请确保已插入,然后选择 工具 > 刷新设备(或键盘上的 F5)。
除非您准备好销毁驱动器的现有分区表,否则请勿继续。 选择驱动器后,单击顶部工具栏中的 新建分区表。系统将提示您选择要为分区表提供的标签:gpt 或 msdos。前者更灵活,可以处理更大的驱动器,而后者就像许多微软技术一样,是市场份额强制执行的事实标准。
现在您有了一个新的分区表,右键单击右侧面板中的设备,然后选择 新建 以创建新分区。按照提示设置分区的类型和大小。此操作将分区步骤与创建文件系统相结合。

创建新分区
要将更改应用于驱动器,请单击窗口左上角的 应用 按钮。
硬盘,轻松驱动
在 Linux 上处理硬盘很容易,如果您了解硬盘的语言,那就更容易了。自从切换到 Linux 以来,我能够更好地准备驱动器,使其以我希望的方式为我工作。由于 Linux 在处理存储时提供的透明度,我也更容易恢复丢失的数据。
如果您想进行实验并了解有关硬盘的更多信息,这里有一些最后的提示
- 备份您的数据,而不仅仅是您正在实验的驱动器上的数据。只需一个错误的举动就可能破坏重要驱动器的分区(这是了解重新创建丢失分区的好方法,但不是很有趣)。
- 验证然后再验证您要定位的驱动器是正确的驱动器。我经常使用 lsblk 来确保我没有自己移动驱动器。(很容易从两个不同的 USB 端口移除两个驱动器,然后漫不经心地以不同的顺序重新连接它们,导致它们获得新的驱动器标签。)
- 花时间“销毁”测试驱动器,看看您是否可以恢复数据。这是一个很好的学习经验,可以重新创建分区表或尝试在文件系统被删除后恢复数据。
为了获得额外的乐趣,如果您手边有一个封闭的操作系统,请尝试使其运行开源文件系统。有一些项目正在致力于这种兼容性,尝试以稳定可靠的方式使其工作是一个很好的周末项目。
评论已关闭。