[同步]LVM-动态调整分区大小

本文详细介绍如何利用LVM技术对服务器硬盘进行分区管理及扩容操作,包括磁盘转换为Linux LVM类型、创建物理卷、卷组及逻辑卷等关键步骤。

需求:
服务器上挂载了一块2T的硬盘,但/home只有100G左右,Hadoop DataNode节点安装在/home内,需要存储处理大量数据。

学习:

什么是LVM?

主要步骤:

1)通过fdisk 工具将磁盘转换为linux分区
2)通过pvcreate命令将linux分区转换成物理卷(PV);
3)通过vgcreate命令将创建好的物理卷处理成卷组(VG);
4)通过lvcreate命令将卷组分成若干个逻辑卷(LV);
5)对逻辑卷进行格式化,挂载,动态调整逻辑卷的大小,并且该操作不会影响逻辑卷(Lv)上的数据。

以下详细列出可能用到的命令:

1. 使用fdisk -l 命令查看磁盘分区

sudo fdisk -l


Disk /dev/sda: 1999.3 GB, 1999307276288 bytes

255 heads, 63 sectors/track, 243068 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002e54e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           1        1024   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2               1      243069  1952445440   8e  Linux LVM

可以看到分区sda共有近2个T的容量,sda1的type为Linux;sda2为Linux LVM类型。


如果是新挂载的空白磁盘,可以使用fdisk命令将磁盘转换为Linux LVM类型。然后执行2,3步骤。


2. 将linux物理分区转变为物理卷 (针对新的LVM类型分区)

$pvcreate /dev/sdb{1,2}   #将物理分区/dev/sdb{1,2}转变为物理卷 执行此命令成功后,会提示success!

执行pvdisplay可以查看物理卷的详细信息:

$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg00
  PV Size               1.82 TiB / not usable 1.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              476671
  Free PE               185166
  Allocated PE          291505
  PV UUID               JsAGuo-Fi0u-nHUc-WBuq-Tqg7-cseM-CcB2tl

通过执行pvscan,可以查看物理卷总容量、已用、剩余的情况:

$ sudo pvscan
  PV /dev/sda2   VG vg00   lvm2 [1.82 TiB / 723.30 GiB free]
  Total: 1 [1.82 TiB] / in use: 1 [1.82 TiB] / in no VG: 0 [0   ]

共有1个物理卷vg00,1.82TB,723.30GB空闲可用,其余已经分配


删除物理卷使用pvremove命令,例如:

$pvremove /dev/sdb2    #删除物理卷, Labels on physical volume "/dev/sdb2" successfully wiped

3. 使用vgcreate命令将PV创建成卷组VG,VG创建后,可以方便的从VG中为逻辑卷LV分配/回收空间

创建VG:
$vgcreate vg00 /dev/sda2   #将已经是物理卷的/dev/sda2转化为卷组名为vg00的卷组 若有多个物理卷创建一个VG,可以使用vgcreate vg00 /dev/sda{1,2}形式
执行vgscan可以查看当前存在的卷组:
$ sudo vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "vg00" using metadata type lvm2

使用vgdisplay可以查看当前卷组的详细情况;

mk@log1:~$ sudo vgdisplay
  --- Volume group ---
  VG Name               vg00
  System ID            
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  21
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               4
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1.82 TiB
  PE Size               4.00 MiB
  Total PE              476671
  Alloc PE / Size       291505 / 1.11 TiB
  Free  PE / Size       185166 / 723.30 GiB
  VG UUID               eOAdfu-WrNY-znxa-U0Zv-NdmY-ANW8-utbvCH

若为卷组增加一个物理卷,可以使用vgextend:

$pvcreate /dev/sda3    #先创建一个新的物理卷
  Physical volume "/dev/sda3" successfully created
$vgextend vg00 /dev/sda3 #再将新增的物理卷添加到vg00卷组中
  Volume group "vg01" successfully extended

删除卷组使用vgremove命令:

$vgremove /dev/vg00

****对于前面提到的需求,如果2,3两步已经完成,可直接执行第四步。
****注意:
先将/下的/home备份为/home_old,然后在/下创建/home路径,再执行下面的挂载!!

4. 创建逻辑卷lvcreate

创建逻辑卷共分为两个部分,lvcreate一个逻辑卷,并且格式化逻辑卷为制定的文件系统
1)创建逻辑卷大小为1000G卷名为home,从vg00生成
$lvcreate -L 1000G -n home vg00   #从卷组vg00上划分1000G的空间为逻辑卷home
2)对划分的逻辑卷进行格式化
$mkfs -t ext3 /dev/vg00/home   #以ext3的文件格式化逻辑卷
执行lvscan可以查看当前vg中的逻辑卷:
$ sudo lvscan
  ACTIVE            '/dev/vg00/boot' [92.00 MiB] inherit
  ACTIVE            '/dev/vg00/swap' [3.72 GiB] inherit
  ACTIVE            '/dev/vg00/root' [110.88 GiB] inherit
  ACTIVE            '/dev/vg00/home' [1.00 TiB] inherit
同理,lvdisplay可以查看具体信息。

使用lvextend/lvreduce可以增加或者减小逻辑卷的大小:

使用lvextend增大逻辑卷大小:
$lvextend -L +1G /dev/vg00/home   #从卷组vg00上对逻辑卷/dev/vg00/homne进行扩容1G 使用lvreduce减小逻辑卷大小,必须是离线方式(即先umount文件系统)
$lvreduce -L -1G /dev/vg00/home    #将逻辑卷/dev/vg00/home容量减小1GB

使用resize2fs命令更新系统识别的文件系统大小,立即生效

$resize2fs /dev/vg00/home    #使增加的逻辑卷大小立即生效
如果提示busy,可以先umount文件系统,resize之后再mount

删除逻辑卷使用lvremove /dev/vg00/home


5. 挂载逻辑卷

步骤4之后,使用$mount /dev/vg00/home /home 即可将逻辑卷挂在之前创建的/home下
使用df命令,可以查看当前系统空间分配,/home有1T的大小,已用11G,可用947G
mk@log1:~$ sudo df -lh
/dev/mapper/vg00-home
                     1008G   11G  947G   2% /home
......

Done!

 

 

原文地址:http://nourlcn.ownlinux.net/2011/10/lvm-resize-partion-size.html

本博客订阅地址:http://feeds.feedburner.com/nourlcn


<think> 嗯,用户想了解在Linux系统中调整分区大小的方法。根据之前的对话历史和系统引用,我需要梳理一个安全可靠的调整流程。 用户提供的引用很有价值,引用1提到调整不当会导致系统无法启动,引用2涉及镜像文件分区调整,引用3讨论了NTFS文件系统大小调整,引用4则强调了双系统环境下调整分区的风险。这说明用户可能是在生产环境或重要系统上操作,需要特别谨慎。 考虑到用户可能是中级Linux使用者(因为提到双系统和文件系统类型),但又不熟悉具体分区调整操作。需要强调备份和风险提示,同时提供GUI和CLI两种方案。核心要点包括: 1)必须备份数据 - 这是所有引用都隐含的关键前提 2)准备Live USB - 引用2和4都暗示需要外部启动环境 3)分区调整工具的选择 - GParted适合图形界面,parted/resize2fs适合命令行 4)特别注意系统引导问题 - 引用1和4都提到引导损坏风险 5)文件系统同步操作 - 引用3强调调整分区后需同步文件系统 对于工具推荐部分,GParted作为首选是因为它整合了分区调整和文件系统调整的完整流程,能自动处理resize2fs等后续操作。而命令行方案更适合高级用户或远程操作,需要明确步骤:先用parted调整分区边界,再用resize2fs同步文件系统。 双系统场景要单独提醒,特别是Windows的BitLocker问题(引用4未提及但实际很关键)。最后补充的注意事项里,"调整大小而非位置"这个提示来自引用4的拖动警告,而分区顺序限制则是引用3提到的柱面问题。 相关问题设计覆盖了用户可能的后续需求:LVM是更灵活的方案,根分区调整是最常见场景,NTFS则是双系统用户需要的跨平台操作。 </think> 在Linux系统中调整分区大小是一项需要谨慎操作的任务,操作不当可能导致数据丢失或系统无法启动。以下是关键步骤和注意事项,综合参考了多个可靠来源: --- ### **安全调整分区大小的核心步骤** 1. **备份所有重要数据** - 📌 任何分区操作前必须完整备份数据(推荐使用 `rsync` 或 `dd` 命令)。 - *引用[1]强调:调整不当会导致系统无法启动,备份是首要前提 [^1]。* 2. **使用Live USB启动系统** - 从Ubuntu Live CD/USB或SystemRescueCD启动,确保目标分区未被挂载。 3. **选择调整工具** - **图形界面:** `GParted`(推荐) ```bash sudo apt install gparted # Debian/Ubuntu sudo gparted ``` - **命令行:** `parted` + 文件系统专用工具(如 `resize2fs` 用于ext4,`ntfsresize` 用于NTFS) ```bash sudo parted /dev/sda (parted) resizepart 分区编号 新大小 # 例如:resizepart 3 20GB ``` 4. **调整顺序(关键!)** - **缩小分区:** 先缩小文件系统 → 再缩小分区 ```bash sudo resize2fs /dev/sda2 15G # 调整文件系统 sudo parted /dev/sda resizepart 2 16G # 分区略大于文件系统(留缓冲) ``` - **扩大分区:** 先扩大分区 → 再扩大文件系统 ```bash sudo parted /dev/sda resizepart 2 25G sudo resize2fs /dev/sda2 # 自动填充分区 ``` 5. **处理引导问题** - 调整后需更新GRUB配置: ```bash sudo update-grub sudo grub-install /dev/sda ``` - *引用[4]警告:双系统调整可能破坏引导,需确认GRUB安装位置 [^4]。* --- ### **⚠️ 关键注意事项** 1. **分区位置限制** - 只能调整**分区尾部边界**,无法移动分区起始位置(除非全盘复制)。 - *引用[3]指出:分区按柱面划分,精确匹配文件系统大小较困难 [^3]。* 2. **文件系统支持** | 文件系统 | 调整工具 | 在线调整 | |----------|------------------|----------| | ext4 | `resize2fs` | 是 | | XFS | `xfs_growfs` | 仅扩展 | | NTFS | `ntfsresize` | 否 | | Btrfs | `btrfs filesystem resize` | 是 | 3. **双系统特别警告** - Windows分区调整需用其原生工具(如Disk Management),Linux工具可能破坏NTFS元数据。 - 禁用Windows的 **快速启动** 和 **BitLocker加密**,避免冲突。 4. **预留空间缓冲** - 分区大小应略大于文件系统(如多留1%),避免因计算误差导致数据损坏。 --- ### **实战示例:缩小 `/home` 并扩容 `/`** ```bash # 从Live USB启动,打开终端 sudo umount /dev/sda3 # 卸载/home sudo e2fsck -f /dev/sda3 # 强制检查文件系统 sudo resize2fs /dev/sda3 100G # 缩小文件系统至100G sudo parted /dev/sda resizepart 3 101G # 分区设为101G(留缓冲) # 用gparted将腾出的空间移至根分区相邻位置 sudo parted /dev/sda resizepart 2 150G # 扩大根分区分区 sudo resize2fs /dev/sda2 # 扩展文件系统 ``` --- ### **💡 相关问题** 1. **如何安全调整正在运行的根分区(`/`)的大小?** 2. **使用LVM与直接分区调整有何优劣?LVM如何简化分区扩容?** 3. **调整NTFS分区(如Windows系统盘)时如何避免数据损坏?** 4. **分区调整后系统无法启动,如何修复GRUB引导?** > 提示:操作前务必验证工具兼容性。例如调整旧版ReiserFS需 `resize_reiserfs`,而XFS仅支持扩大操作。建议在虚拟环境中模拟操作后再实机执行 [^1][^3]。 --- [^1]: 分区不当可能导致空间浪费或不足,调整需谨慎避免破坏文件系统。 [^2]: 镜像文件分区调整需专用工具,与物理磁盘操作不同。 [^3]: 文件系统与分区大小需精确匹配,建议预留缓冲空间。 [^4]: 双系统调整分区可能影响引导程序,需确认GRUB安装位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值