当前位置: 欣欣网 > 码农

一步搞定:详解 Linux 磁盘分区扩容方法

2024-05-28码农

戳下方名片 ,关注并 星标

回复「 1024 」获取 2TB 学习资源!

👉 体系化学习:

特色专栏

/ /

/ /

/ /

/ /

/ /

大家好,我是民工哥!

今天,同大家一起来探讨一个基础问题, Linu磁盘分区扩容

磁盘扩容

linux 分区常用命令:fdisk,修改MBR分区表,MBR格式,被修改的分区大小最大为2T

查看磁盘vdc起始柱面

fdisk -l

  • vdc1分区 start--开始--2048

  • vdc1分区 end--结束--1048575999

  • 记录好start的起始值

  • 查看到磁盘vdc已从500G扩容到2T,下面需要对vdc1分区进行扩容

    首先先卸载掉磁盘 umonut /data

    再对磁盘分区扩容 fdisk /dev/vdc

  • p 打印

  • d 选择分区序号删除,删完了不要保存也不要退出

  • 继续操作
  • n 新建分区,选择主分区原来的序号1

  • p 打印

  • 分区号:默认1

  • 起始 扇区:默认2048 #设置起始值为之前的start值

  • Last 扇区:4194303999 #整块盘的容量都是vdc1的容量,也可以指定大小

  • wq保存

  • 这里的文件格式是ext4

    e2fsck -f /dev/vdc1 #检查
    resize2fs /dev/vdc1 #扩大

    挂载分区

    lsblk #再次查看vdc1分区的大小
    mount #从新挂载vdc1分区到/data
    df -h #再次查看磁盘挂载信息

    :分区容量一定程度的丢失属于正常现场,到这里vdc1分区的扩容就完成了。可以看到vdc1已经从453G扩展到1.8T

    总结

  • 1、取消磁盘挂载

  • 2、 fdisk -uS /dev/vdb,记录那个start的起始值

  • 3、然后按d选择分分区序号删除,删完了不要保存也不要退出

  • 4、直接按n ----->选择主分区原来的序号1

  • 5、设置起始值为之前的start值

  • 6、然后wq保存退出

  • 然后根据不同的磁盘分区格式去更新一下

    resize2fs #针对文件系统ext2 ext3 ext4
    xfs_growfs #针对文件系统xfs

    是要把原目录删掉重新格式化?不用重新格式化?

    上面做了mysql、es等数据库有没有影响?那你最好是把所有的都停了先,在做。这种没人敢打包票完全正常的。都得做最坏的打算。但一般就是删分区,然后起始位置相同建立新的分区end位置选到最后。除非你是逻辑卷,如果不是逻辑卷,你就至于这种方式。

    就是 删分区和新建分区 的时候要注意下起始位置

    磁盘分区

    fdisk -l查看磁盘容量和分区

    再对磁盘分区扩容 fdisk /dev/vdb

  • n 新建分区,选择主分区原来的序号1

  • p 打印

  • 分区号:默认1

  • 起始 扇区:默认2048 #设置起始值为之前的start值

  • Last 扇区:4194303999 #整块盘的容量都是vdc1的容量,也可以指定大小

  • wq保存

  • 格式化分区: mkfs.ext4 /dev/sdb1

    挂载分区到指定目录: mount /dev/sdb1 /data/

    查看挂载目录: df -h

    开机自动挂载

    方法1:/etc/fstab

    /etc/fstab #配置硬盘自动挂载

    修改/etc/fstab,将挂载命令配置到fstab文件中使得挂载持久化,主机重启后将自动挂载硬盘

    方法2:/etc/rc.local

    开发初始化脚本挂载硬盘

    /etc/rc.local #文件本质上是一个shell文件,可用于添加开机启动命令,系统启动时将按照顺序执行其中的命令。

    因此可以直接将挂载命令写入到该shell文件中即可

    挂载命令: mount /dev/vdb /data/

    方法3:使用Systemd自动挂载硬盘

    Linux Systemd,不仅可以用来关闭和开启服务,也提供处理挂载和自动挂载文件系统的方式,以服务的方式管理文件系统的挂载。

    Systemd扩展了fstab文件的定义方式,合理使用Systemd提供的挂载选项,可以完美解决以前使用fstab时的一些痛点。

  • systemd.mount可以让那些要求在网络可用时的文件系统在网络可用的情况下才去挂载,还可以定义等待网络可用的超时时间,从而避免在开机过程中长时间卡中。

  • systemd可以让某个挂载项自动开始挂载和自动卸载,而不是在开机时挂载后永久挂载在后台。

  • systemd可以让系统跳过失败的挂载,避免系统因硬盘挂载问题导致启动失败,无法进入系统(只能进行临时修复系统)

  • 当前Digitalocean(详情)提供的硬盘挂载服务正是使用了systemd的挂载方式。查看 /etc/systemd/system/ 目录即可看到名为 mnt-volume.mount 文件

    该文件定义了一个挂载项:

    [Unit]
    Description=Mount DO Volume volume
    [Mount]
    What=/dev/disk/by-uuid/d946870c-ef31-48ee-a9f1-446acaa56f46
    Where=/mnt/volume
    Options=defaults,nofail,discard,noatime
    Type=ext4
    [Install]
    WantedBy = multi-user.target

    通过这样的挂载方式,可以像管理服务一样管理挂载:

    systemctl status mnt-volume.mount
    systemctl ebable mnt-volume.mount
    systemctl disable mnt-volume.mount
    systemctl start mnt-volume.mount
    systemctl stop mnt-volume.mount
    Systemd的文件挂载选项非常丰富,具体情况可自行查询学习。

    方法4:通过AutoFs服务来管理硬盘挂载

    AutoFs服务程序与mount命令不同之处在于它是一种守护进程,只有检测到用户试图访问一个尚未挂载的文件系统时,才自动的检测并挂载该文件系统。

    AutoFs非常方便,主要有两点:

  • 设置开机不一定要挂载的目录,当用户访问对应文件系统时,才实现自动挂载。

  • 用户不使用自动挂载的目录一段时间之后,文件系统会被自动挂载。(默认5分钟)

  • AutoFs属于第三方软件,需要额外安装: yum install autofs -y

    AutoFs的具体使用方法可自行查询学习。

    挂载时错误解决

    错误1:写保护,将以只读方式挂载

    格式化分区: mkfs.ext4 /dev/sdb1 可参考标题2磁盘分区当中的格式化分区操作,重新挂载即可。

    错误2:不能读取超块

    可进行磁盘修复,如下:

    # 磁盘目录:/dev/vdb
    fsck.ext3 -B 1024 /dev/vdb

    重新挂载即可。

    来源:https://cnblogs.com/aerfazhe/p/17468905.html

    👍 如果你喜欢这篇文章,请点赞并分享给你的朋友!

    公众号读者专属技术群

    构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群( 备注岗位,已在技术交流群的请勿重复添加微信好友 )。主要以技术交流、内推、行业探讨为主,请文明发言。 广告人士勿入,切勿轻信私聊,防止被骗。

    扫码加我好友,拉你进群

    PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下 在看 ,加个 星标 ,这样每次新文章推送才会第一时间出现在你的订阅列表里。 在看 支持我们吧!