一.硬盘接口类型
硬盘接口类型有IDE、SATA、SCSI等
1.1 磁盘的分区格式:
MBR:主启动记录(Master Boot Record,缩写:MBR)
GPT:唯一标识分区表(GUID Partition Table,缩写: GPT)
分区格式 | 全称 | 支持最大卷大小 | 分区数 | 分区工具 |
---|---|---|---|---|
MBR | 主启动记录(Master Boot Record,缩写:MBR) | 2.2TB | 最多4个主分区,或者3个主分区1个扩展分区;扩展分区最多只能有1个; 2≤主分区+扩展分区≤4; | fdisk parted |
GPT | 唯一标识分区表(GUID Partition Table,缩写: GPT) | 18EB | 可以有多达128个分区 | gdisk parted |
fdisk -l 命令查看linux磁盘的分区类型;若显示结果中的“disk label type”的值为dos则分区是mbr,若该结果的值为gpt则分区是gpt;
df -Th:查看文件详细信息和文件系统类型
fdisk -l : 列出所有支持的分区类型
lsblk : 查看系统所有磁盘信息
1.2 主分区数量限制
MBR分区方案最大的限制在于主分区数量不能超过4个。这意味着在一个MBR分区的硬盘上,用户只能创建4个主分区,或者3个主分区加1个扩展分区(扩展分区内可以创建多个逻辑分区,必须在扩展分区上建立逻辑分区才能存放数据)。而GPT分区方案则几乎取消了分区数量的限制,理论上可以创建无限多个分区,但实际操作中会受到操作系统的限制,例如在Windows操作系统下,GPT分区最多支持128个分区。
1.3 硬盘容量支持
MBR分区方案使用32位的LBA(逻辑块寻址)寻址方式,因此最大支持的硬盘容量为2TB。这意味着当硬盘容量超过2TB时,MBR分区方案将无法充分利用硬盘的全部容量。而GPT分区方案则采用64位LBA寻址方式,支持最大容量为9.4ZB(即 94亿 TB )的硬盘。这使得GPT分区方案能够充分利用现代大容量硬盘的存储空间。
二.硬盘命名
IDE(并口):/dev/hda、/dev/hdb
SATA(串口)、SCSI(串口):/dev/sda、/dev/sdb ;/dev设备文件目录、sda是一个文件、s代表sata就是串口、d代表磁盘、a第一块,b第二块;sda1代表第一块磁盘(硬盘)的第一个分区;
一台主机上可以有多块硬盘,因此系统采用a~p来代表16块不同的硬盘(默认从a开始分配),而且硬盘的分区编号也有如下规定:主分区或扩展分区的编号从1开始,到4结束;逻辑分区从编号5开始。
/dev/目录中保存的应当是硬件设备文件;sd表示是存储设备,a表示系统中同类接口中第一个被识别到的设备,5表示这个设备是一个逻辑分区。基于上述,“/dev/sda5”表示的就是“这是系统中第一块被识别到的硬件设备中分区编号为5的逻辑分区的设备文件”。
三. 文件系统
ext4文件系统(主流):日志记录功能,当意外宕机了,可以通过日志记录把没有保存的数据,在系统再次重启时快速回复过来。单个文件系统最大支持1EB的分区容量,单个文件最大可以存储16TB数据。Centos6默认ext4文件系统。
xfs文件系统:日志记录功能,数据恢复时比ext4文件快,单个文件系统最大支持8EB分区容量,单个文件最大可存储500TB数据,每个文件每秒读写数据速度可以达到4G.。Centos7默认xfs文件系统。
swap文件系统:交换分区,硬盘空间去充当内存使用。
四.分区工具
分区三部曲:分区-->格式化-->挂载mount
1、分区
linux分区工具有 fdisk, gdisk, parted.
1.1 fdisk命令
fdisk命令(format disk)用于新建、修改及删除磁盘的分区表信息,语法格式为 fdisk 磁盘名称,它和大多数普通linux命令不同的是,它是一个交互式的命令,键入命令fdisk /dev/sda,进入交互界面。
[root@192 ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
a toggle a bootable flag # 切换可启动标志
b edit bsd disklabel # 编辑磁盘标记
c toggle the dos compatibility flag # 切换dos兼容标志
d delete a partition # 删除一个分区
g create a new empty GPT partition table # 创建一个空的GPT分区表
G create an IRIX (SGI) partition table # 创建一个IRIX分区表
l list known partition types # 列出已知的分区类型
m print this menu # 打印菜单
n add a new partition # 添加一个分区
o create a new empty DOS partition table # 创建一个空的DOS分区表
p print the partition table # 打印分区表
q quit without saving changes # 退出不保存
s create a new empty Sun disklabel # 创建一个空的sun磁盘标签
t change a partition's system id # 改变一个分区的类型
u change display/entry units # 改变显示的单位
v verify the partition table # 验证分区表
w write table to disk and exit # 写分区表并退出
x extra functionality (experts only) # 高级功能
Command (m for help):
例子: 使用fdisk工具给/dev/sdb(10G)分区满足下面几个要求
- 3个主分区一个扩展分区
- /dev/sdb1分区类型为Linux LVM,大小为3G
- /dev/sdb2分区类型为swap,大小为2G
- /dev/sdb3分区类型为Linux, 大小为1G
- /dev/sdb5分区类型为linux,大小为1G
- 保留4G留作后用
a. 虚拟机新建10G硬盘
b. 开机启动,用命令lsblk查看,发现多了一个sdb的10G硬盘
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 10G 0 part /
sdb 8:16 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/shuai/CentOS 7 x86_64
c. 给/dev/sdb硬盘分区
[root@192 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x9a651304 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
# 分区号默认1,这里使用分区号1,所以直接点回车就行
分区号 (1-4,默认 1):
# 扇区的起始值默认2048,所以直接点回车就行
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
# +3G表示给sdb1分区分大小为3G的空间
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+3G
分区 1 已设置为 Linux 类型,大小设为 3 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (6293504-20971519,默认为 6293504):
将使用默认值 6293504
Last 扇区, +扇区 or +size{K,M,G} (6293504-20971519,默认为 20971519):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (10487808-20971519,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-20971519,默认为 20971519):+1G
分区 3 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
已选择分区 4
起始 扇区 (12584960-20971519,默认为 12584960):
将使用默认值 12584960
Last 扇区, +扇区 or +size{K,M,G} (12584960-20971519,默认为 20971519):
将使用默认值 20971519
分区 4 已设置为 Extended 类型,大小设为 4 GiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (12587008-20971519,默认为 12587008):
将使用默认值 12587008
Last 扇区, +扇区 or +size{K,M,G} (12587008-20971519,默认为 20971519):+1G
分区 5 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x9a651304
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 6293503 3145728 83 Linux
/dev/sdb2 6293504 10487807 2097152 83 Linux
/dev/sdb3 10487808 12584959 1048576 83 Linux
/dev/sdb4 12584960 20971519 4193280 5 Extended
/dev/sdb5 12587008 14684159 1048576 83 Linux
命令(输入 m 获取帮助):t
分区号 (1-5,默认 5):1
Hex 代码(输入 L 列出所有代码):L
0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris
1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏的 C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx
5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据
6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具
8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt
9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC
11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq 诊断 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f2 DOS 次要
16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动
1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep
1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT
1e 隐藏的 W95 FAT1 80 旧 Minix
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1-5,默认 5):2
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x9a651304
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 6293503 3145728 8e Linux LVM
/dev/sdb2 6293504 10487807 2097152 82 Linux swap / Solaris
/dev/sdb3 10487808 12584959 1048576 83 Linux
/dev/sdb4 12584960 20971519 4193280 5 Extended
/dev/sdb5 12587008 14684159 1048576 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@192 ~]#
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 10G 0 part /
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 3G 0 part
├─sdb2 8:18 0 2G 0 part
├─sdb3 8:19 0 1G 0 part
├─sdb4 8:20 0 1K 0 part
└─sdb5 8:21 0 1G 0 part
sr0 11:0 1 4.4G 0 rom /run/media/shuai/CentOS 7 x86_64
[root@192 ~]#
[root@192 ~]#
[root@192 ~]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c6f11
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 4605951 2097152 82 Linux swap / Solaris
/dev/sda3 4605952 25577471 10485760 83 Linux
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x9a651304
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 6293503 3145728 8e Linux LVM
/dev/sdb2 6293504 10487807 2097152 82 Linux swap / Solaris
/dev/sdb3 10487808 12584959 1048576 83 Linux
/dev/sdb4 12584960 20971519 4193280 5 Extended
/dev/sdb5 12587008 14684159 1048576 83 Linux
[root@192 ~]#
1.2 gdisk命令基础
[root@192 ~]# gdisk /dev/sda
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************
Command (? for help): ?
b back up GPT data to a file # 备份一个gpt数据到文件
c change a partition's name # 改变分区名
d delete a partition # 删除一个分区
i show detailed information on a partition # 显示一个分区的详细信息
l list known partition types # 列出已知的分区类型
n add a new partition # 添加一个新的分区
o create a new empty GUID partition table (GPT) # 创建一个空的GUID分区表
p print the partition table # 打印分区表
q quit without saving changes # 退出不保存
r recovery and transformation options (experts only) # 专家模式
s sort partitions # 排序分区
t change a partition's type code # 改变分区类型
v verify disk # 验证磁盘
w write table to disk and exit # 写磁盘并退出
x extra functionality (experts only) # 额外功能(专家模式)
? print this menu # 打印菜单
Command (? for help):
例子: 使用gdisk工具给/dev/sdb(10G)分区满足下面几个要求
- GPT分区
- /dev/sdb1分区类型为Linux LVM,大小为3G
- /dev/sdb2分区类型为swap,大小为2G
- /dev/sdb3分区类型为Linux, 大小为1G
- /dev/sdb4分区类型为linux,大小为1G
- 保留4G留作后用
上面我们对/dev/sdb已经分区了, 使用如下命令清空
# 清空分区的前512字节,分区表被清空,小心操作
[root@192 ~]# dd if=/dev/zero of=/dev/sdb bs=1 count=512
记录了512+0 的读入
记录了512+0 的写出
512字节(512 B)已复制,0.00430641 秒,119 kB/秒
给/dev/sdb硬盘分区
[root@192 ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
Command (? for help): p
Disk /dev/sdb: 20971520 sectors, 10.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): F38F67D8-3A73-4CAA-9037-64BB67962B86
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 20971453 sectors (10.0 GiB)
Number Start (sector) End (sector) Size Code Name
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-20971486, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-20971486, default = 20971486) or {+-}size{KMGTP}: +3G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): L
0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE
3000 ONIE boot 3001 ONIE config 4100 PowerPC PReP boot
4200 Windows LDM data 4201 Windows LDM metadata 7501 IBM GPFS
7f00 ChromeOS kernel 7f01 ChromeOS root 7f02 ChromeOS reserved
8200 Linux swap 8300 Linux filesystem 8301 Linux reserved
8302 Linux /home 8400 Intel Rapid Start 8e00 Linux LVM
a500 FreeBSD disklabel a501 FreeBSD boot a502 FreeBSD swap
a503 FreeBSD UFS a504 FreeBSD ZFS a505 FreeBSD Vinum/RAID
a580 Midnight BSD data a581 Midnight BSD boot a582 Midnight BSD swap
a583 Midnight BSD UFS a584 Midnight BSD ZFS a585 Midnight BSD Vinum
a800 Apple UFS a901 NetBSD swap a902 NetBSD FFS
a903 NetBSD LFS a904 NetBSD concatenated a905 NetBSD encrypted
a906 NetBSD RAID ab00 Apple boot af00 Apple HFS/HFS+
af01 Apple RAID af02 Apple RAID offline af03 Apple label
af04 AppleTV recovery af05 Apple Core Storage be00 Solaris boot
bf00 Solaris root bf01 Solaris /usr & Mac Z bf02 Solaris swap
bf03 Solaris backup bf04 Solaris /var bf05 Solaris /home
bf06 Solaris alternate se bf07 Solaris Reserved 1 bf08 Solaris Reserved 2
bf09 Solaris Reserved 3 bf0a Solaris Reserved 4 bf0b Solaris Reserved 5
c001 HP-UX data c002 HP-UX service ea00 Freedesktop $BOOT
eb00 Haiku BFS ed00 Sony system partitio ed01 Lenovo system partit
Press the <Enter> key to see more codes:
ef00 EFI System ef01 MBR partition scheme ef02 BIOS boot partition
fb00 VMWare VMFS fb01 VMWare reserved fc00 VMWare kcore crash p
fd00 Linux RAID
Hex code or GUID (L to show codes, Enter = 8300): 8e00
Changed type of partition to 'Linux LVM'
Command (? for help): n
Partition number (2-128, default 2):
First sector (34-20971486, default = 6293504) or {+-}size{KMGTP}:
Last sector (6293504-20971486, default = 20971486) or {+-}size{KMGTP}: +2G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux swap'
Command (? for help): n
Partition number (3-128, default 3):
First sector (34-20971486, default = 10487808) or {+-}size{KMGTP}:
Last sector (10487808-20971486, default = 20971486) or {+-}size{KMGTP}: +1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): n
Partition number (4-128, default 4):
First sector (34-20971486, default = 12584960) or {+-}size{KMGTP}:
Last sector (12584960-20971486, default = 20971486) or {+-}size{KMGTP}: +1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): p
Disk /dev/sdb: 20971520 sectors, 10.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): F38F67D8-3A73-4CAA-9037-64BB67962B86
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 6291389 sectors (3.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 6293503 3.0 GiB 8E00 Linux LVM
2 6293504 10487807 2.0 GiB 8200 Linux swap
3 10487808 12584959 1024.0 MiB 8300 Linux filesystem
4 12584960 14682111 1024.0 MiB 8300 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
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
[root@192 ~]#
1.3 parted命令基础
[root@192 ~]# parted --help
Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]
Apply COMMANDs with PARAMETERS to DEVICE. If no COMMAND(s) are given, run in
interactive mode.
OPTIONs:
-h, --help displays this help message
-l, --list lists partition layout on all block devices
-m, --machine displays machine parseable output
-s, --script never prompts for user intervention
-v, --version displays the version
-a, --align=[none|cyl|min|opt] alignment for new partitions
COMMANDs:
align-check TYPE N check partition N for TYPE(min|opt)
alignment
help [COMMAND] print general help, or help on
COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partitionM # 设置分区类型 详细使用man获取
table)
mkpart PART-TYPE [FS-TYPE] START END make a partition # 创建一个分区 start,end为M,详细信息使用man获取
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table, # 打印信息
available devices, free space, all found partitions, or a particular
partition
quit exit program # 退出
rescue START END rescue a lost partition near START # 救援一个丢失的分区
and END
rm NUMBER delete partition NUMBER # 删除一个分区
select DEVICE choose the device to edit # 选择一个分区去编辑
disk_set FLAG STATE change the FLAG on selected device # 改变选择分区的标记
disk_toggle [FLAG] toggle the state of FLAG on selected # 切换选择分区的标记
device
set NUMBER FLAG STATE change the FLAG on partition NUMBER # 改变指定分区号的标记
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition # 切换指定分区号的标记
NUMBER
unit UNIT set the default unit to UNIT # 设置默认单位
version display the version number and # 显示版本
copyright information of GNU Parted
Report bugs to bug-parted@gnu.org
例子: 使用parted工具给/dev/sdb(10G)分区满足下面几个要求
- GPT分区
- /dev/sdb1分区类型为Linux LVM,大小为3G
- /dev/sdb2分区类型为swap,大小为2G
- /dev/sdb3分区类型为Linux, 大小为1G
- /dev/sdb4分区类型为linux,大小为1G
- 保留40G留作后用
上面我们对/dev/sdb已经分区了, 使用如下命令清空
# 清空分区的前512字节,分区表被清空,小心操作
[root@192 ~]# dd if=/dev/zero of=/dev/sdb bs=1 count=512
记录了512+0 的读入
记录了512+0 的写出
512字节(512 B)已复制,0.00178097 秒,287 kB/秒
清空前:
[root@192 ~]# fdisk -l
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: F38F67D8-3A73-4CAA-9037-64BB67962B86
# Start End Size Type Name
1 2048 6293503 3G Linux LVM Linux LVM
2 6293504 10487807 2G Linux swap Linux swap
3 10487808 12584959 1G Linux filesyste Linux filesystem
4 12584960 14682111 1G Linux filesyste Linux filesystem
[root@192 ~]#
清空后:
[root@192 ~]# fdisk -l
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@192 ~]#
给/dev/sdb硬盘分区
[root@192 ~]# parted -s /dev/sdb mklabel gpt
[root@192 ~]# parted -s /dev/sdb unit GB mkpart primary 1 3 set 1 lvm on
[root@192 ~]# parted -s /dev/sdb unit GB mkpart primary 3 5 set 2 swap on
parted: invalid token: swap
# 上一行命令分区为什么会出现 "parted: invalid token: swap" ? 待研究
[root@192 ~]# parted -s /dev/sdb unit GB mkpart primary 5 6
[root@192 ~]# parted -s /dev/sdb unit GB mkpart primary 6 7
[root@192 ~]# parted -s /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 1000MB 3000MB 2000MB primary lvm
2 3000MB 5000MB 2000MB primary
3 5000MB 6000MB 1000MB primary
4 6000MB 7000MB 1000MB primary
[root@192 ~]# fdisk -l
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 0EBFF393-9E04-45F9-90A2-D3C85F1F7189
# Start End Size Type Name
1 1953792 5859327 1.9G Linux LVM primary
2 5859328 9764863 1.9G Microsoft basic primary
3 9764864 11718655 954M Microsoft basic primary
4 11718656 13672447 954M Microsoft basic primary
1.4 parted命令可用于分区转换
1.4.1 GPT分区方式转换成MBR
查看分区类型 fdisk -l
[root@192 ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 874DCA00-33E5-4249-925A-FC1035FF027B
# Start End Size Type Name
1 34 8388574 4G Linux filesyste primary
如上图,磁盘/dev/sdb分区类型为gpt。
parted命令将gpt分区类型转换成mbr分区类型
[root@192 ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel
新的磁盘标签类型? msdos
警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
是/Yes/否/No? yes
(parted) quit
信息: You may need to update /etc/fstab.
[root@192 ~]# fdisk -l
磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0004a2f8
设备 Boot Start End Blocks Id System
1.4.2 MBR分区方式转换成GPT
查看分区类型 fdisk -l
[root@192 ~]# fdisk -l
磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0004a2f8
设备 Boot Start End Blocks Id System
如上图,磁盘/dev/sdb分区类型为mbr。
parted命令将mbr分区类型转换成gpt分区类型
[root@192 ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel
新的磁盘标签类型? gpt
警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
是/Yes/否/No? yes
(parted) quit
信息: You may need to update /etc/fstab.
[root@192 ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 139F2F15-D4D7-471C-8F5C-2DD9B5887FE8
# Start End Size Type Name
2、格式化
格式化命令 mkfs
mkfs是linux的格式化操作的命令,mkfs双按tab键,可以看到它有多个衍生命令
[root@192 ~]# mkfs
mkfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs
mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
现在linux都是xfs文件系统格式了,所以这里按照 mkfs.xfs
命令执行格式化操作,执行格式为:mkfs.xfs /dev/sdb1
[root@192 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=122048 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=488192, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@192 ~]#
3、挂载
挂载命令mount
mount是挂载命令,将分区挂载到某个目录,这样对目录中文件的CRUD操作就作用到了对应的分区上。
mount命令的格式是:mount 分区名 文件夹
或者 mount UUID=分区UUID 文件夹
首先先建立个文件夹:mkdir /mydata
,然后将/dev/sdb1
挂载到/mydata
,挂载命令为:mount /dev/sdb1 /mydata
这样就完成了挂载。
UUID挂载方式需要知道分区的UUID, 获取方式是使用blkid
命令。
4、获取分区UUID:blkid
blkid的英文全称是:block id,该命令用于获取每个分区的UUID信息;有时候该命令会受到缓存的影响设设备列表可能不会更新,使用blkid -g
命令可以清除缓存。
[root@192 ~]# blkid
/dev/sda1: UUID="1d6735cc-c03e-4320-b79b-625fed572702" TYPE="xfs"
/dev/sda2: UUID="91bfb5a7-4d6d-465c-b19f-9b827756d1f5" TYPE="swap"
/dev/sda3: UUID="054d83d4-4be7-4a4e-8c9c-bc3623607b57" TYPE="xfs"
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sdb1: UUID="85df7bb4-2c0b-4cb6-a7d9-88aa2d0eeee6" TYPE="xfs" PARTLABEL="primary" PARTUUID="d4c15f79-7fa2-4758-9611-93d6d75ff7a5"
/dev/sdb2: PARTLABEL="primary" PARTUUID="ebb2f992-36e9-4f21-ae2e-9e448ea10299"
/dev/sdb3: PARTLABEL="primary" PARTUUID="01d1c821-ed7e-49f6-a312-9434e00ca917"
/dev/sdb4: PARTLABEL="primary" PARTUUID="b0fb913e-d9e3-4f76-a1eb-9f81bedbc8e2"
[root@192 ~]#
然后使用命令mount UUID="85df7bb4-2c0b-4cb6-a7d9-88aa2d0eeee6" /mydata
完成挂载。
[root@192 ~]# mount UUID="85df7bb4-2c0b-4cb6-a7d9-88aa2d0eeee6" /mydata
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 10G 0 part /
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 1.9G 0 part /mydata
├─sdb2 8:18 0 1.9G 0 part
├─sdb3 8:19 0 954M 0 part
└─sdb4 8:20 0 954M 0 part
sr0 11:0 1 4.4G 0 rom /run/media/shuai/CentOS 7 x86_64
需要注意的是mount命令只能一次挂载,重启系统之后挂载就会失效,需要将挂载写入/etc/fstab
文件,这样才能完成分区的永久性挂载。
5、永久挂载:/etc/fstab文件
/etc/fstab文件存放着需要永久挂载的数据,系统启动之后会自动读取该文件,并完成文件中的所有挂载。写入格式如下
设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检
[root@192 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Aug 10 16:37:50 2024
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=054d83d4-4be7-4a4e-8c9c-bc3623607b57 / xfs defaults 0 0
UUID=1d6735cc-c03e-4320-b79b-625fed572702 /boot xfs defaults 0 0
UUID=91bfb5a7-4d6d-465c-b19f-9b827756d1f5 swap swap defaults 0 0
[root@192 ~]#
为了将 /dev/sdb1永远挂载到 /mydata目录,需要将以下信息追加到 /etc/fstab文件
/dev/sdb1 /mydata xfs defaults 0 0
写入该文件并不会自动生效,需要使用命令mount -a
或者重启系统生效。
已经实现了 /dev/sdb1挂载到 /mydata目录,接下来使用df
命令查看挂载状态和硬盘使用量信息。
[root@192 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 975M 0 975M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 11M 980M 2% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda3 10G 4.3G 5.7G 43% /
/dev/sda1 197M 147M 50M 75% /boot
tmpfs 199M 20K 199M 1% /run/user/1000
/dev/sr0 4.4G 4.4G 0 100% /run/media/shuai/CentOS 7 x86_64
/dev/sdb1 1.9G 33M 1.9G 2% /mydata
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 10G 0 part /
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 1.9G 0 part /mydata
├─sdb2 8:18 0 1.9G 0 part
├─sdb3 8:19 0 954M 0 part
└─sdb4 8:20 0 954M 0 part
sr0 11:0 1 4.4G 0 rom /run/media/shuai/CentOS 7 x86_64
[root@192 ~]#
五. 卸载分区
卸载分区其实就是逆向操作,首先,删除fstab中的记录
# 删除刚添加的这行
/dev/sdb1 /mydata xfs defaults 0 0
然后umount
命令卸除挂载
umount /dev/sdb1
然后删除分区
[root@192 ~]# fdisk /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):m
命令操作
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(输入 m 获取帮助):d
分区号 (1-4,默认 4):1
分区 1 已删除
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@192 ~]#
之后,再用lsblk
命令查看下分区,发现sdb1已经没了,sdb硬盘下只剩下了sdb2,sdb3,sdb4分区。
[root@192 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 975M 0 975M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 11M 980M 2% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda3 10G 4.3G 5.7G 43% /
/dev/sda1 197M 147M 50M 75% /boot
tmpfs 199M 20K 199M 1% /run/user/1000
/dev/sr0 4.4G 4.4G 0 100% /run/media/shuai/CentOS 7 x86_64
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 10G 0 part /
sdb 8:16 0 10G 0 disk
├─sdb2 8:18 0 1.9G 0 part
├─sdb3 8:19 0 954M 0 part
└─sdb4 8:20 0 954M 0 part
sr0 11:0 1 4.4G 0 rom /run/media/shuai/CentOS 7 x86_64
参考文档:
https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_039_fdisk_gdisk_parted.html