这两天跑程序,需要在linux centos 的conda环境中安装包,死活也安装不上,总是提示,No space left on device,
于是输入如下命令查看磁盘占用情况
df-h
惊讶地发现,磁盘的逻辑分区空间已满,于是找同学给账户分配了160G硬盘,但是问题依旧没有解决,输入df-h之后结果仍然如上图所示。于是输入
fdisk -l
命令查询磁盘容量情况如下图:
担心上面的图失效,所以在下面把文字也挂上
$ sudo fdisk -l
Disk /dev/sda: 160 GiB, 171798691840 bytes, 335544320 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x8e8509b6
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 33554431 31455232 15G 8e Linux LVM
Disk /dev/mapper/cs-root: 13.4 GiB, 14382268416 bytes, 28090368 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/cs-swap: 1.6 GiB, 1719664640 bytes, 3358720 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
终于破案了,分配的160G空间没有进行分区,并扩充到逻辑盘中,于是乎我开始进入到了扩展逻辑的过程中,过程中遇到了好几个不懂的地方,整个过程耗费2小时,于是决定记录下来,帮助以后遇到相同问题的人可以快速解决这个问题。
(注意:磁盘空间不足的问题,有时候可能是磁盘缓存文件过多等问题导致的,在没有直接的硬件扩容支持的情况下可以考虑清除日志文件等方法,这里不再赘述)
首先,直接给分区扩容的命令如下:
lvextend -L +80G /dev/vg/lv
其中,vg代表卷组; volume group
需要具体到你的电脑用,用vgdisplay命令可以查看
lv代表逻辑卷:logical volume
需要具体到你的电脑用,用lvdisplay命令可以查看
pv代表物理卷:physical volume
需要具体到你的电脑用,用pvdisplay命令可以查看
/dev 代表分区路径,一般都是/dev
但是出现了问题,报错内容如下:
$ sudo lvextend -L +80G /dev/mapper/cs-root
>> Insufficient free space: 20480 extents needed, but only 0 available
所剩空间不足。
分析原因如下:划定vg时已经固定了容量,lv容量从vg扩充,第一次已经将vg的空间全部划给lv,所以无法扩充。需扩充vg,但扩充vg需先扩pv,扩pv需新建分区。
现在我们有了160没分区的盘,就用着剩下的160G来分区做物理盘(pv),并用它来进行逻辑分区(lv)扩容。
使用fdisk /dev/sda命令来对磁盘进行分区,参数command选择n。
$ sudo fdisk /dev/sda
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3): 3
First sector (33554432-335544319, default 33554432):
Last sector, +sectors or +size{K,M,G,T,P} (33554432-335544319, default 335544319): wq
Last sector, +sectors or +size{K,M,G,T,P} (33554432-335544319, default 335544319): wq
Last sector, +sectors or +size{K,M,G,T,P} (33554432-335544319, default 335544319):
Created a new partition 3 of type 'Linux' and of size 144 GiB.
Command (m for help): wq
The partition table has been altered.
Syncing disks.
pvcreate /dev/sda3
(可以先执行pvdisplay ,查看一下sda1的路径在哪,然后在进行操作,一般都是在/dev下)
vgextend vg /dev/sda3
(vgdisplay 查看vg的名称和路径)
因为我的VG的名字是cs,所以命令要修改为
vgextend cs /dev/sda3
lvextend -L +80G /dev/vg/lv
lvdisplay 查看lv 逻辑卷的路径和名称
根据我自己的vg和lv的名称,修改命令代码如下
lvextend -L +80G /dev/cs/root
resize2fs /dev/vg/lv
运行后发现出错,同时df -h查看磁盘逻辑卷利用率并没有变化
检查 /dev/cs/root 文件系统,发现是xfs,使用命令如下;
mount |grep root
>>/dev/mapper/cs-root on / type xfs
xfs的文件系统重新定义大小用如下命令
xfs_growfs /dev/mapper/cs-root
再重新查看磁盘利用率,发现,磁盘分配成功啦!!!!
参考资料比较杂,每一篇都用到了一部分
https://blog.csdn.net/zhou562334410/article/details/97368505
https://www.cnblogs.com/happy-king/p/9070496.html
https://www.cnblogs.com/wangmo/p/8727162.html