向Linux计算机添加新的硬盘驱动器或固态驱动器?您需要编辑fstab文件。很多人觉得这个想法很可怕。是的,你把它做好是很重要的,但是有了正确的知识,这真的不难。我们将逐步完成编辑fstab文件的过程,以便将新驱动器集成到文件系统中。
虽然在Linux计算机上添加一个新的硬盘并不复杂,但是第一次尝试时可能会有点混乱。连接硬件,打开计算机电源,然后登录到操作系统。但是你在任何地方都看不到你的新硬盘。为什么没有出现?如何让Linux“看到”驱动器以便开始配置它?
实际上,Linux已经看到了您的硬件,但它并没有很快宣布它。或者给你一个提示,它已经找到了你的新硬件。您必须询问Linux以获得需要放入fstab文件的信息。
下面介绍如何设置新硬盘,以便Linux和您可以看到并使用它。这个过程分为两部分。第一部分是做一些侦察,以确定硬盘驱动器和收集一些信息。第二部分是编辑fstab文件,使用我们在侦察阶段收集的信息。
我们要给这个系统添加两个新驱动器。一个是32 GB机械硬盘(HD),另一个是16 GB固态硬盘(SSD)。
我们需要知道Linux可以看到它们,以及Linux正在为它们使用什么块设备。在Linux和类似Unix的操作系统中,块设备是一种特殊的文件,它充当设备的接口,可以读取和写入数据(除非它是只读的)。块设备通常表示某种大容量存储单元(例如,硬盘或CD-ROM上的分区)。它们是在/dev目录中创建的。
我们可以使用l**lk命令列出连接到Linux计算机的块设备。
l**lkl**lk的输出以列为单位。
这些列是:
在上面的屏幕截图中,您可以看到循环设备都被赋予了一个大数7(意味着一个循环,或循环,设备),而小数只是每次增加1。循环设备与squashfs文件系统一起使用。每次使用snappy包管理系统安装应用程序时,都会创建一个squashfs文件系统。
SCSI硬盘的名称有sda、sdb和sdc,它们的主要数字都是8(SCSI硬盘)。次要编号按16分组。第一个驱动器sda的次要编号从0到15。0表示物理驱动器,次数字1表示该驱动器上的第一个分区。对于第二个驱动器sdb,次要数字从16到31。16表示物理驱动器,17表示该驱动器上的第一个分区。接下来的16个数字,从32到47,用于sdc的次要数字,依此类推。
其他常见的主要数字是3(对于IDE硬盘)和11(对于CD-ROM)。
实际上,SDCSI CD-ROM驱动器的/dev/sr0样式已经过时了。批准的格式是/dev/scd0。尽管如此,/dev/sr0格式仍然在用于研究本文的所有机器上使用。
内核文档包含一个长长的列表,其中列出了主要数字和次要数字可以采用的所有值。这张单子长得出奇。
为了消除l**lk输出的混乱,我们可以使用grep只选择我们感兴趣的项目。我们知道没有添加循环设备,所以让我们选择所有SCSI硬盘驱动器。我们知道他们的名字里会有“sd”。
l**lk | grep sd此命令将导致grep只打印在中有“sd”的行。在我们的试验机上,我们看到:
所以,我们有三个SCSI驱动器。第一个/dev/sda安装在文件系统的根目录下。其他两个根本没有安装,这是预期的全新驱动器。我们可以看到drive/dev/sdb的大小是32gb,这意味着它是我们传统的机械驱动器。Drive/dev/sdc的大小是16gb,这是我们的SSD驱动器。
实际上,由于这是一台虚拟计算机,这些也是虚拟磁盘。所以SSD就像SCSI机械驱动器一样出现。在我的常规桌面上,我的nvmesd显示为/dev/nvme0n1,它的第一个分区是/dev/nvme0n1p1。它的主要数字是259。这些差异不会改变我们在fstab文件中要做的事情,但是要注意,如果您有一个SSD,它不会显示为物理驱动器。
另外,如果驱动器是全新的,那么它们可能没有分区。如果需要,可以使用fdisk创建分区。
相关:如何使用Fdisk在Linux上管理分区
如果我们对l**lk使用-o(输出)选项,并将ROTA(旋转)列添加到显示中,l**lk将使用1表示旋转存储设备(机械驱动),使用0表示非旋转存储设备(固态驱动)。
l**lk -o +ROTA | grep sd我们在显示器的右边有一个额外的列,它是ROTA(旋转)列。如您所见,“SSD”对设备和分区有一个0。这是有意义的,因为SSD是一种非旋转存储设备。
在开始考虑fstab文件之前,让我们检查一下是否可以手动安装驱动器。这样,如果在使用fstab文件时出现问题,我们就会知道问题一定是语法问题,而不是驱动器本身的问题。
我们将在/mnt目录中创建一些临时挂载点。您需要使用sudo,系统会提示您输入密码。
sudo mkdir /mnt/scsisudo mkdir /mnt/ssd现在让我们在新的挂载点挂载SCSI驱动器。我们将以最简单的形式使用mount命令。我们会告诉它我们想要挂载的分区的名称,以及我们想要挂载它的挂载点。mount将在指定的挂载点将文件系统挂载到该分区上。
我们指定的是保存文件系统的分区,而不是驱动器,因此请确保包含分区的数字,在本例中为“1”。
sudo mount /dev/sdb1 /mnt/scsi如果一切顺利,穆特不会回应。您将自动返回到命令提示符。
安装SSD同样简单。我们告诉mount在哪个设备上装载哪个分区,以及装载点。
sudo mount /dev/sdc1 /mnt/ssd再说一次,沉默是金。
相关:如何从Linux终端装载和卸载存储设备
为了验证挂载已经发生,我们将再次使用l**lk。我们将通过grep传递其输出,并选择“sda1”、“sdb2”和“sdc1”条目。
l**lk -o +ROTA | grep sd[a-c]1mount向我们展示了三个挂载的分区。这就是我们刚刚挂载的两个分区和挂载在/上的原始分区。
分区/dev/sdb1安装在/mnt/scsi上,并且位于旋转存储设备上。分区/dev/sdc1安装在/mnt/ssd上,并且位于非旋转存储设备上。一切似乎都很好。
现在我们需要配置fstab文件,以便在每次启动计算机时挂载这些设备。
fstab文件包含计算机重新启动时装入的每个文件系统的条目。每个条目由六个字段组成。字段包括:
这些字段必须按此顺序指定,并且它们之间必须有空格或制表符。找到这些字段的值可能会让人望而生畏,尤其是“opti***”字段的值。“选项”字段选项必须位于逗号分隔的列表中,它们之间不能有空格。
每个文件系统的手册页将列出可以使用的选项。ext4有大约40个选项。以下是一些更常见的选项:
“默认值”选项是一个很好的开场白。如果需要进行一些微调,可以添加或删除更多选项。如果有一种简洁的方法来获取所需的设置,那么您就可以按顺序将它们输入fstab文件。
输入mtab文件。
mtab文件是当前装入的文件系统的列表。这与fstab文件不同,fstab文件列出了引导时应该装载的文件系统。mtab文件包括手动装入的文件系统。我们已经安装了新驱动器,因此它们应该显示在mtab文件中。
我们可以使用cat查看mtab文件的内容。我们将通过grep管道限制输出,并且只查看/dev/sdb1和/dev/sdc1。
cat /etc/mtab | grep sd[b-c]1输出显示这两个分区的mtab条目。
我们可以提升这些值并将它们直接放入fstab文件中,确保每个字段之间有一个空格或制表符。就是这样。当我们重新启动的时候,硬盘就会被安装上。
有两个警告。一个是挂载点。我们创建临时挂载点只是为了证明我们可以在新驱动器上挂载新分区。如果不同的话,我们需要输入真正的坐骑点,而不是临时的坐骑点。
第二个警告是,如果我们使用mtab文件中的设置,我们将使用块设备文件作为每个分区的标识符。这是可行的,但是如果计算机中添加了新的大容量存储硬件,/dev/sda和/dev/sdb等值可能会发生变化。这意味着fstab文件中的设置不正确。
每个分区都有一个通用唯一标识符(UUID),我们可以用它来标识分区。这永远不会改变。如果我们使用UUID来标识fstab文件中的分区,那么设置将始终保持准确和真实。
如果将新分区用作廉价磁盘冗余阵列(RAID)系统的一部分,请查看该系统的文档。它可能指定必须使用块设备标识符而不是UUID。
为了找到分区的UUID,我们可以使用blkid打印块设备的属性。我们将限制输出到新驱动器上的两个新分区:
blkid | grep sd[b-c]1输出包括每个分区的UUID。
PARTUUID是UUID的一种形式,可以与GUID分区表(GPT)分区方法一起使用(如果您不使用主引导记录(MBR)分区方法)。
在编辑器中打开fstab文件。我们使用的是gedit,这是一个在大多数Linux发行版中都可以找到的易于使用的编辑器。
sudo gedit /etc/fstab此时将显示编辑器,其中加载了fstab文件。
此fstab文件中已有两个条目。它们是现有硬盘驱动器/dev/sda1上的分区和交换文件系统。小心不要更改这些条目。
我们需要在fstab文件中添加两个新条目。一个用于SCSI驱动器上的分区,另一个用于SSD驱动器上的分区。我们先添加SCSI分区。请注意,以哈希开头的行是注释。
现在我们将在单独一行的SSD驱动器上添加fstab条目分区。
保存文件并关闭编辑器。
相关:如何使用gedit在Linux上以图形方式编辑文本文件
我们可以卸载新驱动器,然后强制刷新fstab文件。新分区的成功安装将验证我们输入的设置和参数在语法上是否正确。这意味着我们的fstab文件应该在重启或通电过程中正确处理。
要卸载SCSI驱动器,请使用以下命令。请注意,“umount”中只有一个“n”:
sudo umount /dev/sdb1要卸载SSD驱动器,请使用以下命令:
sudo umount /dev/sdc1现在我们将使用l**lk检查这些块设备是否已安装。
l**lk | grep sd我们看到块设备存在于计算机中,但没有安装在任何地方。
我们可以使用mount命令和-a(all)选项来重新装载fstab中的所有文件系统。
sudo mount -a我们可以再次使用l**lk检查新分区是否已安装:
l**lk | grep sd一切都安装在它应该的地方。我们现在要做的就是更改装载点的所有权,否则root将是唯一可以访问新存储设备的人。
我们可以用chown轻松地做到这一点。这是SCSI装载点的命令:
sudo chown dave:users /mnt/scsi这是SSD装载点的命令:
sudo chown dave:users /mnt/ssd我们现在可以放心地重新启动计算机,知道我们添加的分区将为我们挂载,并且我们可以访问它们。
所有的艰苦工作都在侦察阶段,那也不难。一旦收集了所需的信息,就可以轻松地编辑fstab文件。准备就是一切。
有备用硬盘,你想更有效地使用你的Linux电脑?RAID可以提供性能提升或添加冗余,具体取决于它的配置方式。让我们快速进入多磁盘世界。 ...
...(可能是与数码相机一起使用的设备)时,系统会提示您如何继续操作。为了方便起见,我喜欢将设备打开到文件管理器中。 ...
在Linux上,awk是一种命令行文本操作生成器,也是一种功能强大的脚本语言。下面介绍一些最酷的功能。 awk是怎么得名的 awk命令的名字是使用1977年编写原始版本的三个人的缩写:阿尔弗雷德·阿霍、彼得·温伯格和布莱恩·克...
...们谈论Linux文件时间戳时。在本指南中,我们将解释系统如何更新它们,以及如何自己修改它们。 atime、mtime和ctime的区别 每个Linux文件都有三个时间戳:访问时间戳(atime)、修改时间戳(mtime)和更改时间戳(ctime)。 访问时...
...作系统。 现在,在我们开始之前,去做个备份。 相关:如何备份Linux系统 识别驱动器 如果您刚刚将一个驱动器安装到Linux计算机上,或者将Linux安装到新的多驱动器计算机中的一个驱动器上,然后重新启动,那么几乎没有证据...
...的Linux文件系统,但是你不能面对这个问题吗?下面介绍如何将ext2和ext3转换为ext4,而不必完全重新安装。 linux文件系统 如果你有礼貌的话,你可以称ext3文件系统为“受人尊敬的”,就像2001年一样。至于可怜的旧ext2,这个文...
...容量、已用空间和可用空间以及它们的装载点。 相关:如何从Linux终端查看可用磁盘空间和磁盘使用情况 重新安装fstab中的所有文件系统 在引导时挂载的所有文件系统都在名为fstab的文件中有条目,fstab是位于/etc中的文件系统表...
...重复警告。如果你完全不确定你对系统文件所做的更改将如何使你的计算机正常工作,就不要进行更改。 当你确实需要编辑一个文本文件时,不管它是不是一个系统文件,你会发现gedit是一个快速而简单的编辑器,它不会让你陷...
...您可能还记得在我们之前的一篇文章中看到过这一点,即如何为您的Linux PC选择分区方案,但我们将再次解释它。在格式化过程中,每个文件系统都会被分配一个通用的唯一标识符,并将其带到坟墓中。因为它不能更改,所以这...
你知道如何使用命令提示符吗?如果你这样做了,你可以写一个批处理文件。在最简单的形式中,批处理文件(或批处理脚本)是双击文件时执行的多个命令的列表。批处理文件可以一直返回到DOS,但仍然适用于现代版本的Windo...