Linux磁盘管理

磁盘简介

磁盘(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

在这里插入图片描述

freeLinux 系统上一个非常有用的命令,用于显示系统的内存使用情况,包括物理内存交换内存(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 命令的完整文档和所有可用的选项。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

^~^前行者~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值