Linux磁盘管理

磁盘管理

vdo卷

  1. VDO(Virtual Data Optimize虚拟数据优化)
    通过压缩或删除存储设备上的数据来优化存储空间。VDO层放置在现有块存储设备例如RAID设备或本地磁盘的顶部。这些块设备也可以是加密设备。存储层(如LVM logic卷和文件系统)放置在VDO层的顶部。
  2. VDO按以下顺序将三个阶段应用于数据,减少存储设备上的占用空间
  • 零区块的排除:在初始化阶段,整块为0的会被元数据记录下来,这个可以用水杯里面的水和沙子混合的例子来解释,使用滤纸(零块排除),把沙子(非零空间)给过滤出来,然后就是下一个阶段的处理
  • 重复数据删除:在第二阶段,输入的数据会判断是不是冗余数据(在写入之前就判断),这个部分的数据通过UDS内核模块来判断(U niversal D eduplication S ervice),被判断为重复数据的部分不会被写入,然后对元数据进行更新,直接指向原始已经存储的数据块即可
  • 压缩:一旦消零和重删完成,LZ4压缩会对每个单独的数据块进行处理,然后压缩好的数据块会以固定大小4KB的数据块存储在介质上,由于一个物理块可以包含很多的压缩块,这个也可以加速读取的性能
创建vdo

注意:创建vdo卷要准备一个未分区的新磁盘

[root@lc ~]# lsblk | grep nvme0n2
nvme0n2       259:3    0   20G  0 disk 
[root@lc ~]# 

1.安装vdo软件和模块

[root@lc ~]# yum -y install vdo kmod-kvdo

2.创建vdo卷

[root@lc ~]# vdo create --name=lcvdo --device=/dev/nvme0n2  --vdoLogicalSize=20T
Creating VDO lcvdo
      The VDO volume can address 6 GB in 3 data slabs, each 2 GB.
      It can grow to address at most 16 TB of physical storage in 8192 slabs.
      If a larger maximum size might be needed, use bigger slabs.
Starting VDO lcvdo
Starting compression on VDO lcvdo
VDO instance 1 volume is ready at /dev/mapper/lcvdo
[root@lc ~]# 

3.查看vdo卷

[root@lc ~]# fdisk -l /dev/mapper/lcvdo 
Disk /dev/mapper/lcvdo:20 TiB,21990232555520 字节,5368709120 个扇区
单元:扇区 / 1 * 4096 = 4096 字节
扇区大小(逻辑/物理):4096 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
[root@lc ~]# 

关闭vdo卷

[root@lc ~]# vdo stop -n lcvdo 
Stopping VDO lcvdo
[root@lc ~]# 

开启vdo卷

[root@lc ~]# vdo start -n lcvdo 
Starting VDO lcvdo
Starting compression on VDO lcvdo
VDO instance 2 volume is ready at /dev/mapper/lcvdo
[root@lc ~]# 
格式化vdo

一定要加 ==-K(大写)==选项

[root@lc ~]# mkfs.xfs -K /dev/mapper/lcvdo 
meta-data=/dev/mapper/lcvdo      isize=512    agcount=20, agsize=268435455 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=5368709100, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@lc ~]# 

挂载使用

临时挂载

[root@lc ~]# udevadm settle 
[root@lc ~]# mkdir /lcvdohome
[root@lc ~]# mount /dev/mapper/lcvdo /lcvdohome/
[root@lc ~]# df -Th | grep vdo
/dev/mapper/lcvdo     xfs        20T  143G   20T    1% /lcvdohome
[root@lc ~]# 

永久挂载

[root@lc ~]# mkdir /lcvdohome
[root@lc ~]# blkid /dev/mapper/lcvdo 
/dev/mapper/lcvdo: UUID="c27fd47c-0554-470b-9446-f67158f2cd68" TYPE="xfs"
[root@lc ~]# vim /etc/fstab 
[root@lc ~]# cat /etc/fstab 
(省略)
UUID="c27fd47c-0554-470b-9446-f67158f2cd68" /lcvdohome xfs defaults,x-systemd.requires=vdo.service 0 0          //手动添加本条
[root@lc ~]# 



[root@lc ~]# mount -a
[root@lc ~]# df -Th | grep vdo
/dev/mapper/lcvdo     xfs        20T  143G   20T    1% /lcvdohome
[root@lc ~]# 
验证vdo卷
[root@lc ~]# vdostats --human-readable 
Device                    Size      Used Available Use% Space saving%
/dev/mapper/lcvdo       20.0G      4.0G     16.0G  20%           99%
[root@lc ~]# cp /mnt/images/install.img /vdo111/
[root@lc ~]# vdostats --human-readable 
Device                    Size      Used Available Use% Space saving%
/dev/mapper/lcvdo       20.0G      4.5G     15.5G  22%           79%
[root@lc ~]# 
vdo卷扩容

扩容之前要保证这个vdo卷是没有人正在使用的,比如cd到了vdo卷的挂载路径,或者vim挂载路径里面的某个文件,只要产生的进程是关于vdo的,就不可以扩容。要先kil这些进程

通过lsof查看

lsof:查看文件的进程信息

[root@lc ~]# lsof /lcvdohome/
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    3517 root  cwd    DIR  253,2        6  128 /lcvdohome    //有一个进程

[root@lc ~]# kill -9 3517                  //通过进程号结束该进程
[root@lc ~]# lsof /lcvdohome/
[root@lc ~]#                               //现在没有进程占用vdo的挂载点了

取消挂载

[root@lc ~]# umount /dev/mapper/lcvdo 
[root@lc ~]# df -Th
文件系统              类型      容量  已用  可用 已用% 挂载点
devtmpfs              devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                 tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                 tmpfs     1.9G   10M  1.9G    1% /run
tmpfs                 tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs        26G  4.3G   22G   17% /
/dev/sr0              iso9660   7.9G  7.9G     0  100% /mnt/cdrom
/dev/nvme0n1p1        xfs      1014M  229M  786M   23% /boot
tmpfs                 tmpfs     376M  1.2M  375M    1% /run/user/42
tmpfs                 tmpfs     376M  3.5M  372M    1% /run/user/0
[root@lc ~]# 

扩充vdo卷大小

命令最后面的大小是你扩充磁盘后的大小。比如,原来是20T,你想增加10T,那么后面的大小应该写30T

[root@lc ~]# vdo growLogical --name=lcvdo --vdoLogicalSize=30T
[root@lc ~]# lsblk | grep vdo
└─lcvdo       253:2    0   30T  0 vdo         //从原来的20T扩充为30T了
[root@lc ~]# 

重新挂载回去

[root@lc ~]# mount -a
[root@lc ~]# df -Th | grep vdo
/dev/mapper/lcvdo     xfs        20T  143G   20T    1% /lcvdohome
[root@lc ~]# 
               //发现挂载后只有20T,因为文件系统容量还没有同步到内核

同步文件系统容量到内核

xfs格式的用xfs_growfs

ext格式的用resize2
[root@lc ~]# xfs_growfs /dev/mapper/lcvdo 
meta-data=/dev/mapper/lcvdo      isize=512    agcount=20, agsize=268435455 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=5368709100, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 5368709100 to 8053063650
[root@lc ~]# 


[root@lc ~]# df -Th | grep vdo
/dev/mapper/lcvdo     xfs        30T  215G   30T    1% /lcvdohome
[root@lc ~]# 
                   //已经同步为30T了
删除vdo卷

先卸载才可以删除,如果vdo卷还在使用就无法删除

卸载之前

[root@lc ~]# lsblk 
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1  7.9G  0 rom  /mnt/cdrom
nvme0n1       259:0    0   30G  0 disk 
├─nvme0n1p1   259:1    0    1G  0 part /boot
└─nvme0n1p2   259:2    0   29G  0 part 
  ├─rhel-root 253:0    0   26G  0 lvm  /
  └─rhel-swap 253:1    0    3G  0 lvm  [SWAP]
nvme0n2       259:3    0   10G  0 disk 
└─lcvdo       253:2    0   30T  0 vdo  /lcvdohome          //要卸载的vdo卷
[root@lc ~]# 

取消挂载

//卸载vdo卷
[root@lc ~]# umount /dev/mapper/lcvdo 


//查看挂载信息,已经看不见vdo卷了
[root@lc ~]# df -Th 
文件系统              类型      容量  已用  可用 已用% 挂载点
devtmpfs              devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                 tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                 tmpfs     1.9G   10M  1.9G    1% /run
tmpfs                 tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs        26G  4.3G   22G   17% /
/dev/sr0              iso9660   7.9G  7.9G     0  100% /mnt/cdrom
/dev/nvme0n1p1        xfs      1014M  229M  786M   23% /boot
tmpfs                 tmpfs     376M  1.2M  375M    1% /run/user/42
tmpfs                 tmpfs     376M  3.5M  372M    1% /run/user/0
[root@lc ~]# 

删除vdo卷

[root@lc ~]# vdo remove --name lcvdo 
Removing VDO lcvdo
Stopping VDO lcvdo
[root@lc ~]# 

删除后查看磁盘分区信息

[root@lc ~]# lsblk 
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1  7.9G  0 rom  /mnt/cdrom
nvme0n1       259:0    0   30G  0 disk 
├─nvme0n1p1   259:1    0    1G  0 part /boot
└─nvme0n1p2   259:2    0   29G  0 part 
  ├─rhel-root 253:0    0   26G  0 lvm  /
  └─rhel-swap 253:1    0    3G  0 lvm  [SWAP]
nvme0n2       259:3    0   10G  0 disk 
[root@lc ~]# 
//vdo卷已经删除了

lvm卷

一、原理

//逻辑卷管理,是⼀种将⼀个或多个硬盘的分区 在逻辑上集合,相当于⼀个⼤硬盘来使⽤,当硬盘的空间不够使⽤的时候,
可以继续将其它 的硬盘的 分区加⼊其中,这样可以事项⼀种磁盘空间的动态管理,相对于普通的磁盘分区有 很⼤的灵活
性,使⽤普通的磁盘分区,当⼀个磁盘的分区空间不够使⽤的时候,可 能就会带 来很⼤的麻烦。使⽤LVM在⼀定程度上就
可以解决普通磁盘分区带来的问题//

二、应用场景和优缺点

使用场景:随着公司的发展,数据增长较快,最初规划的磁盘容量不够用了,使用lvm卷可以灵活的进行扩容

优缺点:

优点:灵活性强,大小可以动态调整

缺点:数据不是直接存放在硬盘上,而是在硬盘的上面又虚拟出来一层逻辑卷存放数据,故而增加了磁盘数据恢复的难度

三、物理卷、卷组和逻辑卷

在这里插入图片描述

物理卷(PV):把常规的块设备(硬盘,分区等可以读写数据的设备)通过pvcreate命令对其进行初始化,就成了物理卷

卷组(VG):把多个物理卷的容量组成一个逻辑整体,可以从里面灵活分配容量

逻辑卷(LV):从卷组中划分部分空间成为一个可以读写数据的逻辑单元。需要对其格式化然后挂载使用

四、部署和使用lvm

从创建到使用的过程:

1.添加物理磁盘,创建物理卷
2.创建卷组,将物理卷加入卷组
3.在卷组中划分逻辑卷
4.格式化逻辑卷
5.挂载使用
常用命令

创建物理卷、卷组和逻辑卷的命令:

pvcreate 物理磁盘路径

pvcreate /dev/nvme0n2             //后面接添加好的物理磁盘的设备名

vgcreate 卷组名 物理卷名

vgcreate lcvg1 /dev/nvme0n2       //卷组名自定义,物理卷名是已经存在的物理卷

lvcreate -L 指定大小和单位 -n 逻辑卷名 卷组名

lvcreate -L 2G -n lclv1 lcvg1         //逻辑卷名自定义,卷组名是已经存在的卷组

简单的查看命令

pvs     //查看你物理卷的概要信息
vgs     //查看卷组的概要信息
lvs     //查看逻辑卷的概要信息
[root@lc ~]# pvs
  PV             VG   Fmt  Attr PSize   PFree
  /dev/nvme0n1p2 rhel lvm2 a--  <29.00g    0 

[root@lc ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  rhel   1   2   0 wz--n- <29.00g    0 

[root@lc ~]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel -wi-ao---- <26.00g                                                    
  swap rhel -wi-ao----   3.00g                                               
部署示例

1.先准备一块新的物理磁盘

[root@lc ~]# lsblk | grep nvme0n2
nvme0n2       259:3    0   10G  0 disk 
[root@lc ~]# 

2.把物理磁盘创建为物理卷

[root@lc ~]# pvcreate /dev/nvme0n2
  Physical volume "/dev/nvme0n2" successfully created.

[root@lc ~]# pvs
  PV             VG   Fmt  Attr PSize   PFree 
  /dev/nvme0n1p2 rhel lvm2 a--  <29.00g     0 
  /dev/nvme0n2        lvm2 ---   10.00g 10.00g         //物理卷创建成功
[root@lc ~]# 

3.在刚刚创建好的物理卷上创建卷组

[root@lc ~]# vgcreate lcvg1 /dev/nvme0n2
  Volume group "lcvg1" successfully created

[root@lc ~]# vgs
  VG    #PV #LV #SN Attr   VSize   VFree  
  lcvg1   1   0   0 wz--n- <10.00g <10.00g      //卷组lcvg1已经创建好了
  rhel    1   2   0 wz--n- <29.00g      0  
[root@lc ~]# 

4.在卷组lcvg1上创建一个逻辑卷

[root@lc ~]# lvcreate -L 2G -n lclv1 lcvg1
  Logical volume "lclv1" created.
[root@lc ~]# lvs
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lclv1 lcvg1 -wi-a-----   2.00g           //逻辑卷lclv1创建成功
 
  root  rhel  -wi-ao---- <26.00g                                                    
  swap  rhel  -wi-ao----   3.00g                                                    
[root@lc ~]# 

5.格式化创建的逻辑卷

[root@lc ~]# mkfs.ext4 /dev/lcvg1/lclv1
mke2fs 1.45.4 (23-Sep-2019)
创建含有 524288 个块(每块 4k)和 131072 个inode的文件系统
文件系统UUID:b754106b-6233-4b10-9ad5-31238b230b72
超级块的备份存储于下列块: 
	32768, 98304, 163840, 229376, 294912

正在分配组表: 完成                            
正在写入inode表: 完成                            
创建日志(16384 个块)完成
写入超级块和文件系统账户统计信息: 已完成

[root@lc ~]# 

6.创建一个目录,给逻辑卷进行挂载使用

//创建挂载目录
[root@lc ~]# mkdir /root/lvhome           
//查找逻辑卷的UUID
[root@lc ~]# blkid /dev/lcvg1/lclv1
/dev/lcvg1/lclv1: UUID="b754106b-6233-4b10-9ad5-31238b230b72" TYPE="ext4"
[root@lc ~]# 
//写入配置信息,永久挂载
[root@lc ~]# vim /etc/fstab 
[root@lc ~]# tail -1 /etc/fstab 
UUID="b754106b-6233-4b10-9ad5-31238b230b72" /root/lvhome ext4 defaults 0 0
[root@lc ~]# 
//挂载,然后查看挂载使用信息
[root@lc ~]# mount -a

[root@lc ~]# df -Th 
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   10M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/rhel-root   xfs        26G  4.3G   22G   17% /
/dev/sr0                iso9660   7.9G  7.9G     0  100% /mnt/cdrom
/dev/nvme0n1p1          xfs      1014M  229M  786M   23% /boot
tmpfs                   tmpfs     376M  1.2M  375M    1% /run/user/42
tmpfs                   tmpfs     376M  3.5M  372M    1% /run/user/0
/dev/mapper/lcvg1-lclv1 ext4      2.0G  6.0M  1.8G    1% /root/lvhome  挂载成功
[root@lc ~]# 

五、vg卷组管理

扩容卷组

将新的磁盘加入到某个卷组

//当需要在某个卷组里面划分新的卷组时,卷组的空间已经不够了,这时就需要给卷组扩容。

//卷组是建立在物理卷上的,所以要扩容卷组就要先准备新的物理卷,准备新的物理卷,就要添加新的物理磁盘

命令:

vgextend 卷组名 物理卷名

vgextend lcvg1 /dev/nvme0n3          //卷组名为需要扩充的卷组,物理卷名是空间的来源

示例:

1.准备一个新的物理磁盘,并将其创建为物理卷

[root@lc ~]# lsblk | grep nvme0n3
nvme0n3       259:4    0   20G  0 disk           //20G的物理磁盘
[root@lc ~]# 

[root@lc ~]# pvcreate /dev/nvme0n3
  Physical volume "/dev/nvme0n3" successfully created.
[root@lc ~]# pvs
  PV             VG    Fmt  Attr PSize   PFree 
  /dev/nvme0n1p2 rhel  lvm2 a--  <29.00g     0 
  /dev/nvme0n2   lcvg1 lvm2 a--  <10.00g <8.00g
  /dev/nvme0n3         lvm2 ---   20.00g 20.00g        //创建成功
[root@lc ~]# 

2.使用vgextend扩展卷组

//没扩充之前lcvg1的大小
[root@lc ~]# vgs
  VG    #PV #LV #SN Attr   VSize   VFree 
  lcvg1   1   1   0 wz--n- <10.00g <8.00g        //总大小10G,可用8G
  rhel    1   2   0 wz--n- <29.00g     0 
[root@lc ~]# 
//扩充
[root@lc ~]# vgextend lcvg1 /dev/nvme0n3
  Volume group "lcvg1" successfully extended
[root@lc ~]# 
//扩充后lcvg1的大小
[root@lc ~]# vgs
  VG    #PV #LV #SN Attr   VSize   VFree 
  lcvg1   2   1   0 wz--n-  29.99g 27.99g       //扩大了20G
  rhel    1   2   0 wz--n- <29.00g     0 
[root@lc ~]# 

缩减卷组

将指定磁盘从卷组中删除

命令:

vgreduce 卷组名 物理卷名

vgreduce lcvg1 /dev/nvme0n3     

示例:

//查看现在卷组lcvg1的大小
[root@lc ~]# vgs
  VG    #PV #LV #SN Attr   VSize   VFree 
  lcvg1   2   1   0 wz--n-  29.99g 27.99g       //现在是30G
  rhel    1   2   0 wz--n- <29.00g     0 
[root@lc ~]# 
//减缩卷组,移除一个物理卷
[root@lc ~]# vgreduce lcvg1 /dev/nvme0n3
  Removed "/dev/nvme0n3" from volume group "lcvg1"
[root@lc ~]# 
//查看减缩后的卷组大小
[root@lc ~]# vgs
  VG    #PV #LV #SN Attr   VSize   VFree 
  lcvg1   1   1   0 wz--n- <10.00g <8.00g            //缩小了
  rhel    1   2   0 wz--n- <29.00g     0 
[root@lc ~]# 
卷组数据迁移
//当磁盘损坏或者故障需要维修或更换时,需要进行数据迁移

//同一卷组的磁盘才可以进行在线迁移

命令

pvmove

pvmove /dev/nvme0n2 /dev/nvme0n3        //前面是要要出数据的磁盘,后面是存数据的磁盘

示例:

1.查看当前物理卷信息

[root@lc ~]# pvs
  PV             VG    Fmt  Attr PSize   PFree  
  /dev/nvme0n1p2 rhel  lvm2 a--  <29.00g      0 
  /dev/nvme0n2   lcvg1 lvm2 a--  <10.00g  <7.00g      //已经使用3G
  /dev/nvme0n3   lcvg1 lvm2 a--  <20.00g <20.00g      // 未使用 
[root@lc ~]# 
物理卷n2里面有3G的数据,而n3里面什么都没有,尝试把n2里面的数据迁移到n3里

2.数据迁移

[root@lc ~]# pvmove /dev/nvme0n2 /dev/nvme0n3
  /dev/nvme0n2: Moved: 2.21%
  /dev/nvme0n2: Moved: 33.33%
  /dev/nvme0n2: Moved: 100.00%
[root@lc ~]# 

3.查看迁移后的物理卷信息

[root@lc ~]# pvs
  PV             VG    Fmt  Attr PSize   PFree  
  /dev/nvme0n1p2 rhel  lvm2 a--  <29.00g      0 
  /dev/nvme0n2   lcvg1 lvm2 a--  <10.00g <10.00g    //未使用
  /dev/nvme0n3   lcvg1 lvm2 a--  <20.00g <17.00g     //使用3G
[root@lc ~]#  

六、逻辑卷管理

扩展逻辑卷
//逻辑卷不够用时,从该逻辑卷的卷组里面,分出一部分空间给这个逻辑卷(前提是卷组的空间有多余的)

命令:

lvextend

lvextend -L +2G /dev/lcvg1/lclv1      //+2G表示在原来的基础上,再加2G 
lvextend -L 2G /dev/lcvg1/lclv1      //没有+号表示,扩展到多少G
lvextend -L 50%FREE /dev/lcvg1/lclv1     //按百分比分配,分配磁盘池中50%给逻辑卷

示例:

//查看逻辑卷lclv1的大小
[root@lc ~]# lvs
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lclv1 lcvg1 -wi-ao----   2.00g         //现在是2G                                              
  lclv2 lcvg1 -wi-a-----   2.00g                                                    
  root  rhel  -wi-ao---- <26.00g                                                    
  swap  rhel  -wi-ao----   3.00g                                                    
[root@lc ~]# 
//进行扩充
[root@lc ~]# lvextend -L +2G /dev/lcvg1/lclv1
  Size of logical volume lcvg1/lclv1 changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
  Logical volume lcvg1/lclv1 successfully resized.
[root@lc ~]# 
//查看扩充后的
[root@lc ~]# lvs
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lclv1 lcvg1 -wi-ao----   4.00g          //加了2G,变成了4G                                             
  lclv2 lcvg1 -wi-a-----   2.00g                                                    
  root  rhel  -wi-ao---- <26.00g                                                    
  swap  rhel  -wi-ao----   3.00g                                                    
[root@lc ~]# 
//扩充文件系统
[root@lc ~]# resize2fs /dev/lcvg1/lclv1
resize2fs 1.45.4 (23-Sep-2019)
/dev/lcvg1/lclv1 上的文件系统已被挂载于 /root/lvhome;需要进行在线调整大小

old_desc_blocks = 1, new_desc_blocks = 1
/dev/lcvg1/lclv1 上的文件系统现在为 1048576 个块(每块 4k)。

[root@lc ~]# 
//查看挂载信息
[root@lc ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G  9.7M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/rhel-root   xfs        26G  4.3G   22G   17% /
/dev/sr0                iso9660   7.9G  7.9G     0  100% /mnt/cdrom
/dev/mapper/lcvg1-lclv1 ext4      3.9G  8.0M  3.7G    1% /root/lvhome
/dev/nvme0n1p1          xfs      1014M  229M  786M   23% /boot
tmpfs                   tmpfs     376M  1.2M  375M    1% /run/user/42
tmpfs                   tmpfs     376M  4.0K  376M    1% /run/user/0
[root@lc ~]# 
//已经成功扩充为4G,并可以正常使用
减缩逻辑卷

只有ext4文件系统的逻辑卷才可以减缩

缩减逻辑卷注意事项:

//1.不能在线缩减,得先卸载;
//2.确保缩减后的空间大小依然能存储原有的所有数据;
//3.在缩减之前应该先强行检查文件,以确保文件系统处于一致性状态。使用命令e2fsck -f

命令:

lvreduce

lvreduce -L 1G /dev/lcvg1/lclv1     //1G代表是减缩到1G,最终的大小就是1G

示例:

1.先取消挂载要减缩的逻辑卷

[root@lc ~]# umount /dev/mapper/lcvg1-lclv1

2.检查文件系统

[root@lc ~]# e2fsck -f /dev/lcvg1/lclv1
e2fsck 1.45.4 (23-Sep-2019)1 步:检查inode、块和大小
第 2 步:检查目录结构
第 3 步:检查目录连接性
第 4 步:检查引用计数
第 5 步:检查组概要信息
/dev/lcvg1/lclv1:11/262144 文件(0.0% 为非连续的), 34894/1048576 块
[root@lc ~]# resize2fs 

3.调整文件系统的大小,测试减缩(不是真正减缩,只是测试一下可以减缩到多大)

[root@lc ~]# resize2fs /dev/lcvg1/lclv1 1G
resize2fs 1.45.4 (23-Sep-2019)
将 /dev/lcvg1/lclv1 上的文件系统调整为 262144 个块(每块 4k)。
/dev/lcvg1/lclv1 上的文件系统现在为 262144 个块(每块 4k)。

[root@lc ~]# 

4.减缩逻辑卷,减缩后的大小为1G

[root@lc ~]# lvreduce -L 1G /dev/lcvg1/lclv1
  WARNING: Reducing active logical volume to 1.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lcvg1/lclv1? [y/n]: y
  Size of logical volume lcvg1/lclv1 changed from 4.00 GiB (1024 extents) to 1.00 GiB (256 extents).
  Logical volume lcvg1/lclv1 successfully resized.
[root@lc ~]# 

5.查看减缩后的逻辑卷

[root@lc ~]# lvs
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lclv1 lcvg1 -wi-a-----   1.00g                  //已经减缩到1G了                                   
  lclv2 lcvg1 -wi-a-----   2.00g                                                    
  root  rhel  -wi-ao---- <26.00g                                                    
  swap  rhel  -wi-ao----   3.00g                                                    
[root@lc ~]# 

6.再次检测文件系统

[root@lc ~]# e2fsck -f /dev/lcvg1/lclv1
e2fsck 1.45.4 (23-Sep-2019)1 步:检查inode、块和大小
第 2 步:检查目录结构
第 3 步:检查目录连接性
第 4 步:检查引用计数
第 5 步:检查组概要信息
/dev/lcvg1/lclv1:11/65536 文件(0.0% 为非连续的), 21787/262144 块
[root@lc ~]# 

7.测试挂载

[root@lc ~]# mount -a

[root@lc ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G  9.7M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/rhel-root   xfs        26G  4.3G   22G   17% /
/dev/sr0                iso9660   7.9G  7.9G     0  100% /mnt/cdrom
/dev/nvme0n1p1          xfs      1014M  229M  786M   23% /boot
tmpfs                   tmpfs     376M  1.2M  375M    1% /run/user/42
tmpfs                   tmpfs     376M  4.0K  376M    1% /run/user/0
/dev/mapper/lcvg1-lclv1 ext4      944M  5.1M  877M    1% /root/lvhome
[root@lc ~]# 
//逻辑卷lclv1已经成功减缩到1G,且可以正常使用

扩展

1.如何查看/etc/目录大小

[root@LC ~]# du -sh /etc/
22M	/etc/
[root@LC ~]# 

2.如何查看磁盘使用分区情况

[root@LC ~]# lsblk 
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda             8:0    0   20G  0 disk 
├─sda1          8:1    0    1G  0 part /boot
│                                      /a1
└─sda2          8:2    0   19G  0 part 
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
sdb             8:16   0   20G  0 disk 
├─sdb1          8:17   0    4G  0 part 
├─sdb2          8:18   0    4G  0 part 
├─sdb3          8:19   0    4G  0 part 
├─sdb4          8:20   0    1K  0 part 
└─sdb5          8:21   0    2G  0 part 
sdc             8:32   0   20G  0 disk 
sr0            11:0    1  8.9G  0 rom  /mnt
[root@LC ~]# 

3.如何查看inode使用情况

[root@LC ~]# df -i
Filesystem             Inodes IUsed   IFree IUse% Mounted on
devtmpfs               242971   446  242525    1% /dev
tmpfs                  248208     1  248207    1% /dev/shm
tmpfs                  819200   713  818487    1% /run
/dev/mapper/rhel-root 8910848 40321 8870527    1% /
/dev/sda1              524288   372  523916    1% /a1
/dev/sr0                    0     0       0     - /mnt
tmpfs                   49641    15   49626    1% /run/user/0
[root@LC ~]# 

4.如何查看磁盘block使用情况

[root@LC ~]# df -v
Filesystem            1K-blocks    Used Available Use% Mounted on
devtmpfs                   4096       0      4096   0% /dev
tmpfs                    992832       0    992832   0% /dev/shm
tmpfs                    397136    5760    391376   2% /run
/dev/mapper/rhel-root  17811456 2609248  15202208  15% /
/dev/sda1               1038336  292944    745392  29% /a1
/dev/sr0                9370716 9370716         0 100% /mnt
tmpfs                    198564       0    198564   0% /run/user/0
[root@LC ~]# 

5.如何查看分区使用格式

[root@LC ~]# df -T
Filesystem            Type     1K-blocks    Used Available Use% Mounted on
devtmpfs              devtmpfs      4096       0      4096   0% /dev
tmpfs                 tmpfs       992832       0    992832   0% /dev/shm
tmpfs                 tmpfs       397136    5760    391376   2% /run
/dev/mapper/rhel-root xfs       17811456 2609248  15202208  15% /
/dev/sda1             xfs        1038336  292944    745392  29% /a1
/dev/sr0              iso9660    9370716 9370716         0 100% /mnt
tmpfs                 tmpfs       198564       0    198564   0% /run/user/0
[root@LC ~]# 

6.如何查看一个设备的UUID

[root@LC ~]# blkid /dev/sdb1
/dev/sdb1: UUID="a92f76f4-3360-4fd6-ad9e-d87dcd476a59" TYPE="swap" PARTUUID="74c0558e-01"
[root@LC ~]# 

7.请解释/etc/fstab中每段含义

[root@LC ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Jun 26 09:53:32 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=b1821db2-a464-452f-b583-aef06d6d8b38 /boot                   xfs     defaults        0 0
/dev/mapper/rhel-swap   none                    swap    defaults        0 0
/dev/sr0 /mnt iso9660 defaults 0 0 
UUID="b1821db2-a464-452f-b583-aef06d6d8b38" /a1 xfs defaults 0 0
UUID="a92f76f4-3360-4fd6-ad9e-d87dcd476a59" swap sawp defaults 0 0
[root@LC ~]# 



//分区标识(UUID或设备名)                    挂载点 文件类型    挂载参数    不检查 不备份
UUID=e271b5b2-b1ba-4b18-bde5-66e394fb02d9 /db1     xfs     defaults    0     0

//挂载参数, 可写fstab配置文件, 也可以mount时使用-o参数指定
参数              参数意义                               系统默认值
async           系统每隔一段时间把内存数据写入磁盘中,
sync            时时同步内存和磁盘中数据;
suid,nosuid     允许/不允许分区有suid属性                suid
rw,ro           可以指定文件系统是只读(ro)或可写(rw)       rw
exec,noexec     允许/不允许可执行文件执行,不要挂载根分区    exec
user,nouser     允许/不允许root外的其他用户挂载分区        nouser
auto,noauto     开机自动挂载/不自动挂载                    auto
default         默认文件系统挂载设置 rw, suid, dev, exec, auto, nouser, async

8.一个ext4的文件分区,当使用touch test.file命令创建一个新文件是报错,报错的信息提示磁盘已满,但是采用df –h 命令查看磁盘大小时,只是用了60%的磁盘空间,这个情况的原因是.

磁盘空间还有,但是无法创建文件。原因是inode被用完了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LcWanf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值