Ubuntu&docker挂载新硬盘及docker overlay占满解决

  • A+
所属分类:docker 软件开发

目录

 

前言

Ubuntu挂载新硬盘

docker overlay磁盘100%

docker清理


前言

真的是一波三折,此次解决问题留个记录,希望也可以帮助大家。有两台内部使用服务器ubuntu系统,使用docker,最近都出现了磁盘爆满的情况,其中一台A是因为镜像,容器运行的东西,碎片太多确实爆满【32G内存 1T硬盘】,突然觉得1T真的太小了;另外一台B比较诡异,磁盘满了但是只有100+G,后来才发现原来是之前同事安装系统时埋了个坑,这台电脑两块硬盘一块128固态一块1T机械,系统安装在了固态上,另外一块压根就没用上,下面就一件件解决。

Ubuntu挂载新硬盘

一、硬盘分区 | Hard disk add new partition

1、显示硬盘及所属分区情况。在终端窗口中输入如下命令:

sudo fdisk -l

Disk /dev/nvme0n1: 119.2 GiB, 128035676160 bytes, 250069680 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: gpt

Disk identifier: 6753C7C5-F2B5-495A-8787-25AD4980AC1D

设备 Start 末尾 扇区 Size 类型

/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System

/dev/nvme0n1p2 1050624 248068095 247017472 117.8G Linux filesystem

/dev/nvme0n1p3 248068096 250068991 2000896 977M Linux swap

Disk /dev/sda: 931.5 GiB, 2048 bytes, 1953525168 sectors

Disk /dev/sda doesn't contain a valid partition table

 

2、对硬盘进行分区。在终端窗口中输入如下命令:

sudo fdisk /dev/sda

如下所示:
在Command (m for help)提示符后面输入m显示一个帮助菜单。 

Welcome to fdisk (util-linux 2.27.1).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

 

/dev/sda: device contains a valid 'ext4' signature; it is strongly recommended to wipe the device with wipefs(8) if this is unexpected, in order to avoid possible collisions

 

Device does not contain a recognized partition table.

Created a new DOS disklabel with disk identifier 0x5e4ce3c3.

 

命令(输入 m 获取帮助): m

 

Help:

 

DOS (MBR)

a toggle a bootable flag

b edit nested BSD disklabel

c toggle the dos compatibility flag

 

Generic

d delete a partition

F list free unpartitioned space

l list known partition types

n add a new partition

p print the partition table

t change a partition type

v verify the partition table

i print information about a partition

 

Misc

m print this menu

u change display/entry units

x extra functionality (experts only)

 

Script

I load disk layout from sfdisk script file

O dump disk layout to sfdisk script file

 

Save & Exit

w write table to disk and exit

q quit without saving changes

 

Create a new label

g create a new empty GPT partition table

G create a new empty SGI (IRIX) partition table

o create a new empty DOS partition table

s create a new empty Sun partition table

 

在Command (m for help)提示符后面输入n,执行 add a new partition 指令给硬盘增加一个新分区。
 出现Command action时,输入e,指定分区为扩展分区(extended)。
 出现Partition number(1-4)时,输入1表示只分一个区。
 后续指定起启柱面(cylinder)号完成分区。

命令(输入 m 获取帮助): n

Partition type

p primary (0 primary, 0 extended, 4 free)

e extended (container for logical partitions)

Select (default p): e

分区号 (1-4, default 1):

First sector (2048-1953525167, default 2048): 2048

Last sector, +sectors or +size{K,M,G,T,P} (2048-1953525167, default 1953525167): 1953525167

 

Created a new partition 1 of type 'Extended' and of size 931.5 GiB.

 

在Command (m for help)提示符后面输入p,显示分区表。
系统提示如下:

命令(输入 m 获取帮助): p

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 4096 bytes

I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disklabel type: dos

Disk identifier: 0x5e4ce3c3

 

设备 启动 Start 末尾 扇区 Size Id 类型

/dev/sda1 2048 1953525167 1953523120 931.5G 5 扩展

在Command (m for help)提示符后面输入w,保存分区表。
系统提示:The partition table has been altered!

命令(输入 m 获取帮助): w

The partition table has been altered.

Calling ioctl() to re-read partition table.

Syncing disks.

 

在终端窗口中输入如下命令:

sudo fdisk -l

如下所示:
系统已经识别了硬盘 /dev/sda 的分区。

Disk /dev/nvme0n1: 119.2 GiB, 128035676160 bytes, 250069680 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: gpt

Disk identifier: 6753C7C5-F2B5-495A-8787-25AD4980AC1D

 

设备 Start 末尾 扇区 Size 类型

/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System

/dev/nvme0n1p2 1050624 248068095 247017472 117.8G Linux filesystem

/dev/nvme0n1p3 248068096 250068991 2000896 977M Linux swap

 

 

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 4096 bytes

I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disklabel type: dos

Disk identifier: 0x5e4ce3c3

 

设备 启动 Start 末尾 扇区 Size Id 类型

/dev/sda1 2048 1953525167 1953523120 931.5G 5 扩展

 

二、硬盘格式化 | Format hard disk

1、显示硬盘及所属分区情况。在终端窗口中输入如下命令:

sudo mkfs -t ext4 /dev/sdb

说明:
-t ext4 表示将分区格式化成ext4文件系统类型。

root@q:/web/grafana/plugins# mkfs -t ext4 /dev/sda

mke2fs 1.42.13 (17-May-2015)

/dev/sda contains a ext4 file system

last mounted on Wed Mar 4 11:12:15 2020

无论如何也要继续? (y,n) y

Creating filesystem with 244190646 4k blocks and 61054976 inodes

Filesystem UUID: 95c3c581-7970-430c-9c07-4801ecfba839

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,

102400000, 214990848

 

Allocating group tables: 完成

正在写入inode表: 完成

Creating journal (32768 blocks): 完成

Writing superblocks and filesystem accounting information: 完成 

三、挂载硬盘分区 | Mount hard disk partition

1、显示硬盘挂载情况。在终端窗口中输入如下命令:

df -l

新硬盘分区没有挂载,无法进入和查看。 

Ubuntu&docker挂载新硬盘及docker overlay占满解决在终端窗口中输入如下命令:

sudo mount -t ext4 /dev/sda /devdata

出现 如下提示 意思是挂载的目录不存在

mount: mount point /devdata does not exist

解决办法:挂载节点路径必须存在 创建一个就好

 

cd /

mkdir -p devdata

 

再次在终端窗口中输入如下命令: 就可以看到磁盘被挂载了


  1. sudo mount -t ext4 /dev/sda /devdata


  2. df -l

Ubuntu&docker挂载新硬盘及docker overlay占满解决

2、配置硬盘在系统启动自动挂载。

有的版本你说在文件 /etc/fstab 中加入如下配置:

/dev/sdb     /devdata    ext4     defaults       0 0

 

本人是在/etc/rs.local  增加mount /dev/sda /devdata 即可

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

mount /dev/sda /devdata
exit 0

 

docker overlay磁盘100%

此方法最为便捷,当然还有修改docker 配置的方法,在参考文档中

1停止docker 移动到存在的目录并且空间足够大,2软连接,3重启docker

systemctl stop docker
mv /var/lib/docker /devdata/
ln -s /devdata/docker/ /var/lib/

systemctl restart docker

 

docker清理

docker system prune来自动清理空间,参考下面:

  • 该指令默认会清除所有如下资源:

    • 已停止的容器(container)

    • 未被任何容器所使用的卷(volume)

    • 未被任何容器所关联的网络(network)

    • 所有悬空镜像(image)。

  • 该指令默认只会清除悬空镜像,未被使用的镜像不会被删除。

  • 添加 -a 或 --all 参数后,可以一并清除所有未使用的镜像和悬空镜像。

  • 可以添加 -f 或 --force 参数用以忽略相关告警确认信息。

  • 指令结尾处会显示总计清理释放的空间大小。

参考:

docker overlay2 空间占满100%时,处理方法

docker的/var/lib/docker/overlay文件夹突然占满了硬盘

Ubuntu环境下挂载新硬盘

docker容器存放目录磁盘空间已满

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: