linux 磁盘管理

磁盘管理问题的引出

在一次docker pull 的过程中报了这个错误

write /var/lib/docker/tmp/GetImageBlob011295272: no space left on device
[root@localhost ~]# write /var/lib/docker/tmp/GetImageBlob011295272: no space

很明显就是空间不足了。
使用df -h
在这里插入图片描述
可以看出这里的空间已经满了。
我的linux是通过virtualbox里建立的一个虚拟机,最早分配的空间大小只有8G.
在这里插入图片描述
通过如下命令
VBoxManage.exe modifyhd E:\virtualbox\ centos7_1.vdi --resize 25600

注意 25600单位是M

在这里插入图片描述
可以将vdi大小扩大,发现这里的大小已经变成了25G.
但是当我重新进去后df -h 发现仍然没有改边。
在这里插入图片描述
由次开启了一系列的baidu的过程,解决的过程中顺便了解了下linux的磁盘管理方面的知识。

如何解决上面问题

linux的磁盘划分和存储结构 知识

不同于window里,磁盘分成C,D,E. linux里不存在 C,D,E这样的分区。一切从 根目录 /开始,形成了树形结构。在/路径下 ls,列出的根目录下一级的路径,如下
在这里插入图片描述
其中的dev就是和设备相关。

在这里插入图片描述
在/dev下查看,可以看到sda,sda1,sda2,sda3
在这里插入图片描述
也通过fdisk -l 查看
在这里插入图片描述
上面的命令列出了磁盘/dev/sda1 和 /dev/sda2 说明

  • sd: scsi硬盘的
  • a: scsi硬盘中第一个被识别到的
  • 1/2: scsi硬盘的第1分区,第2分区(简单理解为 C,D盘)

df -h
在这里插入图片描述
问题 :列出的/dev/mapper/c1-root 又是什么?mapper是什么鬼?
答案 :请看 Linux系统/dev/mapper目录浅谈
linux磁盘管理系列三:LVM的使用,了解各种名字,比如vg,pv,lv

这里摘录

假设一台服务器有三块硬盘分别为a,b,c,每块硬盘的容量为1T。在安装Linux的时候,先根据系统及自身的需要建立基本的分区,假设对硬盘a进行了分区,分出去了0.1T的空间挂载在/boot目录下,其他硬盘未进行分区。系统利用Device mapper机制建立了一个卷组(volume group,VG),你可以把VG当做一个资源池来看待,最后在VG上面再创建逻辑卷(logical volume,LV)。若要将硬盘a的剩余空间、硬盘b和硬盘c都加入到VG中,则硬盘a的剩余空间首先会被系统建立为一个物理卷(physical volume,PV),并且这个物理卷的大小就是0.9T,之后硬盘a的剩余的空间、硬盘b和硬盘c以PV的身份加入到VG这个资源池中,然后你需要多大的空间,就可以从VG中划出多大的空间(当然最大不能超过VG的容量)。比如此时池中的空间就是2.9T,此时你就可以建立一个1T以上的空间出来,而不像以前最大的容量空间只能为1T。

/dev/mapper/c1-root的意思是说你有一个VG (volume group卷组)叫作Volume, 这个Volume里面有一个LV叫作lv-root。其实这个/dev/mapper/c1-root文件是一个连接文件,是连接到/dev/dm-0的,你可以用命令ll /dev/mapper/c1-root进行查看。

按照上面的解释画成图如下
在这里插入图片描述

具体的操作

有了上面的知识才好进行下面的命令的理解,否则云里雾里

参考
如何给VirtualBox虚拟机的ubuntu LVM分区扩容

1.查找 VG vgdisplay. 可以看到vg名为cl

在这里插入图片描述

2.加入/dev/sda3 这个磁盘

fdisk /dev/sda
按 n一路默认,最后按w
在这里插入图片描述
这里就会多出一个 /dev/sda3的磁盘

3./dev/sda3 这个磁盘映射成为物理卷

这个磁盘会以physical volume (PV) 物理卷的身份加入。因此要先参建物理卷/dev/sda3
pvcreate /dev/sda3
如果出现下列问题 /dev/sda3 notfoud
在这里插入图片描述
则输入partprobe

pvscan 可以列出 所有pv
在这里插入图片描述
说明

  • /dev/sda2 的这个pv 分配给了卷组(vg)名c1
  • /dev/sda3 这个是刚加入的,并没有分给c1
4.将物理卷加入到VG中

vgextend cl /dev/sda3进行分配
在这里插入图片描述

5.给/dev/mapper/cl-root扩容

sudo lvextend -l +100%FREE /dev/mapper/cl-root
resize2fs /dev/mapper/cl-root
到此就成功了,如果出现下面的错误

resize2fs: Bad magic number in super-block while trying to open /dev/mapper/cl-root
Couldn’t find valid filesystem superblock.
在这里插入图片描述
xfs_growfs /dev/mapper/cl-root解决

终于成功,过程可谓一波三折。
在这里插入图片描述

参考

如何给VirtualBox虚拟机的ubuntu LVM分区扩容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值