我们有个工控机,其操作体系是ubuntu 20.04。可以接入一个固态硬盘。将固态硬盘插好后,就要进行挂载。在AI的引导下,过程并不顺利。记载如下:
1、检查硬盘是否被辨认
安装好硬盘后,运行以下下令来检查Linux体系是否已辨认新硬盘:
结果如下
- forlinx@FCU2601:~$ lsblk
- NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 953.9G 0 diskmmcblk0 179:0 0 28.9G 0 disk|-mmcblk0p1 179:1 0 4M 0 part|-mmcblk0p2 179:2 0 4M 0 part|-mmcblk0p3 179:3 0 32M 0 part|-mmcblk0p4 179:4 0 32M 0 part|-mmcblk0p5 179:5 0 32M 0 part`-mmcblk0p6 179:6 0 28.8G 0 part /mmcblk0boot0 179:32 0 4M 1 diskmmcblk0boot1 179:64 0 4M 1 disk
复制代码 可以看到,有一个名为"sda"的盘被辨认了。lsblk
是一个下令行工具,用于列出体系中所有存储设备的信息,基于 Linux 体系的主机使用它来显示有关可用块设备的信息。“lsblk
” 代表 “list block devices”,即列出块设备。
2. 分区
为啥是/dev/sda 呢?在lsblk
下令中,我们看到的明明是sda啊。在Linux体系中,设备文件是用户空间与内核空间交互的一种方式,它们通常位于/dev目次下。这个目次包含了所有设备的特殊文件,包括硬盘、分区、USB设备、声卡等,dev是所有设备文件所在的目次,因此要以“/dev”开头。
而sda则是体系为外接的硬盘自动分配的名字。sd本来代表“SCSI disk”,但泛指硬盘,a是序号,第一个是sda,第二个是sdb,。。。
在 fdisk 中操作如下:
- 输入 n 创建一个新分区:
- 选择 p(主分区)
- 分区号直接回车(默认1)
- 起始扇区回车(默认)
- 结束扇区回车(整个磁盘)
- 输入 w 保存并退出。
复制代码 此时应该看到一个新的分区 /dev/sda1:
- forlinx@FCU2601:/mnt/sda$ lsblk
- NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 953.9G 0 disk`-sda1 8:1 0 953.9G 0 partmmcblk0 179:0 0 28.9G 0 disk|-mmcblk0p1 179:1 0 4M 0 part|-mmcblk0p2 179:2 0 4M 0 part|-mmcblk0p3 179:3 0 32M 0 part|-mmcblk0p4 179:4 0 32M 0 part|-mmcblk0p5 179:5 0 32M 0 part`-mmcblk0p6 179:6 0 28.8G 0 part /mmcblk0boot0 179:32 0 4M 1 diskmmcblk0boot1 179:64 0 4M 1 disk
复制代码 3. 格式化为 ext4 文件体系
为什么要格式化为ext4文件体系?
ext4 是 Linux 体系中最常用、最稳固、兼容性最好的文件体系之一,得当大多数使用场景。格式化是为了让这块新硬盘能被 Linux 精确辨认和使用。网上有些教程给出的例子是格式化为fuseblk,其实这可能是将固态硬盘当成U盘用,可插拔,而我是想永世性地扩展工控机的存储空间,因此还是选用ext4。
4. 创建挂载点目次
创建一个目次,用它指向固态硬盘。访问它即等于访问固态硬盘。
这个名字自己起的,但mnt是约定俗成的名称,它是 Unix 和 Linux 体系中的一个传统目次,用于作为“挂载点”(mount point)来暂时挂载文件体系的标准位置。这个目次的名称是“mount”的缩写,意指在此处挂载(mount)其他文件体系或外部存储设备。
5. 挂载
1)手动挂载
- sudo mount -t ext4 /dev/sda1 /mnt/sda
复制代码 将设备 /dev/sda1 这个分区挂载(mount)到 /mnt/sda 这个目次下,并指定文件体系类型为 ext4。但本语句只是暂时挂载,当操作体系重启后,挂载即消散。应该使用下面的挂载方式。
-t ext4,指定要挂载的设备上的文件体系类型是 ext4。
2)自动挂载(写入 fstab)
修改体系文件/etc/fstab。这是一个非常重要的体系设置文件,在 Linux 体系中用于界说开机时自动挂载的文件体系(磁盘分区、网络存储等)。
首先备份一下
- sudo cp /etc/fstab /etc/fstab.bak
复制代码 打开文件:
然后在文件/etc/fstab末尾加上一句:
- /dev/sda1 /mnt/sda ext4 defaults 0 2
复制代码
有关本语句的一些解释:
<挂载选项>:defaults
作用:设置挂载时的权限和行为。
defaults 的含义:是以下常用选项的缩写:
rw:可读可写(若设为 ro 则为只读)。
suid:允许设置 SUID 权限(用于某些特殊步伐)。
dev:允许访问设备文件(如 /mnt/sda 下的 cdrom)。
exec:允许执行可执行文件(若设为 noexec 则禁止)。
auto:体系启动时自动挂载(若设为 noauto 则需手动挂载)。
nouser:普通用户不能挂载(只有 root 可挂载)。
async:异步读写(提升性能,但可能丢失数据,默认)。
自界说选项示例:
允许普通用户挂载:defaults,user
禁止自动挂载:defaults,noauto
强制为只读:ro
:0
作用:指定是否对该分区进行备份(由 dump 工具使用,现代体系险些不消)。
值阐明:
0:不备份。
1:每天备份。
2:不定期备份。
近况:多数场景下直接设为 0 即可。
:2
作用:指定体系启动时执行磁盘检查(fsck)的次序。
值阐明:
0:不检查(如 swap 分区、U 盘)。
1:优先检查根分区(/)(确保体系盘无错)。
2:检查其他分区(如数据盘、挂载的硬盘)。
注意:根分区必须设为 1,其他分区设为 2 或 0(非 ext4 格式设为 0)。
6. 权限分配
我目次挂载了以后,只有root才能写入,当前用户只读。人工智能一味地说,这个应该在fstab文件中设置。题目是,root可以写入啊,步骤5的自动挂载语句/dev/sda1 /mnt/sda ext4 defaults 0 2
中,defaults就包含了指明挂载设备可读可写,而当前用户不能写入,是权限的题目,而并不是由于挂载时设为只读,相反,我们挂载时是指定可读可写的。
咋办呢?修改挂载目次的owner为当前用户
- sudo chown forlinx:forlinx /mnt/sda # 设置当前用户为所有者
复制代码 7. 题目
在步骤5的自动挂载里,踩了一个坑。人工智能指点我,挂载的时候,要用UUID才够准确,但究竟证明,采用UUID挂载,反而不能成功,不知道为什么。
1)为了得到固态硬盘的UUID,先运行语句
- forlinx@FCU2601:~$ sudo blkid /dev/sda1
- /dev/sda1: UUID="be676f65-feb3-4c68-bfac-b28649d605a5" TYPE="ext4" PARTUUID="53591fcc-01"
复制代码 2)然后在/etc/fstab中加入挂载语句:
- UUID=be676f65-feb3-4c68-bfac-b28649d605a5 /mnt/sda ext4 defaults 0 2
复制代码
但究竟上行不通,如许修改了fstab后,重启操作体系以后,根本没有挂载成功。如果手动挂载,运行语句“sudo mount -a”,还会报错:
- forlinx@FCU2601:~/work/temp$ sudo mount -a
- mount: /mnt/sda: wrong fs type, bad option, bad superblock on /dev/sda1, missing codepage or helper program, or other error.
复制代码 一定是如许才行:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|