- A+
目录
前言
真的是一波三折,此次解决问题留个记录,希望也可以帮助大家。有两台内部使用服务器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
新硬盘分区没有挂载,无法进入和查看。
在终端窗口中输入如下命令:
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
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%时,处理方法】