linux磁盘管理

本文详细介绍了硬盘的结构,包括磁道、扇区和分区的概念,展示了如何使用fdisk命令进行分区,包括主分区、扩展分区和逻辑分区的区别,以及如何修改分区类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        新的硬盘首先需要对其进行分区和格式化,下面来了解一下硬盘的结构如下

        硬盘的磁盘上有一个个圈,每两个圈组成一个磁道。从中间往外发射线,把每个磁道分成一个个扇区,每个扇区的大小是512B。为了更好地理解,我们把所有磁盘拼接起来,如下

        假设磁盘有10000个扇区,第一个分区从2048到6000,第二个分区从6001到 8000,第三个分区从8001到10000。

        每个扇区只能属于一个分区,不能同时属于多个分区。

        第一个扇区比较特殊,叫作 MBR(主引导记录)。

        分区类型包括主分区、扩展分区和逻辑分区

        (1)主分区:直接从硬盘上划分,并可以直接格式化使用的分区。

        (2)扩展分区:直接从硬盘上划分,但是不直接使田的分区,傲更方甘上而机分事多的小分区

        (3)逻辑分区:在扩展分区上划分的分区

        每记录一个分区(主分区或扩展分区)要消耗16B,所以分区表最多只能记录4个分区,硬盘最多只能划分出来4个分区,且最多只能有一个扩展分区。

        请关闭虚拟机并自行为虚拟机添加一块硬盘,然后开机进入系统。

1.对磁盘进行分区

        使用fdisk -1命令查看所有分区信息

[root@jiayi ~]# fdisk -l
Disk /dev/nvme0n1:100 GiB,107374182400 字节,209715200 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x53d73aeb

设备           启动    起点      末尾      扇区 大小 Id 类型
/dev/nvme0n1p1 *       2048   2099199   2097152   1G 83 Linux
/dev/nvme0n1p2      2099200 209715199 207616000  99G 8e Linux LVM


Disk /dev/nvme0n2:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
...

        此命令可以查看系统所有硬盘的信息。

        想单独查看/dev/nvme0n1的信息,则用fdisk -l命令

[root@jiayi ~]# fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1:100 GiB,107374182400 字节,209715200 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x53d73aeb

设备           启动    起点      末尾      扇区 大小 Id 类型
/dev/nvme0n1p1 *       2048   2099199   2097152   1G 83 Linux
/dev/nvme0n1p2      2099200 209715199 207616000  99G 8e Linux LVM

        这里可以获取到很多信息,例如,整个nvme0n2有多少个扇区,每个分区从哪个扇区开始到个扇区结束等。

        下面开始练习分区,自行添加一个硬盘、大小为20G的分区。

        分区的语法为“fdisk /dev/硬盘”,这里是对硬盘进行分区,而不是对分区再进行分区。

[root@jiayi ~]# fdisk /dev/nvme0n2

欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

设备不包含可识别的分区表。
创建了一个磁盘标识符为 0xfce6711d 的新 DOS 磁盘标签。

命令(输入 m 获取帮助):

        此处进入分区的界面,按提示输入“m”可以获取帮助,常见的命令如下。

        (1)p:打印分区表。

        (2)n:添加一个分区。

        (3)d:删除一个分区。(4)1:列出分区类型。

        (5)t:转换分区类型。

        (6)q:不保存直接退出。

        (7)w:保存并退出。

        查看现有分区信息,此处输入“p”

命令(输入 m 获取帮助):p

Disk /dev/nvme0n2:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfce6711d

        此处并没有看到/dev/nvem0n2p1、/dev/nvme0n2p2等内容,说明并不存在任何分区。

        按【n】键创建一个分区


分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):

        直接在硬盘上划分的分区有主分区(标记为p)和扩展分区(标记为e),逻辑分区(标记为1)只能在扩展分区上创建,且扩展分区最多只能创建一个扩展分区。所以,在硬盘中没有扩展分区时,选择分区类型时只能选择p和e这两种。如果已经存在了扩展分区,就不能再创建第二个扩展分区了,但可以在扩展分区上创建逻辑分区,所以可选择的分区类型有p和1。

        先创建主分区或扩展分区都可以,这里先创建主分区,输入“p”,按【Enter】键。主分区加扩展分区最多只能创建出来4个,所以分配的编号只能是1~4,这里选择默认的1,然后按【Enter】键。

命令(输入 m 获取帮助):n
分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认  1): 

        硬盘总共有41943039个扇区,第一个分区从哪个扇区开始呢?默认为2048,直接按【Enter】键,我们就从2048扇区始。

第一个扇区 (2048-41943039, 默认 2048): 

上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039):

        这里N的位置得写一个结束点,假设要创建2G的分区,从2048扇区开始算,到哪个扇区结束能使得分区大小是2G呢?如下所示。

        现在计算一下:2G=2×1024M=2×1024× 1024K=2×1024×1024×2扇区(1扇区=0.5K),所以一共需要2×1024×1024×2=4194304个扇区。从2048扇区开始算,最后一个扇区应该落在2048+4194304-1=4196351的位置,这样创建出来的分区就是2G,所以上图4196351。

第一个扇区 (2048-41943039, 默认 2048): 

上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): 4196351

创建了一个新分区 1,类型为“Linux”,大小为 2 GiB。

        创建2G分区后,输入“p”查看分区信息

命令(输入 m 获取帮助):p
Disk /dev/nvme0n2:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfce6711d

设备           启动  起点    末尾    扇区 大小 Id 类型
/dev/nvme0n2p1       2048 4196351 4194304   2G 83 Linux

        可以看出,从2048开始,共4194304个扇区,在4196351这个位置结束,大小为2G。但是这种创建分区的方法比较麻烦,可以先输人“d”,按【Fnter】键,删除此分区

    命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除。

        因为nvme0n2p1是唯一的分区,所以删除的就是sdb1,然后重复上面的方法重新创建分区

命令(输入 m 获取帮助):n
分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认  1): 
第一个扇区 (2048-41943039, 默认 2048): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +2G

创建了一个新分区 1,类型为“Linux”,大小为 2 GiB。

        因为并不需要关心分区到哪个扇区结束,只关心分区大小,所以这里可以写+2G,意思是从2048扇区开始划分一个2G大小的分区

        然后输人“p”查看分区信息

命令(输入 m 获取帮助):p
Disk /dev/nvme0n2:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfce6711d

设备           启动  起点    末尾    扇区 大小 Id 类型
/dev/nvme0n2p1       2048 4196351 4194304   2G 83 Linux

        可以看到,与手动计算出来的一样,通过这种方式划分分区就容易多了。

        再创建一个主分区/dev/sda2,大小为2G

命令(输入 m 获取帮助):p
Disk /dev/nvme0n2:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfce6711d

设备           启动    起点    末尾    扇区 大小 Id 类型
/dev/nvme0n2p1         2048 4196351 4194304   2G 83 Linux
/dev/nvme0n2p2      4196352 8390655 4194304   2G 83 Linux

        创建一个扩展分区/dev/sda4,把剩余所有空间全部给它(这里故意没有创建/dev/sda3)

命令(输入 m 获取帮助):n
分区类型
   p   主分区 (2个主分区,0个扩展分区,2空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (3,4, 默认  3): 4
第一个扇区 (8390656-41943039, 默认 8390656): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (8390656-41943039, 默认 41943039): 

创建了一个新分区 4,类型为“Linux”,大小为 16 GiB。

        输入“p”查看分区信息

命令(输入 m 获取帮助):p
Disk /dev/nvme0n2:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfce6711d

设备           启动    起点     末尾     扇区 大小 Id 类型
/dev/nvme0n2p1         2048  4196351  4194304   2G 83 Linux
/dev/nvme0n2p2      4196352  8390655  4194304   2G 83 Linux
/dev/nvme0n2p4      8390656 41943039 33552384  16G 83 Linux

        看上面最右侧的两列:Id和类型,这两列是对应的。因为分区的作用不一样,所以有的可以直接格式化使用,有的用于创建swap,有的用于创建逻辑卷等。这些类型是可以转换的,输入字母l可以看到所有类型,如下图。

        常见分区类型如下。

        (1)Linux :对应的Id为83,直接格式化使用的分区。

        (2)Linux swap:对应的Id为82,用于创建swap。

        (3)Linux LVM:对应的Id为8e,用于创建LV。

        (4)Linux raid :对应的Id为fd,用于创建fd。

        例如,准备把/dev/nvme0n2p2配置成逻辑卷,先把/dev/sdb5的分区类型改为Linux LVM,操作如下。

        转换操作如下

命令(输入 m 获取帮助):t
分区号 (1,2,4, 默认  4): 2
Hex 代码(输入 L 列出所有代码):8E

已将分区“Linux”的类型更改为“Linux LVM”。

        输入“p”查看分区信息

命令(输入 m 获取帮助):p
Disk /dev/nvme0n2:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfce6711d

设备           启动    起点     末尾     扇区 大小 Id 类型
/dev/nvme0n2p1         2048  4196351  4194304   2G 83 Linux
/dev/nvme0n2p2      4196352  8390655  4194304   2G 8e Linux LVM
/dev/nvme0n2p4      8390656 41943039 33552384  16G 83 Linux

        现在所做的一切并没有真的保存,如果不想保存直接退出,可以输人“q”并按【Enter】键;如果想保存并退出,可以输入“w”并按【Enter】键。

命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。

        有时需要执行partprobe /dev/sdb命令来刷新一下分区表,然后使用fdisk命令进行查看

[root@jiayi ~]# fdisk -l /dev/nvme0n2
Disk /dev/nvme0n2:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfce6711d

设备           启动    起点     末尾     扇区 大小 Id 类型
/dev/nvme0n2p1         2048  4196351  4194304   2G 83 Linux
/dev/nvme0n2p2      4196352  8390655  4194304   2G 8e Linux LVM
/dev/nvme0n2p4      8390656 41943039 33552384  16G 83 Linux

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值