华子目录
磁盘简介
磁盘(disk)是指利用磁记录技术存储数据的存储器。
磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy Disk,简称软盘),如今常用的磁盘是硬磁盘(Hard disk,简称硬盘)。
分区的两种格式
MBR(MS-DOS 主引导记录区)方案
MBR是传统的分区机制,使用BIOS引导PC设备,寻址空间只有
32bit长。
- 分区空间最大支持2.2TB
- 支持的分区数量:4个主分区或者3个主分区1个扩展分区
为什么MBR最多只能有4个主分区?
因为分区表占据64个字节,其中每个分区的信息占用16个字节,分区表里面可以记录四个分区信息描述。
MBR分区类型
GPT(GUID Partition Table)方案
是一种比MBR分区更先进、更灵活的磁盘分区模式。
- 在默认情况下,GPT最多可支持128个分区
- 支持大于2.2TB的总容量及大于2.2TB的分区,最大支持
18EB(1EB=1024PB,1PB=1024TB,1TB=1024GB) - GPT分区表自带备份
- 向后兼容MBR,GPT分区表上包含保护性的MBR区域
查看磁盘信息(块设备)
#查看磁盘信息
[root@loaclhost ~]# fdisk -l
Disk /dev/nvme0n1:30 GiB,32212254720 字节,62914560 个扇区
磁盘型号:VMware Virtual NVMe Disk
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2af3528a
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/nvme0n1p1 * 2048 1026047 1024000 500M 83 Linux
/dev/nvme0n1p2 1026048 42969087 41943040 20G 83 Linux
/dev/nvme0n1p3 42969088 47163391 4194304 2G 82 Linux swap / Solaris
其中*表示这里是存放系统文件的地方(与启动系统有关的文件)
#查看块设备信息(eg:光盘sr0,磁盘nvme0n1)
[root@loaclhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 8.4G 0 rom /guangpan
nvme0n1 259:0 0 30G 0 disk
├─nvme0n1p1 259:1 0 500M 0 part /boot
├─nvme0n1p2 259:2 0 20G 0 part /
└─nvme0n1p3 259:3 0 2G 0 part [SWAP]
#查看块设备信息
[root@loaclhost ~]# lsscsi
[3:0:0:0] cd/dvd NECVMWar VMware SATA CD01 1.00 /dev/sr0
[N:0:0:1] disk VMware Virtual NVMe Disk__1 /dev/nvme0n1
#查看块设备路径
[root@loaclhost ~]# find /dev -type b
/dev/sr0
/dev/nvme0n1p3
/dev/nvme0n1p2
/dev/nvme0n1p1
/dev/nvme0n1
分区前的准备工作
在分区之前,先在虚拟机上创建一个磁盘,然后重启,再点击电源,点击打开电源时进入固件,调整系统的引导顺序,然后保存退出
这时我们看到,系统没有加载我们刚刚添加的磁盘,还是原来的块设备
这是为什么呢?
因为系统需要重新启动,对我们添加的磁盘进行加载,但是在重启系统之前,我们需要做如下操作,否则系统将加载混乱
这时就出现了我们刚刚添加的磁盘sda
使用fdisk管理分区
fdisk命令工具默认将磁盘划分为mbr格式的分区
[root@loaclhost ~]# fdisk -l
Disk /dev/nvme0n1:30 GiB,32212254720 字节,62914560 个扇区
磁盘型号:VMware Virtual NVMe Disk
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2af3528a
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/nvme0n1p1 * 2048 1026047 1024000 500M 83 Linux
/dev/nvme0n1p2 1026048 42969087 41943040 20G 83 Linux
/dev/nvme0n1p3 42969088 47163391 4194304 2G 82 Linux swap / Solaris
Disk /dev/sda:3 GiB,3221225472 字节,6291456 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@loaclhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x7eebdc2d 的新 DOS 磁盘标签。
命令(输入 m 获取帮助):m
帮助:
DOS (MBR)
a 开关 可启动 标志
b 编辑嵌套的 BSD 磁盘标签
c 开关 dos 兼容性标志
常规
d 删除分区
F 列出未分区的空闲区
l 列出已知分区类型
n 添加新分区
p 打印分区表
t 更改分区类型
v 检查分区表
i 打印某个分区的相关信息
杂项
m 打印此菜单
u 更改 显示/记录 单位
x 更多功能(仅限专业人员)
脚本
I 从 sfdisk 脚本文件加载磁盘布局
O 将磁盘布局转储为 sfdisk 脚本文件
保存并退出
w 将分区表写入磁盘并退出
q 退出而不保存更改
新建空磁盘标签
g 新建一份 GPT 分区表
G 新建一份空 GPT (IRIX) 分区表
o 新建一份的空 DOS 分区表
s 新建一份空 Sun 分区表
指令 | 功能 |
---|---|
m | 显示所有指令信息 |
n | 创建新分区 |
p | 显示当前磁盘的分区信息 |
d | 删除磁盘分区 |
o | 新建一个空DOS分区表 |
g | 新建一个空GPT分区表 |
MBR分区
[root@loaclhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
分区类型
p 主分区 (0 primary, 0 extended, 4 free)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1):
第一个扇区 (2048-6291455, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-6291455, 默认 6291455): +1G
创建了一个新分区 1,类型为“Linux”,大小为 1 GiB。
命令(输入 m 获取帮助):p
Disk /dev/sda:3 GiB,3221225472 字节,6291456 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7eebdc2d
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 2048 2099199 2097152 1G 83 Linux
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
[root@loaclhost ~]#
GPT分区
[root@loaclhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):g
已创建新的 GPT 磁盘标签(GUID: 311EAFCB-DDD1-D248-BB72-3F7DF6415901)。
设备已包含一个 'dos' 签名,写入命令会将其移除。请参见 fdisk(8) 的手册页和 --wipe 选项以了解更多细节。
命令(输入 m 获取帮助):n
分区号 (1-128, 默认 1):
第一个扇区 (2048-6291422, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-6291422, 默认 6291422): +1G
创建了一个新分区 1,类型为“Linux filesystem”,大小为 1 GiB。
命令(输入 m 获取帮助):p
Disk /dev/sda:3 GiB,3221225472 字节,6291456 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:311EAFCB-DDD1-D248-BB72-3F7DF6415901
设备 起点 末尾 扇区 大小 类型
/dev/sda1 2048 2099199 2097152 1G Linux 文件系统
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
[root@loaclhost ~]# fdisk -l
Disk /dev/sda:3 GiB,3221225472 字节,6291456 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:311EAFCB-DDD1-D248-BB72-3F7DF6415901
设备 起点 末尾 扇区 大小 类型
/dev/sda1 2048 2099199 2097152 1G Linux 文件系统
删除分区
[root@loaclhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除。
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
格式化分区
两种文件系统类型
- ext4格式
- xfs格式
注:
1.格式化:给存储设备添加文件系统,会清除原有文件。
2.文件系统:操作系统用于明确磁盘或磁盘分区上的数据的方法和数据结构,操作系统读取文件的一种方法
mkfs.ext4 /dev/sda1
mkfs.xfs /dev/sda1
第一种:
[root@loaclhost ~]# mkfs.ext4 /dev/sda1
mke2fs 1.46.5 (30-Dec-2021)
创建含有 262144 个块(每块 4k)和 65536 个inode的文件系统
文件系统UUID:e5047072-830b-42cd-8d24-3bd61c070599
超级块的备份存储于下列块:
32768, 98304, 163840, 229376
正在分配组表: 完成
正在写入inode表: 完成
创建日志(8192 个块)完成
写入超级块和文件系统账户统计信息: 已完成
第二种:
#-f:强制进行格式化(仅xfs有)
[root@loaclhost ~]# mkfs.xfs /dev/sda1 -f
meta-data=/dev/sda1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
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
查看格式化后的磁盘分区信息
[root@loaclhost ~]# blkid
/dev/nvme0n1p3: UUID="f8afeac4-be76-49e5-a0a1-b32d2631b15a" TYPE="swap" PARTUUID="2af3528a-03"
/dev/nvme0n1p1: UUID="1b75d092-9fbc-4ede-9190-d9bebc29ff55" TYPE="xfs" PARTUUID="2af3528a-01"
/dev/nvme0n1p2: UUID="fe032e84-25dd-4576-9879-5228610dbf41" TYPE="xfs" PARTUUID="2af3528a-02"
/dev/sr0: UUID="2022-10-27-08-34-36-00" LABEL="RHEL-9-1-0-BaseOS-x86_64" TYPE="iso9660" PTUUID="3854687c" PTTYPE="dos"
/dev/sda1: UUID="57814119-8391-4b5e-ad34-37a347207977" TYPE="ext4" PARTUUID="bff7a043-01"
挂载
挂载就是将一个分区或者设备挂载至挂载点目录。类似于给磁盘分区分配一个目录名,通过访问目录即可访问磁盘分区的数据。
这里我们先创建一个目录,最用mount进行挂载
mount 分区路径名/设备路径名 目录名
创建目录
[root@loaclhost ~]# mkdir -v /guazai_sda1
mkdir: 已创建目录 '/guazai_sda1'
进行挂载
[root@loaclhost ~]# mount /dev/sda1 /guazai_sda1
查看
#查看全部挂载信息
[root@loaclhost ~]# mount
#过滤信息
[root@loaclhost ~]# mount | grep guazai_sda1
/dev/sda1 on /guazai_sda1 type ext4 (rw,relatime,seclabel)
挂载完之后才可以正常使用
比如我们vim一个file1文件
[root@loaclhost ~]# vim /guazai_sda1/file1
[root@loaclhost ~]# cat /guazai_sda1/file1
gasfdsafsagfsagasgsafs
gsagasfsadfsadg
将/dev/sda1从/guazai_sda1上卸载
#取消挂载
[root@loaclhost ~]# umount /guazai_sda1
#这是取消结果
[root@loaclhost ~]# cat /guazai_sda1/file1
cat: /guazai_sda1/file1: 没有那个文件或目录
#这是重新挂载的结果
[root@loaclhost ~]# mount /dev/sda1 /guazai_sda1
[root@loaclhost ~]# cat /guazai_sda1/file1
gasfdsafsagfsagasgsafs
gsagasfsadfsadg
永久挂载
系统开机就会读取挂载信息的文件是/etc/fstab,如果想要分区在系统开机就挂载的话,需要将挂载参数写入文件/etc/fstab,如果格式不对或者挂载信息写错了就会导致系统无法正常启动,会进入紧急救援模式(在该模式下进行修改)
先获取分区的UUID,type
[root@loaclhost ~]# blkid
/dev/nvme0n1p3: UUID="f8afeac4-be76-49e5-a0a1-b32d2631b15a" TYPE="swap" PARTUUID="2af3528a-03"
/dev/nvme0n1p1: UUID="1b75d092-9fbc-4ede-9190-d9bebc29ff55" TYPE="xfs" PARTUUID="2af3528a-01"
/dev/nvme0n1p2: UUID="fe032e84-25dd-4576-9879-5228610dbf41" TYPE="xfs" PARTUUID="2af3528a-02"
/dev/sr0: UUID="2022-10-27-08-34-36-00" LABEL="RHEL-9-1-0-BaseOS-x86_64" TYPE="iso9660" PTUUID="3854687c" PTTYPE="dos"
/dev/sda1: UUID="57814119-8391-4b5e-ad34-37a347207977" TYPE="ext4" PARTUUID="bff7a043-01"
再对/etc/fstab进行编辑
[root@loaclhost ~]# vim /etc/fstab
[root@loaclhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat May 13 10:24:30 2023
#
# 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.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=fe032e84-25dd-4576-9879-5228610dbf41 / xfs defaults 0 0
UUID=1b75d092-9fbc-4ede-9190-d9bebc29ff55 /boot xfs defaults 0 0
UUID=f8afeac4-be76-49e5-a0a1-b32d2631b15a none swap defaults 0 0
UUID=2022-10-27-08-34-36-00 /guangpan iso9660 defaults 0 0
UUID=57814119-8391-4b5e-ad34-37a347207977 /guazai_sda1 ext4 defaults 0 0
使用mount -a挂载fstab中的所有文件系统
[root@loaclhost ~]# mount -a
然后reboot重启,就可以实现永久挂载
[root@loaclhost ~]# reboot
查看磁盘空间得使用量:df
指令 | 功能 |
---|---|
-a | 列出所有的文件系统 |
-h | 以人们较易阅读的GB,MB,KB等格式自行显示 |
[root@loaclhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 872M 0 872M 0% /dev/shm
tmpfs 349M 5.7M 344M 2% /run
/dev/nvme0n1p2 20G 7.3G 13G 37% /
/dev/nvme0n1p1 495M 268M 227M 55% /boot
/dev/sr0 8.5G 8.5G 0 100% /guangpan
/dev/sda1 974M 24K 907M 1% /guazai_sda1
tmpfs 175M 52K 175M 1% /run/user/42
tmpfs 175M 36K 175M 1% /run/user/0
查看内存空间的使用情况(物理内存和虚拟内存)
[root@loaclhost ~]# free
total used free shared buff/cache available
Mem: 1785560 985808 338740 14676 636812 799752
Swap: 2097148 0 2097148
[root@server ~]# free -h #以人类可读的格式(如 KB, MB, GB)显示内存大小
total used free shared buff/cache available
Mem: 1.9Gi 906Mi 64Mi 4.0Mi 1.1Gi 1.0Gi
Swap: 4.0Gi 535Mi 3.5Gi
[root@loaclhost ~]# free -m #以MB为单位显示内存大小
total used free shared buff/cache available
Mem: 1743 962 330 14 621 780
Swap: 2047 0 2047
free
是 Linux
系统上一个非常有用的命令,用于显示系统的内存使用情况,包括物理内存
、交换内存(swap)
和内核缓冲区内存
的统计信息。
当你运行 free
命令时,你会看到类似以下的输出(输出可能会根据你的系统和配置有所不同):
total used free shared buff/cache available
Mem: 8062300 3518124 2037188 101308 2506988 4168560
Swap: 2097148 10388 2086760
输出中的列通常有以下含义:
- total:总物理内存大小。
- used:已使用的物理内存大小。
- free:未使用的物理内存大小。
- shared:被多个进程共享的内存大小。
- buff/cache:被缓冲和缓存占用的内存大小。这部分内存可以被回收以供新的应用程序使用,所以不应该将其视为已用内存。
- available:在不使用交换内存(swap)的情况下,估计还可以使用的内存量。
对于 Swap 部分:
- total:总的交换空间大小。
- used:已使用的交换空间大小。
- free:未使用的交换空间大小。
如果你想要更详细的输出或不同的格式,你可以使用 free
命令的选项。例如,-h
选项会以人类可读的格式(如 KB, MB, GB)显示内存大小:
free -h
或者,-m
选项会以 MB 为单位显示内存大小:
free -m
你可以通过 man free
命令来查看 free
命令的完整文档和所有可用的选项。