Linux磁盘存储

news2024/11/26 18:45:07

磁盘存储

设备文件

设备文件是类Unix操作系统(包括Linux)中一种特殊的文件类型,它代表了设备接口,使得用户空间的程序可以通过标准的文件操作来访问和控制硬件设备。设备文件为周边设备提供了简单的接口,如打印机、硬盘等,也可以访问没有连接到任何真实设备的系统资源,如随机数生成器等。

设备文件类型

在Linux系统中,设备文件主要可以分为以下三种类型:

  • 字符设备文件:

字符设备文件是一种按字节流进行操作的设备,如串口、键盘、鼠标等。它们提供的是一种基于字符的输入输出接口,可以使用标准的文件操作函数(如read、write、open和close)对其进行操作。

  • 块设备文件:

块设备文件是一种按块进行操作的设备,如硬盘、U盘等。它们提供的是一种基于块的输入输出接口,通常使用特定的块设备操作函数(如request_queue、submit_bio等)进行操作。

  • 网络设备文件:

网络设备文件是一种用于网络通信的设备,如网卡等。它们提供的是一种基于数据包的输入输出接口,可以使用特定的网络操作函数(如sendmsg、recvmsg等)进行操作。

磁盘设备名称

  • 物理磁盘

设备类型
SAS,SATA,SCSI,IDE,USB
设备文件命名
/dev/sda; /dev/sdb; /dev/sdc; …

  • 固态硬盘

设备类型
nvme协议硬盘 /dev/nvme0n1;
设备文件命名
/dev/nvme0n2; /dev/nvme0n3; …

  • 虚拟磁盘(虚拟环境下)

设备类型
/dev/vda;
设备文件命名
/dev/vdb; /dev/xvda; /dev/xvdb; …

硬盘

常见硬盘

  • 机械硬盘(HDD)

Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。
机械硬盘中所有的盘片都装在一个旋转轴 上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。
硬盘为精密设备,进入硬盘的空气必须过滤。

  • 固态硬盘(SSD)

Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致

关联和区别

  • 机械硬盘(Hard Disk Drive, HDD)

传统的硬盘类型,采用磁性存储技术,通过盘片的旋转和磁头的移动来读写数据。
存储容量大、价格相对较低,但读写速度相对较慢,且存在机械结构,易受震动影响。

  • 固态硬盘(Solid State Drive, SSD)

采用闪存芯片作为存储介质的新型硬盘,没有机械结构,因此读写速度极快,抗震性能优越。
价格相对较高,但随着技术进步逐渐亲民;存储容量虽然有限,但已能满足大多数应用需求;适用于需要高读写速度和稳定性的场景。
注意:硬盘有价,数据无价,目前SSD不能完全取代HHD

存储术语

磁盘术语

MBR 硬盘的第一个扇区(0道0头1扇区)

MBR(Master Boot Record, MBR)的作用至关重要,硬盘的第一个扇区(0道0头1扇区),包含硬盘的主引导程序和分区表。它是计算机启动的关键,包含了引导代码,能够加载操作系统,并告诉计算机硬盘上的分区信息。

ZBR 区位记录,是一种物理优化硬盘存储空间的方法

磁盘寻址

  • CHS

采用24bit位寻址
最大寻址空间8GB

  • LBA

采用28位寻址模式,最大寻址空间128GB
采用48位寻址模式,最大寻址空间128PB

磁盘类型
lsblk -d name,rota
查看分区
fdisk -l /dev/sda

常见命令

df 查看文件系统

df -HT

du查看文件系统目录

du -sh /etc

dd定制文件系统文件

dd if=SRC of=DEST bs=N count=N

测试硬盘写速度
在这里插入图片描述

测试硬盘读速度
在这里插入图片描述

存储管理

基础知识

为什么要磁盘分区?

使用磁盘分区的原因主要有以下几点:

  • 数据管理:

    通过分区,用户可以将不同类型的文件存放在不同的分区中,便于分类管理和查找。

  • 系统安全:

    将操作系统和用户数据分别存放在不同的分区中,可以在系统崩溃或需要重装时保护用户数据不受影响。

  • 性能优化:
    合理的分区策略可以减少磁盘碎片,提高磁盘的访问速度和效率。

  • 多操作系统支持:

    通过分区,用户可以在同一台计算机上安装并运行多个操作系统,满足不同的应用需
    求。

管理磁盘步骤

  1. 设备分区
  2. 文件系统格式化
  3. 挂载到文件系统中

分区类型

  • 主分区

硬盘上第一个创建的分区
引导功能的分区
小于2T的硬盘,最大可以创建4个主分区

  • 扩展分区

扩展分区本身不能直接使用
需要将其划分为逻辑分区才能使用
一个物理硬盘上最多只能有3个主分区和1个扩展分区
扩展分区的最大数量不受限制

  • 逻辑分区

可以单独进行格式化和使用
它们没有独立的引导块,因此不能作为启动分区

  • 非引导分区

不具有引导功能的任意分区

在这里插入图片描述

分区方式

  • MBR

    使用32位的LBA寻址方式
    最多支持4个主分区,或者3个主分区和1个扩展分区

  • GPT

    使用64位LBA寻址方式
    支持最多128个分区
    在硬盘两端各保存一份分区表副本,以及CRC32校验

MBR方案

特点

  • 每个扇区512字节

  • 第一个扇区

    446bytes
    Boot loader启动相关
    64bytes
    分区表
    2bytes
    55AA,标识位

centos系统

hexdump -n 5132 -Cv /dev/sda |tail -5

ubuntu系统

hexdump -n 512 -Cv /dev/sda |tail -5

可以看到sda是已有磁盘,右下角为55 aa
sdb是新磁盘,右下角为 00 00
在这里插入图片描述

命令解读:

 -v 表示以“verbose”模式显示,
 -C 表示以十六进制和 ASCII 字符混合显示,
 -n 512 表示只显示前 512 字节。
 - 分区标识
	dos

在这里插入图片描述

分区样式

  • 最多有4个主分区

  • 3主分区+1扩展(N个逻辑分区)

  • 为什么不能超过4个

    每个分区项的关键项信息就占用16字节
    MBR分区表的大小是固定的,只有64字节
    在这里插入图片描述

备份MBR

备份

dd if=/dev/sda of=/data/dpt.img bs=1 count=64 skip=446

在这里插入图片描述
在这里插入图片描述
结果显示备份文件大小为64bytes
在这里插入图片描述

还原

dd if=dpt.img of=/dev/sda bs=1 seek=446

GPT分区

命令解读
操作管理分区

fdisk [options] -l [<disk>]
fdisk -l /dev/sda

查看设备信息

lsblk [options] [<device> ...]
lsblk -f

fdisk分区

基础操作命令

fdisk -l
fdisk -l /dev/sda
cat /proc/partitions

创建分区

基本流程

  • 前提

     准备磁盘设备
    
  • 进入交互模式

     fdisk /dev/sdb
    
  • 查看分区

     p
    
  • 创建分区

     n
    
  • 选择类型

     p 主分区 enter
     e 扩展分区 enter
    
  • 确定分区号

     1或者enter
    
  • 扇区边界

     起始扇区
     enter
     第一个扇区的起始位置2048
     
     结束扇区
     +10G enter
    
  • 保存分区

     w enter
    

管理分区

删除分区

进入交互模式
fdisk /dev/sdb
删除分区
d enter
选择编号
6 enter

非交互删除分区

echo -e 'd\n\nd\n\nd\n\nw' | fdisk /dev/sdb

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

非交互创建分区

echo -e 'n\np\n\n\n+10G\nw' | fdisk /dev/sdb

在这里插入图片描述
在这里插入图片描述

gdisk分区

gdisk是对gpt进行分区工具
与fdisk操作一样,界面不同
命令格式

gdisk [-l] device

parted分区

  • 定位

    通常用于处理大型磁盘
    更复杂的分区布局

  • 格式

parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]

可以基于容量大小、容量比例的方式定制分区

  • 信息查看

交互方式

parted
help

免交互查看

parted /dev/sdb help

显示所有分区

parted -l

指定磁盘查看分区

parted /dev/sdb print
  • 创建GPT分区

增加标识

parted /dev/sdb mklabel gpt
parted /dev/sdb print
  • 创建分区
parted /dev/sdb mkpart primary 1 1001
parted /dev/sdb mkpart primary 1002 1102
parted /dev/sdb mkpart primary ext4 1102MB 1902MB
  • 分区容量调整
parted /dev/sdb resizepart 3 4000MB
  • 删除分区
parted /dev/sdb print
parted /dev/sdb rm 4

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

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

相关文章

《重学Java设计模式》之 原型模式

原型模式主要解决的问题就是创建重复对象&#xff0c;而这部分对象内容本身比较复杂&#xff0c;生成过程可能从库或者RPC接口中获取数据的耗时较长&#xff0c;因此采用克隆的方式节省时间。 案例&#xff1a;上机考试抽题&#xff0c;要求打乱题目、答案数据 工厂结构 选择题…

C++【string类,模拟实现string类】

&#x1f31f;个人主页&#xff1a;落叶 &#x1f31f;当前专栏: C专栏 目录 为什么学习string类 C语言中的字符串 标准库中的string类 auto和范围for auto关键字 迭代器 范围for string类的常用接口说明和使用 1. string类对象的常见构造 2.string类对象的容量操作 3…

《计算机网络》课后探研题书面报告_了解网络设备

引言 计算机网络自20世纪60年代首次提出以来&#xff0c;已经发展成为现代社会不可或缺的基础设施。最早的计算机网络仅用于连接少数设备&#xff0c;用于简单的数据传递与共享。随着互联网技术的迅速普及和计算机技术的飞跃发展&#xff0c;网络的规模和复杂性不断增加&#…

怎么搭建小程序商城

我是【码云数智】平台的黄导&#xff0c;今天分享&#xff1a;怎么搭建小程序商城 商城小程序怎么开通&#xff0c;通过微商城将线上线下渠道打通&#xff0c;消费者既可以在线上微商城随时随地浏览商品、下单购买&#xff0c;也可以选择到门店进行线下体验和购买。 01、小程…

git原理与上传

言&#xff1a; git是一个软件&#xff0c;gitee/github是一个网站&#xff0c;这里有什么联系吗&#xff1f;我们身为一个程序员不可能不知道github&#xff0c;但是毕竟这是外国的网站&#xff0c;我们不翻墙的情况下&#xff0c;是无法访问的(或者就是太慢了&#xff0c;或…

3DMax使用 MCG实现简单克隆修改器

3DMax中的MCG工具集允许用户创建几种不同类型的插件。在这个例子中&#xff0c;我们正在创建一个简单的克隆修改器。 将修改器添加到对象时&#xff0c;将使用“数量”整数值克隆网格n次&#xff0c;并使用X、Y和Z中的“缩放”、“旋转”和“移动”微调器控制每个网格的偏移。…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十七集:制作第二个BOSS燥郁的毛里克

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、制作游戏第二个BOSS燥郁的毛里克 1.导入素材和制作相关动画1.5处理玩家受到战吼相关行为逻辑处理2.制作相应的行为控制和生命系统管理3.制作战斗场景和战斗…

springboot-整合多数据源配置

简介 主要介绍两种整合方式,分别是 springboot+mybatis 使用分包方式整合,和 springboot+druid+mybatisplus 使用注解方式整合。 一、表结构 在本地新建两个数据库,名称分别为db1和db2,新建一张user表,表结构如下: SQL代码: CREATE TABLE `user` (`id` int(11) NOT …

LeetCode 热题100 之 回溯1

1.全排列 思路分析1&#xff08;回溯&#xff09;&#xff1a;要生成一个不含重复数字的数组 nums 的所有可能全排列&#xff0c;我们可以使用回溯算法。这种算法通过递归的方法探索所有可能的排列组合&#xff0c;并在合适的时机进行回溯&#xff0c;确保不会遗漏任何排列。回…

笔记整理—linux驱动开发部分(4)驱动框架

内核中&#xff0c;针对每种驱动都设计了一套成熟的、标准的、典型的驱动框架&#xff0c;实现将相同部分实现&#xff0c;不同部分留出接口给工程师自行发挥。具有以下特点&#xff1a;①简单化&#xff1b;②标准化&#xff1b;③统一管控系统资源&#xff1b;④特定化接口函…

靠谷歌广告赚了100美刀,程序员可以照这个思路去干

复制网站盈利尝试&#xff1a;谷歌广告收入之路的挑战与反思 背景介绍 在互联网的浩瀚海洋中&#xff0c;网站复制现象屡见不鲜。近期&#xff0c;我尝试复制了一个名为网站B的核心代码&#xff0c;并成功发布了自己的网站。通过谷歌搜索引擎的优化&#xff08;SEO&#xff0…

Windows 10/11 设置锁屏密码的方法以及设置PIN密码

Windows 10/11 设置锁屏密码的方法 一、打开设置&#xff1a; 按 Win I 快捷键打开“设置”。 二、进入账户设置&#xff1a; 在设置窗口中点击“账户”。 三、选择登录选项&#xff1a; 在左侧菜单中选择“登录选项”。 四、添加密码&#xff1a; …

Python并发编程库:Asyncio的异步编程实战

Python并发编程库&#xff1a;Asyncio的异步编程实战 在现代应用中&#xff0c;并发和高效的I/O处理是影响系统性能的关键因素之一。Python的asyncio库是专为异步编程设计的模块&#xff0c;提供了一种更加高效、易读的并发编程方式&#xff0c;适用于处理大量的I/O密集型任务…

当软件质量遇上计划性报废:测试行业该如何应对?

那天&#xff0c;我像往常一样开车在路上&#xff0c;车窗外的风景飞快掠过。就在这时&#xff0c;我在听的一档播客里&#xff0c;突然提到了一个让我不得不停下来思考的词——“计划性报废”。这个词让我愣了一下&#xff0c;伴随着车轮的转动&#xff0c;我的思绪也随之转了…

【Seed-Labs】SQL Injection Attack Lab

Overview SQL 注入是一种代码注入技术&#xff0c;利用的是网络应用程序与数据库服务器之间接口的漏洞。当用户输入的信息在发送到后端数据库服务器之前没有在网络应用程序中进行正确检查时&#xff0c;就会出现这种漏洞。 许多网络应用程序从用户那里获取输入&#xff0c;然…

linux笔记(DNS)

一、概念 DNS&#xff08;Domain Name System&#xff09;DNS 是一种分布式网络目录服务&#xff0c;主要用于将人类易于记忆的域名&#xff08;如 www.example.com&#xff09;转换为计算机可识别的 IP 地址&#xff08;如 192.168.1.1&#xff09;。它就像是互联网的电话簿&a…

【计网】实现reactor反应堆模型 --- 框架搭建

没有一颗星&#xff0c; 会因为追求梦想而受伤&#xff0c; 当你真心渴望某样东西时&#xff0c; 整个宇宙都会来帮忙。 --- 保罗・戈埃罗 《牧羊少年奇幻之旅》--- 实现Reactor反应堆模型 1 前言2 框架搭建3 准备工作4 Reactor类的设计5 Connection连接接口6 回调方法 1 …

minikube 的 Kubernetes 入门教程--(五)

本文记录 Minikube 在 Kubernetes 上安装 WordPress 和 MySQL。 这两个应用都使用 PersistentVolumes 和 PersistentVolumeClaims 保存数据。 在深入这些步骤之前&#xff0c;先分享来自kubernetes.io教程。 链接>>使用持久卷部署 WordPress 和 MySQL | Kubernetes 获…

算法详解——链表的归并排序非递归解法

算法详解——链表的归并排序非递归解法 本文使用倍增法加上归并排序操作实现了对链表的快速排序&#xff0c;比起一般的递归式归并排序要节省空间并且实现要简单的多&#xff0c;比起一般的迭代式归并排序实现也要简单。 1. 题目假设 给定链表的头结点 head &#xff0c;请将其…

【网络-交换机】生成树协议、环路检测

路由优先级 路由优先级决定了在多种可达的路由类型中&#xff0c;哪种路由将被用来转发数据包。路由优先级值越低&#xff0c;对应路由的优先级越高&#xff0c;优先级值255表示对应的路由不可达。一般情况下&#xff0c;静态路由的优先级为1&#xff0c;OSPF路由优先级为110&a…