Appearance
一、磁盘基础知识
磁盘分类
- 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
-
三、磁盘格式化与挂载
- 创建分区使用所有空间
fdisk /dev/sdb
- 创建文件系统
mkfs.xfs /dev/sdb1
`df -hT`
mkfs
:是 "make filesystem" 的缩写,表示创建文件系统。.xfs
:指定文件系统类型为 XFS。完整命令
mkfs.xfs
的含义是:创建一个 XFS 文件系统。df
:是 "disk free" 的缩写,用于显示磁盘空间使用情况。-h
:以人类可读的格式显示大小(如 K、M、G)。-T
:显示文件系统类型。
- 挂载
挂载 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配置
- 创建 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`:次数。
- 格式化为 Swap:
bash
mkswap /swap/1g
- `mkswap`:用于设置交换空间。
- `/swap/1g`:指定要格式化为 swap 的文件路径。
- 挂载 Swap (启用 Swap):
bash
swapon /swap/1g
- `swapon`:用于启用 swap 空间。
- `/swap/1g`:指定要启用的 swap 文件路径。
- 检查 Swap 状态:
bash
free -h
或bash复制
bash
swapon --show
- `free -h`:显示内存和 swap 使用情况,`-h` 选项表示以易读的格式显示。
- `swapon --show`:显示当前启用的 swap 空间。
- 永久生效:
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 0 | 1 | 最低 | 所有硬盘容量的和 | 读写最快 | 不要求安全,只要求速度 | 数据库从库、存储从库、web服务器 |
Raid 1 | 只能2块 | 100% | 一半(两块硬盘容量之和) | 写入速度慢,读取OK | 只追求安全性,对于速度没要求 | 系统盘、监控服务器 |
Raid 5 | 3 | 最多损坏一块 | 损失一块盘的容量 | 写入性能不好,读取速度OK | 对于速度安全要求不高 | 普遍数据库、存储访问量不高 |
Raid 10 | 4 | 可以损坏一半 | 损失所有硬盘一半的容量 | 读写很快 | 对于安全和性能都要 | 高并发或高访问量数据库主库、存储 |
- 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 重启结束进程