linux--磁盘管理

简介: linux--磁盘管理

       🍤:想了好久要不要做几篇基础文章,就像我前面写的那句话“不要小瞧任何一次学习的机会,否则会发现自己的渺小”,所以决定先做几篇基础文档。因为有一些命令我也忘记了,还需要上网找一些资料,或多或少的有一些错误,欢迎各位的指正。

磁盘基本管理

       🍒在Linux服务器中,当现有硬盘的分区规划不能满足需求时,就需要对硬盘中的分区进行重新规划和调整,有时候还需要添加新的硬盘设备来扩展存储空间。

添加磁盘

       🍒关于磁盘的添加有两种方式:关机添加,开机后会自动识别,但是生产环境中,服务器一般都是不能关机的,这时就需要开机添加磁盘。那么怎么解决这个问题呢?可以通过以下命令来识别分区。

       🍓方式一:关机添加,自动识别。 方式二:开机添加需要命令识别,命令如下:

1. echo "- - -" >> /sys/class/scsi_host/host0/scan 
2. echo "- - -" >> /sys/class/scsi_host/host1/scan 
3. echo "- - -" >> /sys/class/scsi_host/host2/scan 
4. fdisk -l

文件系统

       操作系统用于明确存储设备(常见的是磁盘)或分区上的文件的方法和数据结构;

       即在存储设备上组织文件的方法。 linux常见的文件系统: EXT4:Linux系统下的日志文件系统,是EXT3文件系统的后继版本。

  1. Ext4的文件系统容量达到1EB,而文件容量则达到16TB。
  2. 理论上支持无限数量的子目录。
  3. Ext4文件系统使用64位空间记录块数量和i-节点数量。
  4. Ext4的多块分配器支持一次调用分配多个数据块。

xfs:一种非常优秀的日志文件系统,SGI公司设计的,被称为业界最先进的、最具可升级性的文件系统技术。

  1. 根据所记录的日志在很短的时间内迅速恢复磁盘文件内容。
  2. 采用优化算法,日志记录对整体文件操作影响非常小。
  3. 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间。
  4. 能以接近裸设备I/O的性能存储数据。

磁盘分区方式

MBR

       主引导记录,支持四个主分区或三主一扩展多个逻辑,每分区最大2TB,兼容性好。

       fdisk /dev/sdb p: 显示当前硬件的分区,包括没有保存的改动 n: 创建一个新的分区 d:删除一个分区 w: 保存并退出 q: 不保存退出 t: 修改分区类型(文件系统类型) l: 显示所支持的所有类型

GPT

       是GUID分区表(GUID Partition Table)的缩写; 含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。 自纠错能力强,一块磁盘上主分区数量不受(4个的)限制,支持大于18EB的总容量, 几乎没有上限,最大支持到128个分区,分区大小支持到256TB。

       gdisk /dev/sdc p: 显示当前硬件的分区,包括没有保存的改动 n: 创建一个新的分区 d:删除一个分区 w: 保存并退出 q: 不保存退出 t: 修改分区类型(文件系统类型) l: 显示所支持的所有类型

基本命令

1、格式化

       ext4格式化命令:mkfs.ext4 /dev/sdb1或者mkfs -t ext4 /dev/sdb1

       xfs格式化命令:mkfs.xfs /dev/sdc1或者mkfs -t xfs /dev/sdc1

2、挂载磁盘

  • 临时挂载:mount /dev/sdb1 /挂载点

卸载:umount /dev/sdb1或者/挂载点

  • 永久挂载:vim /etc/fstab
/dev/sdb1 /mail xfs defaults 0 0

       设备路径 挂载点 类型 参数 备份标记 检测顺序

卸载:通过删除配置文件卸载。

  • 查看挂载情况

       mount或df -hT

3、重新识别分区表

partprobe /dev/sdb

4、修复文件系统

xfs-repair /dev/sdb1

5、检测磁盘坏道

badblocks -sv /dev/sdb

6、xfs备份

xfsdump -f /备份路径    /备份文件

7、还原

xfsrestore -f /备份的文件 /还原路径

磁盘配额

       指定用户目录内存放大小、数量。通过edquota命令修改软限制、硬限制。

xfs配额

1、挂载并启用配额

mount -o usrquota,grpquota /挂载磁盘 /挂载点

永久挂载参数如下:

/dev/sdb1 /mail xfs defaults,usrquota,grpquota 0 0

2、编辑用户配额

xfs_quota -x -c 'limit -u bsoft:30M bhard:50M isft:3 ihard:5 用户名' /挂载目录

3、也可以针对组编辑配额

xfs_quota -x -c 'limit -g bsoft:30M bhard:50M isft:3 ihard:5 组名' /挂载目录

ext4配额

1、挂载

mount -o defaults,usrquota,grpquota /挂载磁盘 /挂载点

永久挂载参数如下:

/dev/sdb1 /mail ext4 defaults,usrquota,grpquota,defaults 0 0

2、生成配额文件

quotacheck /挂载点

3、启用配额;关闭配额命令用quotaoff

quotaon -ugv /挂载点

4、针对用户配额

edquota -u 用户名

       也可以针对组做配额: edquota -g 组名

5、修改配置文件格式如下:

/dev/sdd1 0 30M 50M 0 8 10

创建磁盘案例

       🍋开机状态添加三块SCSI20G的硬盘,通过命令刷新识别。

       🍋新添加的磁盘sdb、sdc各分两个10G的分区,修改区号为83;sdd分一个20G的分区,区号为8e。

       🍋sdb、sdc格式化为xfs文件格式,sdd分为ext4文件格式。

       🍋创建三个目录/sdb1、/sdc1、/sdd1并临时和永久挂载sdb1、sdc1、sdd1,用两种方式查看挂载情况。

1. [root@bj-1-2 ~]# echo "- - -" >> /sys/class/scsi_host/host0/scan
2. [root@bj-1-2 ~]# echo "- - -" >> /sys/class/scsi_host/host1/scan
3. [root@bj-1-2 ~]# echo "- - -" >> /sys/class/scsi_host/host2/scan 
4. [root@bj-1-2 ~]# fdisk -l
5. [root@bj-1-2 ~]# fdisk /dev/sdb
6. 创建分区按键输入:n→p→回车→回车→+10G→t→回车→83→w
7. [root@bj-1-2 ~]# fdisk /dev/sdc
8. 创建分区按键输入:n→p→回车→回车→+10G→t→回车→83→w
9. [root@bj-1-2 ~]# fdisk /dev/sdd
10. 创建分区按键输入:n→p→回车→回车→回车→t→8e→w
11. [root@bj-1-2 ~]# mkfs.xfs /dev/sdb1
12. [root@bj-1-2 ~]# mkfs.xfs /dev/sdb2
13. [root@bj-1-2 ~]# mkfs.xfs /dev/sdc1
14. [root@bj-1-2 ~]# mkfs.xfs /dev/sdc2
15. [root@bj-1-2 ~]# mkfs.ext4 /dev/sdd1
16. [root@bj-1-2 ~]# mkdir /sdb1 /sdc1 /sdd1
17. [root@bj-1-2 ~]# mount /dev/sdb1 /sdb1
18. [root@bj-1-2 ~]# mount /dev/sdc1 /sdc1
19. [root@bj-1-2 ~]# mount /dev/sdd1 /sdd1
20. [root@bj-1-2 ~]# vim /etc/fstab 
21. ......省略部分内容
22. /dev/sdb1       /sdb1   xfs     defaults        0       0
23. /dev/sdc1       /sdc1   xfs     defaults        0       0
24. [root@bj-1-2 ~]# mount
25. ......省略部分内容
26. /dev/sdb1 on /sdb1 type xfs (rw,relatime,attr2,inode64,noquota)
27. /dev/sdc1 on /sdc1 type xfs (rw,relatime,attr2,inode64,noquota)
28. /dev/sdd1 on /sdd1 type ext4 (rw,relatime,data=ordered)
29. [root@bj-1-2 ~]# df -hT
30. 文件系统            类型      容量  已用  可用 已用% 挂载点
31. ......省略部分内容
32. /dev/sdb1           xfs        10G   33M   10G    1% /sdb1
33. /dev/sdc1           xfs        10G   33M   10G    1% /sdc1
34. /dev/sdd1           ext4       20G   45M   19G    1% /sdd1

       🍋创建用户test1和test2,创建/backup目并挂载磁盘sdd1,启用配额功能。

       🍋test1软配额30M硬配额50M,软限制8个硬限制10个;test2软配额8M硬配额10M,软限制3个硬限制5个。

       🍋分别切换test1、test2用户测试磁盘限制和文件数量。

1. [root@bj-1-2 ~]# useradd test1
2. [root@bj-1-2 ~]# useradd test2
3. [root@bj-1-2 ~]# mkdir /backup
4. [root@bj-1-2 ~]# umount /dev/sdd1
5. [root@bj-1-2 ~]# mount -o usrquota,grpquota,defaults /dev/sdd1 /backup
6. [root@bj-1-2 ~]# quotacheck /backup
7. [root@bj-1-2 ~]# quotaon -ugv /backup
8. [root@bj-1-2 ~]# edquota -u test1
9.   /dev/sdd1              0          30M         50M         0        8        10
10. [root@bj-1-2 ~]# edquota -u test2
11.   /dev/sdd1              0          8M          10M          0       3        5
12. [root@bj-1-2 ~]# chmod 707 /backup/
13. [root@bj-1-2 ~]# su - test1
14. [test1@bj-1-2 backup]$ cd /backup
15. [test1@bj-1-2 backup]$ touch test{1..20}
16. [test1@bj-1-2 backup]$ dd if=/dev/zero of=test1 bs=10M count=10
17. [test1@bj-1-2 backup]$ ll -h test1
18. -rw-rw-r-- 1 test1 test1  50M 8月  18 23:16 test1
19. [test1@bj-1-2 backup]$ exit
20. 登出
21. [root@bj-1-2 ~]# su - test2
22. [test2@bj-1-2 ~]$ cd /backup
23. [test2@bj-1-2 backup]$ touch test{1..10}
24. [test2@bj-1-2 backup]$ ls
25. aquota.user  test1  test2  test3  test4  test5
26. [test2@bj-1-2 backup]$ dd if=/dev/zero of=test2 bs=10M count=15
27. [test2@bj-1-2 backup]$ ll -h test2
28. -rw-rw-r-- 1 test2 test2 10M 8月  18 23:20 test2

磁盘高级管理

LVM逻辑卷

       🍒逻辑卷:动态调整分区大小,扩展性好。

功能 PV物理卷 VG卷组 LV逻辑卷
创建 pvcreate vgcreate lvcreate
扫描 pvscan vgscan lvscan
显示详细 pvdisplay vgdisplay lvdisplay
删除 pvremove vgremove lvremove
减少 vgreduce lvreduce
扩展 vgextend lvextend
是否启动 vgchange
LV大小调整 lvresize

创建lvm案例

       🍋添加两块硬盘,各分两个区(10G)指定区号为8e。

       🍋创建4个pv,sdb1、sdb2、sdc1创建vg01卷组,创建逻辑卷lv01指定为10G。

       🍋扩展磁盘到35G,卷组内现在没有35G,需要先增加vg01卷组,在增加逻辑卷lv01,格式化并重新识别大小。

       🍋随后可以根据需求增加新的硬盘,格式化增加或减少磁盘,最后重新识别一下大小就可以了。

1. [root@localhost ~]# pvcreate /dev/sdb{1,2}
2.   Physical volume "/dev/sdb1" successfully created.
3.   Physical volume "/dev/sdb2" successfully created.
4. [root@localhost ~]# pvcreate /dev/sdc{1,2}
5.   Physical volume "/dev/sdc1" successfully created.
6.   Physical volume "/dev/sdc2" successfully created.
7. [root@localhost ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2 /dev/sdc1
8.   Volume group "vg01" successfully created
9. [root@localhost ~]# lvcreate -L 10G -n lv01 vg01
10.   Logical volume "lv01" created.
11. [root@localhost ~]# vgextend vg01 /dev/sdc2
12.   Volume group "vg01" successfully extended
13. [root@localhost ~]# lvextend -L 35G /dev/vg01/lv01 
14.   Size of logical volume vg01/lv01 changed from 20.00 GiB (5120 extents) to 35.00 GiB (8960 extents).
15.   Logical volume vg01/lv01 successfully resized.
16. [root@localhost ~]# mkfs.xfs /dev/vg01/lv01 
17. meta-data=/dev/vg01/lv01         isize=512    agcount=4, agsize=2293760 blks
18.          =                       sectsz=512   attr=2, projid32bit=1
19.          =                       crc=1        finobt=0, sparse=0
20. data     =                       bsize=4096   blocks=9175040, imaxpct=25
21.          =                       sunit=0      swidth=0 blks
22. naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
23. log      =internal log           bsize=4096   blocks=4480, version=2
24.          =                       sectsz=512   sunit=0 blks, lazy-count=1
25. realtime =none                   extsz=4096   blocks=0, rtextents=0
26. [root@localhost ~]# xfs_growfs /dev/vg01/lv01 
27. xfs_growfs: /dev/vg01/lv01 is not a mounted XFS filesystem
28. [root@localhost ~]# lvdisplay 
29. ......省略部分内容
30.   --- Logical volume ---
31.   LV Path                /dev/vg01/lv01
32.   LV Name                lv01
33.   VG Name                vg01
34.   LV UUID                jaGfIc-YdXR-laJO-L8u2-3SFk-9ddT-dUG7UA
35.   LV Write Access        read/write
36.   LV Creation host, time localhost.localdomain, 2022-08-19 01:36:55 +0800
37.   LV Status              available
38. # open                 0
39.   LV Size                35.00 GiB
40.   Current LE             8960
41.   Segments               4
42.   Allocation             inherit
43.   Read ahead sectors     auto
44.   - currently set to     8192
45.   Block device           253:2


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
8天前
|
存储 监控 安全
《Linux 简易速速上手小册》第6章: 磁盘管理与文件系统(2024 最新版)
《Linux 简易速速上手小册》第6章: 磁盘管理与文件系统(2024 最新版)
32 1
|
8天前
|
Prometheus 运维 监控
linux磁盘I/O监控
【4月更文挑战第1天】在Linux中监控磁盘I/O性能至关重要,工具如iostat(-d显示磁盘统计)、iotop(进程级I/O查看)、vmstat、/proc/diskstats(详细统计信息)、Node Exporter(Prometheus集成)和Zabbix(动态监控与LLD)提供关键指标,如IOPS、吞吐量、利用率和服务时间,助力系统优化和故障排查。
52 4
linux磁盘I/O监控
|
8天前
|
Linux Shell C语言
【Shell 命令集合 磁盘维护 】Linux 分区管理的工具 sfdisk命令使用教程
【Shell 命令集合 磁盘维护 】Linux 分区管理的工具 sfdisk命令使用教程
34 1
|
8天前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 管理硬盘分区 mpartition命令使用教程
【Shell 命令集合 磁盘维护 】Linux 管理硬盘分区 mpartition命令使用教程
49 1
|
8天前
|
Shell Linux API
【Shell 命令集合 磁盘维护 】Linux 查找指定目录下的所有符号链接文件 symlinks 命令使用教程
【Shell 命令集合 磁盘维护 】Linux 查找指定目录下的所有符号链接文件 symlinks 命令使用教程
38 1
|
8天前
|
监控 Linux Shell
【Shell 命令集合 磁盘维护 】Linux 交换分区的特殊文件或设备 swapon命令使用指南
【Shell 命令集合 磁盘维护 】Linux 交换分区的特殊文件或设备 swapon命令使用指南
43 1
|
8天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
108 10
|
8天前
|
Linux
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
36 0
|
8天前
|
IDE Linux Shell
linux查看硬盘是否挂载--和磁盘相关命令
linux查看硬盘是否挂载--和磁盘相关命令
54 0
|
8天前
|
Ubuntu Linux 数据库
【Linux】深入了解Linux磁盘配额:限制用户磁盘空间的利器
【Linux】深入了解Linux磁盘配额:限制用户磁盘空间的利器