新的硬盘首先需要对其进行分区和格式化,下面来了解一下硬盘的结构如下
硬盘的磁盘上有一个个圈,每两个圈组成一个磁道。从中间往外发射线,把每个磁道分成一个个扇区,每个扇区的大小是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