目录

 

前言

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

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

docker windows 挂载存储卷 docker 挂载硬盘_docker

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

sudo mount -t ext4 /dev/sda /devdata

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

mount: mount point /devdata does not exist

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

 

cd /

mkdir -p devdata

 

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

sudo mount -t ext4 /dev/sda /devdata
df -l

docker windows 挂载存储卷 docker 挂载硬盘_ide_02

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
  • 指令结尾处会显示总计清理释放的空间大小。

参考:

Ubuntu环境下挂载新硬盘