LinuxBasicsForHackers笔记 -- 文件系统和存储设备管理

news2025/1/25 9:03:41

设备目录/dev

Linux 有一个特殊的目录,其中包含代表每个连接设备的文件:相应命名的 /dev 目录。

/dev中有很多设备列表。 特别令人感兴趣的是设备 sda1、sda2、sda3、sdb 和 sdb1,它们通常是硬盘驱动器及其分区以及 USB 闪存驱动器及其分区。

Linux 如何表示存储设备

Linux 对随后安装在文件系统上的驱动器使用逻辑标签。 这些逻辑标签将根据驱动器的安装位置而变化,这意味着同一硬盘驱动器在不同时间可能有不同的标签,具体取决于安装的位置和时间。

当系统有多个硬盘驱动器时,Linux 只是通过按字母顺序递增最后一个字母来连续命名它们,因此第一个驱动器是 sda,第二个驱动器是 sdb,第三个驱动器是 sdc,如下表。 sd 后面的序列字母通常称为主编号。

在这里插入图片描述

驱动器分区

某些驱动器可以分为多个分区,以便管理和分离信息。Linux 用驱动器名称后面的次要编号来标记每个分区。 这样,第一个 SATA 驱动器上的第一个分区将是 sda1。 第二个分区将是 sda2,第三个分区是 sda3,依此类推,如下表所示。

在这里插入图片描述
有时,您可能想要查看 Linux 系统上的分区,以了解您拥有哪些分区以及每个分区有多少可用容量。 您可以使用 fdisk 实用程序来执行此操作。 将 -l 开关与 fdisk 一起使用会列出所有驱动器的所有分区:fdisk -l

Linux 使用多种不同类型的文件系统,但最常见的是 ext2、ext3 和 ext4。 这些都是 ext(或扩展)文件系统的迭代,其中 ext4 是最新的。

字符设备和块设备

关于 /dev 目录中设备文件的命名还需要注意的是,第一个位置包含 cb。 它看起来像这样:

在这里插入图片描述
这些字母代表设备传入和传出数据的两种方式。 c 代表字符,这样的设备被称为字符设备。 通过逐个字符发送和接收数据与系统交互的外部设备,例如鼠标或键盘,都是字符设备。

b 代表第二种类型:块设备。 它们以数据块(一次多个字节)进行通信,并包括硬盘驱动器和 DVD 驱动器等设备。 这些设备需要更高速度的数据吞吐量,以块的形式发送和接收数据(一次多个字符或字节)。 一旦您知道设备是字符设备还是块设备,您就可以轻松获得有关它的更多信息。

使用 lsblk 列出块设备和信息

Linux 命令 lsblk 是 list block 的缩写,列出 /dev 中列出的每个块设备的一些基本信息。结果与 fdisk -l 的输出类似,但它也会以树的形式显示具有多个分区的设备,将每个设备及其分区显示为分支,并且不需要 root 权限即可运行。

我们还可以看到有关驱动器安装点的信息 - 这是驱动器连接到文件系统的位置。 请注意,硬盘驱动器 sda1 安装在 / 处,闪存驱动器安装在 /media 处。

挂载和卸载

即使设备在物理上连接到系统,它也不一定在逻辑上连接到操作系统并且可供操作系统使用。

目录树中连接设备的点称为挂载点。 Linux 中的两个主要挂载点是 /mnt/media。 按照惯例,外部 USB 设备和闪存驱动器等设备可以手动挂载到 /mnt,但自动挂载时,将使用 /media 目录(尽管技术上可以使用任何目录)。

自行挂载存储设备

要在文件系统上挂载驱动器,请使用 mount 命令。设备的挂载点应该是一个空目录; 如果将设备挂载到包含子目录和文件的目录上,则挂载的设备将覆盖该目录的内容,使它们不可见且不可用。要将新硬盘 sdb1 挂载在 /mnt 目录中,输入以下命令:mount /dev/sdb1 /mnt

系统在启动时挂载的文件系统保存在 /etc/fstab(文件系统表的缩写)的文件中,系统在每次启动时都会读取该文件。

使用 umount 卸载

与 mount 命令类似,您可以通过输入 umount 命令,然后输入 /dev 目录中设备的文件条目(例如 /dev/sdb)来卸载第二个硬盘驱动器。 请注意,该命令不是拼写为 unmount,而是拼写为 umount(没有 n)。umount /dev/sdb1

您无法卸载繁忙的设备,因此如果系统正在读取或写入该设备,您只会收到错误。

监控文件系统

获取已挂载磁盘的信息

命令 df(disk free)将为我们提供有关任何硬盘或已安装设备(例如 CD、DVD 和闪存驱动器)的基本信息,包括正在使用的空间和可用空间。如果没有任何选项,df 默认为所有已安装的驱动器。 如果要检查不同的驱动器,只需在 df 命令后加上要检查的驱动器表示(例如 df sdb)即可。df

检查错误

fsck 命令(filesystem check的缩写)检查文件系统是否有错误并修复损坏(如果可能),或者将坏区域放入坏块表中以将其标记为坏。

运行fsck命令需要指定要检查的设备文件。 请务必注意,在运行文件系统检查之前必须卸载驱动器。

我可以添加 -p 选项以使 fsck 自动修复设备的任何问题,如下所示:fsck -p /dev/sdb1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1297642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式设备OTA升级的大致过程!

OTA概述 大家好,我是一个软件升级包。这几天呢,我将会进行一次神奇的网络之旅,从开发者的电脑中,一直跑到终端嵌入式设备中。 大家都把我的这个旅游过程叫做 OTA,也就是在线升级。 那么啥叫 OTA 呢?全称…

如何用Qt配置git项目并上传Gitee

1.进入到Qt项目文件夹内,打开 “Git Bash Here” 2.初始化,在“Git Bash Here”中输入 git init 3.加入所有文件,在“Git Bash Here”中输入 git add . (需要注意,git add 后面还有一个点) 4.添加备注,git com…

KUKA机器人在编程时添加需要等待的输入信号的2种方法

KUKA机器人在编程时添加需要等待的输入信号的2种方法 第一种方法:手动输入法 如下图所示,选中某个程序后,点击下方的“打开”, 如下图所示,将光标定位到所需位置,然后按下左上角的“编辑”按钮,此时示教器上会弹出输入键盘, 如下图所示,在键盘上手动输入语句:wait fo…

linux下部署frp客户端服务端-内网穿透

简介 部署在公司内部局域网虚拟机上的服务需要在外网能够访问到,这不就是内网穿透的需求吗,之前通过路由器实现过,现在公司这块路由器不具备这个功能了,目前市面上一些主流的内网穿透工具有:Ngrok,Natapp&…

西南科技大学C++程序设计实验十二(文件流操作)

一、实验目的 1. 熟悉文件的基本操作; 2. 在类中添加打开文件、保存文件、读取文件等处理函数; 二、实验任务 1. 分析完善程序:主函数创建一个文件对象,每次打开文件,在其尾部添加数据。如果文件不存在,则新建该文件。请将空白处需要完善的功能补充完整。 #include …

权威认证!景联文科技入选杭州市2023年第二批省级“专精特新”中小企业认定名单

为深入贯彻党中央国务院和省委省政府培育专精特新的决策部署,10月7日,杭州市经济和信息化委员会公示了2023年杭州“专精特新”企业名单(第二批)。 根据工业和信息化部《优质中小企业梯度培育管理暂行办法》(工信部企业…

我的NPI项目之Android电源系列 -- 关于剩余充满时间的问题(一)

我的新项目是基于高通最新的5G平台,但是由于还没有拿到EVT。所以,就在目旧的平台和OS上进行学习。遇到第一个问题就是插上type-c之后,充满剩余时间异常的问题。 问题描述,在充电过程中,显示充满时间为“0 min left unt…

MSSQL 程序集使用方法

1.C# 写一个程序 1.1新建一个项目【类库【.Net FrameWork】 1.2编写代码 删除 namespace ApiSQLClass { } 代码如下:【具体调用API模式根据具体编写】 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.…

重写 AppiumService 类,添加默认启动参数,并实时显示启动日志

一、前置说明 在Appium的1.6.0版本中引入了AppiumService类,可以很方便的通过该类来管理Appium服务器的启动和停止。经过测试,使用该类的实例执行关闭server时,并没有释放端口号,会导致第二次启动时失败。另外,使用该…

9.基于SpringBoot3+I18N实现国际化

1. 新建资源文件 在resources目录下新建目录i18n, 然后 新建messages_en.properties文件 user.login.erroraccount or password error!新建messages_zh_CN.properties文件 user.login.error帐户或密码错误!2. 新建LocaleConfig.java文件 Configurati…

geolife笔记:整理处理单条轨迹

以 数据集笔记 geolife (操作篇)_geolife数据集-CSDN博客 轨迹为例 1 读取数据 import pandas as pd data pd.read_csv(Geolife Trajectories 1.3/Data//000/Trajectory/20081023025304.plt,headerNone, skiprows6,names[Latitude, Longitude, Not_Im…

手持式安卓主板_PDA安卓板_智能手持终端方案

手持式安卓主板方案是一种智能终端设备,具备自动对焦和闪光灯功能,可以在昏暗的环境下快速扫描二维码并轻松采集数据。该方案还提供多渠道支付和数据采集功能,为用户提供了便捷的体验。 该方案的产品基于手持式安卓主板,并搭载了八…

如何提高Pycharm的使用体验?

汉化 文件---设置---插件---chinese---安装---重启ide 代码补全 tabnine 文件---设置---插件---tabnine---安装---重启ide 重启ide后生效,补全效果如下 自定义背景 文件---设置---外观---背景图像---选择图片---调整透明度保存即可 设置头部声明 英文版…

JVM学习笔记-如何在IDEA打印JVM的GC日志信息

若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可。 拿《深入Java虚拟机》书中的3-7代码例子来演示,如 1 public class JvmTest {2 private static final int _1MB1024*1024;3 public static void main(String…

理解基于 Hadoop 生态的大数据技术架构

转眼间,一年又悄然而逝,时光荏苒,岁月如梭。当回首这段光阴,不禁感叹时间的匆匆,仿佛只是一个眨眼的瞬间,一年的旅程已成为过去,而如今又到了画饼的时刻了 ! 基于 Hadoop 生态的大数…

快速认识什么是:Docker

Docker,一种可以将软件打包到容器中并在任何环境中可靠运行的工具。但什么是容器以及为什么需要容器呢?今天就来一起学快速入门一下Docker吧!希望本文对您有所帮助。 假设您使用 Cobol 构建了一个在某种奇怪风格的 Linux 上运行的应用程序。您…

Spring Boot Async:从入门到精通,原理详解与最佳实践

Spring Boot 的异步功能(Async)允许我们将某些任务异步执行,而不会阻塞主线程。这对于处理耗时的操作非常有用,如发送电子邮件、生成报表、调用外部 API 等。通过异步处理,我们可以释放主线程,让它继续处理…

【学习笔记】lyndon分解

摘抄自quack的ppt。 这部分和 s a sa sa的关联比较大,可以加深对 s a sa sa的理解。 Part 1 如果字符串 s s s的字典序在 s s s以及 s s s的所有后缀中是最小的,则称 s s s是一个 lyndon \text{lyndon} lyndon串。 lyndon \text{lyndon} lyndon分解&a…

连接Redis报错解决方案

连接Redis报错&解决方案 问题描述:Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝,无法连接。 问题原因:redis启动方式不正确 解决方案: 在redis根目录下打开命令行窗口,输入命令redi…

【SpringBoot】分层解耦

1. 三层架构 Controller:控制层。接收前端发送的请求,调用Service层来进行逻辑处理(Service层处理完后,把处理结果返回给Controller层)Service:业务逻辑层。处理具体的业务逻辑。调用Dao层(逻辑…