RedHat9 | 磁盘管理

发布于:2024-05-22 ⋅ 阅读:(93) ⋅ 点赞:(0)

硬盘分区类型

MBR分区方案

MBR也被称为主引导记录,它存在0柱面0磁道0扇区内,在磁盘的第一个扇区内,大小为512字节

  • 512字节包含:446字节初始化程序加载器、64字节分区表、2字节校验码
  • 由于每个分区为16字节,所以MBR只能支持4个主分区,每个分区的最大硬盘空间支持2T

分区方案

  • 分区表:64字节
  • 1个分区=16字节
  • 4 x 16 = 64字节,所以只能分4个分区
  • 主分区最多4个,分别占用编号 1-4
    • 主分区:可以格式化使用
  • 分区不够用:将1个也只能将1个主分区设置为扩展分区
    • 扩展分区:不能使用
    • 将扩展分区划分为多个逻辑分区
    • 逻辑分区:可以格式化使用,逻辑分区的编号一定是从5开始
      在这里插入图片描述
GPT分区方案

GPT分区方案是一种较新的硬盘分区类型,与MBR分区方案相比,GPT具有较高的灵活性

  • 分区支持:支持最多128个分区
  • 会将分区表备份在磁盘的末尾
  • GPT采用64位地址,支持最大容量为18EB
    在这里插入图片描述

磁盘分区

查看所有分区信息

fdisk -l

在这里插入图片描述
在这里插入图片描述

MBR分区方案

5G的磁盘,划分5个1G分区

3个主分区,1个扩展分区(2个逻辑分区)

  • 分区
  • 格式化
  • 挂载
  • 使用
fdisk

fdisk交互式命令列表

DOS (MBR)	| DOS(MBR)相关的命令
   a   toggle a bootable flag				| 切换启动分区标记(通常用户设置哪些分区是活动的或可引导的)
   b   edit nested BSD disklabel			| 编辑BSD磁盘标签(通用用于BSD Unix系统)
   c   toggle the dos compatibility flag	| 切换DOS兼容性标准

  Generic	| 通用命令
   d   delete a partition					| 删除一个分区
   F   list free unpartitioned space		| 列出未分区的空闲空间
   l   list known partition types			| 列出已知的分区类型(如FAT32、NTFS、Linux等)
   n   add a new partition					| 添加一个新分区
   p   print the partition table			| 打印分区表
   t   change a partition type				| 更改分区类型(类似Windows的磁盘标识,给磁盘设置一个名称)
   v   verify the partition table			| 验证分区表
   i   print information about a partition	| 打印有关分区的信息

  Misc	2	| 其他命令
   m   print this menu						| 列出所有命令(帮助)
   u   change display/entry units			| 更改显示/输入单位
   x   extra functionality (experts only)	| 额外的功能

  Script	| 脚本相关的命令
   I   load disk layout from sfdisk script file				| 从`sfdisk`脚本文件中加载磁盘布局
   O   dump disk layout to sfdisk script file				| 将磁盘布局转储到`sfdisk`脚本文件

  Save & Exit	| 保存和退出
   w   write table to disk and exit							| 将分区表写入磁盘并退出
   q   quit without saving changes							| 不保存更改退出

  Create a new label	| 创建新分区表
   g   create a new empty GPT partition table				| 创建GUID分区表(GPT)
   G   create a new empty SGI (IRIX) partition table		| 创建新的SGI分区表(适用于SGI IRIX操作系统)
   o   create a new empty DOS partition table				| 创建一个新的DOS分区表(MBR)
   s   create a new empty Sun partition table				| 创建一个新的Sun分区表(适用于Sun系操作系统)

分区

fdisk /dev/vdb

Command (m for help): n		# 添加1个新分区
Partition type				# 磁盘类型
   p   primary (0 primary, 0 extended, 4 free)			# 主分区
   e   extended (container for logical partitions)		# 扩展分区
Select (default p): p		# 添加1个主分区(直接回车会默认添加1个主分区)
Partition number (1-4, default 1): 1		# 分区编号,默认为1
First sector (2048-10485759, default 2048): 		# 起始扇区,默认从2048开始,前面做保留给GPT分区表使用
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-10485759, default 10485759): +1G	# 结束扇区,也就是分区的大小

。。。
重复上述操作,划分3个主分区
。。。

Command (m for help): n		# 添加1个新分区
Partition type
   p   primary (3 primary, 0 extended, 1 free)
   e   extended (container for logical partitions)
Select (default e): e		# 添加1个扩展分区(直接回车会默认添加扩展分区,因为主分区已经使用完)

Selected partition 4			# 分区编号为4
First sector (6293504-10485759, default 6293504): 		
Last sector, +/-sectors or +/-size{K,M,G,T,P} (6293504-10485759, default 10485759):   # 使用所有空间

Created a new partition 4 of type 'Extended' and of size 2 GiB.

在这里插入图片描述

Command (m for help): n		# 添加1个新分区
All primary partitions are in use.		# 提示所有主分区都已使用
Adding logical partition 5				# 分区编号为5
First sector (6295552-10485759, default 6295552): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (6295552-10485759, default 10485759): +1G

Created a new partition 5 of type 'Linux' and of size 1 GiB.

Command (m for help): n		# 添加1个新分区
All primary partitions are in use.
Adding logical partition 6				# 分区编号为6
First sector (8394752-10485759, default 8394752): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (8394752-10485759, default 10485759): 

Created a new partition 6 of type 'Linux' and of size 1021 MiB.

在这里插入图片描述

Command (m for help): w					# 将分区表写入磁盘并退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

在这里插入图片描述

修改某个分区的分区类型

Command (m for help): t						# 更改分区类型
Partition number (1-6, default 6): 1		# 选择分区,当前选择第一个分区
Hex code or alias (type L to list all): l	# 列出所有类型	
Hex code or alias (type L to list all): 82	# 更改为82,也就是`Linux swap / Solaris`

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

在这里插入图片描述

Command (m for help): w					# 写入退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
parted

parted是一款强大的磁盘分区和分区大小调整工具,与fdisk区别

  • 能够调整分区的大小
  • 可以处理常见的分区格式:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交换分区
  • 还提供非交互的分区方式

parted交互式命令列表

  • align-check TYPE N:检查分区是否符合Type的要求
  • help [COMMAND] :输出帮助信息
  • mklabel,mktable LABEL-TYPE:创建一个新的磁盘标签(分区表)
    • LABEL-TYPE:可以是msdos(MBR)、gpt(GUID)
  • mkpart PART-TYPE [FS-TYPE] START END :创建一个新的分区
    • PART-TYPE:分区类型,如primary‘extended、logical等
    • FS-TYPE:文件系统类型
    • START:分区起始位置
    • END:分区结束位置
  • name NUMBER NAME :将分区NUMBER命名为NAME
  • print [devices|free|list,all|NUMBER]:显示分区表、可用设备、空闲空间、所有找到的分区或特定分区的信息
  • quit:退出
  • rescue START END:在 START 和 END 附近恢复一个丢失的分区
  • rm NUMBER:删除分区 NUMBER
  • select DEVICE :选择设置
  • disk_set FLAG STATE:更改选定设备的 FLAG 状态
  • disk_toggle [FLAG]:切换选定设备上的 FLAG 状态
  • set NUMBER FLAG STATE:更改分区 NUMBER 上 FLAG的状态
  • toggle [NUMBER [FLAG]] :切换分区 NUMBER 上 FLAG 的状态。如果未指定 FLAG 则切换所有标志
  • unit UNIT:设置默认单位为 UNIT(如 MB、GB等)
  • version:显示 GNU parted 的版本号和版权信息

分区

parted /dev/vdc			# 指定设备
(parted) mklabel 		# 定义分区方案
New disk label type? msdos		# 选择MBR分区方案
(parted) mkpart                 # 分区    		                                      
Partition type?  primary/extended? primary		# 分区类型,这里选择主分区
File system type?  [ext2]? ext2                 # 文件系统类型,不管设置什么都无效,所以保持默认即可
Start? 2048s					# 分区起始位置
End? 1000MB						# 分区结束位置,1000MB、1G,或者是百分比(10G硬盘,划分1G也就是10%)

在这里插入图片描述

(parted) q              # 保存退出            		                                      
Information: You may need to update /etc/fstab.
udevadm settle			# 刷新内核信息

非交互式分区方式

# 如果要使用非交互式分区,需要先定义分区方案
parted /dev/vdc			# 指定设备
(parted) mklabel 		# 定义分区方案
New disk label type? msdos		# 选择MBR分区方案

# 才可以使用非交互式命令
parted /dev/vdc mkpart primary ext2 1000MB 2000MB

在这里插入图片描述

GPT分区方案

5G的磁盘,划分5个1G分区

  • 分区
  • 格式化
  • 挂载
  • 使用
parted /dev/vdc
(parted) mklabel 			# 定义分区方案
New disk label type? gpt    # 选择GPT            	                                  
Warning: The existing disk label on /dev/vdc will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? yes                 # 因为我们之前使用的分区方案是MBR,现在修改了分区方案,所以提示:数据将会别清空                                              
(parted) mkpart 			# 分区
Partition name?  []? first       	# 给分区定义一个名字                                         
File system type?  [ext2]?          # 文件系统类型,不管设置什么都无效,所以保持默认即可
Start? 0%					# 分区的起始位置
End? 1000M					# 分区的结束位置
(parted) q            		# 保存退出                                                    
Information: You may need to update /etc/fstab.

在这里插入图片描述

非交互式

parted /dev/vdc mkpart second ext2 1000M 2000M
parted /dev/vdc mkpart third ext2 2000M 3000M

在这里插入图片描述

删除分区third

parted /dev/vdc rm 3
parted /dev/vcd print

在这里插入图片描述

格式化

常见的文件系统类型

  • Windows:fat32、NTFS、exfat
  • Linux:exfat、ext2、ext3、ext4、xfs、vfat
  • MacOS:exfat
lsblk常见参数

查看系统的磁盘使用情况

参数 作用
-a 显示所有设备信息
-f 显示文件系统信息
-m 显示磁盘归属以及权限信息
-S 显示有SCSI类型的磁盘信息
blkid常见参数

可以查看Linux系统中的全部块设备(硬盘或光盘)信息

参数 作用
blkid -s UUID 显示指定设备的UUID
blkid -s TYPE 显示指定设备的文件系统
blkid 显示当前系统的中全部块设备的信息
mkfs常见参数

用于格式化设备

参数 作用
-c 检查指定设备是否损坏
-t 设置文件系统类型

查看磁盘的当前分区

lsblk

在这里插入图片描述

显示文件系统信息,没有显示文件系统则代表还未格式化

lsblk -f /dev/vdb

在这里插入图片描述

格式化分区

mkfs -t ext4 /dev/vdb1		# 将vdb硬盘的第一个分区格式化为ext4
mkfs.ext4 /dev/vdb1			# 可以忽略-t选项,直接使用.代替

在这里插入图片描述
在这里插入图片描述

临时挂载与永久挂载

df常见参数
参数 作用
-a 显示所有文件系统
-h 显示当前系统的全部硬盘使用情况
-t 显示指定文件系统的硬盘使用情况
-T 显示文件系统的类型
mount常见参数
参数 作用
mount 查看当前系统已有文件系统信息
-r 将文件系统设置为只读模式
-w 将文件系统设置为读写模式
-o 设置权限
-a 加载/etc/fstab文件中记录的所有挂载
mount临时挂载

临时挂载,重启后失效

mkdir /mnt/vdb1		# 创建挂载点
mount /dev/vdb1 /mnt/vdb1

在这里插入图片描述

为挂载设置只读权限

mkfs.ext4 /dev/vdb2		# 格式化
mkfs.ext4 /dev/vdb3		# 格式化

在这里插入图片描述

mkdir /mnt/vdb2			# 创建挂载点目录
mkdir /mnt/vdb3			# 创建挂载点目录
mount -o ro /dev/vdb2 /mnt/vdb2		# 方法1:以只读方式挂载
mount -r /dev/vdb3 /mnt/vdb3		# 方法2:以只读方式挂载

在这里插入图片描述

echo hhhh > /mnt/vdb2/h.txt		# 测试只读权限
echo hhhh > /mnt/vdb3/h.txt		# 测试只读权限

在这里插入图片描述

不卸载的基础上重新挂载

mount -o remount,rw /dev/vdb2		# 重新以读写方式挂载

在这里插入图片描述

卸载文件系统,取消挂载

umount /dev/vdb3
fstab永久挂载

查看当前挂载信息

lsblk -f /dev/vdb

在这里插入图片描述

/etc/fstab配置文件解析
UUID=5e75a2b9-1367-4cc8-bb38-4d6abc3964b8       /boot   xfs     defaults        0       0
  • UUID:设备名称或设备ID
  • /boot:挂载点/挂载目录
  • xfs:文件系统类型
  • defaults:选项(权限、认证设定、其它)
  • 0:内核日志检测机制(0:不检测,1:检测,2:检测,1比2优先级高)
  • 0:硬盘检测机制(0:不检测)

修改配置文件,实现开机自动挂载

vim /etc/fstab

# 追加一行
/dev/vdb2	/mnt/vdb2	ext4	defaults	0 0

加载配置文件系统

mount -a		# 重新加载配置/etc/fstab文件中的挂载

在这里插入图片描述

重启系统,以验证自动挂载

reboot

在这里插入图片描述

验证修改挂载点后是否影响内容

新建两个挂载点

mkdir /mnt/vdc11
mkdir /mnt/vdc12
mount /dev/vdc1 /mnt/vdc11		# 先挂载到vdc11文件夹中
dd if=/dev/zero of=/mnt/vdc11/file bs=1M count=1000		# 在vdc11中创建1个1G的文件

在这里插入图片描述

取消挂载后重新挂载,可以看到内容仍然存在,其实挂载点只是分区的一个入口,不影响内容

umount /dev/vdc1
mount /dev/vdc1 /mnt/vdc12

在这里插入图片描述

验证重复挂载在同一目录是否影响原有数据

创建挂载点

mkdir /mnt/vdb56

格式化vdb5、vdb6

mkfs.xfs /dev/vdb5
mkfs.xfs /dev/vdb6

挂载vdb5到vdb56并写入文件

mount /dev/vdb5 /mnt/vdb56
dd if=/dev/zero of=/mnt/vdb56/file bs=1M count=1000

在这里插入图片描述

将vdb6挂载到vdb56并写入文件

mount /dev/vdb6 /mnt/vdb56
dd if=/dev/zero of=/mnt/vdb56/file1 bs=1M count=1000

在这里插入图片描述

我们重复挂载,可以看到不影响内容

mount /dev/vdb5 /mnt/vdb56
ll /mnt/vdb56
mount /dev/vdb6 /mnt/vdb56
ll /mnt/vdb56

在这里插入图片描述

如何根据磁盘使用情况判断分区的类型

我们首先查看当前系统的vdb的磁盘使用情况

lsblk /dev/vdb

根据显示我们可以得出这是一个使用MBR分区方案的磁盘

  • 主分区的编号一定是从1-4的,可以看到vdb1、vdb2、vdb3均为主分区
  • vdb4为什么不是主分区呢,以为主分区不可能是1K,这很明显是1个扩展分区,扩展分区的大小通常为1K
  • 因为vdb4是扩展分区,所以vdb5是逻辑分区
    在这里插入图片描述

接着我们查看当前系统的vdc的磁盘使用情况

lsblk /dev/vdc

在这里插入图片描述

根据显示情况,我们可以判断这是一个使用GPT分区方案的磁盘

  • 首先主分区的编号一定是从1-4的,根据磁盘容量我们可以得出vdc1、vdc2、vdc3、vdc4均为主分区
  • 根据vdc5的磁盘容量,我们也同样可以得出它为主分区
  • 能出现超过4个主分区的分区方案只有GPT

管理交换分区

free常见参数
参数 作用
-b 设置显示单位为B
-m 设置显示单位为MB
-k 设置显示单位为KB
-h 自动调整合适的显示单位
swapon常见参数

用于激活交换分区,让SWAP交换分区内存可以立即被使用

参数 作用
-s 显示交换分区的使用情况
-a 激活所有/etc/fstab文件中的交换分区
swapoff常见参数

用于关闭SWAP交换分区

参数 作用
-a 关闭/etc/fstab文件中的全部swap设备
管理交换分区

查看当前交换分区的大小

free -m

在这里插入图片描述

找一块空的分区

lsblk -f

在这里插入图片描述

建立交换分区

mkswap /dev/vdc2

激活交换分区,SWAP交换分区内存可以立即被使用

swapon /dev/vdc2

在这里插入图片描述

永久挂载

vim /etc/fstab

# 追加下列内容
/dev/vdc2	swap	swap	defaults	0 0
# 或
/dev/vdc2	none	swap	defaults	0 0

激活所有/etc/fstab文件中的交换分区,相当于重载fstab文件

swapon -a

关闭交换分区

swapoff /dev/vdc2
使用本地存储创建交换分区

首先创建一个文件

dd if=/dev/zero of=/swapfile bs=100M count=1			# 在根目录创建一个100M的文件

格式化刚刚创建的文件

mkswap /swapfile

设置权限保证安全

chmod 0600 /swapfile

激活交换分区

swapon /swapfile

查看交换分区

swapon -s

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到