Linux不丢失数据无损扩容分区操作命令实例

 更新时间:2024年06月01日 09:01:14   作者:Arthur古德曼  
这篇文章主要介绍了Linux不丢失数据无损扩容分区操作命令实例,在实际操作前,请确保备份重要数据,并确认分区和文件系统的类型,因为不同的文件系统扩展方法会不同,如果是在线扩容,请确保没有挂载使用该分区或者文件系统

目的:

不丢失数据的情况下扩容分区大小。

作用:

在没有lvm的情况下fdisk无损扩容分许大小。
在使用lvm的情况下不想新增pv而是直接扩容pv的大小。
重要提醒:尽管这个方法是无损的,但再三强调务必在执行前进行必要的数据备份,以防止误操作或者其他意外情况下的数据丢失的可能。

方法:

扩容前的信息搜集

特别要注意

扩容对象的起点 # 过程中删除扩容分区后创建新分区的时候所使用的扇区起点必须和之前的分区一致
您想移除该签名吗?是[Y]/否[N]:n #这里务必选N
重要提醒:尽管这个方法是无损的,但再三强调务必在执行前进行必要的数据备份,以防止误操作或者其他意外情况下的数据丢失的可能。

[root@tempvm ~]# 
 [root@tempvm ~]# lsblk
 NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
 sda           8:0    0   50G  0 disk 
 ├─sda1        8:1    0    1G  0 part /boot
 └─sda2        8:2    0   29G  0 part 
   ├─cs-root 253:0    0   26G  0 lvm  /
   └─cs-swap 253:1    0    3G  0 lvm  [SWAP]
 sr0          11:0    1 1024M  0 rom  
 sr1          11:1    1 1024M  0 rom  
 [root@tempvm ~]# 
 [root@tempvm ~]# fdisk -l /dev/sda
 Disk /dev/sda:50 GiB,53687091200 字节,104857600 个扇区
 磁盘型号:VMware Virtual S
 单元:扇区 / 1 * 512 = 512 字节
 扇区大小(逻辑/物理):512 字节 / 512 字节
 I/O 大小(最小/最佳):512 字节 / 512 字节
 磁盘标签类型:dos
 磁盘标识符:0x5b605fe0
 
 设备       启动    起点     末尾     扇区 大小 Id 类型
 /dev/sda1  *       2048  2099199  2097152   1G 83 Linux
 /dev/sda2       2099200 62914559 60815360  29G 8e Linux LVM
 [root@tempvm ~]# 
 [root@tempvm ~]# 
 [root@tempvm ~]#

执行分区扩容

[root@tempvm ~]# fdisk /dev/sda
 欢迎使用 fdisk (util-linux 2.37.4)。
 更改将停留在内存中,直到您决定将更改写入磁盘。
 使用写入命令前请三思。
 This disk is currently in use - repartitioning is probably a bad idea.
 It's recommended to umount all file systems, and swapoff all swap
 partitions on this disk.
 命令(输入 m 获取帮助):m
 帮助:
   DOS (MBR)
    a   开关 可启动 标志
    b   编辑嵌套的 BSD 磁盘标签
    c   开关 dos 兼容性标志
   常规
    d   删除分区
    F   列出未分区的空闲区
    l   列出已知分区类型
    n   添加新分区
    p   打印分区表
    t   更改分区类型
    v   检查分区表
    i   打印某个分区的相关信息
   杂项
    m   打印此菜单
    u   更改 显示/记录 单位
    x   更多功能(仅限专业人员)
   脚本
    I   从 sfdisk 脚本文件加载磁盘布局
    O   将磁盘布局转储为 sfdisk 脚本文件
   保存并退出
    w   将分区表写入磁盘并退出
    q   退出而不保存更改
   新建空磁盘标签
    g   新建一份 GPT 分区表
    G   新建一份空 GPT (IRIX) 分区表
    o   新建一份的空 DOS 分区表
    s   新建一份空 Sun 分区表
 命令(输入 m 获取帮助):p
 Disk /dev/sda:50 GiB,53687091200 字节,104857600 个扇区
 磁盘型号:VMware Virtual S
 单元:扇区 / 1 * 512 = 512 字节
 扇区大小(逻辑/物理):512 字节 / 512 字节
 I/O 大小(最小/最佳):512 字节 / 512 字节
 磁盘标签类型:dos
 磁盘标识符:0x5b605fe0
 设备       启动    起点     末尾     扇区 大小 Id 类型
 /dev/sda1  *       2048  2099199  2097152   1G 83 Linux
 /dev/sda2       2099200 62914559 60815360  29G 8e Linux LVM
 命令(输入 m 获取帮助):d
 分区号 (1,2, 默认  2): 2
 分区 2 已删除。
 命令(输入 m 获取帮助):n
 分区类型
    p   主分区 (1 primary, 0 extended, 3 free)
    e   扩展分区 (逻辑分区容器)
 选择 (默认 p):p
 分区号 (2-4, 默认  2): 2
 第一个扇区 (2099200-104857599, 默认 2099200): 
 #  这里是重要,起点扇区必须与之前记录的起点一致。
 最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2099200-104857599, 默认 104857599): 
 创建了一个新分区 2,类型为“Linux”,大小为 49 GiB。
 分区 #2 包含一个 LVM2_member 签名。
 您想移除该签名吗?是[Y]/否[N]:n
 命令(输入 m 获取帮助):t
 分区号 (1,2, 默认  2): 2
 Hex 代码或别名(输入 L 列出所有代码):8e
 已将分区“Linux”的类型更改为“Linux LVM”。
 命令(输入 m 获取帮助):w
 分区表已调整。
 正在同步磁盘。
 [root@tempvm ~]# 
 [root@tempvm ~]# 
 [root@tempvm ~]#

检查分区扩容结果

[root@tempvm ~]# partprobe /dev/sda    # 即使系统可以自动识别,也强烈建议执行这一步
 [root@tempvm ~]# 
 [root@tempvm ~]# lsblk
 NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
 sda           8:0    0   50G  0 disk 
 ├─sda1        8:1    0    1G  0 part /boot
 └─sda2        8:2    0   49G  0 part 
   ├─cs-root 253:0    0   26G  0 lvm  /
   └─cs-swap 253:1    0    3G  0 lvm  [SWAP]
 sr0          11:0    1 1024M  0 rom  
 sr1          11:1    1 1024M  0 rom  
 [root@tempvm ~]# 
 [root@tempvm ~]# fdisk -l
 Disk /dev/sda:50 GiB,53687091200 字节,104857600 个扇区
 磁盘型号:VMware Virtual S
 单元:扇区 / 1 * 512 = 512 字节
 扇区大小(逻辑/物理):512 字节 / 512 字节
 I/O 大小(最小/最佳):512 字节 / 512 字节
 磁盘标签类型:dos
 磁盘标识符:0x5b605fe0
 设备       启动    起点      末尾      扇区 大小 Id 类型
 /dev/sda1  *       2048   2099199   2097152   1G 83 Linux
 /dev/sda2       2099200 104857599 102758400  49G 8e Linux LVM
 Disk /dev/mapper/cs-root:26 GiB,27913093120 字节,54517760 个扇区
 单元:扇区 / 1 * 512 = 512 字节
 扇区大小(逻辑/物理):512 字节 / 512 字节
 I/O 大小(最小/最佳):512 字节 / 512 字节
 Disk /dev/mapper/cs-swap:3 GiB,3221225472 字节,6291456 个扇区
 单元:扇区 / 1 * 512 = 512 字节
 扇区大小(逻辑/物理):512 字节 / 512 字节
 I/O 大小(最小/最佳):512 字节 / 512 字节
 [root@tempvm ~]# 
 [root@tempvm ~]# 
 [root@tempvm ~]#

如果你的文件系统没有运行在LVM之上,那么到此就可以结束了,下面的步骤针对文件系统建立在LVM之上的情况下(当然,这种是大多数情况)。

对LVS进行扩容

[root@tempvm ~]# 
 [root@tempvm ~]# pvs
   PV         VG Fmt  Attr PSize   PFree
   /dev/sda2  cs lvm2 a--  <29.00g    0 
 [root@tempvm ~]# 
 [root@tempvm ~]# vgs
   VG #PV #LV #SN Attr   VSize   VFree
   cs   1   2   0 wz--n- <29.00g    0 
 [root@tempvm ~]# 
 [root@tempvm ~]# lvs
   LV   VG Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
   root cs -wi-ao---- <26.00g                                                    
   swap cs -wi-ao----   3.00g                                                    
 [root@tempvm ~]# 
 [root@tempvm ~]# 
 [root@tempvm ~]# pvresize /dev/sda2
   Physical volume "/dev/sda2" changed
   1 physical volume(s) resized or updated / 0 physical volume(s) not resized
 [root@tempvm ~]# 
 [root@tempvm ~]# 
 [root@tempvm ~]# pvs
   PV         VG Fmt  Attr PSize   PFree 
   /dev/sda2  cs lvm2 a--  <49.00g 20.00g
 [root@tempvm ~]# 
 [root@tempvm ~]# vgs
   VG #PV #LV #SN Attr   VSize   VFree 
   cs   1   2   0 wz--n- <49.00g 20.00g
 [root@tempvm ~]# 
 [root@tempvm ~]# lvs
   LV   VG Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
   root cs -wi-ao---- <26.00g                                                    
   swap cs -wi-ao----   3.00g                                                    
 [root@tempvm ~]# 
 [root@tempvm ~]# lvextend -l +100%FREE /dev/cs/root
   Size of logical volume cs/root changed from <26.00 GiB (6655 extents) to <46.00 GiB (11775 extents).
   Logical volume cs/root successfully resized.
 [root@tempvm ~]# 
 [root@tempvm ~]# 
 [root@tempvm ~]# lvs
   LV   VG Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
   root cs -wi-ao---- <46.00g                                                    
   swap cs -wi-ao----   3.00g                                                    
 [root@tempvm ~]# 
 [root@tempvm ~]# 
 [root@tempvm ~]# 
 [root@tempvm ~]# df -h
 文件系统             容量  已用  可用 已用% 挂载点
 devtmpfs             4.0M     0  4.0M    0% /dev
 tmpfs                3.8G     0  3.8G    0% /dev/shm
 tmpfs                1.5G   18M  1.5G    2% /run
 /dev/mapper/cs-root   26G  5.0G   21G   20% /
 /dev/sda1            960M  307M  654M   32% /boot
 tmpfs                766M  100K  766M    1% /run/user/1000
 tmpfs                766M   36K  766M    1% /run/user/0
 [root@tempvm ~]# 
 [root@tempvm ~]# 
 [root@tempvm ~]# df -hT
 文件系统            类型      容量  已用  可用 已用% 挂载点
 devtmpfs            devtmpfs  4.0M     0  4.0M    0% /dev
 tmpfs               tmpfs     3.8G     0  3.8G    0% /dev/shm
 tmpfs               tmpfs     1.5G   18M  1.5G    2% /run
 /dev/mapper/cs-root xfs        26G  5.0G   21G   20% /
 /dev/sda1           xfs       960M  307M  654M   32% /boot
 tmpfs               tmpfs     766M  100K  766M    1% /run/user/1000
 tmpfs               tmpfs     766M   36K  766M    1% /run/user/0
 [root@tempvm ~]# 
 [root@tempvm ~]# 
 [root@tempvm ~]#

将容量grow到文件系统

[root@tempvm ~]# xfs_growfs /
 meta-data=/dev/mapper/cs-root    isize=512    agcount=4, agsize=1703680 blks
          =                       sectsz=512   attr=2, projid32bit=1
          =                       crc=1        finobt=1, sparse=1, rmapbt=0
          =                       reflink=1    bigtime=1 inobtcount=1 nrext64=0
 data     =                       bsize=4096   blocks=6814720, imaxpct=25
          =                       sunit=0      swidth=0 blks
 naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
 log      =internal log           bsize=4096   blocks=16384, version=2
          =                       sectsz=512   sunit=0 blks, lazy-count=1
 realtime =none                   extsz=4096   blocks=0, rtextents=0
 data blocks changed from 6814720 to 12057600
 [root@tempvm ~]# 
 [root@tempvm ~]# 
 [root@tempvm ~]# 
 [root@tempvm ~]# lsblk
 NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
 sda           8:0    0   50G  0 disk 
 ├─sda1        8:1    0    1G  0 part /boot
 └─sda2        8:2    0   49G  0 part 
   ├─cs-root 253:0    0   46G  0 lvm  /
   └─cs-swap 253:1    0    3G  0 lvm  [SWAP]
 sr0          11:0    1 1024M  0 rom  
 sr1          11:1    1 1024M  0 rom  
 [root@tempvm ~]# 
 [root@tempvm ~]# df -hT
 文件系统            类型      容量  已用  可用 已用% 挂载点
 devtmpfs            devtmpfs  4.0M     0  4.0M    0% /dev
 tmpfs               tmpfs     3.8G     0  3.8G    0% /dev/shm
 tmpfs               tmpfs     1.5G   18M  1.5G    2% /run
 /dev/mapper/cs-root xfs        46G  5.1G   41G   12% /
 /dev/sda1           xfs       960M  307M  654M   32% /boot
 tmpfs               tmpfs     766M  100K  766M    1% /run/user/1000
 tmpfs               tmpfs     766M   36K  766M    1% /run/user/0
 [root@tempvm ~]# 
 [root@tempvm ~]#

这里要注意使用的命令是根据文件系统的格式不同而不同的。

xfs格式使用xfs_growfs
etxt使用resize2fs

到此这篇关于Linux不丢失数据无损扩容分区操作命令实例的文章就介绍到这了,更多相关Linux扩容分区内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

最新评论