linux和windows下的分区管理
引入
在linux下我们经常会看到诸如
sda,sdb,sda0,sda1 这样的文件或者名称
那么这些 "东西" 是什么呢?
其实这些 "东西" 是就是外存,俗称硬盘,是硬盘文件在操作系统上的映射,是一个文件。
在windows上就是C盘,D盘之类的"磁盘驱动器",其实就是硬盘分区。
当然这是一个笼统的说法
接下来我们往下看
假若我的电脑上有如下三个外置存储器:
品牌 | 西部数据 | 三星 | 镁光 |
---|---|---|---|
接口 | STAT3 | m.2 Nvme | m.2 |
容量 | 1T | 256G | 256G |
那么在linux的分区管理上就会出现三个文件夹
名为 sda,sdb,sdc
分别依次对应三个硬盘(无论是机械还是固态)
无论是在linux还是在Windows下都是称为disk
而sda0 sda1是sda的分区,称为part
在windows上常见的CDEF盘可能来自一个disk,
也可能分别来自不同的disk
示例1:window下的磁盘管理 (我的电脑 右键管理 找到磁盘管理)
如上图,共有三个disk分别是磁盘0,磁盘1,磁盘2
而他们的分区数有的多达五个有的却只有一个
这取决于用户个人的想法,倘若想要功能清晰一些那么多分几个便是。
这三个disk其实也就对应着linux上的sda,sdb,sdc
(安卓手机上也有 sdcard 的文件夹,其实就是常规用户所拥有权限的文件,对应着安卓手机的内置存储)
window下的磁盘管理的功能简介
示例中的磁盘管理拥有许多功能,举例几个功能如下:
- 驱动器号修改 可以修改某一分区的驱动器号,如将D盘改为W盘
- 删除卷 将该分区的内容清除 等同于格式化并清除驱动器号
- 新建卷 给未分配的存储资源分配路径和驱动器号 还可以指定新的盘符大小,文件格式
- 压缩卷 像挤海绵一样,将尚有储存资源的A盘的空间压缩出来作为未分配储存资源
- 拓展卷 将某一盘符的空间变大等等。。
看了几个功能,想必对路径和驱动器号有些疑惑吧,
驱动器号,某盘的编号。
至于路径我们就需要先了解什么是未分配的存储空间,
未分配的存储空间,即未被使用的存储空间,那么如何使用它呢,需要一个指向它的路标,路径。
给它分配了路径的意思就是,它映射在了操作系统上了
window下的Diskpart功能简介
细心的朋友可能会看到上图windows磁盘管理上有分区是没有驱动器号的
在磁盘管理下也执行不了如上所说的功能
卷名直接叫磁盘1上的磁盘分区1和磁盘分区3
分别是EFI系统分区 OEM系统分区 其实就是windows系统的引导分区和恢复分区
这样的分区不适合用户进行操作,容易引起系统崩溃
倘若是真需要操纵该如何呢
这就有一个应用叫做DISKPART,通过命令行管理员模式打开。
基本操作如下
常用于启动项管理和引导修复
示例2:linux下的分区管理
第一步. 分区
- 查看设备信息
$ find /dev -name 'sd*' -print
>> /dev/sdc
>> /dev/sda2
>> /dev/sda1
>> /dev/sdb
>> /dev/sda
- 运行fdisk命令
$ fdisk /dev/sdb
>> Command (m for help): _
此处要我们输入m,查看命令大全
简单介绍几个如下:
m 查看命令大全
p 查看分区情况
n 创建分区
d 删除分区
w 保存分区结果并退出
q 直接退出(并不保存)
- 开始创建分区 n
$ n
>> Partition type:
>> p primary (0 primary, 0 extended, 4 free)
>> e extended
>> Select (defalut p)
此处可以选择主分区还是拓展分区
& p
>> Partition number (1-4), defalut 1): _
& 1
>> First sector (2048-1048575, default 2048): _
& 按照范围输入分区的开始位置
>> Last sector, +sectors or +size{K,M,G} (2048-1048575, defalut 1048575}: _
& 同上输入分区的结束位置 如 +128M
>> Partition 1 of type Linux and of size 128 MiB is set
- 查看分区状况 p
我们建立了三个主分区和一个拓展分区 Blocks 代表的其实就是分区大小
- 保存分区 w
>> Command (m for help): w
>> The partition table has been altered!
>>
>> Calling ioctl() to re-read partition table.
>> Syncing disks .
于是又返回linux主界面了
第二步. 格式化
- 此时我们再通过find命令查看dev目录下的sd*文件
$ find /dev -name 'sd*' -print
得到结果,与第一次的结果相比多了四个分区,显然这是之前我们通过fdisk产生的分区。
但是到这里并不算走到完结,就如同windows上的未分配空间,还未分配地址和驱动器号
首先我们将分区格式化
$ mkfs.ext4 /dev/sdb1
依次类推将四个文件都按照指定的文件格式进行格式
此处mkfs其实就是make file sytem的缩写
$ mkfs.ext4 /dev/sdb4
当我们格式化第四个分区的时候却发现并没有像之前三个那么顺利
这到底是为什么呢?
其实这就在于两种分区之间的关系了
之前得知,分区分为主分区和拓展分区
而主分区最多只能有四个
硬盘中有存储着分区表,分区表中记录着分区信息,但分区表的大小只有64字节,而每个分区的的信息占16字节,因此最多只能记录四个主分区。
而拓展分区更像是一个拓展的分区表,实际上并不算实质的分区,是为了再创建新的分区而设定的,为了与主分区区分,便称为逻辑分区
逻辑分区是再拓展分区的基础上,如同拓展分区申请了一片区域,而逻辑分区是再拓展分区内申请空间
逻辑分区拓展分区
- 我们再通过fdisk命令进行分区管理
$ fdisk /dev/sdb
发现只能选择逻辑分区了,接下来的操纵就和上面的方式一致了