编程知识 cdmana.com

linux磁盘分区管理

 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显示文件系统类型。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  作用:挂载卸载文件系统

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

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

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

  7)扩容----resizefs/xfs_growfs

  作用:扩展磁盘的容量

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

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

  8)磁盘修复----fsck

  作用:检查修复文件系统

  [root@centos7 ~]# fsck -p /dev/sdb1     #自动检测修复文件系统错误
  [root@centos7 ~]# fsck -f /dev/sdb1     #强制检查文件系统
  [root@centos7 ~]# 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)格式化分区

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

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

image.png

  3)挂载分区

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

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

image.png

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

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

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

image.png

  4)卸载分区

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

  [root@centos7 ~]# umount /dev/sdb5       #卸载sdb5
  [root@centos7 ~]# yum install -y psmisc     #安装fuser命令
  [root@centos7 ~]# fuser -m /dev/sdb5     #查看正在使用磁盘的进程
  [root@centos7 ~]# kill -9 12356       #强制停止该pid进程
  [root@centos7 ~]# 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本质是对磁盘或分区进行初始化

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

  2 vgcreate / vgdisplay / vgextend / vgremove

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

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

  3 lvcreate / lvdisplay / lvextend / lvremove

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

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

  [root@centos7 ~]# lvcreate -L 3G -n data_lv1 lidao_vg1    #创建3G的逻辑卷data_lv1
  [root@centos7 ~]# lvscan                    #列出查看逻辑卷
  [root@centos7 ~]# lvdisplay                 #查看逻辑卷详情
  [root@centos7 ~]# lvextend -L +5G /dev/lidao_vg1/data_lv1  #给逻辑卷data_lv1扩容5G
  [root@centos7 ~]# 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 创建分区

  [root@centos7 ~]# 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,具体步骤如下:
  [root@centos7 ~]# pvcreate /dev/sdb1 /dev/sdb2
  [root@centos7 ~]# vgcreate vg_ops /dev/sdb1 /dev/sdb2

image.png

   3 创建逻辑卷

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

image.png

   4 格式化与挂载

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

image.png

  2)lvm分区扩容实例

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

  1 卷组扩容

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

image.png

  2 逻辑卷扩容

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

image.png

  3)删除lvm实例

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

image.png

3.5.6 非LVM磁盘分区扩容

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

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

image.png

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

 

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

Tags CentOS
Scroll to Top