磁盘管理
# 磁盘命名
# 物理服务器
真实物理服务器
| 设备名称 | 分区信息 | 设备类型 |
|---|---|---|
| /dev/sda | /dev/sda1 | 第一块物理磁盘第一分区 |
| /dev/sdb | /dev/sdb2 | 第二块物理磁盘第二个分区 |
| /dev/sdd | /dev/sdd4 | 第四块虚拟磁盘的第四个分区 |
# 虚拟服务器
阿里云主机或者KVM虚拟化主机的磁盘命名格式
| 设备名称 | 分区信息 | 设备类型 |
|---|---|---|
| /dev/vda | /dev/vda1 | 第一块虚拟磁盘的第一个分区 |
| /dev/vdb | /dev/vdb2 | 第二块虚拟磁盘的第二个分区 |
| /dev/vdc | /dev/vdc3 | 第三块虚拟磁盘的第三个分区 |
# 磁盘分区
# 为什么要分区
- 分区是为了便于数据分门别类的存储;
- 分区有
MBR、GPT两种方式;
# MBR分区
- MBR分区仅能分配4个主分区,如果需要划分多个分区,需要先分配扩展分区,然后再分配逻辑分区
- 为什么MBR分区仅能分配4个主分区?NBR只能划分4个主分区的原因 (opens new window)
- 分区编号如何表示:1~4主分区使用和扩展分区,逻辑分区从5开始;

# GPT分区
- 对于
MBR分区而言,只能分配4个主分区,但新型的分区表GPT理论上支持分配无限(128是windows系统的限制)个主分区MBR与GPT有何区别?- 注意
MBR与GPT之间不能互转,会导致数据丢失;
# 分区管理
# fdisk
fdisk仅支持分配小于2TB的磁盘- 查看当前设备
fdisk -l - 对设备进行分区
fdisk /dev/sdb
- 查看当前设备
- 分区命令
- m:显示帮助
- n:创建新分区
- d:删除分区
- p:查看分区
- w:保存分区
- q:退出
- 分区案例:
- 案例1:分配4个分区(4P)
- 案例2:分配5个分区(1P+1E+4L)
- 案例3:分配6个分区(3P+1E+3L)
# gdisk
gdisk支持分配大于2TB的磁盘- 查看当前设备
gdisk [-l] device - 对设备进行分区
gdisk /dev/sdb
- 查看当前设备
- 分区命令
- ?:显示帮助
- n:创建新分区
- p:打印分区
- w:保存分区
- q:退出
- 分区案例:
- 案例1:分配4个主分区(4P)
- 案例2:分配5个主分区(5P)
- 案例3:分配6个主分区(6P)
# mkfs
mkfs命令用于格式化硬盘,类似于将房子装修成3室一厅,还是2室一厅-b:设定数据区块占用空间大小,目前支持1024、2048、4096bytes每个块;-t:用来指定什么类型的文件系统,可以是ext4、xfs;-N:设定inode数量,防止inode数量不够导致磁盘不足;
使用
mkfs命令,格式化整个硬盘[root@web ~]# mkfs.ext4 /dev/sdb1使用
mkfs命令,格式化磁盘的某个分区[root@web ~]# mefs.xfs /dev/sdb11
# 挂载管理
当需要使用磁盘空间的时,需要准备一个目录作为挂载点,然后使用mount命令与该设备进行关联。
# 临时挂载mount
通过mount进行挂载,但重启将会失效,我们称为临时生效。
-t:指定文件系统挂载分区;-a:检查并且挂载/etc/fstab配置文件中未挂载的设备;-o:指定挂载参数,ro、rw;
挂载磁盘设备
[root@web ~]# mkdir /db1 [root@web ~]# mount -t xfs /dev/sdb1 /db11
2挂载磁盘设备,设置参数为仅可读
[root@web ~]# mkdir /db2 [root@web ~]# mount -t xfs -o ro /dev/sdb2 /db2 [root@web ~]# touch /db2/new_file touch: cannot touch '/db2/new_file': Read-only file system1
2
3
4
# 临时卸载umount
如果不想使用可以使用
umount [device|directory]进行临时卸载;-l:强制卸载;
卸载入口目录示例;
[root@web ~]#umount /db11卸载设备方式示例;
[root@web ~]# umount /dev/sdb11如碰到无法正常卸载情况处理;
[root@web db1]# umount /db1 umount: /db1: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1) # 如上情况解决办法有两种,1.切换至其他目录 2.强制卸载 [root@web db1]# umount -l /db11
2
3
4
5
6
7
# 永久挂载fstab
如果需要实现永久挂载,则需要将挂载相关信息写入/etc/fstab配置文件中实现。
# 永久挂载配置文件
- 配置文件规范:
设备名称|挂载的入口目录|文件系统类型|挂载参数|是否备份|是否检查;
获取设备名称,或设备的
UUID;[root@web ~]# blkid |grep "sdb1" /dev/sdb1: UUID="e271b5b2-b1ba-4b18-bde5-66e394fb02d9" TYPE="xfs"1
2手动挂载测试;
[root@web ~]# mount UUID="e271b5b2-b1ba-4b18-bde5-66e394fb02d9" /db11写入
/etc/fstab测试;#手动编写 [root@web ~]# tail -1 /etc/fstab UUID=e271b5b2-b1ba-4b18-bde5-66e394fb02d9 /db1 xfs defaults 0 0 #自动实现 [root@web ~]# blkid |grep /dev/sda1 |awk -F '[: ]+' '{print $2}' |\ sed -r 's#(.*)#\1 /db1 xfs defaults 0 0#g' >> /etc/fstab1
2
3
4
5
6
7加载
/etc/fstab配置文件,同时检测是否存在语法错误;[root@web ~]# mount -a1
# 配置文件/etc/fstab
/etc/fstab配置文件格式- 第一列:指定需要挂载的设备
- 设备名称:
/dev/sdb1; - 设备ID:
UUID;
- 设备名称:
- 第二列:挂载的入口目录
- 第三列:文件系统类型
xfs类型;ext4类型;
- 第四列:挂载参数
async/sync:使用同步或异步方式存储数据;默认asyncuser/nouser:是否允许普通用户使用mount命令挂载;默认nouserexec/noexe:是否允许可执行文件执行;默认execsuid/nosuid:是否允许存在suid属性的文件;默认suidauto/noauto:执行mount -a命令时,此文件系统是否被主动挂载;默认autorw/ro:是否以只读或者读写模式进行挂载;默认rwdefault:具有rw,suid,dev,exec,auto,nouser,async等参数;
- 第五列:是否要备份磁盘
- 0:不做备份;
- 1:每天进行备份操作;
- 2:不定日期的进行备份操作;
- 第六列:开机是否检验扇区
- 0:不要检验磁盘是否有坏道;
- 1:检验;
- 2:校验(当1级别检验完成之后进行2级别检验);
- 第一列:指定需要挂载的设备
# SWAP
# 什么是SWAP
Swap分区在系统的物理内存不够时,将硬盘中的一部分空间供当前运行的程序使用
# 为什么需要SWAP
当物理内存不够时会随机kill占用内存的进程,从而产生oom,临时使用swap可以解决
# SWAP基本应用
创建分区,并格式化为
swap分区;[root@web ~]# fdisk /dev/sdb # 格式化为swap [root@web ~]# mkswap /dev/sdb11
2
3查看当前
swap分区大小;[root@web ~]# free -m total used free shared buff/cache available Mem: 1980 1475 80 10 424 242 Swap: 2047 4 20431
2
3
4
# 扩展swap分区
扩展
swap分区,使用swapon命令swapon device:将某个磁盘大小添加到swap分区中;swapon -a:添加所有swap分区;
[root@web ~]# swapon /dev/sdb1 [root@web ~]# free -m total used free shared buff/cache available Mem: 1980 1475 80 10 424 242 Swap: 3047 4 20431
2
3
4
5
# 缩小swap分区
缩小
swap分区,使用swapoff命令swapoff device:关闭某个磁盘的swap分区;swapoff -a:关闭所有swap分区;
[root@web ~]# swapoff /dev/sdb1 [root@web ~]# free -m total used free shared buff/cache available Mem: 1980 1475 80 10 424 242 Swap: 2047 4 20431
2
3
4
5
# 文件系统修复
在
Linux系统中,为了增加系统性能,通常系统会将一些数据先写入内存中,然后再刷新至磁盘中;万一公司服务器突然断电或者其他未知原因,再次启动后,会造成文件系统错误;
[root@web ~]# fdisk /dev/sdc # 分配1G分区 [root@web ~]# mkfs.xfs /dev/sdc1 [root@web ~]# mount /dev/sdc1 /mnt [root@web ~]# echo "Hello" > /mnt/new.txt # 模拟损坏 [root@web ~]# dd if=/dev/zero of=/dev/sdc bs=300M count=1 [root@web ~]# umount /mnt [root@web ~]# mount /dev/sdc1 /mnt # 无法挂载 # 尝试修复 [root@web ~]# xfs_repair /dev/sdc1 # 强制修复 [root@web ~]# xfs_repair -L /dev/sdc11
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Last Updated: 2024/03/12, 18:00:21