解决工作中遇到vmware虚拟机磁盘容量不足的问题
一、添加新磁盘并将磁盘挂载到空目录
1、关机加硬盘
1)首先,需要将虚拟机关机,然后在虚拟机设置页面进行硬盘添加
2) 默认选择SCSI,点击下一步
3) 保持默认,点击下一步
4) 在虚拟机设置这里可以看到新增的50G的磁盘
接下来,开启虚拟机,对新增磁盘进行分区和挂载
2、查看磁盘分区情况
1) 首先,打开终端切换至root权限,然后使用以下命令查看硬盘分区情况
fdisk -l
红框中是我新增的50G硬盘,因为前面在添加磁盘向导中选择了将硬盘拆分成多个文件,所以我的50G硬盘被拆分成了3块。如果不想要被拆分成多块的话,前面添加磁盘时直接选将虚拟磁盘存储为单个文件即可。(此处理解有误)具体参见 XXX我的疑惑与思考部分。
知识点:
- 怎样知道哪块磁盘是未进行分区的呢?
从上图中可以看到,有/dev/sda、/dev/sdb、/dev/sdc/以及/dev/mapper/vgnew-lvnew四块盘,此处有误,应该是有/dev/sda、/dev/sdb、/dev/sdc三块盘,与/dev/sda、/dev/sdb不同的是,/dev/sdc/及/dev/mapper/vgnew-lvnew盘下放没有/dev/sda1等信息,说明这块盘是没有进行分区操作的。
- 新加的磁盘各行信息解释:
Disk /dev/sdc: 磁盘名称
32.2 GB,:磁盘大小,不过这个数字并不精确
32212254720 bytes:32212254720/1024/1024/1024=30GB
62914560 sectors: 62914560 个扇区
Units = sectors of 1 * 512 = 512 bytes: 512 bytes (这里一个柱面一个扇区)
Sector size (logical/physical): 512 bytes / 512 bytes:一个扇区是512字节
I/O size (minimum/optimal): 512 bytes / 512 bytes:磁盘I/O操作的最小/最佳单位是512字节
- 关于磁道、扇区、柱面可参考下面文章:
10分钟学懂磁盘的结构(盘片、磁道、扇区、柱面) - 知乎 (zhihu.com)
2) 除了fdisk -l命令外,也可使用lsblk命令查看磁盘分区情况:
lsblk
其中,TYPE为disk,且下面没有分支的就是没有被划分的磁盘。
3、创建挂载目录
1) 查看磁盘使用情况:
df -h
2) 创建挂载目录(必须是空目录)
mkdir /newdir
4、创建新分区
1) 对30G的新磁盘/dev/sdc进行磁盘分区:
fdisk /dev/sdc
n
p
回车(默认值)
回车(默认值)
回车(默认值)
w
这里输入m可以查看帮助:
n 添加一块新的分区
p 打印出这个分区表
w 将表写进磁盘并退出
2) 创建好,再次使用fdisk -l命令就可以看到/dev/sdc下面新建的一个分区:
5、创建新的物理卷
1) 为刚刚的分区创建物理卷
PVcreate /dev/sdc1
2) 查看当前所有物理卷(或使用pvdisplay命令)
6、创建新卷组
1) 为物理卷/dev/sdc1 创建卷军(vgnew为自定义的卷组名):
vgcreate vgnew1 /dev/sdc1
2) 查看卷组(或使用命令vgdisplay)
vgs
7、创建新的逻辑卷
1) 使用整个卷组vgnew创建一个逻辑卷(lvnew1为自定义的逻辑卷名):
lvcreate -n lvnew1 -l 100%FREE vgnew1
2) 创建逻辑卷时也可使用卷组的部分空间,如50%FREE等,也可以指定存储容量,如下面这条命令
lvcreate -n lvnew1 -L 5G vgnew
3) 查看当前所有逻辑卷(或使用vgdisplay命令)
lvs
8、挂载到空目录
1) 格式化逻辑卷
mkfs.xfs /dev/vgnew1/lvnew1
注:逻辑卷的固定格式为/dev/卷组名/逻辑卷名,具体可通过lvdisplay命令确定。这里是讲逻辑卷格式化为xfs格式,也可以选择格式化ext4或其他格式。/dev/vgnew1/lvnew1是我上面新建的逻辑卷。
2) 将逻辑卷挂载到之前创建的空目录:
mount /dev/vgnew1/lvnew1 /newdir
3) 然后通过df -h命令可以查看到磁盘的挂载
8.1 我的疑惑与思考:
磁盘划分后出现了这个 /dev/mapper/vgnew1-lvnew1
最前面可能理解有误,/dev/mapper/vgnew-lvnew应该是磁盘/dev/sdb下面划分出来的,
所以我觉得最前面可能理解有误
通过lsblk查看磁盘的分区情况来看,/dev/mapper/vgnew-lvnew应该是磁盘/dev/sdb下面划分出来的。
那么问题来了?
我明明加的是50GB的硬盘,选择被拆分成多个文件,怎么只有/dev/sdb和、dev/sdc呢?加起来才40G,另外的10G去哪里了呢?
磁盘划分后会显示为/dev/mapper/卷组名/逻辑卷名,/dev/mapper目录是怎么回事呢?参考下面文章,你会有答案的。
Linux系统/dev/mapper目录浅谈 - amoyzhu - 博客园 (cnblogs.com)
4) 开机自动挂载:
vi /etc/fstab
在文件末尾添加以下内容:
/dev/mapper/vgnew1-lvnew1 /newdir xfs defaults 0 0
5) 立即进行挂载
mount -a
二、挂载到已有目录(磁盘扩容)
1、新建磁盘并创建物理卷
1.1、关机,新加一块磁盘
我加了一块16G的磁盘,可以看到是/dev/sdd
1.2、创建物理卷:
为分区 /dev/sdd1 创建物理卷:
fdisk /dev/sdd
n
p
回车(默认值)
回车(默认值)
回车(默认值)
w
1.3、创建新的物理卷
为分区 /dev/sdd1 创建物理卷:
pvcreate /dev/sdd1
2、扩展已有卷组:
2.1将物理卷添加到已有卷组
vgextend vgnew1 /dev/sdd1
添加之前vgnew1是30G,添加之后变为了44.99G,当然这个数字并不太精确
2.2、扩容已有逻辑卷
将卷组的空余存储空间添加到逻辑卷:
lvextend -l +100%FREE /dev/vgnew1/lvnew1
更新文件系统:
xfs_growfs /dev/vgnew1/lvnew1
如果需要挂载到根目录或者其他路径,只需根据实际情况修改 vgextend 和 lvextend 的具体卷组和逻辑卷即可,灵活使用。