Skip to content

一、磁盘基础知识

磁盘分类

- HDD(机械硬盘):传统硬盘,依靠磁头读写数据
- SSD(固态硬盘):无机械结构,读写速度快。

二、磁盘分区

分区类型

- 主分区:最多4个,用于存储数据。
- 扩展分区:占用主分区一个,只能由一个,无法直接使用
- 逻辑分区:在扩展分区内创建,数量不限(Linux)。

分区工具

- fdisk:适用于MBR分区表,最大支持2TB硬盘。

fdisk -l /dev/sda显示设备的分区信息

shell
fdisk -l /dev/sda
该命令会显示 /dev/sda 磁盘的分区表信息

2.创建新分区

fdisk /dev/sda
进入交互模式后,依次输入以下命令:
·n:创建新分区。
      p:创建主分区
      e: 创建扩展分区
输入分区号。
设置起始和结束扇区(默认直接回车即可)。
w:将分区表写入磁盘并退出 

3.检查新分区

ll /dev/sda*

删除分区

fdisk /dev/sda
进入交互模式后,依次输入以下命令:
d:删除分区。
输入要删除的分区号。
w:保存并退出

更改分区类型

fdisk /dev/sda
进入交互模式后,依次输入以下命令:
t:更改分区类型。
输入分区号。
输入新的分区类型代码
w:保存并退出
- parted/gdisk:适用于GPT分区表,支持大于2TB的硬盘。
- `gdisk和fdisk操作一样`
shell
检查是否安装parted
yum -y install parted
 #1.编辑硬盘
parted  /dev/sdc
 #2.创建分区表(MBR或GPT)
 #mktable msdos mbr分区表
mktable gpt   #make part table 
#3.查看 
p
 #4.创建分区(mb)
 mkpart primary 0   100
 mkpart primary 100 200
 #5.删除分区
rm 分区数字 
#6.退出
q
- 

三、磁盘格式化与挂载

  1. 创建分区使用所有空间
    • fdisk /dev/sdb
  2. 创建文件系统

mkfs.xfs /dev/sdb1

`df -hT`
  • mkfs:是 "make filesystem" 的缩写,表示创建文件系统。

  • .xfs:指定文件系统类型为 XFS。

  • 完整命令 mkfs.xfs 的含义是:创建一个 XFS 文件系统。

  • df:是 "disk free" 的缩写,用于显示磁盘空间使用情况。

  • -h:以人类可读的格式显示大小(如 K、M、G)。

  • -T:显示文件系统类型。

  1. 挂载

挂载 mount 设备 入口(挂载点)

mount /dev/sdb1 /mnt/

#/mnt/目录一般用于临时挂载 重启后挂载会失效

卸载挂载

umount 挂载点

umount /mnt

4.挂载的永久生效

首先卸载原有的挂载

  • 方法1/etc/rc,local
shell
chmod +x /etc/rc.d/rc.local 
把命令mount /dev/sdb1  /data/ 写入到/etc/rc.local即可.
  • 方法2/etc/fstab
shell
mount /dev/sdb1  /data/改造为符合fstab文件的格式.
fstab实现永久挂载配置的格式:
设备名字/UUID    挂载点  文件类型      挂载选项/默认
/dev/sdb1      /data/      xfs      defaults         0     0

四.系统分区方案

常用分区

-  / 		根分区
-  /boot 	 存放引导,存放内核      /boot/efi(2tb以上 gpt) 
- swap 	交换分区(占用磁盘空间) 
- /data/分区	 存放数据
-  /home/ /usr/ 	不推荐了

	注: 未来一些场景中,我们需要提升系统性能,我们就需要关 闭swap.    

 通用方案500GB
  • /boot:1GB
  • /swap:16GB(假设系统内存为8GB)
  • /:150GB(根据需要调整)
  • /data:剩余空间(约332GB)

五.swap配置

  1. 创建 Swap 文件:
bash
dd if=/dev/zero of=/swap/1g bs=1M count=1024
- `if=/dev/zero`:输入文件,`/dev/zero` 字符文件,不断输出 0。
- `of=/swap/1g`:输出文件,写入到哪里。
- `bs=1M`:块大小,每次读多少。
- `count=1024`:次数。
  1. 格式化为 Swap:
bash
mkswap /swap/1g
- `mkswap`:用于设置交换空间。
- `/swap/1g`:指定要格式化为 swap 的文件路径。
  1. 挂载 Swap (启用 Swap):
bash
swapon /swap/1g
- `swapon`:用于启用 swap 空间。
- `/swap/1g`:指定要启用的 swap 文件路径。
  1. 检查 Swap 状态:
bash
free -h

或bash复制

bash
swapon --show
- `free -h`:显示内存和 swap 使用情况,`-h` 选项表示以易读的格式显示。
- `swapon --show`:显示当前启用的 swap 空间。
  1. 永久生效:
bash
echo '/swap/1g none swap sw 0 0' | sudo tee -a /etc/fstab
- `echo`:输出文本。
- `'/swap/1g none swap sw 0 0'`:指定 swap 文件路径、类型(swap)、挂载选项(sw)和转储/检查选项(0 0)。
- `| sudo tee -a /etc/fstab`:将输出追加到 `/etc/fstab` 文件中。
- `tee` 命令在 Linux 中用于读取标准输入的数据,并将其内容输出到标准输出和文件中。
- `tee` 命令的 `-a` 选项表示以追加(append)模式写入文件,而不是覆盖文件原有内容。

或者

bash
echo '/swap/1g none swap sw 0 0' >> /etc/fstab

6.临时关闭

swapoff -a 临时关闭所有swap空间

vim /etc/fstab 永久关闭swap

如果是Ubt系统,需要sudo systemctl mask swap.target

  • systemctl:用于管理系统服务的命令。
  • mask:表示禁用某个服务,使其无法启动。
  • swap.target:表示 swap 服务。

六. Raid级别:不同的磁盘管理方式

描述最少需要几块硬盘安全冗余可用容量性能使用场景举例
Raid 01最低所有硬盘容量的和读写最快不要求安全,只要求速度数据库从库、存储从库、web服务器
Raid 1只能2块100%一半(两块硬盘容量之和)写入速度慢,读取OK只追求安全性,对于速度没要求系统盘、监控服务器
Raid 53最多损坏一块损失一块盘的容量写入性能不好,读取速度OK对于速度安全要求不高普遍数据库、存储访问量不高
Raid 104可以损坏一半损失所有硬盘一半的容量读写很快对于安全和性能都要高并发或高访问量数据库主库、存储
  • RAID 1。和RAID 5是企业中比较常见的选择。RAID 1用于需要高数据安全性的场合,RAID 5则适用于需要较大存储容量和一定数据冗余的环境。
  • RAID 10适用于对性能和数据安全要求都较高的系统,通常用于关键应用。
  • RAID 0多用于对性能要求极高但对数据保护要求较低的特定应用场合。

⑦. 磁盘空间不足解决方案

磁盘空间不足原因可能情况
大文件占用磁盘空间删除不需要的大文件
inode剩余数量不足检查并删除大量小文件或空文件,或者考虑增加inode数量
block被占用文件清理不再需要的文件,确保它们被完全删除

1.大文件占用

    * 整体` df -h` 查看哪个磁盘分区空间不足. 
- ` du -sh /* |sort -hrk1 `
- `du -sh /var/* |sort -rhk1 `
- `du -sh /var/log/* |sort -rhk1  `

2.Inode剩余数量不足

du -h 查看是否为block导致

du -i 查看inode试用期情况

find / -type d -size +1M 查看目录大于1MB的(文件多)

ls a* | xaegs rm -rf删除文件

3.block被占用

文件删除的条件:硬链接为0,文件没有进程调用

lsof | grep delete 文件被删除但是还在使用中

kill pid 重启结束进程

感谢阅读,欢迎交流!