磁盘管理 (redhat 8.0)

磁盘管理

1.1 raid(独立冗余磁盘阵列)

  • RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。

raid0

  • 特点:没有数据冗余,没有数据校验的磁盘陈列
  • 工作原理:将两块或两块以上的硬盘,合并成一块逻辑硬盘,从而提升带宽,提高读写速率
  • 磁盘利用率:100%
  • 优点:读写速率翻倍
  • 缺点:没有冗余功能,任何一块物理硬盘损坏会直接导致整个逻辑硬盘失效

raid1

  • 特点:将一块磁盘作为磁盘镜像,从而打到冗余的目的
  • 工作原理:有两块磁盘,利用一块磁盘存储数据,另一块磁盘作为前一块磁盘的数据备份
  • 磁盘利用率:50%
  • 优点:实现了数据冗余功能,即使有磁盘发送故障,其镜像磁盘也能完好地保存数据
  • 缺点:磁盘利用率低、成本花费大、读写性能相较于raid0没有提升

raid5

  • 特点:通过存储奇偶校验信息对应数据的方式达到数据冗余的目的 ;做raid 5阵列所有磁盘容量必须一样大,当容量不同时,会以最小的容量为准
  • 工作原理:通过存储数据以及对应的奇偶校验码实现数据安全存储;即使数据意外丢失,可通过奇偶校验信息找回丢失的数据;
  • 磁盘利用率:(磁盘数-1)/磁盘数x100% (利用一块磁盘存放奇偶校验信息)
  • 优点:兼顾存储性能、数据安全、存储成本
  • 缺点:写入的速率较慢

rai1 0

  • 特点:RAID 0+1是存储性能和数据安全兼顾的方案。它在提供与RAID 1一样的数据安全保障的同时,也提供了与RAID 0近似的存储性能
  • 磁盘利用率:50%(由两个raid1组成raid0)
  • 优点:保证数据冗余、拥有接近raid0读写速率
  • 缺点:花费成本大(至少需要四块硬盘)、磁盘利用率低(50%)

1.2 linux中磁盘命名方式

Linux中磁盘的命名方式与磁盘的接口有关,规则如下:
- 传统IDE接口硬盘:/dev/hd[a-z]
- SCISI接口硬盘:/dev/sd[a-z]
- 虚拟化硬盘:/dev/vd[a-z]
在设备名称的定义规则如下,其他的分区可以以此类推
系统的第一块SCSI接口的硬盘名称为/dev/ sda
系统的第二块SCSI接口的硬盘名称为/dev/sdb
系统中分区由数字编号表示,1-4留给主分区使用和扩展分区,逻辑分区从5开始

1.3 MBR与GPT

在使用新磁盘之前,你必须对其进行分区。
MBR(MasterBootRecord)GPT(GUIDPartitionTable)是在磁盘上存储分区信息的两种不同方式。这些分区信息包含了分区从哪里开始的信息,这样操作系统才知道哪个扇区是属于哪个分区的,以及哪个分区是可以启动的。在磁盘上创建分区时,你必须在MBR和GPT之间做出选择

MBR是Master Boot Record的简称,也就是主引导记录,是位于磁盘最前边的一段引导(Loader)代
码,主要用来引导操作系统的加载与启动

特点:

  • MBR支持最大2TB磁盘,它无法处理大于2TB容量的磁盘
  • 只支持最多4个主分区。若想要更多分区,需要创建扩展分区,并在其中创建逻辑分区

GPT磁盘是指使用GUID分区表的磁盘,GUID磁盘分区表(GUID Partition Table,缩写:GPT)其含义
为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准

特点:

  • GPT对磁盘大小没有限制
  • 最多可创建128个分区
    注意:MBR与GPT之间互相转换会导致数据丢失

磁盘容量检查

df

-h 查看

[root@system_rookie ~]# df -h
文件系统               容量  已用  可用 已用% 挂载点
devtmpfs               886M     0  886M    0% /dev
tmpfs                  903M     0  903M    0% /dev/shm
tmpfs                  903M  8.8M  894M    1% /run
tmpfs                  903M     0  903M    0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  2.1G   15G   13% /
/dev/nvme0n1p1        1014M  176M  839M   18% /boot
tmpfs                  181M     0  181M    0% /run/user/0

-T 查看分区文件系统格式
格式化:以一种指定的文件格式去填充分区,组织内容的存放
文件系统(filesystem):组织文件存储方式的系统
查看文件系统格式:

[root@system_rookie ~]# df -T
文件系统              类型        1K-块    已用     可用 已用% 挂载点
devtmpfs              devtmpfs   906700       0   906700    0% /dev
tmpfs                 tmpfs      924172       0   924172    0% /dev/shm
tmpfs                 tmpfs      924172    8928   915244    1% /run
tmpfs                 tmpfs      924172       0   924172    0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs      17811456 2183604 15627852   13% /
/dev/nvme0n1p1        xfs       1038336  179984   858352   18% /boot
tmpfs                 tmpfs      184832       0   184832    0% /run/user/0

-i, --inodes 显示inode 信息而非块使用量

[root@system_rookie ~]# df -i
文件系统                Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs               226675     400  226275       1% /dev
tmpfs                  231043       1  231042       1% /dev/shm
tmpfs                  231043     649  230394       1% /run
tmpfs                  231043      17  231026       1% /sys/fs/cgroup
/dev/mapper/rhel-root 8910848   56932 8853916       1% /
/dev/nvme0n1p1         524288     301  523987       1% /boot
tmpfs                  231043       5  231038       1% /run/user/0

inode与block
每个inode与block都有编号,而每个文件都会占用一个inode,inode内则有文件数据放置的block号码;能够找到文件的inode就可以找到该文件所放置数据的block号码,从而读取文件内容;记录文件的属性、权限,同时会记录该文件的数据所在的block编号(如果分区内inode利用率打到100%即使分区内仍有空间也会显示空间不足,此时只能将分区重新进行磁盘划分)

lsblk

  • 查看当前系统所有的硬盘
 [root@system_rookie ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1  7.3G  0 rom  
nvme0n1       259:0    0   20G  0 disk 
├─nvme0n1p1   259:1    0    1G  0 part /boot
└─nvme0n1p2   259:2    0   19G  0 part 
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
nvme0n2       259:3    0   20G  0 disk 
nvme0n3       259:4    0   20G  0 disk 
nvme0n4       259:5    0   20G  0 disk 

磁盘划分

分区之前,需要先给虚拟机添加一块磁盘,以便于我们做后续的实验vmware虚拟机,请按如下进行操作:

  1. 找到对应虚拟主机点击右键,,选择设置
  2. 在硬件向导里面点击添加按钮,在硬件类型中选中“硬盘”,点击下一步
  3. 磁盘类型选择默认,然后创建新虚拟磁盘,调整大小(不要勾选立即分配空间)
  4. 最后点击下一步,完成即可

MBR是Master Boot Record的简称,也就是主引导记录,是位于磁盘最前边的一段引导(Loader)代
码,主要用来引导操作系统的加载与启动
特点:

  1. MBR支持最大2TB磁盘,它无法处理大于2TB容量的磁盘
  2. 只支持最多4个主分区。若想要更多分区,需要创建扩展分区,并在其中创建逻辑分区

GPT磁盘是指使用GUID分区表的磁盘,GUID磁盘分区表(GUID Partition Table,缩写:GPT)其含义
为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准

fdisk和gdisk

  • 磁盘划分工具
    • fdisk 用于划分MBR格式的磁盘
    • gdisk 用于划分GPT格式的磁盘
    • fdisk用于划分小于2TB的磁盘
    • gdisk用于划分大于2TB的磁盘
      fdisk -l
  • 查看本地系统内的磁盘以及分区情况
root@system_rookie ~]# fdisk -l
Disk /dev/nvme0n1:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x71fd273a

设备           启动    起点     末尾     扇区 大小 Id 类型
/dev/nvme0n1p1 *       2048  2099199  2097152   1G 83 Linux
/dev/nvme0n1p2      2099200 41943039 39843840  19G 8e Linux L


Disk /dev/nvme0n2:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/nvme0n3:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/nvme0n4:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/mapper/rhel-root:17 GiB,18249416704 字节,35643392 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/mapper/rhel-swap:2 GiB,2147483648 字节,4194304 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

fdisk /dev/nvme0n2

  • 进入磁盘划分引导
命令(输入 m 获取帮助):n		#创建新分区
分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):p				#选择创建主分区
分区号 (1-4, 默认  1): 1		#选择主分区号标签为“1”
第一个扇区 (2048-41943039, 默认 2048): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +5G	#分给新扇区5G大小的容量

创建了一个新分区 1,类型为“Linux”,大小为 5 GiB。

命令(输入 m 获取帮助):p	
Disk /dev/nvme0n2:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x89462270

设备           启动  起点     末尾     扇区 大小 Id 类型
/dev/nvme0n2p1       2048 10487807 10485760   5G 83 Linux
命令(输入 m 获取帮助):p		#打印已经划分的分区
Disk /dev/nvme0n2:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x89462270

设备           启动     起点     末尾     扇区 大小 Id 类型
/dev/nvme0n2p1          2048 10487807 10485760   5G 83 Linux
/dev/nvme0n2p2      10487808 20973567 10485760   5G 83 Linux
/dev/nvme0n2p4      20973568 41943039 20969472  10G  5 扩展
/dev/nvme0n2p5      20975616 23072767  2097152   1G 83 Linux

命令(输入 m 获取帮助):w		#保存退出

partprobe

  • 使内核从新读取磁盘信息
[root@system_rookie ~]# partprobe 
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。

磁盘格式化

mkfs (make filesystem)

  • 使用mkfs格式化磁盘,创建文件系统
    mkfs.文件系统类型(xfs、ext2-4等) /dev/磁盘分区名

  • mkfs常用的选项有

-b	#设定数据区块占用空间大小,目前支持1024、2048、4096 bytes每个块。
-t	#用来指定什么类型的文件系统,可以是ext3,ext4, xfs
-i	#设定inode的大小
-N	#设定inode数量,防止工node数量不够导致磁盘不足
-L	#预设该分区的标签label
[root@system_rookie ~]# mkfs.xfs /dev/nvme0n2p1
meta-data=/dev/nvme0n2p1         isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=1310720, 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@system_rookie ~]# mkfs.ext2 /dev/nvme0n2p2
mke2fs 1.44.6 (5-Mar-2019)
创建含有 1310720 个块(每块 4k)和 327680 个inode的文件系统
文件系统UUID:d17bc248-f3af-46e3-9b8b-0af4dbc5acb7
超级块的备份存储于下列块: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

正在分配组表: 完成                            
正在写入inode表: 完成                            
写入超级块和文件系统账户统计信息: 已完成

blkid

  • 查看分区信息
    blkid /dev/nvme0n2p2
[root@system_rookie ~]# blkid /dev/nvme0n2p2
/dev/nvme0n2p2: UUID="d17bc248-f3af-46e3-9b8b-0af4dbc5acb7" TYPE="ext2" PARTUUID="89462270-02"
#type:文件系统类型 	UUID:分区ID

磁盘挂载

在上面的内容中讲到了磁盘的分区和格式化,那么格式化完了后,如何使用,这就涉及到了挂载这块磁盘

  • 挂载分区前需要创建挂载点,挂载点以目录形式出现
  • 如果往挂载点目录写入数据,实际上会写入到该分区
  • 挂载点建议是空目录,不是也不影响挂载分区的使用,但是会隐藏原有的文件

临时挂载mount

命令:mount挂载磁盘,实质为文件系统指定访问入口

mount -t	#指定文件系统挂载分区,如ext3,ext4, xfs
mount -a	#重新读取/etc/fstab配置文件的所有分区
mount -o	#指定挂载参数
[root@system_rookie ~]# mkdir /dev/primary
#创建挂载点

注意:如果挂载目录中原本有文件,那么在挂载完成后文件会隐藏,无法查看;同理,如果在挂载完成后再挂载目录中创建文件,卸载后同样无法查看文件;所以建议挂载目录为空目录
mount 磁盘分区路径 挂载点路径

[root@system_rookie ~]# mount /dev/nvme0n2p1 /dev/primary/
[root@system_rookie ~]# df -hT
文件系统              类型      容量  已用  可用 已用% 挂载点
devtmpfs              devtmpfs  886M     0  886M    0% /dev
tmpfs                 tmpfs     903M     0  903M    0% /dev/shm
tmpfs                 tmpfs     903M  8.8M  894M    1% /run
tmpfs                 tmpfs     903M     0  903M    0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs        17G  2.1G   15G   13% /
/dev/nvme0n1p1        xfs      1014M  176M  839M   18% /boot
tmpfs                 tmpfs     181M     0  181M    0% /run/user/0
/dev/nvme0n2p1        xfs       5.0G   68M  5.0G    2% /dev/primary

mount UUID 挂载点路径

[root@system_rookie ~]# blkid /dev/nvme0n2p2
/dev/nvme0n2p2: UUID="d17bc248-f3af-46e3-9b8b-0af4dbc5acb7" TYPE="ext2" PARTUUID="89462270-02"
[root@system_rookie ~]# mount UUID="d17bc248-f3af-46e3-9b8b-0af4dbc5acb7" /dev/primary
[root@system_rookie ~]# df -hT
文件系统              类型      容量  已用  可用 已用% 挂载点
devtmpfs              devtmpfs  886M     0  886M    0% /dev
tmpfs                 tmpfs     903M     0  903M    0% /dev/shm
tmpfs                 tmpfs     903M  8.8M  894M    1% /run
tmpfs                 tmpfs     903M     0  903M    0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs        17G  2.1G   15G   13% /
/dev/nvme0n1p1        xfs      1014M  176M  839M   18% /boot
tmpfs                 tmpfs     181M     0  181M    0% /run/user/0
/dev/nvme0n2p2        ext2      5.0G   10M  4.7G    1% /dev/primary

free

free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

  • 常用参数
-b:以Byte为单位显示内存使用情况;
-k:以KB为单位显示内存使用情况;
-m:以MB为单位显示内存使用情况;
-o:不显示缓冲区调节列;
-s<间隔秒数>:持续观察内存使用状况;
-t:显示内存总和列;
-V:显示版本信息。

free -m

[root@system_rookie ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1805         265        1257           8         281        1380
Swap:          2047           0        2047

永久挂载(编辑/etc/fstab)

一般步骤:

  1. 使用blkid查看分区UUID
[root@system_rookie ~]# blkid /dev/nvme0n2p1
/dev/nvme0n2p1: UUID="93b16dc4-cdd9-4d85-8e89-47c9cca3659a" TYPE="xfs" PARTUUID="89462270-01"
  1. 使用mount UUID 挂载目录的方法建立临时挂载
[root@system_rookie ~]# mount UUID="93b16dc4-cdd9-4d85-8e89-47c9cca3659a" /dev/primary
  1. 编辑/etc/fstab永久挂载,创建开机自启
[root@system_rookie ~]# vim /etc/fstab 
UUID=93b16dc4-cdd9-4d85-8e89-47c9cca3659a /dev/primary xfs defaults	0 0
  1. 使用mount -a检测/etc/fstab是否编辑错误
 [root@system_rookie ~]# mount -a
[root@system_rookie ~]# 
 

/etc/fstab挂载编写语法详解:

分区标识(UUID或设备名 挂载点 文件类型 挂载参数 不检查 不备份
UUID=93b16dc4-cdd9-4d85-8e89-47c9cca3659a /dev/primary xfs defaults 0 0

挂载参数详解:

参数 参数意义 系统默认值
async 系统每隔一段时间把内存数据写入磁盘中,
sync 时时同步内存和磁盘中数据;
suid/nosuid 允许/不允许分区有suid属性 suid
rw/ro 可以指定文件系统是只读(ro)或可写(rw) rw
exec/noexec 允许/不允许可执行文件执行,不要挂载根分区 exec
user/nouser 允许/不允许root外的其他用户挂载分区 nouser
auto/noauto 开机自动挂载/不自动挂载 auto
default 默认文件系统挂载设置rw,suid,dev,exec, auto,nouser,async

卸载挂载磁盘

  • umount -lf #强制卸载挂载
[root@system_rookie ~]# umount -lf /dev/nvme0n2p2
  • 使用目录站点卸载
[root@system_rookie ~]# umount /dev/nvme0n2p2
  • umount不能卸载的情况
[root@system_rookie primary]# umount /dev/nvme0n2p2
umount: /dev/primary: target is busy.

解决办法:

  1. 切换到其他目录重新卸载
  2. 使用mount -l 强制卸载
[root@system_rookie primary]# mount -l /dev/primary

交换分区swap

通过创建swapfile增加swap分区

  1. 查看已有的swap分区大小
[root@system_rookie ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1805         266          63           5        1475        1380
Swap:          2047           4        2043
  1. 创建swapfile
[root@system_rookie ~]# dd if=/dev/zero of=/root/myswap bs=1M count=2048
记录了2048+0 的读入
记录了2048+0 的写出
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 33.8776 s, 63.4 MB/s
[root@system_rookie ~]# du -sh /root/myswap 
2.0G	/root/myswap
  1. 使用mkswap格式化swap分区
[root@system_rookie ~]# mkswap -f /root/myswap 
mkswap: /root/myswap:不安全的权限 0644,建议使用 0600。
正在设置交换空间版本 1,大小 = 2 GiB (2147479552  个字节)
无标签,UUID=a885e0bd-6d0a-4fdf-bea6-2ff5aab71c50
  1. 检查当前的swap分区
[root@system_rookie ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1805         266          82           5        1455        1380
Swap:          2047           4        2043
  1. 开启新的swap分区
[root@system_rookie ~]# swapon /root/myswap
[root@system_rookie ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1805         268          77           5        1458        1379
Swap:          4095           4        4091
  1. 关闭新的swap分区
[root@system_rookie ~]# swapoff /root/myswap
[root@system_rookie ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1805         267          78           5        1458        1380
Swap:          2047           4        2043

通过逻辑卷添加swap分区

  1. 添加一个新的分区
命令(输入 m 获取帮助):n
所有主分区的空间都在使用中。
添加逻辑分区 6
第一个扇区 (23074816-41943039, 默认 23074816): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (23074816-41943039, 默认 41943039): +5G  

创建了一个新分区 6,类型为“Linux”,大小为 5 GiB。

命令(输入 m 获取帮助):p
Disk /dev/nvme0n2:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x89462270

设备           启动     起点     末尾     扇区 大小 Id 类型
/dev/nvme0n2p1          2048 10487807 10485760   5G 83 Linux
/dev/nvme0n2p2      10487808 20973567 10485760   5G 83 Linux
/dev/nvme0n2p4      20973568 41943039 20969472  10G  5 扩展
/dev/nvme0n2p5      20975616 23072767  2097152   1G 83 Linux
/dev/nvme0n2p6      23074816 33560575 10485760   5G 83 Linux

命令(输入 m 获取帮助):w
  1. 将新分区格式化为swap分区
[root@system_rookie ~]# mkswap /dev/nvme0n2p6
正在设置交换空间版本 1,大小 = 5 GiB (5368705024  个字节)
无标签,UUID=046daa81-bfab-4760-ae57-15adce66a91d
  1. 启动新的swap分区
[root@system_rookie ~]# swapon /dev/nvme0n2p6
[root@system_rookie ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1805         271          91           5        1442        1376
Swap:          7167           4        7163
  • 例题
  1. 新建一个分区,并把分区类型改为82
设备           启动  起点     末尾     扇区 大小 Id 类型
/dev/nvme0n3p1       2048 20973567 20971520  10G 83 Linux

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”。

命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。

[root@system_rookie ~]# partprobe 
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
  1. 格式化swap分区
[root@system_rookie ~]# mkswap -f /dev/nvme0n3p1
正在设置交换空间版本 1,大小 = 10 GiB (10737414144  个字节)
无标签,UUID=fee77281-cc57-41f0-8035-bf0bae62aa48
  1. 启动新的swap分区
[root@system_rookie ~]# swapon /dev/nvme0n3p1 
[root@system_rookie ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1805         280          81           5        1443        1367
Swap:         17407           4       17403
  • swapon -a
    #启动所有的swap分区
[root@system_rookie ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1805         266          92           8        1445        1377
Swap:             0           0           0
[root@system_rookie ~]# swapon -a
[root@system_rookie ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1805         268          91           8        1445        1375
Swap:          2047           0        2047
  • swapon -s
    #查看当前swap空间的组成部分
[root@system_rookie ~]# swapon -s
文件名				类型		大小	已用	权限
/dev/dm-1                              	partition	2097148	4820	-2
/dev/nvme0n2p6                         	partition	5242876	0	-3
  • 设置swap分区开启自启
[root@system_rookie ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Jul 27 12:24:30 2020
#
# 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.
#
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=5bb18042-166e-4fc7-95fe-3ab2fd539d33 /boot                   xfs     defaults        0 0
/dev/mapper/rhel-swap   swap                    swap    defaults        0 0
UUID=93b16dc4-cdd9-4d85-8e89-47c9cca3659a /dev/primary xfs defaults	0 0
UUID=fee77281-cc57-41f0-8035-bf0bae62aa48 swap	swap	defaults	0 0

生成磁盘故障案例

inode被占满,导致磁盘即使有剩余空间也无法使用

[root@system_rookie ~]# dd if=/dev/zero of=/root/inodetest bs=1k count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00154467 s, 679 MB/s
[root@system_rookie ~]# mkfs.ext
mkfs.ext2  mkfs.ext3  mkfs.ext4  
[root@system_rookie ~]# mkfs.ext
mkfs.ext2  mkfs.ext3  mkfs.ext4  
[root@system_rookie ~]# mkfs.ext4 /root/inodetest 
mke2fs 1.44.6 (5-Mar-2019)

文件系统太小,无法容纳日志
丢弃设备块: 完成                            
创建含有 1024 个块(每块 1k)和 128 个inode的文件系统

正在分配组表: 完成                            
正在写入inode表: 完成                            
写入超级块和文件系统账户统计信息: 已完成

[root@system_rookie ~]# rm -rf /root/inodetest 
[root@system_rookie ~]# dd if=/dev/zero of=/root/inodetest bs=1k count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00149344 s, 702 MB/s
[root@system_rookie ~]# mkfs.ext4 -i 1024 /root/inodetest 
mke2fs 1.44.6 (5-Mar-2019)

文件系统太小,无法容纳日志
丢弃设备块: 完成                            
创建含有 1024 个块(每块 1k)和 1024 个inode的文件系统

正在分配组表: 完成                            
正在写入inode表: 完成                            
写入超级块和文件系统账户统计信息: 已完成
[root@system_rookie ~]# du -sh /root/inodetest 
36K	/root/inodetest
  • 挂载分区文件
[root@system_rookie inode]# mount /root/inodetest /dev/inode
[root@system_rookie inode]# touch {1..2048}
-bash: touch:: 未找到命令
[root@system_rookie inode]# touch: 无法创建 '2043': 设备上没 有空间
-bash: touch:: 未找到命令
[root@system_rookie inode]# touch: 无法创建 '2044': 设备上没 有空间
-bash: touch:: 未找到命令
[root@system_rookie inode]# touch: 无法创建 '2045': 设备上没 有空间
-bash: touch:: 未找到命令
[root@system_rookie inode]# touch: 无法创建 '2046': 设备上没 有空间
-bash: touch:: 未找到命令
[root@system_rookie inode]# touch: 无法创建 '2047': 设备上没 有空间
-bash: touch:: 未找到命令
[root@system_rookie inode]# touch: 无法创建 '2048': 设备上没 有空间
  • 查看inode使用率
[root@system_rookie inode]# df -i | tail -1
/dev/loop0               1024    1024       0     100% /dev/inode

Block空间即将被占满。但删除大文件没有释放空间

  • 运行了一个很大的文件
[root@system_rookie ~]# df -hT | grep /dev/mapper/
/dev/mapper/rhel-root xfs        17G   17G  926M   95% /
  • 删除并没有释放磁盘空间
[root@system_rookie ~]# rm -rf /test_file 
[root@system_rookie ~]# df -hT | grep /dev/mapper/
/dev/mapper/rhel-root xfs        17G   17G  926M   95% /
  • 使用重定向
[root@system_rookie /]# > /test_file 
[root@system_rookie /]# df -hT | grep /dev/mapper/
/dev/mapper/rhel-root xfs        17G  4.1G   13G   25% /

你可能感兴趣的:(Linux学习记录)