Linux 磁盘管理

1.磁盘分类

磁盘,硬盘 != 内存

  • HDD(hard)机械硬盘.
  • SSD(solid)固态硬盘.
  • 磁盘接口:类似于水壶的壶嘴,决定了磁盘最大速度. ⭐
硬盘选项 说明 容量转速
机械硬盘 SATA 备份服务器,性能要求不高场景,10k rpm 4tb 8tb 10tb 根据需要选择(未来规划)
机械硬盘 SAS 企业环境标配,生产环境使用,15k rpm 300G 600G 900G
固态硬盘 U2/PCI-E 访问量大,大量读写操作,性能好,价格高. TB
固态硬盘 SATA/SAS 性价比高. TB

2.磁盘分区

主分区:
扩展分区:
    逻辑分区

2.1 了解-磁头-磁道-扇区(机械硬盘)

2.2 了解-固态硬盘组成

# 控制芯片(主控)
# 存储芯片(颗粒)
  slc
  mlc
  tlc
  QLC
3d xxx

2.3 主分区-扩展分区-逻辑分区(硬盘小于2t)

  • MBR引导对应的磁盘分区最多有4个(主分区).
  • 创建扩展分区,无法直接使用。需要在扩展分区下面创建逻辑分区然后使用。

分区MBR 说明
主分区 直接占用磁盘分区表,可以存放数据.
扩展分区 占用主分区1个位置,只能有1个.一般剩余多少空间给扩展分区多少.无法直接使用.
逻辑分区 先创建扩展分区,然后创建逻辑分区,可以存放数据.

2.4 磁盘分区实战-fdisk ⭐️⭐️⭐️⭐️⭐️

2.4.1 磁盘分区简介
点击查看代码
[root@Kylin-V10-sp3 ~]# fdisk -l
Disk /dev/sda:100 GiB,107374182400 字节,209715200 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x08e597e1

设备       启动    起点      末尾      扇区 大小 Id 类型
/dev/sda1  *       2048   2099199   2097152   1G 83 Linux
/dev/sda2       2099200 209715199 207616000  99G 8e Linux LVM


Disk /dev/sdb:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x4abfed3a

设备       启动  起点    末尾    扇区  大小 Id 类型
/dev/sdb1        2048 2097151 2095104 1023M 83 Linux


Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/sdd:2.93 TiB,3221225472000 字节,6291456000 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:7E7322A5-9FA0-4C1E-BCFB-FC2DA454683B

设备         起点   末尾   扇区   大小 类型
/dev/sdd1      34 390625 390592 190.7M Linux 文件系统
/dev/sdd2  391168 585727 194560    95M Linux 文件系统


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


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


Disk /dev/mapper/klas-backup:31.79 GiB,34129051648 字节,66658304 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@Kylin-V10-sp3 ~]# 

'''
磁盘命名:
  /dev/sd开头 #sas,sata,scsi接口
  /dev/vd开头 #云服务器 云盘 ,虚拟化环境
  /dev/nvme卡头 #固态硬盘 nvme
第1块硬盘 a 一次类推
  /dev/sda
分区MBR分区中 数字形式
主分区或扩展分区 1-4
逻辑分区:从5开始.
第1个主分区 /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4
1个主分区 1个扩展分区 1个逻辑
/dev/sda1 /dev/sda2 /dev/sda5
'''

2.4.2 fdisk 指令
w 保存并退出 write
q 退出不保存 quit
p 查看分区信息 print
n 新建分区 new
d 删除 delete
2.4.3 给第2块硬盘/dev/sdb,创建1个100mb的主分区,创建扩展分区(剩下所有容量),创建100M逻辑分区逻辑分区
点击查看代码
[root@Kylin-V10-sp3 ~]# fdisk -l | grep sd
Disk /dev/sda:100 GiB,107374182400 字节,209715200 个扇区
/dev/sda1  *       2048   2099199   2097152   1G 83 Linux
/dev/sda2       2099200 209715199 207616000  99G 8e Linux LVM
Disk /dev/sdb:1 GiB,1073741824 字节,2097152 个扇区
Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
Disk /dev/sdd:2.93 TiB,3221225472000 字节,6291456000 个扇区
/dev/sdd1      34 390625 390592 190.7M Linux 文件系统
/dev/sdd2  391168 585727 194560    95M Linux 文件系统
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.35.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):F
未分区的空间 /dev/sdb:1023 MiB,1072693248 个字节,2095104 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节

 起点    末尾    扇区  大小
 2048 2097151 2095104 1023M

命令(输入 m 获取帮助):p
Disk /dev/sdb:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x4abfed3a

命令(输入 m 获取帮助):n
分区类型
   p   主分区 (0 primary, 0 extended, 4 free)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认  1): p
值超出范围。
分区号 (1-4, 默认  1): 
第一个扇区 (2048-2097151, 默认 2048): 
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-2097151, 默认 2097151): +100M  

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


命令(输入 m 获取帮助):p
Disk /dev/sdb:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x4abfed3a

设备       启动  起点   末尾   扇区  大小 Id 类型
/dev/sdb1        2048 206847 204800  100M 83 Linux

1 分区上的文件系统/RAID 签名将被擦除。

命令(输入 m 获取帮助):n
分区类型
   p   主分区 (1 primary, 0 extended, 3 free)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):e
分区号 (2-4, 默认  2): 
第一个扇区 (206848-2097151, 默认 206848): 
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (206848-2097151, 默认 2097151): 

创建了一个新分区 2,类型为“Extended”,大小为 923 MiB。

命令(输入 m 获取帮助):p
Disk /dev/sdb:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x4abfed3a

设备       启动   起点    末尾    扇区  大小 Id 类型
/dev/sdb1         2048  206847  204800  100M 83 Linux
/dev/sdb2       206848 2097151 1890304  923M  5 扩展

1 分区上的文件系统/RAID 签名将被擦除。

命令(输入 m 获取帮助):n
所有主分区的空间都在使用中。
添加逻辑分区 5
第一个扇区 (208896-2097151, 默认 208896): 
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (208896-2097151, 默认 2097151): +100M

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

命令(输入 m 获取帮助):p
Disk /dev/sdb:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x4abfed3a

设备       启动   起点    末尾    扇区  大小 Id 类型
/dev/sdb1         2048  206847  204800  100M 83 Linux
/dev/sdb2       206848 2097151 1890304  923M  5 扩展
/dev/sdb5       208896  413695  204800  100M 83 Linux

1 分区上的文件系统/RAID 签名将被擦除。

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

[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  459M     0  459M    0% /dev
tmpfs                   tmpfs     475M     0  475M    0% /dev/shm
tmpfs                   tmpfs     475M   13M  462M    3% /run
tmpfs                   tmpfs     475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root   xfs        66G  4.4G   61G    7% /
tmpfs                   tmpfs     475M     0  475M    0% /tmp
/dev/sda1               xfs      1014M  151M  864M   15% /boot
/dev/mapper/klas-backup xfs        32G  313M   32G    1% /backup
tmpfs                   tmpfs      95M     0   95M    0% /run/user/0
/dev/sdd1               xfs       186M   12M  175M    6% /resouce/data2
/dev/sdd2               xfs        90M  5.7M   85M    7% /resouce/data3
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1368, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mkfs.xfs /dev/sdb5
meta-data=/dev/sdb5              isize=512    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1368, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mkdir /resouce/data1
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mount /dev/sdb1 /resouce/data
[root@Kylin-V10-sp3 ~]# mount /dev/sdb5 /resouce/data2
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# touch /resouce/data/1.txt
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# touch /resouce/data1/2.txt
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# tree /resouce/
/resouce/
├── data
│   └── 1.txt
├── data1
│   └── 2.txt
├── data2
└── data3

4 directories, 2 files
[root@Kylin-V10-sp3 ~]# 

2.4.5 删除分区.
点击查看代码

[root@Kylin-V10-sp3 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 459M     0  459M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M   13M  462M    3% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  4.4G   61G    7% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/klas-backup   32G  313M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/sdb1               1017M   40M  978M    4% /resouce/data
/dev/sdd1                186M   12M  175M    6% /resouce/data2
/dev/sdd2                 90M  5.7M   85M    7% /resouce/data3
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# umount /dev/sdb1
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 459M     0  459M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M   13M  462M    3% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  4.4G   61G    7% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/klas-backup   32G  313M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/sdd1                186M   12M  175M    6% /resouce/data2
/dev/sdd2                 90M  5.7M   85M    7% /resouce/data3
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# fdisk  /dev/sdb

欢迎使用 fdisk (util-linux 2.35.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):p
Disk /dev/sdb:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x4abfed3a

设备       启动  起点    末尾    扇区  大小 Id 类型
/dev/sdb1        2048 2097151 2095104 1023M 83 Linux

命令(输入 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 获取帮助):F   
未分区的空间 /dev/sdb:0 B,0 个字节,0 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节

命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除。

命令(输入 m 获取帮助):F
未分区的空间 /dev/sdb:1023 MiB,1072693248 个字节,2095104 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节

 起点    末尾    扇区  大小
 2048 2097151 2095104 1023M

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

[root@Kylin-V10-sp3 ~]# fdisk -l | grep sd
Disk /dev/sda:100 GiB,107374182400 字节,209715200 个扇区
/dev/sda1  *       2048   2099199   2097152   1G 83 Linux
/dev/sda2       2099200 209715199 207616000  99G 8e Linux LVM
Disk /dev/sdb:1 GiB,1073741824 字节,2097152 个扇区
Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
Disk /dev/sdd:2.93 TiB,3221225472000 字节,6291456000 个扇区
/dev/sdd1      34 390625 390592 190.7M Linux 文件系统
/dev/sdd2  391168 585727 194560    95M Linux 文件系统
[root@Kylin-V10-sp3 ~]# 

2.5 磁盘分区实战-parted或gdisk ⭐️⭐️⭐️⭐️⭐️

磁盘引导(磁盘分区表) 特点 对应的命令
MBR(msdos,dos) 适用于2TB以内的硬盘,有传统的主分区,扩展分区,逻 辑分区概念. fdisk(mbr)
GPT 适用于各种大型的硬盘,尤 其是2tb以上的硬盘,主分区 管够,128个. parted(mbr,gpt),gdisk(gpt)
点击查看代码
# parted 可以使用tab键   

[root@Kylin-V10-sp3 ~]# parted /dev/sdd
GNU Parted 3.3
使用 /dev/sdd
欢迎使用 GNU Parted!输入 'help' 来查看命令列表。
(parted)                                                                  
(parted) help
  align-check TYPE N                       check partition N for TYPE(min|opt) alignment
  help [COMMAND]                           打印通用求助信息,或 COMMAND 的帮助
  mklabel,mktable LABEL-TYPE               创建新的磁盘卷标 (分区表)
  mkpart 分区类型 [文件系统类型] 起始点 结束点 创建一个分区
  name 编号 名称                           将指定“编号”的分区命名为“名称”
  print [devices|free|list,all|数字]        显示分区表、可用设备、剩余空间、所有分区或特殊分区
  quit                                     退出程序
  rescue 起始点 终止点                      挽救临近“起始点”、“终止点”的遗失的分区
  resizepart NUMBER END                    改变 NUMBER 的大小
  rm NUMBER                                删除编号为 NUMBER 的分区
  select 设备                              选择要编辑的设备
  disk_set 旗标 状态                       变更已选设备上的旗标
  disk_toggle [旗标]                       切换已选设备上的旗标状态
  set 编号 旗标 状态                       改变指定“编号”分区的旗标
  toggle [编号 [旗标]]                     切换“编号”分区上的“旗标”状态
  unit 单位                                设置缺省的“单位”
  version                                  显示目前 GNU Parted 的版本与版权信息
(parted) mktable gpt                                                      
(parted) p                                                                
型号:VMware, VMware Virtual S (scsi)
磁盘 /dev/sdd:3221GB
扇区大小 (逻辑/物理):512B/512B
分区表:gpt
磁盘标志:

编号  起始点  结束点  大小  文件系统  名称  标志

 
(parted) mkpart 
对齐检查     disk_set     help         mkpart       name         quit         resize       rm           set          unit         
align-check  disk_toggle  mklabel      mktable      print        rescue       resizepart   select       toggle       version      
(parted) mkpart primary 0 200
警告: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s
忽略/Ignore/放弃/Cancel? i                                                
(parted) mkpart primary 200 300
(parted) q                                                                
信息: 你可能需要 /etc/fstab。

[root@Kylin-V10-sp3 ~]#                                                   
[root@Kylin-V10-sp3 ~]# fdisk -l | grep sd
Disk /dev/sda:100 GiB,107374182400 字节,209715200 个扇区
/dev/sda1  *       2048   2099199   2097152   1G 83 Linux
/dev/sda2       2099200 209715199 207616000  99G 8e Linux LVM
Disk /dev/sdb:1 GiB,1073741824 字节,2097152 个扇区
/dev/sdb1        2048 2097151 2095104 1023M 83 Linux
Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
Disk /dev/sdd:2.93 TiB,3221225472000 字节,6291456000 个扇区
/dev/sdd1      34 390625 390592 190.7M Linux 文件系统
/dev/sdd2  391168 585727 194560    95M Linux 文件系统
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  459M     0  459M    0% /dev
tmpfs                   tmpfs     475M     0  475M    0% /dev/shm
tmpfs                   tmpfs     475M  6.9M  468M    2% /run
tmpfs                   tmpfs     475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root   xfs        66G  4.4G   61G    7% /
tmpfs                   tmpfs     475M     0  475M    0% /tmp
/dev/sda1               xfs      1014M  151M  864M   15% /boot
/dev/mapper/klas-backup xfs        32G  313M   32G    1% /backup
tmpfs                   tmpfs      95M     0   95M    0% /run/user/0
/dev/sdb1               xfs      1017M   40M  978M    4% /resouce/data
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mkfs.xfs /dev/sdd1
meta-data=/dev/sdd1              isize=512    agcount=4, agsize=12206 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=48824, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1368, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mkfs.xfs /dev/sdd2
meta-data=/dev/sdd2              isize=512    agcount=4, agsize=6080 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=24320, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1368, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mkdir /resouce/data3
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mount /dev/sdd1 /resouce/data2
[root@Kylin-V10-sp3 ~]# mount /dev/sdd2 /resouce/data3

3.新盘分区-格式化-挂载⭐️⭐️⭐️⭐️⭐️

3.1 拿到一块硬盘使用流程

步骤 说明 指令
磁盘分区 划分隔断 fdisk,parted
格式化(创建文件系统) 装修,装修风格 mkfs.xfs mkfs.ext4
挂载(给设备设置入口) 安装门窗,入住 mount

3.2 对/dev/sdc创建1个分区使用所有空间.

点击查看代码
[root@Kylin-V10-sp3 ~]# fdisk /dev/sdc

欢迎使用 fdisk (util-linux 2.35.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x026afacf 的新 DOS 磁盘标签。

命令(输入 m 获取帮助):p
Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x026afacf

命令(输入 m 获取帮助):n
分区类型
   p   主分区 (0 primary, 0 extended, 4 free)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认  1): 
第一个扇区 (2048-2097151, 默认 2048): 
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-2097151, 默认 2097151): 

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

命令(输入 m 获取帮助):p
Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x026afacf

设备       启动  起点    末尾    扇区  大小 Id 类型
/dev/sdc1        2048 2097151 2095104 1023M 83 Linux

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

[root@Kylin-V10-sp3 ~]# 

3.3 创建文件系统

# make filesystem
# mkfs 磁盘分区
[root@Kylin-V10-sp3 ~]# mkfs.xfs /dev/sdc1
meta-data=/dev/sdc1              isize=512    agcount=4, agsize=65472 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=261888, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1566, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@Kylin-V10-sp3 ~]# 

3.4 挂载 ⭐️⭐️⭐️⭐️⭐️

  • 挂载:给Linux设备一个入口,我们在Linux中通过入口进入设备.
  • 如果不挂载,设备就相当于是个没有窗口没有门的监狱,无法进入与使用.
  • 挂载点:设备的入口,目录.
  • 比如/mnt/目录一般用于临时挂载.
# 挂载:mount 设备 入口(挂载点)
# 取消挂载:
     umount 挂载点
     umount 设备 
[root@Kylin-V10-sp3 ~]# mount /dev/sdc1 /resouce/data1
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 459M     0  459M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M   13M  462M    3% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  4.4G   61G    7% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/klas-backup   32G  313M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/sdb5                 95M  6.0M   89M    7% /resouce/data2
/dev/sdd2                 90M  5.7M   85M    7% /resouce/data3
/dev/sdb1                 95M  6.0M   89M    7% /resouce/data
/dev/sdc1               1017M   40M  978M    4% /resouce/data1

3.5 挂载的永久生效

# 方案01: /etc/rc.local
chmod +x /etc/rc.d/rc.local
把命令mount /dev/sdb1 /data/ 写入到/etc/rc.local即可.

# 方案02: 专业方案/etc/fstab 文件 ⭐ ⭐ ⭐ ⭐ ⭐
# fs (filesystem) tab(table)文件系统挂载表格
# mount /dev/sdb1 /data/改造为符合fstab文件的格式.
# fstab实现永久挂载配置的格式:
/dev/mapper/klas-root   /                       xfs     defaults        0 0
/dev/mapper/klas-backup /backup                 xfs     defaults        0 0
UUID=0651de56-e8f8-4c0c-993b-4523c83f4e82 /boot                   xfs     defaults        0 0
/dev/mapper/klas-swap   none                    swap    defaults        0 0
/dev/sdc1               /resouce/data1          xfs     defaults        0 0
'''
第1列 设备名字或UUID
第2列 挂载点
第3列 文件系统类型xfs,ext4要与格式化的时候一致
第4列 挂载选项/参数 使用defaults表示默认即可.
第5列 是否进行dump导出备份.一般关闭.
第6列 是否进程fsck磁盘检查.一般关闭
'''

4.raid

4.1 概述

# 物理服务器使用.
# 对硬盘进行批量,统一管理.
# raid磁盘冗余阵列,用来管理硬盘. 使用Raid卡实现.
# 好处(无法同时满足)
  可以拥有更高的容量.(4tb*10 = 40tb)
  可以拥有更高的性能.(读写性能)
  可以拥有更高的冗余,安全(备份).

4.2 raid级别(不同的磁盘管理方式)⭐️⭐️⭐️⭐️⭐️

  • 根据我们所选择的raid级别的不同,我们可以获取更高容量,性能,冗余.
  • 温馨提示:不同厂商,raid实现,特点有些区别.

Raid级别 应用场景
Raid 0 追求性能,不要求冗余(安全)
Raid 1 监控服务器,备份服务,系统根分区
Raid 5 访问量不高,读写不高,性能要求不高(写)
Raid 10 性能高,冗余,给重要服务

5. 磁盘故障:磁盘空间不足系列⭐️⭐️⭐️⭐️⭐️

  • 提示: no space left on device 磁盘空间不足.

5.1 常见原因

磁盘空间不足原因

  • block剩余数量(磁盘空间),一般是一些较大文件导致. 日常理解磁盘空间不足,linux,windows,手机.
  • inode剩余数量不足
  • block被占用,文件为彻底删除导致.

5.2 block原因,一些大文件.

5.2.1 故障复现

故障复现

# /usr/ /var/ /etc/

cd /var/log/
for n in {1..20}
do
dd if=/dev/zero of=1g-$n bs=1M count=1024
done
5.2.2 排查流程
  1. 检查当前系统磁盘使用情况: df -h
  2. 一步一步排查(哪个目录或文件)大量占用空间 du -sh
#1.查看整体
df -h 查看哪个磁盘分区空间不足.
通过du 查看
#2.一层一层排查
看第1层目录
du -sh /* |sort -hrk1
du -sh /var/* |sort -rhk1
du -sh /var/log/* |sort -rhk1
#3.定位到文件或目录 确认后再删除.
5.2.3 小结
遇到磁盘空间不足,会使用df命令和du命令排查.
[root@Kylin-V10-sp3 ~]# du -sh /etc/* | sort -hr | head
9.7M/etc/selinux
9.3M/etc/udev
920K/etc/pki

5.3 inode大量被占用导致磁盘空间不足

磁盘分区格式化后inode总数是固定的,每创建1个文件就要占用1个inode.
随着时间推移一些服务发生异常,大量生成小文件,最终导致inode不足

5.3.1 故障复现
点击查看代码
# 创建1个小的磁盘分区,然后挂载使用.
#1.创建分区(数据文件,块文件)
[root@Kylin-V10-sp3 ~]# dd if=/dev/zero of=/resouce/inode/200m bs=1M count=200
记录了200+0 的读入
记录了200+0 的写出
209715200字节(210 MB,200 MiB)已复制,0.244658 s,857 MB/s
[root@Kylin-V10-sp3 ~]#  
[root@Kylin-V10-sp3 ~]# file /resouce/inode/200m
/resouce/inode/200m: data
[root@Kylin-V10-sp3 ~]# 
#2.格式化
[root@Kylin-V10-sp3 ~]# mkfs.xfs /resouce/inode/200m
meta-data=/resouce/inode/200m    isize=512    agcount=4, agsize=12800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=51200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1368, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# file /resouce/inode/200m 
/resouce/inode/200m: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
[root@Kylin-V10-sp3 ~]# 
#3.挂载
[root@Kylin-V10-sp3 ~]# mount /resouce/inode/200m /mnt
[root@Kylin-V10-sp3 ~]# 
#4.检查 df -h  df -i
[root@Kylin-V10-sp3 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 459M     0  459M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M  6.9M  468M    2% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  4.6G   61G    7% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/klas-backup   32G  313M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/loop0               195M   12M  184M    6% /mnt
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# cd /mnt/
[root@Kylin-V10-sp3 /mnt]# 
#5.创建大量文件  echo {1..400000} | xargs touch 
[root@Kylin-V10-sp3 /mnt]# touch {01..102400}.txt
touch: 无法创建 '102366.txt': 设备上没有空间
touch: 无法创建 '102367.txt': 设备上没有空间
touch: 无法创建 '102368.txt': 设备上没有空间
[root@Kylin-V10-sp3 /mnt]#
5.3.2 排查流程

思路

创建文件提示磁盘空间不足.
通过df -h查看发现磁盘空间还有空间,df -i查看inode是否耗尽.
df -h 没有满.
df -i 不足了.
排查: find / -type d -size +1M #目录大小(文件名)大于1M
解决:
  删除小文件
  cd /test/inode
  ls | xargs rm
点击查看代码
[root@Kylin-V10-sp3 /mnt]# df -i
文件系统                  Inodes 已用(I)  可用(I) 已用(I)% 挂载点
devtmpfs                  117317     529   116788       1% /dev
tmpfs                     121363       1   121362       1% /dev/shm
tmpfs                     121363     787   120576       1% /run
tmpfs                     121363      17   121346       1% /sys/fs/cgroup
/dev/mapper/klas-root   34134016  129672 34004344       1% /
tmpfs                     121363      10   121353       1% /tmp
/dev/sda1                 524288     339   523949       1% /boot
/dev/mapper/klas-backup 16664576    1171 16663405       1% /backup
tmpfs                     121363       6   121357       1% /run/user/0
/dev/loop0                102400  102368       32     100% /mnt
[root@Kylin-V10-sp3 /mnt]# 
[root@Kylin-V10-sp3 /mnt]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 459M     0  459M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M  6.9M  468M    2% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  4.6G   61G    7% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/klas-backup   32G  313M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/loop0               195M   66M  130M   34% /mnt
[root@Kylin-V10-sp3 /mnt]# 
[root@Kylin-V10-sp3 /mnt]# rm -f ./*
-bash: /usr/bin/rm: 参数列表过长
[root@Kylin-V10-sp3 /mnt]# rm -f .*
rm: 无法删除 '.': 是一个目录
rm: 无法删除 '..': 是一个目录
[root@Kylin-V10-sp3 /mnt]# rm -f *.txt
[root@Kylin-V10-sp3 /mnt]# 
[root@Kylin-V10-sp3 /mnt]# 
[root@Kylin-V10-sp3 /mnt]# ll
总用量 0
[root@Kylin-V10-sp3 /mnt]# 
[root@Kylin-V10-sp3 /mnt]# df -i
文件系统                  Inodes 已用(I)  可用(I) 已用(I)% 挂载点
devtmpfs                  117317     529   116788       1% /dev
tmpfs                     121363       1   121362       1% /dev/shm
tmpfs                     121363     789   120574       1% /run
tmpfs                     121363      17   121346       1% /sys/fs/cgroup
/dev/mapper/klas-root   34134016  129672 34004344       1% /
tmpfs                     121363      10   121353       1% /tmp
/dev/sda1                 524288     339   523949       1% /boot
/dev/mapper/klas-backup 16664576    1171 16663405       1% /backup
tmpfs                     121363       6   121357       1% /run/user/0
/dev/loop0                102400       3   102397       1% /mnt
[root@Kylin-V10-sp3 /mnt]#
5.3.3 删除大量小文件方案
# 创建或删除大量文件就会有错误提示.
touch {1..500000}
-bash: /usr/bin/touch: 参数列表过长
argument list too long

# 通过管道|xargs方式实现.
| vs |xargs
| 传递的字符串 wc -l 或grep 或sort
|xargs 后面命令的参数
命令选项 命令的不同功能-f -r
命令参数 命令处理的目标 用户名,文件名字,目录名 rm -fr lidao.txt

#创建大量小文件的环境
cd /oldboy/test
echo {1..500000}|xargs touch
echo a{1..500000}|xargs touch
#方案01
#删除
ls |xargs rm -f
#如果上面还是无法删除,通过下面的方式缩小范围.
ls a* |xargs rm -f
ls 1* |xargs rm -f
#方案02:删除文件所在的目录 记录下目录的权限,所有者.
5.3.4 小结
# inode有总数,创建大量小文件占用inode,日积月累就会导致inode数量不足.inode用光了,创建文件提示磁盘空间不足.
# 现象:
创建文件提示磁盘空间不足,或修改文件.
# 排查:
df -h看看是否为block导致.
df -i查看inode使用情况.
inode满了,查看哪个目录下面有大量小文件: find / -type d -size +10M
ll -h 查看目录大小find -type d 目录大小,目录下文件名所占空间.

# 解决:
确定可以删除后.
ls |xargs rm -f
ls 1* |xargs rm -f
ls a* |xargs rm -f

5.4 block占用,文件未被彻底删除导致的故障

文件被彻底删除条件(文件删除原理):

    1. rm删除,硬链接数为0.(没有入口)
    1. 文件没有被任何进程占用. 日志.
5.4.1 故障复现
点击查看代码
# 第一个窗口创建一个大文件,并用查看大文件(进程一直在后台)
[root@Kylin-V10-sp3 ~]# dd if=/dev/zero of=/var/log/big.log bs=1M count=2000
记录了2000+0 的读入
记录了2000+0 的写出
2097152000字节(2.1 GB,2.0 GiB)已复制,3.84818 s,545 MB/s
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# tail -f /var/log/big.log 
已终止
[root@Kylin-V10-sp3 ~]# 

# 第二个窗口删除这个大文件(表面上看删除成功,但存储未释放)
[root@Kylin-V10-sp3 ~]# rm -f /var/log/big.log 
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# lsof | grep delete | sort -rnk7 | head -5
tail      2088                          root    3r      REG              253,0 2097152000  203324588 /var/log/big.log (deleted)
sssd_be    829                          root   19r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
sssd       759                          root   16r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
polkitd    749                       polkitd    4r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
dbus-daem  735                          dbus    6r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
[root@Kylin-V10-sp3 ~]# 
5.4.2 排查流程

如何定位到是文件未彻底删除导致的故障?
df -h 提示磁盘空间不足,du -sh查看没有满,占用的空间与df的差异.

思路

# 精确定位到哪个文件未彻底删除
  yum install -y lsof # 下载lsof
  lsof |grep delete #文件被删除但是还正使用中.
  lsof |grep delete
# 进程命令 pid 文件大小
# 文件名 删除标记
[root@Kylin-V10-sp3 ~]# lsof | grep delete | sort -rnk7 | head -5
tail      2088                          root    3r      REG              253,0 2097152000  203324588 /var/log/big.log (deleted)
sssd_be    829                          root   19r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
sssd       759                          root   16r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
# 重启进程或结束对应进程
kill pid
点击查看代码
[root@Kylin-V10-sp3 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 459M     0  459M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M  6.9M  468M    2% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  6.5G   59G   10% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/klas-backup   32G  313M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/loop0               195M   12M  184M    6% /mnt
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# du -h / | sort -hr  | head -5
du: 无法访问 '/proc/2180/task/2180/fd/3': 没有那个文件或目录
du: 无法访问 '/proc/2180/task/2180/fdinfo/3': 没有那个文件或目录
du: 无法访问 '/proc/2180/fd/4': 没有那个文件或目录
du: 无法访问 '/proc/2180/fdinfo/4': 没有那个文件或目录
4.2G	/
3.3G	/usr
1.3G	/usr/lib
903M	/usr/share
738M	/usr/lib/firmware
[root@Kylin-V10-sp3 ~]# du -h /usr | sort -hr  | head -5
3.3G	/usr
1.3G	/usr/lib
903M	/usr/share
738M	/usr/lib/firmware
537M	/usr/lib64
[root@Kylin-V10-sp3 ~]# lsof | grep delete | sort -rnk7 | head -5
tail      2088                          root    3r      REG              253,0 2097152000  203324588 /var/log/big.log (deleted)
sssd_be    829                          root   19r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
sssd       759                          root   16r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
polkitd    749                       polkitd    4r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
dbus-daem  735                          dbus    6r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# lsof | head -5
COMMAND    PID  TID TASKCMD             USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
systemd      1                          root  cwd       DIR              253,0       4096        128 /
systemd      1                          root  rtd       DIR              253,0       4096        128 /
systemd      1                          root  txt       REG              253,0    1616104   67394388 /usr/lib/systemd/systemd
systemd      1                          root  mem       REG              253,0    1581928      26345 /usr/lib64/libm-2.28.so
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# kill 2088
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# lsof | grep delete | sort -rnk7 | head -5
sssd_be    829                          root   19r      REG              253,0  10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
sssd       759                          root   16r      REG              253,0  10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
polkitd    749                       polkitd    4r      REG              253,0  10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
dbus-daem  735                          dbus    6r      REG              253,0  10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
sssd_nss   842                          root   17r      REG              253,0   8406312  135364753 /var/lib/sss/mc/passwd (deleted)
[root@Kylin-V10-sp3 ~]# 
5.4.3 小结
# 文件删除原理(条件):
  硬链接数为0(rm)
  文件没有进程调用(进程占用为0)
# 排查:
  df -h
  du -sh 分区
  df -h 显示空间不足,du -sh显示空间充足.
  进程占用,文件未彻底删除导致的磁盘空间不足.
# 解决:
lsof |grep detele查找进程,服务,选择大的.
重启服务(流量低谷期).

5.5 总结

6. 磁盘分区方案 ⭐⭐

6.1 思路

# 系统安装之前我们对系统磁盘分区的规划.
linux常用分区
/ 根分区
/boot 分区 存放引导,存放内核
swap 交换分区(占用磁盘空间)
/data/分区 存放数据
/home/ /usr/ 不推荐了.
# 未来一些场景中,我们需要提升系统性能,我们就需要关闭swap.
分区方案 划分方法
通用方案-服务上没有重要的数据 /boot/ 分区存放引导,内核 1-2G
swap 是内存的1.5-2倍最大8G.后天(k8s,数据 库)关闭.
/ 根分区,剩余所有都给根分区.
通用方案-服务上有重要的数据 /boot/
swap
/ 系统分区40G-200G
/data/ 数据分区剩余多少给多少 存放数据
通用方案-不知道服务器作用 先划分 /boot/ swap / 剩余空间留着.

6.2 部署centos 7/麒麟v10

# 进行手动分区
/boot/
swap
/
/data/

# 在/data/下面创建文件
# 重新安装系统重新格式化/,/boot swap 保留/data /dev/sda5,等待安装结束.
# 手动挂载/data/测试,数据是否还在

mkdir -p /data
mount /dev/sda5 /data/
# 检查/data/目录下面数据是否还在.
修改/etc/fstab

6.3 文件系统类型

# 组织存放数据形式.
# 查看系统支持的文件系统
# mkfs按tab键
[root@Kylin-V10-sp3 ~/test]# mkfs
mkfs         mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs     
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat    
[root@Kylin-V10-sp3 ~/test]#
[root@Kylin-V10-sp3 ~/test]# cat /proc/filesystems
nodev	sysfs
nodev	rootfs
nodev	ramfs
nodev	bdev
nodev	proc
nodev	cpuset
nodev	cgroup
nodev	cgroup2
nodev	tmpfs
nodev	devtmpfs
nodev	configfs
nodev	debugfs
nodev	tracefs
nodev	securityfs
nodev	sockfs
nodev	dax
nodev	bpf
nodev	pipefs
nodev	hugetlbfs
nodev	devpts
nodev	ecryptfs
nodev	autofs
nodev	mqueue
nodev	pstore
	xfs
nodev	rpc_pipefs

# 常用的文件系统
xfs               日志文件系统 
ext系列            ext4 <== 日志文件系统 
                  ext2 <== 没有日志功能 
swap              mkswap 交换分区 
其他文件系统btrfs,zfs

6.4 磁盘性能指标

磁盘性能指标
类型(机械,固态)
容量
吞吐量 极限速度.
iops 每秒读写次数.
连续读写速度 传输大文件.
随机读写速度 小文件.
tbw寿命(固态硬盘)
  • dd 连续读写
  • fio 测试连续读写,随机读写,读写延迟,iops.

具体操作参考如下:

https://help.aliyun.com/zh/ecs/user-guide/test-the-performance-of-block-storage-devices

7. swap配置 ⭐

swap 交换分区,内存不足临时充当内存.
基于性能考虑,会考虑关闭swap,尤其是一些服务k8s,mysql.

7.1 增加swap

点击查看代码
# dd 创建指定大小的文件
# if input file从哪里读取文件. /dev/zero 字符文件,不断输出0.
# of output file写入到哪里
# bs block size 每次读多少
# count 次数

[root@Kylin-V10-sp3 ~]# mkdir /swap
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# dd if=/dev/zero of=/swap/1g bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB,1.0 GiB)已复制,3.36927 s,319 MB/s
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# ll -h /swap/1g 
-rw-r--r-- 1 root root 1.0G  9月  8 09:31 /swap/1g
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# file /swap/1g 
/swap/1g: data
[root@Kylin-V10-sp3 ~]# 
# 格式化(成为swap)
[root@Kylin-V10-sp3 ~]# mkswap /swap/1g 
mkswap: /swap/1g:不安全的权限 0644,建议使用 0600。
正在设置交换空间版本 1,大小 = 1024 MiB (1073737728  个字节)
无标签,UUID=5aeca3cd-f7ab-44d8-ac90-815fcc3b3c8d
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# file /swap/1g 
/swap/1g: Linux swap file, 4k page size, little endian, version 1, size 262143 pages, 0 bad pages, no label, UUID=5aeca3cd-f7ab-44d8-ac90-815fcc3b3c8d
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          948Mi       213Mi        66Mi       6.0Mi       668Mi       587Mi
Swap:         2.1Gi       6.0Mi       2.1Gi
[root@Kylin-V10-sp3 ~]# 
# 挂载(swap启动)
[root@Kylin-V10-sp3 ~]# swapon /swap/1g
swapon: /swap/1g:不安全的权限 0644,建议使用 0600。
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# chmod 600 /swap/1g
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          948Mi       214Mi        63Mi       6.0Mi       670Mi       586Mi
Swap:         3.1Gi       6.0Mi       3.1Gi
[root@Kylin-V10-sp3 ~]# 

# 永久生效
# vim /etc/fatab 追加 /swap/1g                swap                    swap    defaults         0 0
/dev/mapper/klas-root   /                       xfs     defaults        0 0
/dev/mapper/klas-backup /backup                 xfs     defaults        0 0
UUID=0651de56-e8f8-4c0c-993b-4523c83f4e82 /boot                   xfs     defaults        0 0
/dev/mapper/klas-swap   none                    swap    defaults        0 0
/swap/1g                swap                    swap    defaults         0 0

7.2 关闭swap

# 临时关闭所有缓存
[root@Kylin-V10-sp3 ~]# swapoff -a
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          948Mi       215Mi       211Mi        12Mi       521Mi       580Mi
Swap:            0B          0B          0B

[root@Kylin-V10-sp3 ~]# 
# 开启刚刚创建的缓存
[root@Kylin-V10-sp3 ~]# swapon /swap/1g
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          948Mi       215Mi       210Mi        12Mi       521Mi       579Mi
Swap:         1.0Gi          0B       1.0Gi
[root@Kylin-V10-sp3 ~]# 
# 开启以前就有的缓存
[root@Kylin-V10-sp3 ~]# swapon /dev/mapper/klas-swap
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          948Mi       216Mi       209Mi        12Mi       521Mi       579Mi
Swap:         3.1Gi          0B       3.1Gi
[root@Kylin-V10-sp3 ~]# 


# 配置文件永久关闭
修改/etc/fstab文件找出包含swap的行,添加上 # 注释掉即可.

7.3 小结

运行java服务或系统内存较小,可以配置swap. (oom故障 out of memory内存不足.)
运行特定的服务或系统内存充足,可以关闭swap提升系统性能.
dd,mkswap(格式化),swapon/swapoff

posted @ 2024-09-08 10:49  老虎死了还有狼  阅读(131)  评论(0编辑  收藏  举报