Board logo

标题: [技术文章] Hyper-V下扩展Linux磁盘空间的方法 [打印本页]

作者: shillan    时间: 2018-1-9 16:06     标题: Hyper-V下扩展Linux磁盘空间的方法

背景:开发服务器是虚拟机,原来只规划了2G,后来发现硬盘不够用了,需要进行扩容。
文章说必须基于LVM,命令检验一下。据说centos默认安装也是LVM的。
[sss@localhost ~]$lvdisplay
--- Logical volume ---
  LV Path                /dev/vg_vm/lv_root
  LV Name                lv_root
  VG Name                vg_vm
  LV UUID                bWyLlY-hYra-7hPc-2eU9-tXMH-FJFa-7ZLDoF
  LV Write Access        read/write
  LV Creation host, time vm.sss, 2015-01-05 03:29:55 +0800
  LV Status              available
  # open                 1
  LV Size                6.71 GiB
  Current LE             1718
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
  
  --- Logical volume ---
  LV Path                /dev/vg_vm/lv_swap
  LV Name                lv_swap
  VG Name                vg_vm
  LV UUID                oLj3cQ-USD7-JIGZ-HMJz-NlmA-aQf6-lECYyC
  LV Write Access        read/write
  LV Creation host, time vm.sss, 2015-01-05 03:29:56 +0800
  LV Status              available
  # open                 1
  LV Size                816.00 MiB
  Current LE             204
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

[sss@localhost ~]$sudo fdisk -l

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 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: 0x00036057

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1045     7875584   8e  Linux LVM

Disk /dev/mapper/vg_vm-lv_root: 7205 MB, 7205814272 bytes
255 heads, 63 sectors/track, 876 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: 0x00000000


Disk /dev/mapper/vg_vm-lv_swap: 855 MB, 855638016 bytes
255 heads, 63 sectors/track, 104 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: 0x00000000


然后,在windows虚拟机管理软件上,给虚拟机扩容——前提是关闭虚拟机OS。
来个30G,当然,进去之后,可以看到总容量增加了。到32G了,还是没有发现新的分区。
[sss@localhost ~]$ sudo fdisk /dev/sda





先为虚拟磁盘扩容,比如10G加到50G,完成后新的空间已经增加,但Linux环境下还不可见。
root帐户登录,添加新分区。
【fdisk -l】 最大分区为/dev/sda3,说明新创建的分区将会是sda4
输入【fdisk /dev/sda】
命令行提示下输入【m】
输入命令【n】添加新分区。
输入命令【p】创建主分区。
输入【回车】,选择默认大小,这样不浪费空间
输入【回车】,选择默认的start cylinder。
输入【w】,保持修改

我们的新建分区/dev/sda3,却不是LVM的。所以,接下来使用fdisk将其改成LVM的。

[root@CNGI-SIP6-BUPT ~]# fdisk /dev/sda
Command (m for help): m

Command (m for help): n  //创建分区
Command action
   e   extended
   p   primary partition (1-4)
p  //创建主分区
Partition number (1-4): 3 //创建id号为3的分区
First cylinder (2611-5221, default 2611): 2611 //指定开始位置
Last cylinder or +size or +sizeM or +sizeK (2611-5221, default 5221): 5221 //结束位置

Command (m for help): t //改变分区系统id     
Partition number (1-4): 3 //指定分区号
Hex code (type L to list codes): 8e //指定要改成的id号,8e代表LVM。
Command (m for help): w

我们现在还不能用这个分区 , 因为我们没格式化。这时要重启系统就能够在 dev 下面看到 sda3 ,如果不重启不能进行下面操作。

重启后,在此查看fdisk -l
Device Boot      Start         End      Blocks   Id System
/dev/sda1   *           1          13      104391   83 Linux
/dev/sda2              14        1044     8281507+ 8e Linux LVM
/dev/sda3            1045        2088     8385930   8e Linux LVM

可以看到/dev/sda3已支持LVM。


输入【reboot】 重启Linux,必须reboot,否则/dev/sda4无法格式化。
这时在/dev/目录下,才能看到了新的分区比如/dev/sda4
【mkfs.ext2 /dev/sda4】格式化
在根目录下创建disk4目录
【mount /dev/sda4 /disk4/】将分区mount到/disk4/上
fdisk -l,这个分区已经出来了。   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1045     7875584   8e  Linux LVM
/dev/sda3            1045        3916    23066662   83  Linux


当然,这时候用ls /dev是看不到sd3的。因为还没格式化。
sudo mkfs -t ext3 /dev/sda3 现在也是报错的。
Could not stat /dev/sdb3之类的。

既然上次已经提示了要reboot,那就roboot一下吧。
[sss@localhost ~]$partprobe
还是出现同样的警告。难道还是不行?
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.
管他呢,执行一下格式化吧。
[sss@localhost ~]$sudo mkfs -t ext3 /dev/sda3
居然OK了!这不吓唬人吗?
[sss@localhost ~]$ ll /dev/sda3
brw-rw----. 1 root disk 8, 3 Jan  6 10:33 /dev/sda3

嘿嘿,已经有了哦
然而,看看磁盘空间呢?怎么还是这几个分区呢
[sss@localhost ~]$ df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_vm-lv_root  6.7G  6.5G   83M  99% /
tmpfs                      495M   80K  495M   1% /dev/shm
/dev/sda1                  485M  326M  134M  71% /boot


sudo fdisk -l也可以发现,还是只有一个LVM的分区。
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1045     7875584   8e  Linux LVM
/dev/sda3            1045        3916    23066662   83  Linux



[sss@localhost ~]$ sudo lvs
  LV      VG    Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_root vg_vm -wi-ao----   6.71g                                            
  lv_swap vg_vm -wi-ao---- 816.00m  



[sss@localhost ~]$ sudo pvcreate /dev/sda3
  dev_is_mpath: failed to get device for 8:3
  Physical volume "/dev/sda3" successfully created

这里有一个failed,以为出问题了呢,结果下面又success,玩我呢?不管他了。因为一查,都是这样的提示,没有问题。

/dev/mapper/vg_vm-lv_root  6.7G  6.5G   83M  99% /
tmpfs                      495M   80K  495M   1% /dev/shm
/dev/sda1                  485M  326M  134M  71% /boot


/dev/mapper/vg_vm-lv_root这个应该就是LVM的组名,这里显示的不是sda2.
来扩充这个组吧。
[sss@localhost ~]$ df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_vm-lv_root  6.7G  6.5G   83M  99% /
tmpfs                      495M   80K  495M   1% /dev/shm
/dev/sda1                  485M  326M  134M  71% /boot
[sss@localhost ~]$ sudo vgextend /dev/mapper/vg_vm-lv_root /dev/sda3
  Volume group name vg_vm/lv_root has invalid characters
[sss@localhost ~]$ sudo vgextend /dev/mapper/vg_vm /dev/sda3      
  Volume group "vg_vm" successfully extended


原来这个组名,是-之前的字符串——这要是没有文章看着对比分析,谁知道啊?

[sss@localhost ~]$ sudo vgdisplay
  --- Volume group ---
  VG Name               vg_vm
  System ID            
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               29.50 GiB
  PE Size               4.00 MiB
  Total PE              7553
  Alloc PE / Size       1922 / 7.51 GiB
  Free  PE / Size       5631 / 22.00 GiB
  VG UUID               8GwL0o-DTdc-Lmkc-gCCC-RBvv-yOQp-wMgpeq



[sss@localhost ~]$ sudo lvextend -L +22G /dev/vg_vm/lv_root /dev/sda3
  Extending logical volume lv_root to 28.71 GiB
  Insufficient free space: 5632 extents needed, but only 5631 available

估计是这其中用了一部分。22G没那么准了。那么就21.0G吧
[sss@localhost ~]$ sudo lvextend -L +21.9G /dev/vg_vm/lv_root /dev/sda3
  Rounding size to boundary between physical extents: 21.90 GiB
  Extending logical volume lv_root to 28.61 GiB
  Logical volume lv_root successfully resized


文中所说的vim /etc/fstab这一个步骤,没太看明白。
里面的内容是否有改变?因为看到少了一个mapper
我没有管他,并没有对这个文件进行修改,然后继续往下。

[sss@localhost ~]$ sudo e2fsck -f /dev/vg_vm/lv_root
e2fsck 1.41.12 (17-May-2010)
/dev/vg_vm/lv_root is mounted.
e2fsck: Cannot continue, aborting.


不知为何报错。但是这只是一个检查命令,继续往前吧。
[sss@localhost ~]$ sudo resize2fs  /dev/vg_vm/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_vm/lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/vg_vm/lv_root to 7500800 (4k) blocks.
The filesystem on /dev/vg_vm/lv_root is now 7500800 blocks long.

[sss@localhost ~]$ df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_vm-lv_root   29G  6.5G   22G  24% /
tmpfs                      495M   80K  495M   1% /dev/shm
/dev/sda1                  485M  326M  134M  71% /boot


可以看到,这个逻辑卷已经成功的扩容,根目录又可以装更多东西了。













fdisk -l /dev/sda
依次n {new partition}建分区,p {primary partition}主分区,然后输入分区号  {partition number} 默认也可
再输入t{change partition id}改变分区类型,输入分区ID,再输入类型:8e(linux lvm)

重启系统进入
创建卷:pvcreate /dev/sda3
用vgdisplay显示当前卷信息,lvdisplay显示已有的逻辑卷
扩展到新建的卷:vgextend centos /dev/sda3
逻辑卷扩展:lvextend /dev/vg_centos6host/lv_root /dev/sda3
执行文件系统的重定义尺寸:resize2fs /dev/centos/root

上一步可能出错,换方法:
安装这个包,centos7应该已经安装了:
sudo yum install xfsprogs.x86_64 --assumeyes
创建一个目录用于挂载:
mkdir vol
挂载系统到此目录:
sudo mount -t xfs /dev/centos/root vol
执行尺寸增长:
sudo xfs_growfs vol
看下结果:
df -h




欢迎光临 逐梦论坛 (http://temp2023.zhumeng.org/) Powered by Discuz! 7.2