侧边栏壁纸
博主头像
术业有道之编程博主等级

亦是三月纷飞雨,亦是人间惊鸿客。亦是秋霜去叶多,亦是风华正当时。

  • 累计撰写 99 篇文章
  • 累计创建 50 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

liunx增加磁盘扩展并增加docker磁盘使用空间

Administrator
2022-03-29 / 0 评论 / 0 点赞 / 434 阅读 / 12146 字

写在前面

一台服务器使用docker容器长时间运行会产生很多文件(不完全是日志或文件垃圾,运行数据永远是增量的)导致磁盘写满,最终导致容器不可用。

不考虑增加硬盘缓解问题,可以参考 清理docker磁盘占用

下面我要介绍的是给liunx系统增加磁盘并增加docker的磁盘使用空间。

一、思路

  • liunx系统挂一块盘,并且初始化分区
  • 设置liunx系统将此分区挂载到文件夹,并且开机自动挂载
  • 移动/var/lib/docker到新的分区(这里也可以考虑docker数据盘模式)

二、在liunx上挂载磁盘并初始化分区

注意:以下是分区操作的详细步骤,对每一步操作进行了截图和说明。

  • 执行fdisk -l,查看新增数据盘

    • 查看新增数据盘
    • 这里显示了2块磁盘,一块是40G,一块是200G
    • Disk表示磁盘,Device表示挂载信息。(我这里是2块磁盘都挂载好了)磁盘没有挂载的时候只会显示对应的Disk,不会显示对应的Device
  • 执行fdisk /dev/vdb,对磁盘进行分区(我这里忘记截图了,拿其他教程的相同步骤替代)

    • 磁盘分区1
    • 输入n,按Enter键,开始新建分区
    • 磁盘分区2
      • 磁盘有两种分区类型
        • p表示主分区
        • e表示扩展分区
        • 磁盘使用MBR分区形式,最多可以创建4主分区,或者3主分区1扩展分区扩展分区不可以直接使用,需要划分成若干个逻辑分区才可以使用。磁盘使用GPT分区形式时,没有主分区扩展分区以及逻辑分区之分
    • 输入p,按Enter键,开始创建一个主分区
    • 磁盘分区3
      • Partition number表示主分区编号,可以选择1-4
    • 输入主分区编号1,按Enter键
    • 磁盘分区4
      • First sector表示起始磁柱值,可以选择2048-209715199,默认为2048
    • 使用默认起始磁柱值 2048即可,直接按Enter键
    • 磁盘分区5
      • Last sector表示截止磁柱值,可以选择2048-209715199,默认为209715199;这里可以通过减小这个截止磁柱值来设置一部分的磁盘空间作为一个分区,但起始磁柱值必须小于分区的截止磁柱值
    • 使用默认截止磁柱值 209715199即可,直接按Enter键
    • 磁盘分区6
    • 输入p,按Enter键,查看新建分区的详细信息
    • 磁盘分区7
      • 请记下这个Device Boot值,非常关键,后面都要用的
    • 输入w,按Enter键,将分区结果写入分区表中
    • 磁盘分区8
      • 如果之前进行了误操作,在这里输入q可以退出fdisk分区工具,之前的分区结果也不会被保留

到这里分区完成 , 但是现在通过df -TH命令还看不到这个分区

三、设置将此分区挂载到文件夹,并且开机自动挂载

  • 执行partprobe,将新的分区表变更同步至操作系统
  • 执行mkfs -t ext4 /dev/vdb1,将新建分区文件系统设为系统所需格式
  • 格式化磁盘
    • 我该用什么文件系统:查看当前磁盘的分区cat /etc/fstab,可以看到有个UUID的信息,磁盘是ext4,这是当前正在使用的主磁盘,保持一致即可。
    • 我忘了分区在哪里:就是上面记下的Device Boot信息。万一没记,执行fdisk -l,可以看到多个Disk,下面没有Device的就是你要操作的磁盘。后面的数字就是你之前输入的主分区编号,不出意外应该是/dev/vdb1
  • 执行mkdir /mnt/sdc,新建挂载目录
    • 如果应为磁盘空间满了新建不了,请删除一些日志文件(比如/var/log文件夹)再重启服务器后再来执行新建挂载目录
    • 这个/mnt目录最好固定,后面的sdc可以自己更换其他名字,建议不要用中文或者特殊符号,不然出现奇怪问题自己整哈
  • 执行mount /dev/vdb1 /mnt/sdc,将新建分区挂载到新建的目录下
  • 执行 df -TH,查看挂载结果
  • 查看挂载磁盘

到这里已经可以看到挂载的磁盘了,并且可以正常使用,但是每次开机都要手动执行mount /dev/vdb1 /mnt/sdc,下面开始设置自动挂载

  • 执行blkid /dev/vdb1 ,查询磁盘分区的UUID
  • 自动挂载磁盘1
  • 执行echo "UUID=beacc427-80f0-4503-a845-26efbe67f98d /mnt/sdc ext4 defaults 0 2" >> /etc/fstab
    • 第一列:就是上一步的UUID
    • 第二列:是挂载的文件夹
    • 第三列:是文件系统格式
    • 第四列:是磁盘分区的挂载选项,此处通常设置为defaults即可
    • 第五列:为Linux dump备份选项。
      • 0表示不使用Linux dump备份。现在通常不使用dump备份。
      • 1表示使用Linux dump备份。
    • 第六列:为fsck选项,即开机时是否使用fsck检查磁盘。
      • 0表示不检验。
      • 挂载点为/根目录的分区,此处必须填写1。根分区设置为1,其他分区只能从2开始,系统会按照数字从小到大依次检查下去
  • 验证自动挂载是否成功
    • 执行umount /dev/vdb1,卸载已挂载的分区
    • 执行mount -a,将/etc/fstab文件所有内容重新加载
    • 执行mount | grep /mnt/sdc,查询文件系统挂载信息
    • 查询文件系统挂载信息

到这里已经完成了自动挂载分区,接下来把这个分区分配给docker使用

四、将docker搬迁到新的分区中

我这里使用的是docker文件搬迁,即将原来系统盘中的docker搬迁到新的大磁盘上,对docker现有容器无影响。另外一种使用docker数据盘模式也是可行的,但是我没有实际试过。

  • 开始搬迁docker文件
  • 执行systemctl stop docker,停止docker服务
  • 执行mv /var/lib/docker /mnt/sdc,移动docker文件到新的挂载文件夹
  • 执行ln -s /mnt/sdc/docker/ /var/lib/,创建软链指向新的docker目录 (如果执行不了 ln -s 改为 ln -sf )
  • /etc/docker/daemon.json文件中增加属性"data-root":"/mnt/sdc/docker"
  • 执行systemctl start docker,启动docker服务

到这里就全部完成了

个人公众号

0

评论区