主要内容:
磁盘空间管理fdisk、parted工具、开机自动挂载、文件系统、交换空间
KVM虚拟化 实操前骤:
1)添加一块硬盘(磁盘),需要关机才能进行操作,点击左下角【添加硬件】
2)选择20GB,点击创建完成,显示磁盘2
3)KVM虚拟机的独创磁盘接口vda/vdb(优点:传输快,缺点:与实际的磁盘接口不符)
4)列出当前系统识别的硬盘(lsblk)
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 20G 0 disk
VMware虚拟化 实操前骤:
1)关闭虚拟机CentOS7,打开【编辑虚拟机设置】,进行添加设备
2)点击“添加”
3)添加硬盘
4)选择SCSI磁盘
5)选择创建新虚拟磁盘
6)设置磁盘大小
7)设置指定磁盘文件的路径
8)设置指定磁盘文件的路径
9)查看是否有硬盘2
一、磁盘结构及概念
磁盘结构是指计算机存储设备(如硬盘、固态硬盘等)的物理和逻辑组织方式
- 步骤:识别硬盘(HDD/SSD) -> 分区规划 -> 文件系统格式化 -> 挂载使用
- 类似:毛坯楼层 — 打隔断 — 装修 — 入驻
1、物理结构
机械硬盘(HDD)
- 盘片(Platter):硬盘通常由多个盘片组成,每个盘片都有两面,每面都有一个读写头
- 磁道(Track):每个盘片上的同心圆环称为磁道
- 扇区(Sector):磁道被划分为若干个扇区,每个扇区通常存储512字节或4096字节的数据
- 柱面(Cylinder):所有盘片上同一位置的磁道组成一个柱面
固态硬盘(SSD)
- 闪存芯片(Flash Memory Chip):SSD使用闪存芯片来存储数据,没有机械部件
- NAND单元:闪存芯片由多个NAND单元组成,每个单元可以存储一个或多个比特的数据
2、逻辑结构
分区(Partition)
- 主分区(Primary Partition):硬盘上可以有多个主分区,每个主分区可以独立格式化并安装操作系统
- 扩展分区(Extended Partition):扩展分区可以包含多个逻辑分区
- 逻辑分区(Logical Partition):扩展分区内的分区称为逻辑分区
文件系统(File System)
- 引导块(Boot Block):存储引导程序,用于启动操作系统
- 超级块(Super Block):存储文件系统的元数据,如块大小、空闲块数量等
- inode表(Inode Table):存储文件的元数据,如文件大小、权限、时间戳等
- 数据块(Data Block):存储文件的实际数据
[root@localhost ~]# lsblk //列出当前系统识别的硬盘
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 20G 0 disk
注意:vda*/vdb*命名为KVM虚拟机独有的磁盘接口,实际磁盘接口表现为sda*/sdb*
3、磁盘管理
格式化(Formatting)
- 低级格式化(Low-level Formatting):初始化磁盘的物理结构,创建磁道和扇区
- 高级格式化(High-level Formatting):创建文件系统,初始化超级块、inode表和数据块
分区表(Partition Table)
- MBR(Master Boot Record):传统的分区表格式,支持最多4个主分区或3个主分区加1个扩展分区
- GPT(GUID Partition Table):现代的分区表格式,支持更多分区,更大的磁盘容量,并且更可靠
4、磁盘性能
- 寻道时间(Seek Time):硬盘读写头移动到指定磁道所需的时间
- 旋转延迟(Rotational Latency):盘片旋转到指定扇区所需的时间
- 传输速率(Transfer Rate):数据从磁盘传输到内存的速率
5、磁盘调度算法
- 先来先服务(FCFS):按请求到达的顺序进行服务
- 最短寻道时间优先(SSTF):选择当前磁头位置最近的请求进行服务
- 电梯算法(SCAN):磁头在磁盘上按一个方向移动,直到没有请求为止,然后反向移动
- 循环扫描(C-SCAN):磁头在磁盘上按一个方向移动,直到没有请求为止,然后返回起点重新开始
6、计算机容量单位
一般用B,KB,MB,GB,TB,PB,EB,ZB,YB,BB来表示,它们之间的关系是:
- 1KB (Kilobyte 千字节)=1024B,
- 1MB (Megabyte 兆字节 简称“兆”)=1024KB,
- 1GB (Gigabyte 吉字节 又称“千兆”)=1024MB,
- 1TB (Terabyte 万亿字节 太字节)=1024GB,
- 1PB (Petabyte 千万亿字节 拍字节)=1024TB,
- 1EB (Exabyte 百亿亿字节 艾字节)=1024PB,
- 1ZB (Zettabyte 十万亿亿字节 泽字节)= 1024 EB,
- 1YB (Yottabyte 一亿亿亿字节 尧字节)= 1024 ZB,
- 1BB (Brontobyte 一千亿亿亿字节)= 1024 YB.
二、磁盘分区规划
主流分区方案(分区模式): MBR 与 GPT
注意:分区规划中,MBR分区模式与GPT分区模式不共存;
MBR / msods分区模式
- 分区类型:主分区、扩展分区(占用所有剩余空间)、逻辑分区
- 一般分区规划:① 1~4个主分区,② 0~3个主分区+1个扩展分区(n个逻辑分区)
- MBR分区模式 最大支持容量为2.2TB的磁盘
- 最多只能有 4个主分区,扩展分区可以没有,最多只有1个
- 扩展分区不能格式化,空间也不能直接存储数据(目的为产生逻辑分区存储数据)
- 可以用于存储数据的分区:主分区与逻辑分区
1、fdisk分区工具
- 格式:fdisk -l /dev/sda //查看分区表
- 格式:fdisk 硬盘设备 (例如:/dev/sda)
步骤1:
[root@localhost ~]# fdisk -l /dev/vdb ## 查看分区表
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@localhost ~]# fdisk /dev/vdb ## 对硬盘进行分区规划
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x6ab34c3a 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):p ## 查看现有的分区表(类似fdisk -l /dev/vdb )
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a
设备 Boot Start End Blocks Id System
命令(输入 m 获取帮助):n ## 新建分区
Partition type:
p primary (0 primary, 0 extended, 4 free) ## 主分区数
e extended ## 扩展分区数
Select (default p): ## 默认先创建主分区
Using default response p
分区号 (1-4,默认 1): ## 默认分区号为1
起始 扇区 (2048-41943039,默认为 2048): ## 默认起始大小2048
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G //设置大小为2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (4196352-41943039,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-41943039,默认为 41943039):+1G
分区 2 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a
设备 Boot Start End Blocks Id System
/dev/vdb1 2048 4196351 2097152 83 Linux
/dev/vdb2 4196352 6293503 1048576 83 Linux
命令(输入 m 获取帮助):w ## 保存更改并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# lsblk ## 查看分区表,挂载目录
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 20G 0 disk
├─vdb1 252:17 0 2G 0 part
└─vdb2 252:18 0 1G 0 part
2、partprobe识别新分区表
当硬盘的分区表被更改以后,需要将分区表的变化及时通知Linux内核,建议reboot,否则在访问分区时可能会找不到准确的设备;
注意:因磁盘已有分区设备正在运行,需要通过reboot或partprobe 刷新分区表
步骤2:
[root@localhost ~]# fdisk /dev/vdb ## 对硬盘进行分区规划
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a
设备 Boot Start End Blocks Id System
/dev/vdb1 2048 4196351 2097152 83 Linux
/dev/vdb2 4196352 6293503 1048576 83 Linux
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p):
Using default response p
分区号 (3,4,默认 3):
起始 扇区 (6293504-41943039,默认为 6293504):
将使用默认值 6293504
Last 扇区, +扇区 or +size{K,M,G} (6293504-41943039,默认为 41943039):+2G
分区 3 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): ## 创建扩展分区
Using default response e
已选择分区 4
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 15 GiB ## 注意将剩余空间给扩展分区
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (10489856-41943039,默认为 10489856):
将使用默认值 10489856
Last 扇区, +扇区 or +size{K,M,G} (10489856-41943039,默认为 41943039):+900M
分区 5 已设置为 Linux 类型,大小设为 900 MiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 6
起始 扇区 (12335104-41943039,默认为 12335104):
将使用默认值 12335104
Last 扇区, +扇区 or +size{K,M,G} (12335104-41943039,默认为 41943039):+2G
分区 6 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a
设备 Boot Start End Blocks Id System
/dev/vdb1 2048 4196351 2097152 83 Linux
/dev/vdb2 4196352 6293503 1048576 83 Linux
/dev/vdb3 6293504 10487807 2097152 83 Linux
/dev/vdb4 10487808 41943039 15727616 5 Extended
/dev/vdb5 10489856 12333055 921600 83 Linux
/dev/vdb6 12335104 16529407 2097152 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
[root@localhost ~]# partprobe ## 刷新分区表
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
[root@localhost ~]# fdisk -l /dev/vdb ## 查看已有的分区表
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a
设备 Boot Start End Blocks Id System
/dev/vdb1 2048 4196351 2097152 83 Linux
/dev/vdb2 4196352 6293503 1048576 83 Linux
/dev/vdb3 6293504 10487807 2097152 83 Linux
/dev/vdb4 10487808 41943039 15727616 5 Extended
/dev/vdb5 10489856 12333055 921600 83 Linux
/dev/vdb6 12335104 16529407 2097152 83 Linux
##注意:/dev/vdb4为扩展分区,不存储数据,以Extended往上为主分区,以Extended往下为逻辑分区;
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 20G 0 disk
├─vdb1 252:17 0 2G 0 part /mypart1
├─vdb2 252:18 0 1G 0 part /mypart2
├─vdb3 252:19 0 2G 0 part
├─vdb4 252:20 0 512B 0 part
├─vdb5 252:21 0 900M 0 part
└─vdb6 252:22 0 2G 0 part
三、格式化分区
格式化分区是指在存储设备(如硬盘、固态硬盘、USB闪存驱动器等)上创建文件系统的过程。这个过程使得操作系统能够识别和使用该分区来存储和管理文件。格式化分区通常包括以下几个步骤:
-
低级格式化(Low-level Formatting):这是在制造过程中或使用特殊工具进行的操作,它将磁盘划分为磁道和扇区,为每个扇区分配一个地址。低级格式化通常不需要用户手动执行,因为它在磁盘出厂时已经完成
-
分区(Partitioning):在磁盘上创建一个或多个分区,每个分区可以独立使用。分区可以使用工具如
fdisk
、gdisk
或图形界面工具如GParted
来完成。分区表(如 MBR 或 GPT)记录了这些分区的位置和大小 -
高级格式化(High-level Formatting):这是用户通常所说的“格式化”,它涉及在分区上创建文件系统。文件系统定义了数据如何存储和检索,包括目录结构、文件元数据(如权限、时间戳)和数据块的分配方式。常见的文件系统包括 NTFS、FAT32、exFAT、HFS+、APFS、ext3、ext4 等(补充:ext4适合存储数据个数多、容量小,xfs适合存储单个数据容量大)
格式化分区的主要目的是:
- 准备存储设备:使操作系统能够识别和使用该设备
- 创建文件系统:定义数据存储和组织的规则
- 清除数据:格式化分区通常会删除分区上的所有数据,使其无法恢复(尽管在某些情况下,专业数据恢复服务可能仍然能够恢复部分数据)
1、mkfs格式化工具
- 格式:[mkfs.ext3] 分区设备路径
- 格式:[mkfs.ext4] 分区设备路径
- 格式:[mkfs.xfs] 分区设备路径
[root@localhost ~]# mkfs. //双击[Tab]可查看文件系统类型
mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs
2、创建文件系统(格式化分区设备)
用途:按照需要的不同的文件系统类型进行格式化分区
步骤3:
① /dev/vdb1 ==> EXT4类型
[root@localhost ~]# mkfs.ext4 /dev/vdb1 //格式化分区为ext4文件系统
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
② /dev/vdb2 ==> XFS类型
[root@localhost ~]# mkfs.xfs /dev/vdb2 //格式化分区为xfs文件系统
meta-data=/dev/vdb2 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, 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
③ 查看UUID和文件系统
[root@localhost ~]# blkid /dev/vdb1 //查看UUID和文件系统
/dev/vdb1: UUID="b88a568a-6e22-473e-a8ba-2f459ce4dfa3" TYPE="ext4"
[root@localhost ~]# blkid /dev/vdb2
/dev/vdb2: UUID="842a2040-bdb8-4bcb-ac49-2f338fd6bea6" TYPE="xfs"
3、blkid识别文件系统类型工具
用途:查看分区设备的UUID和文件系统类型
格式:blkid 分区设备路径 (例如:/dev/vdb1)
例如:
[root@localhost ~]# blkid /dev/vdb1
/dev/vdb1: UUID="b88a568a-6e22-473e-a8ba-2f459ce4dfa3" TYPE="ext4"
[root@localhost ~]# blkid /dev/vdb2
/dev/vdb2: UUID="842a2040-bdb8-4bcb-ac49-2f338fd6bea6" TYPE="xfs"
四、访问文件系统
1、访问已格式化的分区
使用mount命令挂载,并访问已格式化的分区测试
注意:挂载的分区设备对应一个分区,不能多个分区设备同时挂载同一个访问点;
步骤4:
[root@localhost ~]# mkdir /mypart1 /mypart2
[root@localhost ~]# mount /dev/vdb1 /mypart1/
[root@localhost ~]# mount /dev/vdb2 /mypart2/
[root@localhost ~]# df -h | grep mypart
/dev/vdb1 2.0G 6.0M 1.8G 1% /mypart1
/dev/vdb2 1014M 33M 982M 4% /mypart2
2、df 工具检查使用情况
用途:显示正在挂载的设备信息(文件系统或对应分区设备、使用容量、挂载点)
格式:df [-h]
选项:[-h] 显示单位(K、M、G)
例如:
[root@localhost ~]# df -h /
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 4.4G 13G 26% /
注意:不添加访问点,因目录创建在根目录下,则占用根目录的设备的存储空间
3、开机自动挂载(永久挂载)
配置文件 /etc/fstab 。实现开机自动挂载
记录格式:分区设备路径 挂载点 文件系统类型 参数 备份标记 检测顺序
部分记录说明:
- 参数:defults,命令的集合
- 备份标记:0,代表不备份(系统的dump可备份分区文件,但效率及成功率低)
- 检测顺序:0,磁盘设备检测
- mount -a 作用:
① 检测/etc/fstab文件配置是否错误,按照Linux系统识别方法进行挂载
② 检测/etc/fstab中,配置书写完成,但当前没有挂载的设备,将进行自动挂载
步骤5:
[root@localhost ~]# vim /etc/fstab
# /etc/fstab
# Created by anaconda on Mon Mar 1 14:53:18 2021
#
# 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
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=2ac42f49-b787-4b0f-8137-68b1424e033b /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/vdb1 /mypart1 ext4 defaults 0 0
/dev/vdb2 /mypart2 xfs defaults 0 0
验证1:
[root@localhost ~]# mount -a //无报错信息则不方便识别,需进行卸载挂载点验证
验证2:
根据配置文件自动挂载验证,若不能自动挂载则说明有问题
[root@localhost ~]# umount /mypart1
[root@localhost ~]# umount /mypart2
[root@localhost ~]# df -h | grep mypart
[root@localhost ~]# mount -a //根据配置文件自动挂载
[root@localhost ~]# df -h | grep mypart
/dev/vdb1 2.0G 6.0M 1.8G 1% /mypart1
/dev/vdb2 1014M 33M 982M 4% /mypart2
[root@localhost ~]# reboot //重启(非必须)
常见报错1:文件系统类型写错
[root@localhost ~]# vim /etc/fstab
/dev/vdb1 /mypart1 ext3 defaults 0 0
[root@localhost ~]# mount -a
mount: 文件系统类型错误、选项错误、/dev/vdb1 上有坏超级块、
缺少代码页或助手程序,或其他错误
有些情况下在 syslog 中可以找到一些有用信息- 请尝试
dmesg | tail 这样的命令看看。
常见报错2:挂载点目录写错
[root@localhost ~]# vim /etc/fstab
/dev/vdb2 /mypart3 xfs defaults 0 0
[root@localhost ~]# mount -a
mount: 挂载点 /mypart3 不存在
常见报错3:在挂载点目录下umount
[root@localhost mypart2]# umount /mypart2
umount: /mypart2:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
常见报错4:挂载的分区设备不存在
[root@localhost ~]# vim /etc/fstab
/dev/vdc2 /mypart3 xfs defaults 0 0
[root@localhost /]# mount -a
mount: 特殊设备 /dev/vdc2 不存在
如果/etc/fstab文件有误又进行重启,【进入维护模式】修复办法:
重启后,因系统无法找到分区设备,将进入交互界面再修改配置
1.输入root密码
2.修改/etc/fstab配置文件
3.确认无误后,进行reboot重启
步骤总结:
步骤1:识别硬盘lsblk
步骤2:分区规划fdisk、fdisk -l(MBR分区模式)
步骤3:刷新分区表partprode
步骤4:格式化文件系统mkfs,ext4 mkds.xfs(blkid查看文件系统)
步骤5:挂载mount,修改/etc/fstab开机自动挂载(mount -a、df -h查看挂载磁盘信息)
补充:/dev/sda5表示含义:
① SCSI接口设备第一块的第一个逻辑分区;
② SCSI接口设备第一块的第5个分区
五、GPT分区模式及Parted工具
GPT分区模式(GPT,GUID Partition Table)
- 全局唯一标识分区表;
- 突破固定大小64字节的分区表限制;
- 最多可支持128个主分区,最大支持18EB磁盘;(1EB=1024PB=1024x1024TB)
注意:一块硬盘只能有一个分区方案,MBR与GPT不能共存;
注意:工作环境中,分区尽量不大于10个,不易维护;
1、parted分区指令工具(可划分MBR也可划分GPT)
格式:parted 硬盘设备 [指令]...
指令:
- [ help ] //查看指令帮助
- [ mktable msdos|gpt] //建立指定模式分区表(可指定MBR或GPT)
- [ mkpart 分区名称 文件系统类型 start end ] //指定大小或百分比%作为起始、结束位置
- [ print ] //查看分区表
- [ rm 序号 ] //删除指定的分区
- [ quit ] //退出交互环境
注意:划分分区时,起始点与结束点位置需要计算首尾,非fdisk+容量大小方式;
正常报错提示:
[root@localhost images]# parted /dev/vdb //对磁盘进行分区
错误: /dev/vdb: unrecognised disk label //正常报错:提示没有指定分区模式
...
注意:fdisk分区工具没有报错,因fdisk未指定分区模式时默认为MBR分区模式
例如1:
[root@localhost images]# parted /dev/vdb //对磁盘进行分区
GNU Parted 3.1
使用 /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print //查看分区表
错误: /dev/vdb: unrecognised disk label
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted) mktable gpt //指定分区模式为GPT
(parted) print //查看分区表
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
(parted) mkpart //划分磁盘分区
分区名称? []? haha //说明分区名称(随便写)
文件系统类型? [ext2]? ext4 //说明文件系统类型(仅说明。不会进行格式化)
起始点? 0 //指定起始点位置
结束点? 10G //指定结束点位置
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? Ignore //因需划分系统保留数据空间,选择忽略即可
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 17.4kB 10.0GB 10000MB haha
例如2:
(parted) unit //双击[Tab]可查看显示的单位
align-check mklabel print resizepart toggle
disk_set mkpart quit rm unit
disk_toggle mktable rescue select version
help name resize set
(parted) unit GB //选择GB为显示单位
(parted) print //查看size大小,已显示GB单位
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 0.00GB 10.0GB 10.0GB haha
(parted) mkpart //划分第2个分区
分区名称? []? haha
文件系统类型? [ext2]? ext4
起始点? 10G
结束点? 20G
(parted) mkpart //划分第3个分区
分区名称? []? xixi
文件系统类型? [ext2]? ext4
起始点? 20G
结束点? 30G
(parted) quit //与fdisk不同,无w保存概念,划分分区时已编写磁盘操作
信息: You may need to update /etc/fstab.
[root@localhost images]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 80G 0 disk
├─vdb1 252:17 0 9.3G 0 part //进律GIB:1024 GB:1000
├─vdb2 252:18 0 9.3G 0 part
└─vdb3 252:19 0 9.3G 0 part
例如3:通过命令方式进行分区划分
[root@localhost /]# parted /dev/vdb mkpart haha ext4 40G 50G
信息: You may need to update /etc/fstab.
[root@localhost /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 80G 0 disk
├─vdb1 252:17 0 9.3G 0 part
├─vdb2 252:18 0 9.3G 0 part
├─vdb3 252:19 0 9.3G 0 part
└─vdb4 252:20 0 9.3G 0 part
例如4:通过命令方式进行分区划分,大小位置可用%表示(需要计算,计算错误则报错)
[root@localhost /]# parted /dev/vdb mkpart xixi ext4 50G 100%
信息: You may need to update /etc/fstab.
[root@localhost /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 80G 0 disk
├─vdb1 252:17 0 9.3G 0 part
├─vdb2 252:18 0 9.3G 0 part
├─vdb3 252:19 0 9.3G 0 part
├─vdb4 252:20 0 9.3G 0 part
└─vdb5 252:21 0 33.4G 0 part
提示:重新指定分区模式,则删除磁盘所有内容并提示是否重新指定分区模式
(parted) mktable gpt
警告: The existing disk label on /dev/vdb will be destroyed and all data on this
disk will be lost. Do you want to continue?
是/Yes/否/No?
注意:如果磁盘内容不重要,可根据mktable gpt方式重置分区
常见报错:Unit选择进律单位,指令输入有误
(parted) unit
Unit? [compact]? unit GB
parted: invalid token: unit
常见报错:# rm -rf /dev/vdb
硬盘设备是特殊存在,若要去掉硬盘,需要拔掉硬件;做磁盘分区的删除操作必须用磁盘工具进行删除(例如:fdisk、parted)
常见报错:错误的文件系统类型,会报错
文件系统类型? [ext2]? cd
parted: invalid token: cd
常见报错:新划分磁盘分区的起始点位置在其它磁盘的起始结束点位置当中
(parted) mkpart
分区名称? []? xixi
文件系统类型? [ext2]?
起始点? 11G
结束点? 30G
警告: You requested a partition from 11.0GB to 30.0GB (sectors
21484375..58593750).
The closest location we can manage is 20.0GB to 30.0GB (sectors
39061504..58593750).
Is this still acceptable to you?
是/Yes/否/No? n
注意:若新划分磁盘分区的起始点可以不再前一块磁盘的结束点位置创建,但计算位置大小麻烦,不建议此方式划分。
六、SWAP交换空间
用途:利用硬盘的空闲空间充当内存的空间,创建新的分区;当物理内存即将占满,CPU可以将内存中的数据暂时放入交换空间中,缓解真实物理内存的压力;(CPU--->内存--->硬盘)
交换空间最好为内存的2倍,交换空间最大不会超过16G
案例1:利用硬盘分区方式制作交换空间(分区扩展)
1、创建Swap分区
首先添加20G硬盘进行(MBR分区模式)规划分区,划分2个2G的主分区、1个3G的主分区、2个4G的逻辑分区;
步骤1:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdc 252:32 0 20G 0 disk
...
[root@localhost ~]# fdisk /dev/vdc
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (4196352-41943039,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-41943039,默认为 41943039):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p):
Using default response p
分区号 (3,4,默认 3):
起始 扇区 (8390656-41943039,默认为 8390656):
将使用默认值 8390656
Last 扇区, +扇区 or +size{K,M,G} (8390656-41943039,默认为 41943039):+3G
分区 3 已设置为 Linux 类型,大小设为 3 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e):
Using default response e
已选择分区 4
起始 扇区 (14682112-41943039,默认为 14682112):
将使用默认值 14682112
Last 扇区, +扇区 or +size{K,M,G} (14682112-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 13 GiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (14684160-41943039,默认为 14684160):
将使用默认值 14684160
Last 扇区, +扇区 or +size{K,M,G} (14684160-41943039,默认为 41943039):+4G
分区 5 已设置为 Linux 类型,大小设为 4 GiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 6
起始 扇区 (23074816-41943039,默认为 23074816):
将使用默认值 23074816
Last 扇区, +扇区 or +size{K,M,G} (23074816-41943039,默认为 41943039):+4G
分区 6 已设置为 Linux 类型,大小设为 4 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/vdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xb90c96e4
设备 Boot Start End Blocks Id System
/dev/vdc1 2048 4196351 2097152 83 Linux
/dev/vdc2 4196352 8390655 2097152 83 Linux
/dev/vdc3 8390656 14682111 3145728 83 Linux
/dev/vdc4 14682112 41943039 13630464 5 Extended
/dev/vdc5 14684160 23072767 4194304 83 Linux
/dev/vdc6 23074816 31463423 4194304 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdc 252:32 0 20G 0 disk
├─vdc1 252:33 0 2G 0 part
├─vdc2 252:34 0 2G 0 part
├─vdc3 252:35 0 3G 0 part
├─vdc4 252:36 0 1K 0 part
├─vdc5 252:37 0 4G 0 part
└─vdc6 252:38 0 4G 0 part
2、格式化交换分区
格式:mkswap 分区设备 //格式化交换分区
注意:若有多个交换分区设备,优先级越大,当内存不够时就先使用哪个分区的设备
步骤2:
[root@localhost ~]# mkswap /dev/vdc1 //格式化交换分区
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=5ffda770-30ab-45fe-b9a2-7c276241e759
[root@localhost ~]# blkid /dev/vdc1 //查看文件系统类型
/dev/vdc1: UUID="5ffda770-30ab-45fe-b9a2-7c276241e759" TYPE="swap"
[root@localhost ~]# swapon
NAME TYPE SIZE USED PRIO //PRIO数值越大,代表优先级越大
/dev/dm-1 partition 2G 56.5M -1
3、启用/关闭交互分区
- 格式:swapon 或 swapon -s //查看交换分区
- 格式:swapon 分区设备 //启用交互分区
- 格式:swapoff 分区设备 //停用交换分区
- 格式:swapon -a //检测交换分区的书写(类似mount -a)
步骤3:
[root@localhost ~]# swapon /dev/vdc1 //启用交换分区
[root@localhost ~]# swapon //查看交换空间组成的成员信息
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 56.5M -1
/dev/vdc1 partition 2G 0B -2
[root@localhost ~]# free -m //显示内存和交换空间(m代表mb)
total used free shared buff/cache available
Mem: 991 689 72 5 229 115
Swap: 4095 56 4039
[root@localhost ~]# swapoff /dev/vdc1 //停用交换分区
[root@localhost ~]# swapon
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 56.1M -1
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 991 688 73 5 229 116
4、开机自启交换分区挂载
步骤4:修改/etc/fstab配置文件
注意:swapon -a专门检测/etc/fstab文件充当交换分区的设备
[root@localhost ~]# swapon
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 56.1M -1
[root@localhost ~]# vim /etc/fstab
/dev/vdc1 swap swap defaults 0 0
[root@localhost ~]# swapoff /dev/vdc1
[root@localhost ~]# swapon
NAME TYPE SIZE USED/ PRIO
/dev/dm-1 partition 2G 55.9M -1
[root@localhost ~]# swapon -a //检测交换分区的书写
[root@localhost ~]# swapon
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 55.9M -1
/dev/vdc1 partition 2G 0B -2
补充:逻辑卷/dev/centos/swap对应交换空间中的/dev/dm-1设备(逻辑卷充当了交换空间)
[root@localhost ~]# lvscan
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos/root' [<17.00 GiB] inherit
[root@localhost ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/dm-1 partition 2097148 58800 -1
/dev/vdc1 partition 2097148 0 -2
[root@localhost ~]# ls -l /dev/centos/swap
lrwxrwxrwx. 1 root root 7 3月 10 16:45 /dev/centos/swap -> ../dm-1
七、扩展Swap空间
利用文件方式创建Swap空间(生成较大的文件占用硬盘空间,并把占用空间提供给交换空间)
格式:dd if=源设备 of=目标设备 bs=块大小 count=块数 //记录读写数据
备注:dd if=数据的源头 of=生成的文件 bs=每次读写数据的大小 count=次数
- /dev/zero设备:拥有无限的数据
注意:swapon支持文件
注意:dd命令一直读写数据,直到系统存储满才结束,of可以协助生成文件
案例2:利用文件方式制作交换空间(文件扩展)
1、创建Swap文件
步骤1:
[root@localhost ~]# dd if=/dev/zero of=/opt/sw.txt bs=1M count=2048
记录了2048+0 的读入
记录了2048+0 的写出
2147483648字节(2.1 GB)已复制,12.4918 秒,172 MB/秒
[root@localhost ~]# ls -lh /opt/sw.txt
-rw-r--r--. 1 root root 2.0G 3月 10 19:26 /opt/sw.txt
2、格式化交换文件(swap文件系统)
格式:mkswap [-f] 交换文件
选项:[-f] 标识强制执行(force)的意思(与RPM选项相同)
步骤2:
[root@localhost ~]# mkswap /opt/sw.txt //格式化交换文件
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=64da8ee5-86d7-4be4-b05f-ad5e0901aaa8
[root@localhost ~]# swapon /opt/sw.txt //启用交换文件
swapon: /opt/sw.txt:不安全的权限 0644,建议使用 0600。
[root@localhost ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/dm-1 partition 2097148 69308 -1
/dev/vdc1 partition 2097148 0 -2
/opt/sw.txt file 2097148 0 -3
3、开机自动挂载
# vim /etc/fstab
/opt/1.txt swap swap defaults 0 0
小结:
本篇章节为 【第一阶段】ENGINEER-DAY2 的学习笔记,可以初步了解到 磁盘空间管理fdisk、parted工具、开机自动挂载、文件系统、交换空间。除此之外推荐参考相关学习网址:
- 菜鸟教程 - 学的不仅是技术,更是梦想!
Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解