linux文件系统介绍

磁盘管理相关命令

相关概念:

物理扇区大小 sectors
逻辑扇区大小
存储单元units
sector size
最小I/O size
最佳I/O size
fdisk
功能:查看磁盘详细信息和磁盘分区。包括磁盘容量大小,扇区数量,扇区容量大小等。
df
功能:显示磁盘的相关信息。可以让我们很直观的了解到磁盘的各个分区的使用情况。
介绍:显示磁盘分区的使用情况,显示分区inode使用情况。不包含swap。
重要选项:

-a 包含全部的文件系统
-h 以可读性较高的方式来显示信息
-H 与-h一样,但是单位换算从1024Byte换为1000
-T 显示文件系统的类型
-t <文件系统类型> 仅显示指定文件系统类型的分区
-x <文件系统类型> 排除指定文件系统类型的分区
其他的自己查下文档

常用语法:

df -hT 查看磁盘各个分区使用情况
df -iT 查看磁盘各个分区inode使用情况

引申:

inode定义

lsblk

列出块设备信息。可以让我们很直观的了解到磁盘和分区之间的关系。

LVM 逻辑卷管理

LVM(Logical Volume Manager)逻辑卷管理,是Linux 环境下对磁盘分区进行管理的一种机制。

工作原理

LVM将底层的物理硬盘抽象地封装起来,然后以逻辑卷的方式呈现给上层应用。

用法

创建LVM逻辑卷并使用。

  • 将分区/磁盘创建为物理卷PV(物理分区或磁盘被格式化,分区的类型要求为8e即lvm),空间被划分为一个个的PE。

创建物理卷PV:pvcreate <磁盘或者分区例如/dev/sdb1> <磁盘或者分区例如/dev/sdb2>
查看物理卷:pvs pvdisplay

  • 创建卷组VG。将多个PV组合成VG卷组,相当于一块磁盘。

创建卷组VG:vgcreate <VG_name> <pv1_name> <pv2_name>
查看卷组VG:vgs vgdisplay

  • 创建逻辑卷。将VG卷组中的多个PE组合成逻辑卷LV,LV相当于分区。

创建逻辑卷:lvcreate -n <LV_name> -L 5G <VG_name>
-L 指定创建的LV大小,也可以-l指定创建的LV有多少PE。PE的大小可以通过vgdisplay查看。
查看逻辑卷:lvs lvdisplay
创建完的逻辑卷就跟其他普通卷一样了,可以正常修改文件系统,挂载等。

  • mkfs给逻辑卷创建文件系统。

给LV创建文件系统:mkfs -t xfs <LV_path>
LV_path可以通过lvdisplay查看

  • 然后挂载使用就可以了。开机挂载记得添加配置到/etc/fstab里面去

挂载:mount <LV_path> <path>
卸载:umount <volume_path or Mount_path>
开机挂载:
mount查看挂载的相关信息,然后照着抄进去
defaults 0 0
要检查是否编写正确,可以卸载掉该磁盘,然后使用mount -a挂载一下。mount -a是内核重新读取/etc/fstab挂载。

给卷组VG扩索容

VG卷组扩容

VG卷组扩容的方式是往VG卷组里面增加新的物理卷(PV)

  • 创建逻辑卷/查看未加入卷组的PV
  • 添加物理卷到卷组

vgextend

VG卷组缩容

VG卷组缩容的方式是通过移除VG卷组中的物理卷(PV)。

  • 确认物理卷PV是否被使用。
    • pvdisplay/pvs查看物理卷相关信息
  • 若我们要移除的物理卷已经被使用,则需要将数据转移至其他物理卷。
    • pvmove <src_PV> <dst_PV>这里要求接收数据的PV有足够空间
  • vgreduce <VG_name> <PV_name>移除某卷组中的某物理卷。

逻辑卷扩容缩容

首先,需要注意:

  • xfs文件系统只支持增大,不支持减小。ext2、ext3、ext4增大减小都支持。
  • 缩减逻辑卷空间的时候,先减少文件系统的大小,再减少逻辑卷空间的大小,否则可能数据丢失损坏。

逻辑卷扩容缩容时,我们需要扩容缩容文件系统的大小逻辑卷空间的大小。假如缩减逻辑卷空间的时候(缩容时)缩减了文件系统已经使用的空间,则会破坏文件系统,导致数据丢失或损坏。所以,缩容的时候,最安全的方式是先减少文件系统的大小,再减少逻辑卷空间的大小。而扩容的时候需要先扩容空间,再扩容文件系统。

pvextend方式扩容

传统扩容方式,非动态扩容

这里的传统扩容方式,是先扩容逻辑卷空间,然后重新定义文件系统的大小。定义文件系统大小的时候,可能需要先卸载掉PV,这样就无法使用,不属于真正的动态扩容。

  • vgdisplay确认被扩容逻辑卷所属卷组是否有足够空间(PE)
  • lvextend -L +200M -r <PV_name>给PV增加200MB空间
  • 更新文件系统空间大小(若需要卸载PV,则不是动态扩容了)
    • PV文件系统为ext4的话,需要先umount卸载逻辑卷,然后使用resize2fs <LV_path> <更新后文件系统大小如5G>这种形式更新文件系统大小,然后挂载回去。
    • PV文件系统为xfs的话,直接执行resize2fs <LV_path> <更新后文件系统大小如5G>

利用centos7的pvextend -r选项动态扩容

centos 7 pvextend的-r选项让我们扩容逻辑卷空间的时候能顺便扩容文件系统大小,属于真正的动态扩容。

  • vgdisplay确认被扩容逻辑卷所属卷组是否有足够空间(PE)
  • lvextend -L +200M -r <PV_name>给PV增加200MB空间

lvextend -L +200M -r /dev/vg1/lv1中,+200M表示给PV增加200M空间,如果没有+号则表示将PV扩容到200M大小。-r表示自动扩容文件系统。

pvreduce方式缩容

注意:

  • xfs文件系统只支持增大,不支持减小。ext2、ext3、ext4增大减小都支持。
  • 首先需要确认文件系统使用情况df -h,是否支持我们缩容操作

传统扩容方式,非动态扩容
  • vgdisplay确认被扩容逻辑卷所属卷组是否有足够空间(PE)
  • lvreduce -L -100M <PV_name>给PV减少200MB空间
  • 更新文件系统空间大小(若需要卸载PV,则不是动态扩容了)
    • PV文件系统为ext4的话,需要先umount卸载逻辑卷,然后使用resize2fs <LV_path> <更新后文件系统大小如5G>这种形式更新文件系统大小,然后挂载回去。

利用centos7的pvextend -r选项动态扩容

centos 7 pvextend的-r选项让我们扩容逻辑卷空间的时候能顺便扩容文件系统大小,属于真正的动态扩容。

  • vgdisplay确认被扩容逻辑卷所属卷组是否有足够空间(PE)
  • lvextend -L -200M -r <PV_name>给PV增加200MB空间

lvextend -L -200M -r /dev/vg1/lv1中,-200M表示给PV减少200M空间,如果没有-号则表示将PV缩小到200M大小。-r表示自动缩减文件系统大小。

pvresize 重新定义PV逻辑卷大小的方式扩容

扩容
  • 重新定义LV容量(要求空闲VG的空闲PE足够支撑扩容)

重新定义LV卷大小:lvresize -L 5G <LV_path>

  • 检查磁盘错误及更新逻辑卷文件系统大小

LV文件系统为ext4则执行

  • 检查磁盘错误
    • e2fsck -f <LV_path>
  • 更新文件系统大小
    • 先卸载PVumount <volume_path or Mount_path>
    • 更新文件系统大小resize2fs <LV_path> 5G
    • 重新挂载

LV文件系统为xfs则执行
xfs_growfs <LV_path> 更新文件系统大小

缩容(LV文件系统是xfs的话,不支持缩容)

ext4在重置卷大小后,需要检查磁盘错误和更新逻辑卷信息。顺序不能颠倒

  • 取消挂载PV

卸载:umount <volume_path or Mount_path>

  • 检查磁盘错误

exf4执行:e2fsck -f <LV_path>

  • 缩容文件系统

resize2fs <LV_path> 5G

  • 重新定义卷大小

重新定义LV卷大小:lvresize -L 5G <LV_path>