linux磁盘分区管理

osc_l8yszczz 2020-11-11 16:41:39
CentOS


 3.5.1 磁盘分区概念

linux系统磁盘分区有两种分区方式,主分区(Primary Partion)和扩展分区(extended partion)。每个磁盘设备最多四个分区,也就是说,主分区加上扩展分区的数量之和不能超过4;主分区最少1个最多4个;扩展分区可以没有,最多1个;对于大型的应用系统来说,4个分区可能无法满足需求,于是就有了逻辑分区(logical partion),它是在扩展分区下的分区,逻辑分区无分区数量限制。

磁盘的分区顺序,常有sda1/sda2/sda3/sda4,分别代表第一、二、三、四分区;当磁盘有了分区后是不能直接使用的,必须对分区进行格式化并将其挂载在系统目录上方可使用。所以,在磁盘的管理上就有了一些满足对磁盘查询查看,分区、格式化、挂载、扩容、修复等命令工具,这些工具是磁盘管理的重要技能,务必熟识。

3.5.2 磁盘管理命令

1)文件系统磁盘统计----df

作用:查看系统磁盘使用信息

参数:-h 自动选择合适单位显示磁盘大小;-i 显示磁盘iNode信息; -T显示文件系统类型。

[[email protected] ~]# df  #默认KB单位显示信息
[[email protected] ~]# df -h   #自适应单位显示磁盘信息
[[email protected] ~]# df -i    #查看磁盘的inode信息
[[email protected] ~]# df -T  #显示磁盘文件系统类型(格式)

2)目录文件容量统计----du

作用:查看目录或文件的大小

参数:-h 自动选择合适单位显示磁盘大小;-s 仅显示统计总量。

[[email protected] ~]# du -h u.txt  #查看指定文件大小
[[email protected] ~]# du -h /home/ #列出查看home目录下文件目录大小
[[email protected] ~]# du -sh /home  #查看home目录的总大小
[[email protected] tmp]# du -sh * #查看tmp目录下的所有文件目录大小

3)查看块设备----lsblk

作用:查看块设备详细信息

[[email protected] ~]# lsblk #默认查看设备信息
[[email protected] ~]# lsblk -m  #显示磁盘权限属性信息
[[email protected] ~]# lsblk -f  #显示磁盘分区的文件系统类型

4)编辑分区表----fdisk

作用:编辑分区表,划分磁盘

[[email protected] ~]# fdisk -l  #列出分区表
[[email protected] ~]# fdisk /dev/sdb  #编辑分区表
编辑分区表常用参数:
m :显示菜单和帮助信息
d :删除分区
l :显示分区类型
n :新建分区
p :显示分区信息
q :退出不保存
t :设置分区号
v :进行分区检查
w :保存修改

5)格式化分区----mkfs

作用:把磁盘格式化成指定的文件系统

[[email protected] ~]# mkfs -t xfs /dev/sda2 #将设备sda2格式化成xfs文件系统
[[email protected] ~]# mkfs -t ext4 /dev/sdb2 #将设备sdb2格式化成ext4文件系统

6)挂载与卸载----mount / umount

作用:挂载卸载文件系统

参数:-t  执行文件系统类型;-o 指定ro(只读)/rw(读写);-a 加载分区配置。

[[email protected] ~]# mount /dev/sdb3 /data  #将sdb3分区磁盘挂载到data目录
[[email protected] ~]# mount -o ro /dev/sdb2 /test  #将只读的设备挂载到test目录
[[email protected] ~]# mount -a  #加载分区表/etc/fstab所有配置
[[email protected] ~]# mount /dev/cdrom /mnt #将光驱挂载到mnt
[[email protected] ~]# mount centos7.iso /mnt  #将镜像挂载到mnt
[[email protected] ~]# umount /dev/sdb2 #卸载磁盘sdb2

提示:当卸载磁盘时出现设备忙的提示,说明磁盘正在被程序使用,停止应用进程即可卸载,使用yum install -y psmisc安装fuser命令,fuser -m /dev/sdb1  就可查看使用磁盘的进程,根据进程号停止服务,kill - 9 pid。

7)扩容----resizefs/xfs_growfs

作用:扩展磁盘的容量

[[email protected] ~]# xfs_growfs /dev/sdb1  #xfs格式非LVM扩容sdb1
[[email protected] ~]# xfs_growfs /dev/centos/root  #xfs格式LVM扩容根分区
[[email protected] ~]# resize2fs /dev/sdb2  #ext4格式非LVM扩容sdb2

提示:扩容是一个复杂的操作过程,上面是扩容的最后扩容命令。

8)磁盘修复----fsck

作用:检查修复文件系统

[[email protected] ~]# fsck -p /dev/sdb1  #自动检测修复文件系统错误
[[email protected] ~]# fsck -f /dev/sdb1  #强制检查文件系统
[[email protected] ~]# fsck -rv -t xfs /dev/sdb1  #指定xfs文件系统的交互式检查

3.5.3 fdisk磁盘分区管理实例

  使用fdisk管理分区表,首先给机器加上一个新磁盘设备sdb,大小20G,下面是分区管理操作示例。

1)创建分区

使用命令fdisk /dev/sdb对sdb执行分区如下图,m是查看交互式参数命令

1 创建第一个分区sdb1,创建过程是n-->p-->1--默认-->+5G-->w。

image.png

  2 创建第二个分区sdb2,创建过程是p--n-->p-->2-->默认-->+6G-->w。

image.png

3 创建一个扩展分区sdb3,创建过程是n-->e-->3-->默认-->+3G-->w。

image.png

  4 创建一个逻辑分区sdb5,创建过程是n-->l-->5-->默认-->+1G-->w。

image.png

2)格式化分区

  当分区创建完成后,需要对分区进行格式化

[[email protected] ~]# mkfs -t xfs -f /dev/sdb1  #将sdb1格式化为xfs文件系统
[[email protected] ~]# mkfs -t ext4 /dev/sdb2  #将sdb2格式化为ext4文件系统
[[email protected] ~]# mkfs -t xfs -f /dev/sdb5 #将sdb5格式化为xfs文件系统

image.png

3)挂载分区

1 执行临时挂载,机器重启后挂载将失效

[[email protected] ~]# mkdir /data /test /prod #创建挂载目录
[[email protected] ~]# mount /dev/sdb5 /test #将sdb5挂载到test目录
[[email protected] ~]# mount /dev/sdb2 /prod #将sdb2挂载到prod目录
[[email protected] ~]# mount /dev/sdb1 /data #将sdb1挂载到data目录

image.png

  2 永久挂载,将挂载配置写到fstab文件

将需要挂载的配置写入/etc/fstab中,执行mount -a 加载配置。

[[email protected] ~]# vi /etc/fstab
添加下载挂载配置
/dev/sdb5 /test xfs defaults 0 0
/dev/sdb2 /prod ext4 defaults 0 0
/dev/sdb1 /data xfs defaults 0 0
保存后
[[email protected] ~]# mount -a

image.png

4)卸载分区

  卸载分区可以直接使用umount卸载,当有进程正在使用该磁盘时,无法成功卸载;必须停止占用磁盘的进程方能正常卸载,其中fuser命令可以查看到占用磁盘的进程,然后停止该进程即可执行卸载。

[[email protected] ~]# umount /dev/sdb5  #卸载sdb5
[[email protected] ~]# yum install -y psmisc  #安装fuser命令
[[email protected] ~]# fuser -m /dev/sdb5  #查看正在使用磁盘的进程
[[email protected] ~]# kill -9 12356 #强制停止该pid进程
[[email protected] ~]# umount /dev/sdb2  #卸载sdb2

3.5.4 LVM逻辑卷概念

1)LVM概念

LVM(Logical volume Manager)是逻辑卷管理的简称,它是磁盘分区的一种管理机制,将多个存储设备统一管理成一种逻辑磁盘设备,划分逻辑卷磁盘分区,并允许动态调整逻辑卷分区的大小。LVM创建中主要使用下面几个概念。

PV(Physical Volume):物理卷是逻辑存储块设备,它与底层的磁盘设备或分区是逻辑对应关系。
VG(Volume Group):卷组是逻辑概念上的磁盘,由一个或多个物理卷组和而成。
PE(Physical Extent):物理域是将物理卷组合成卷组后划分的最小存储单位,默认是4MB。
LV(Logical Volume):逻辑卷是逻辑上的磁盘分区。

2)LVM命令工具

1 pvcreate / pvdisplay / pvremove

作用:创建/查看/删除物理卷,pvcreate本质是对磁盘或分区进行初始化

[[email protected] ~]# pvcreate /dev/sdb{1,2,3}  #创建物理卷
[[email protected] ~]# pvscan  #列出查看物理卷
[[email protected] ~]# pvdisplay  #查看详细物理卷信息
[[email protected] ~]# pvremove /dev/sdb{1,2,3}  #删除物理卷

2 vgcreate / vgdisplay / vgextend / vgremove

作用:创建/查看/扩展/删除卷组

[[email protected] ~]# vgcreate lidao_vg1 /dev/sdb1 /dev/sdb2  #创建卷组lidao_vg1
[[email protected] ~]# vgscan  #列出查看卷组
[[email protected] ~]# vgdisplay   #查看卷组详情
[[email protected] ~]# vgextend lidao_vg1 /dev/sdb3  #给卷组lidao_vg1增加物理卷扩容
[[email protected] ~]# vgremove lidao_vg1  #删除卷组lidao_vg1

3 lvcreate / lvdisplay / lvextend / lvremove

作用:创建/查看/扩展/删除逻辑卷

参数:-L 指定逻辑卷大小;-n 指定逻辑卷名称

[[email protected] ~]# lvcreate -L 3G -n data_lv1 lidao_vg1  #创建3G的逻辑卷data_lv1
[[email protected] ~]# lvscan     #列出查看逻辑卷
[[email protected] ~]# lvdisplay  #查看逻辑卷详情
[[email protected] ~]# lvextend -L +5G /dev/lidao_vg1/data_lv1  #给逻辑卷data_lv1扩容5G
[[email protected] ~]# lvremove /dev/lidao_vg1/data_lv1  #删除逻辑卷data_lv1

3.5.5 LVM分区管理实例

lvm创建过程:创建pv--->创建vg--->创建lv--->格式化lv--->挂载lv

lvm扩容过程:增加pv----加入vg---扩容lv--->更新文件系统

lvm删除过程:卸载lv--->删除lv--->删除vg--->删除pv

1)创建lvm分区实例

限于本机电脑磁盘的大小,这里使用一个20G大小的磁盘sdb作为实例磁盘,首先创建四个分区sdb1/sdb2/sdb3/sdb4,使用前两个磁盘分区创建一个逻辑卷组vg_ops,然后从该卷组中创建两个逻辑卷ops_app、ops_web,并执行格式化和挂载。

  1 创建分区

[[email protected] ~]# fdisk /dev/sdb
n-->p-->1-->默认-->+5G;n-->p-->2-->默认-->+4G;n-->p-->3-->默认-->+5G;n-->p-->4->默认-->+4G--->w。
创建四个分区过程如下图:

image.png

  2 创建卷组

这里使用sdb1和sdb2两个磁盘来创建卷组vg_ops,具体步骤如下:
[[email protected] ~]# pvcreate /dev/sdb1 /dev/sdb2
[[email protected] ~]# vgcreate vg_ops /dev/sdb1 /dev/sdb2

image.png

  3 创建逻辑卷

使用vg_ops卷组创建两个逻辑卷ops_app、ops_web步骤如下:
[[email protected] ~]# lvcreate -n ops_app -L 3G vg_ops
[[email protected] ~]# lvcreate -n ops_web -L 3G vg_ops

image.png

  4 格式化与挂载

ops_web卷格式化成ext4格式文件系统,将ops_app格式化成xfs格式文件系统,并将其分别挂载到web、app目录
[[email protected] ~]# mkfs -t ext4 /dev/vg_ops/ops_web
[[email protected] ~]# mkfs -t xfs -f /dev/vg_ops/ops_app
[[email protected] ~]# mkdir /web /app
[[email protected] ~]# mount /dev/vg_ops/ops_web /web
[[email protected] ~]# mount /dev/vg_ops/ops_app /app
[[email protected] ~]# df -Th

image.png

2)lvm分区扩容实例

lvm分区扩容有两种情况,一种是vg卷组容量不足,一种是lv逻辑卷容量不足,下面统一扩容。将新磁盘或分区加入到卷组,执行卷组扩容命令即可;逻辑卷大小调整,需要执行逻辑卷扩容命令,并且要执行更新到文件系统才会生效。下面是扩容操作实例。

1 卷组扩容

sdb3磁盘分区添加到vg_ops卷组中,首先使用pvcreate初始化,然后用vgextend进行扩容。
[[email protected] ~]# pvcreate /dev/sdb3
[[email protected] ~]# vgextend vg_ops /dev/sdb3
[[email protected] ~]# vgdisplay vg_ops

image.png

2 逻辑卷扩容

逻辑卷扩容,首先查看所在卷组的容量是否还能满足需求,若卷组容量不足则先扩容卷组(如上);在卷组能够满足逻辑卷扩容需求时,按照下面步骤执行lv扩容,先试用lvextend扩容逻辑卷ops_web和ops_app,然后根据文件系统格式选择合适的更新命令,相当于对新增空间的格式化,ext4格式使用resize2fs,xfs格式使用xfs_growfs。
[[email protected] ~]# lvextend -L +2G /dev/vg_ops/ops_web
[[email protected] ~]# lvextend -L +2G /dev/vg_ops/ops_app
[[email protected] ~]# resize2fs /dev/vg_ops/ops_web
[[email protected] ~]# xfs_growfs /dev/vg_ops/ops_app
[[email protected] ~]# df -Th

image.png

3)删除lvm实例

当逻辑卷分区不再使用时,可以删除以释放磁盘设备。删除时要先卸载文件系统,接着删除逻辑卷,然后删除卷组,最后清理物理卷,这个顺序与创建时顺序相反。
[[email protected] ~]# umount /dev/vg_ops/ops_web 
[[email protected] ~]# umount /dev/vg_ops/ops_app
[[email protected] ~]# lvremove /dev/vg_ops/ops_web
[[email protected] ~]# lvremove /dev/vg_ops/ops_app 
[[email protected] ~]# vgremove vg_ops
[[email protected] ~]# pvremove /dev/sdb{1,2,3}

image.png

3.5.6 非LVM磁盘分区扩容

  当一个磁盘分区未使用lvm分区挂载时,能否扩容取决于所在磁盘设备空间大小,如果容量有剩余,则可以给该区扩容。现在有磁盘设备sdb大小20G,当前分区有一个xfs格式的sdb1大小5G,挂载在/test目录,由于业务量的增加,当前磁盘分区sdb1无法满足需求,需要给sdb1在线扩容。下面是非lvm分区sdb1的扩容操作步骤。

[[email protected] ~]# fdisk /dev/sdb
sdb分区操作  p--->d--->1--->n--->p--->1--->2048--->+10G--->w
[[email protected] ~]# partprobe /dev/sdb
[[email protected] ~]# xfs_growfs /dev/sdb1
[[email protected] ~]# df -Th

image.png

  本节磁盘分区知识,是日常磁盘管理的重要技能。除了学习上面的实例外,也要去研究不同环境状态下磁盘管理,比如把传统分区改为lvm分区、多个磁盘设备共建lvm、扩容根分区等,在测试环境中多多练习,探索多种可能性。俗话说,测试多流汗,生产少流泪,当面对不确定的情况时,必须充分测试验证后才可上生产。

 

版权声明
本文为[osc_l8yszczz]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4385759/blog/4713146

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云