文章封面: Hello world by: アシマ / Ashima
本人为新手,如有错误或不足之处,欢迎指正。
分区表的概念
使用哪种分区表决定了你可以创建多少分区和大小。
MBR 主引导记录(Master Boot Record)
MBR 的优点是兼容性好,可以用于 BIOS
和 UEFI
启动模式,也可以和多种操作系统共存。
- 结构:MBR 是一个 512 字节的扇区,其中包含引导代码和分区表。
- 分区限制:MBR 支持最多 4 个主分区或 3 个主分区和一个扩展分区,每个主分区可以包含一个操作系统。
- 容量限制:MBR 最大支持 2TB 的硬盘。
GPT 全局唯一标识分区表(GUID Partition Table)
GPT 的优点是更先进,更安全,更灵活,可以用于 UEFI
启动模式,也可以和多种操作系统共存,但不支持 BIOS
启动模式。
- 结构:GPT 使用 GUID(全局唯一标识符)标识分区表项,整个分区表存储在硬盘的开头和结尾,以提高可靠性。
- 分区限制:GPT 支持最多 128 个分区。每个分区都有唯一的 GUID 标识符,而不再受限于主分区和扩展分区的概念。
- 容量限制:GPT 支持的硬盘大小取决于扇区大小,理论大小是 8 ZB(Zettabyte),远远超过 MBR 的 2TB 限制。
查看硬盘
查看已挂载的硬盘
1
df -hT # 查看已挂载的硬盘和文件系统
查看全部的硬盘
1
2lsblk -f # 直观和方便查看 UUID
fdisk -l # 详细参数说明:
f:
显示文件系统信息。l:
显示全部分区。
创建分区
MBR 分区
主分区、扩展分区和逻辑分区的概念,GPT 分区没有这种概念。
主分区:
- 一块硬盘最多可以有 4 个主分区。
- 它们是硬盘上直接的物理分区,可以安装操作系统或创建文件系统。
扩展分区:
- 只能有一个扩展分区。
- 它充当容器,用于创建更多的逻辑分区,它不可以存储数据,只用于记录逻辑分区。
逻辑分区:
- 在扩展分区内创建的分区。可以创建多个逻辑分区,没有数量限制,和主分区一样。
- 所以要超出第 4 个分区,就至少要创建一个扩展分区,然后利用扩展分区,来创建逻辑分区。
使用
fdisk
创建MBR 分区表
注意
fdisk
只针对MBR
分区表。1
fdisk /dev/[硬盘] # 对硬盘分区
以下是实例,其实使用翻译器就会了一半了。
实例 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38root@debian:~
> fdisk /dev/sdf # 对硬盘分区
Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS (MBR) disklabel with disk identifier 0x19e900f7.
Command (m for help): n # 输入 "n" 新建分区。
Partition type
p primary (0 primary, 0 extended, 4 free) # p 是主分区。
e extended (container for logical partitions) # e 是扩展分区。
Select (default p): p # 输入 "p" 创建主分区(默认主分区)。
Partition number (1-4, default 1): 1 # 默认回车,这里的意思是"问你要创建分区几?"。
First sector (2048-10485759, default 2048): 2048 # 默认回车,意思是"从第几扇区开始?",这个不用特意的计算。
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-10485759, default 10485759): +1G # 输入你要设置的分区大小,比如"+1G"就是设置该分区大小1G,空间不能大于硬盘的空间。
Created a new partition 1 of type 'Linux' and of size 1 GiB.
Command (m for help): p # 输入 "p" 查看创建的分区,注意查看命令行不要输错了。
Disk /dev/sdf: 5 GiB, 5368709120 bytes, 10485760 sectors
Disk model: VMware Virtual S
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: 0x19e900f7
Device Boot Start End Sectors Size Id Type
/dev/sdf1 2048 2099199 2097152 1G 83 Linux # 分区一为1G。
Command (m for help): w # 输入 "w" 保存刚才创建的分区。
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.重新读取分区
1
partprobe # 命令重载一下,不然可能会报错
GPT 分区
使用
gdisk
创建GPT 分区表
1
gdisk /dev/[硬盘] # 对硬盘进行分区
以下是实例,基本和
fdisk
一样。实例 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29root@debian:~
> gdisk /dev/sdf # 对硬盘进行分区
GPT fdisk (gdisk) version 1.0.9
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): n # 输入 "n" 新建分区。
Partition number (2-128, default 2): 2 # 默认回车。
First sector (34-10485726, default = 2099200) or {+-}size{KMGTP}: # 默认回车,意思是从第几个扇区开始。
Last sector (2099200-10485726, default = 10483711) or {+-}size{KMGTP}: +1G # 输入你要设置的分区大小,这里和 fdisk 哪里一样。
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): # 默认回车,使用 Linux 文件系统,如果要设置别就输入 "L" 显示其它代码。
Changed type of partition to 'Linux filesystem'
Command (? for help): w # 保存操作。
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y # yes
OK; writing new GUID partition table (GPT) to /dev/sdh.
The operation has completed successfully.重新读取分区
1
partprobe # 命令重载一下,不然可能会报错
格式化/创建文件系统
- 查看分区
使用lsblk
看一下,需要格式化的分区。
1 | root@debian:~ |
上面的 sdf
表示是一块硬盘 而 sdf1
是它的第一个分区。
格式化
使用的文件系统是
ext4
。1
mkfs.ext4 /dev/[分区] # 对分区格式化
实例 1
mkfs.ext4 /dev/sdf1
挂载分区
创建文件夹
在
/mnt
目录下创建一个文件夹,以便将分区挂载到该文件夹上。1
mkdir /mnt/[任意文件夹]
挂载分区
手动挂载
1
mount /dev/[硬盘分区] /mnt/[任意文件夹]
自动挂载
使用
lsblk -f
或blkid
查看硬盘的UUID
,使用UUID
来进行挂载。把下面
[分区UUID]
替换成你分区的 UUID
,和挂载点路径
的替换。
关于[文件系统类型]
就填你格式化使用的文件系统。1
echo "UUID=[分区UUID] [挂载点路径] [文件系统类型] defaults 0 0" >> /etc/fstab
实例 1
echo "UUID=8e040289-345b-4afa-b8a7-a0e4604e12d4 /mnt/test ext4 defaults 0 0" >> /etc/fstab
重新加载
重新加载 Systemd
和执行 mount -a
让挂载生效。
1 | systemctl daemon-reload |
之后使用 df -h
查看有没有挂载成功。
硬盘分区的删除
查看分区表类型
使用
parted
命令查看分区表类型。1
parted /dev/[硬盘] print
实例 1
2
3
4
5
6
7
8
9
10
11
12
13root@debian:~
> parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1075MB 1074MB primary ext4
2 1075MB 2149MB 1074MB primary ext4
3 2149MB 3222MB 1074MB primary ext4
4 3222MB 4296MB 1074MB primary ext4如果输出的是
Partition Table: msdos
,就是 MBR 分区表,或者Partition Table: gpt
,就是 GPT 分区表。删除对应分区
MBR
分区就使用fdisk
删除分区,GPT
分区就使用gdisk
删除分区。注意:删除分区前先查看你要删除的分区。
PS:如果硬盘里只有一个分区它默认选中它,不会问你是否要删除那个分区。MBR 分区
进入后输入
"p"
命令列出分区表,确认要删除的分区1
fdisk /dev/[硬盘]
使用
"d"
然后输入你要删除的分区号就行了,再输入"w"
保存并退出了。GPT 分区
进入后输入"p"
命令列出分区表,确认要删除的分区1
gdisk /dev/[硬盘]
使用
"d"
然后输入你要删除的分区号就行了,再输入"w"
保存,之后输入"y"
同意当前更改。
重新读取分区
1
partprobe # 命令重载一下