baby sword‘s blog baby sword‘s blog
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)

zhengjian

不敢承担失去的风险,是不可能抓住梦想的
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)
  • 计算机网络

  • 操作系统

    • 如何在VM上创建一个linux虚拟机
    • linux命令解析
    • linux一些重要的命令
    • linux中的文件类型
    • linux中的交换区
    • linux中分区是什么
      • 1. linux分区介绍
      • 2. linux为什么要进行分区
      • 3. 分区的命名
      • 4. 分区的分类
        • 什么是主分区、逻辑分区、扩展分区
        • 分区文件系统
      • 5. 分区常用的命令
        • fdisk -l
        • 扇区sectors
        • fdisk -l 路径
        • fdisk 磁盘路径
    • 环境变量
    • 银行家算法
    • 操作系统内存管理
    • 虚拟内存
    • 硬链接和软链接有什么区别
    • 常见的调度算法
    • 零拷贝技术
    • yum
    • systemctl
    • 汇编语言
    • 汇编语言实操
    • 死锁
  • 算法

  • 计算机基础
  • 操作系统
xugaoyi
2023-06-09
目录

linux中分区是什么

# 1. linux分区介绍

用易于理解的话就是:linux中的分区和windows上的逻辑卷差不多(C、D盘)。

在linux中,分区就是把一片空间分割成多块,是指将块设备(如硬盘)按照其物理地址分成若干区域作为可独立管理的“子”设备。 linux分区有两种常见表现形式:MBR分区表和GPT分区表。

# 2. linux为什么要进行分区

那么在linux中为什么会使用分区呢?

  1. 提高性能:通过将数据划分到多个分区中,可以减少读取和写入数据时的碎片。这有助于提高文件系统的性能。
  2. 增加灵活性:可以针对不同的需求和应用程序选择不同的分区大小和文件系统类型。
  3. 增强数据安全:将操作系统和数据存储在不同的分区中可以防止操作系统故障导致数据损坏。

更详细的解释:

防止数据丢失:如果系统只有一个分区,那么这个分区损坏,用户将会丢失所的有数据。

增加磁盘空间使用效率:可以用不同的区块大小来格式化分区,如果有很多1K的文件,而硬盘分区区块大小为4K,那么每存储一个文件将会浪费3K空间。这时我们需要取这些文件大小的平均值进行区块大小的划分。

数据激增到极限不会引起系统挂起:将用户数据和系统数据分开,可以避免用户数据填满整个硬盘,引起的系挂起。

# 3. 分区的命名

在linux中磁盘的名字表示方法:

命令规则:主设备号 + 次设备号 + 磁盘分区号

对于目前常见的磁盘,一般表示为:

sd[a-z]x

主设备号代表设备的类型,相同的主设备号表示同类型的设备。当前常见磁盘的主设备号为 sd。

次设备号代表同类设备中的序号,用 “a-z” 表示。比如 /dev/sda 表示第一块磁盘,/dev/sdb 表示第二块磁盘。

x 表示磁盘分区编号。在每块磁盘上可能会划分多个分区,针对每个分区,Linux 用 /dev/sdbx 表示,这里的 x 表示第二块磁盘的第 x 个分区。

image-20230411141453510

该系统中一共有四块磁盘 /dev/sda,/dev/sdb,/dev/sdc 和 /dev/sdd。其中的 /dev/sda 上创建了三个分区,分别是 /dev/sda1,/dev/sda2,/dev/sda5;/dev/sdb 上只有一个分区 /dev/sdb1。而 /dev/sdc 和 /dev/sdd 则尚未分区(也肯能是只有一个分区,分区的名称和磁盘的名称相同)。

# 4. 分区的分类

在 Linux 中,磁盘分区分为主分区和扩展分区。

主分区是可以直接用于安装操作系统或者存储数据的分区。一个硬盘最多只能有四个主分区,其中一个可以被标记为活动分区,用于启动操作系统。

但如果需要在一块硬盘上创建更多的分区,则需要使用扩展分区。扩展分区实际上是一种特殊的主分区,它本身并不包含文件系统,而是可以划分为多个逻辑分区。这些逻辑分区会被视为独立的分区,并且可以使用文件系统进行格式化和挂载。因此,通过使用扩展分区,一个硬盘可以划分出更多的分区,而不受主分区数量的限制。

需要注意的是,在一个硬盘上只能有一个扩展分区,而且扩展分区的数量也不能超过三个。因此,如果需要在一个硬盘上划分出很多分区,可能需要采用多个硬盘、RAID 或 LVM 等技术来扩大存储空间。

# 什么是主分区、逻辑分区、扩展分区

磁盘的分区由主分区、扩展分区和逻辑分区组成。在一块磁盘上,主分区的最大个数是 4,其中扩展分区也是一个主分区,并且最多只能有一个扩展分区,但可以在扩展分区上创建多个逻辑分区。因此主分区(包括扩展分区)的范围是 1-4,逻辑分区从 5 开始。对于逻辑分区,Linux 规定它们必须建立在扩展分区上,而不是建立在主分区上。

主分区的作用是用来启动操作系统的,主要存放操作系统的启动或引导程序,因此建议操作系统的引导程序都放在主分区,比如 Linux 的 /boot 分区,最好放在主分区上:

image-20230411142212836

扩展分区只不过是逻辑分区的 “容器 (opens new window)”。实际上只有主分区和逻辑分区是用来进行数据存储 (opens new window)的,因而可以将数据集中存放在磁盘的逻辑分区中。

image-20230411143308487

# 分区文件系统

Linux支持多种不同的文件系统,每种文件系统都有其自己的特点和用途。以下是常见的几种文件系统及其主要用途:

  1. ext4:是Linux中最常用的文件系统,可以支持非常大的文件和分区,并具有快速恢复能力。
  2. Btrfs:一种新的文件系统,支持快照、压缩和数据校验等功能,适用于需要高级数据管理和安全性的场景。
  3. XFS:是一个高性能的文件系统,适用于大型文件和高吞吐量的应用程序,如文件服务器和数据库服务器。
  4. NTFS:是Windows中最常用的文件系统,但它也可以在Linux上使用。适用于在Linux系统中读写NTFS格式的硬盘、U盘等存储设备。
  5. FAT32:适用于小型存储设备,比如U盘,它可以在多种操作系统之间共享文件。

选择哪种文件系统取决于你需要存储什么类型的数据,以及你的系统所需的性能和数据安全级别。

# 5. 分区常用的命令

# fdisk -l

下面是linux上行用的一些磁盘指令:

fdisk -l

Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xdd2f6b88

Device     Boot Start      End  Sectors Size Id Type
/dev/vda1  *     2048 83886046 83883999  40G 83 Linux
1
2
3
4
5
6
7
8
9

上面显示的意思是什么呢?

这是关于磁盘 /dev/vda 的信息:

大小为 40 GiB,即 42949672960 字节,共有 83886080 个扇区。
每个扇区大小为 512 字节。
磁盘采用的分区表类型为 dos。
磁盘标识符为 0xdd2f6b88。
磁盘上有一个主分区 /dev/vda1,启动标志为 *。该分区起始扇区编号为 2048,结束扇区编号为 83886046,共有 83883999 个扇区,大小为 40G。该分区类型为 Linux。
1
2
3
4
5
6
7

我们再看看另外一个例子:

image-20230411143005407

输出中的前几行是磁盘的基本信息,比如总大小为 80G,一共有多少个扇区(sector),每个扇区的大小等等。红框中的则是我们比较关注的分区信息:

  • 第一列 Device 显示了磁盘分区对应的设备文件名。
  • 第二列 Boot 显示是否为引导分区,上图中的 /dev/sda1 就是引导分区。
  • 第三列 Start 表示磁盘分区的起始位置。
  • 第四列 End 表示磁盘分区的结束位置。
  • 第五列 Sectors 表示分区占用的扇区数目。
  • 第六列 Size 显示分区的大小。
  • 第七列和第八列显示的内容相同,分别是数值 ID 及其文字描述。 Id 列显示了磁盘分区对应的 ID,根据分区的不同,分区对应的 ID 号也不相同。Linux 下用 83 表示主分区和逻辑分区,5 表示扩展分区,8e 表示 LVM 分区,82 表示交换分区,7 表示 NTFS 分区。

上图中的信息表明:/dev/sda1 是一个主分区并且被用作引导分区;/dev/sda2 是扩展分区,其中只有一个逻辑分区,即 /dev/sda5,这点可以通过两个分区相同的大小证明。

# 扇区sectors

我们看到上面有扇区sectors的个数,那这个东西指的是什么呢?

​ 其实,在磁盘中,基本组成单位就是扇区,而分区的基本组成单位之一也是扇区。

​ 在一个分区中,所有的扇区都属于同一文件系统或数据集合。文件系统或数据会被存储在这些扇区上,以便于操作系统使用和访问。每个分区通常有一个文件系统标识符,它决定了操作系统如何解释分区中的数据。

# fdisk -l 路径

如果想看某一个磁盘的具体信息,可以使用以下这个命令

$ sudo fdisk -l /dev/vda
1

image-20230411142613937

这里就可以知道fdisk -l是看所有磁盘的分区信息,而后面跟上具体的路径,可以看具体磁盘的分区信息

那如果我们跟的分区呢?

image-20230411142806934

可以看到分区的详细信息也是可以查看的。

# fdisk 磁盘路径

上面这个命令主要是一种交互操作,用来创建、删除、修改等对应磁盘的分区

那么我如何创建一个新的分区呢?

fdisk 是 Linux 系统中一款功能强大的磁盘分区管理工具,可以观察硬盘的使用情况,也可以用来管理磁盘分区。本文仅介绍如何使用 fdisk 创建新的磁盘分区。

假设我们的 Linux 系统中增加了一块新的磁盘,系统对应的设备名为 /dev/sdd,下面我们通过 fdisk 命令对这个磁盘进行分区。

$ sudo fdisk /dev/sdd
1

img

输入命令 n 来创建新分区:

img

根据上面的提示,我们选择 p 来创建主分区,然后提示我们输入分区的编号:

img

主分区的编号为 1- 4,这里我们输入了 1。接下来是设置分区的大小:

img

分区的大小是通过设置分区开始处的扇区和结束处的扇区设置的。这里如果回车两次会把整个磁盘划分为一个分区,也就是整个磁盘的容器都分给了一个分区。这样一个简单的分区就差不多完成了,注意此时的分区信息还没有写入到磁盘中,在这里还可以反悔,如果确认执行上面的分区,执行 w 命令就行了:

img

这时分区操作已经完成了,我们可以通过下面的命令查看分区的结果:

$ sudo fdisk -l /dev/sdd
1

img

如果嫌上面的执行过程麻烦,可以用下面的一行命令起到相同的效果:

$ (echo n; echo p; echo 1; echo ; echo ; echo w) | sudo fdisk /dev/sdd
1

更改分区的类型

上面创建的分区类型默认为 83(Linux),如果想要一个 8e(Linux LVM)类型的分区该怎么办?我们可以继续使用 fdisk 命令修改分区的类型,这次输入 t 命令来修改分区的类型:

img

接下来可以选择要修改的分区号,我们只有一个分区,所以默认就是 1。

下面我们可以通过 L 命令来查看 fdisk 命令支持的分区类型:

img

我们需要创建 LVM,因此我们使用 LVM 的类型代码 8e:

img

最后输入 w 命令确认变更。再次查看 /dev/sdd 的分区信息,此时分区类型已经变成了 Linux LVM:

img

总结

分区是使用磁盘的基础,在分区完成后还需要对分区进行格式化,并把格式化后的文件系统挂载到 Linux 系统之后才能存储文件。

参考:

如果想要详细了解fdisk中的交互操作到底应该怎么做,可以参考以下的网址:https://www.cnblogs.com/machangwei-8/p/10353683.html (opens new window)

编辑 (opens new window)
上次更新: 2024/02/22, 14:03:19
linux中的交换区
环境变量

← linux中的交换区 环境变量→

最近更新
01
spark基础
02-22
02
mysql读写分离和分库分表
02-22
03
数据库迁移
02-22
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式