Linux磁盘分区扩容

1、磁盘扩容

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

1.查看磁盘vdc起始柱面

fdisk -l

vdc1分区 start--开始--2048
vdc1分区 end--结束--1048575999
记录好start的起始值

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

3.首先先卸载掉磁盘 umonut /data

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

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

4.继续操作

n 新建分区,选择主分区原来的序号1
p 打印
分区号:默认1
起始 扇区:默认2048 #设置起始值为之前的start值
Last 扇区:4194303999 #整块盘的容量都是vdc1的容量,也可以指定大小
wq保存

5.这里的文件格式是ext4

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

6.挂载分区

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位置选到最后
除非你是逻辑卷,如果不是逻辑卷,你就至于这种方式
**就是删分区和新建分区的时候要注意下起始位置

2、磁盘分区

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

3、开机自动挂载

方法1:/etc/fstab

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

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

挂载方式如下:

# <file system>    <mount pt>    <type>    <options>    <dump>    <pass>

<file system>:要挂载的特殊设备,也可以是块设备,比如/dev/sda等

<mount point>:挂载点

<type>:文件系统类型,如ext2、ext3、proc、romfs、tmpfs等

<options>:挂载选项,一般使用默认的defaults(包含了 rw、suid、dev、exec、auto、nouser和async)

<dump>:为1表示允许备份,为0不备份,一般不备份

<pass>:磁盘检查设置,为0表示不检查。根目录‘/’设置为 1,其他的分区从2开始。一般不在fstab中挂载根目录,一般设置为0

例如:/dev/sda3 /usr/local/service ext4 defaults 0 0

如下图

开机挂载若未生效,可使用 mount -a命令重新执行此挂载文件进行挂载。

方法2:/etc/rc.local

开发初始化脚本挂载硬盘

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

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

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

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

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

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

  1. systemd.mount可以让那些要求在网络可用时的文件系统在网络可用的情况下才去挂载,还可以定义等待网络可用的超时时间,从而避免在开机过程中长时间卡中。
  2. systemd可以让某个挂载项自动开始挂载和自动卸载,而不是在开机时挂载后永久挂载在后台。
  3. 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非常方便,主要有两点:

  1. 设置开机不一定要挂载的目录,当用户访问对应文件系统时,才实现自动挂载。
  2. 用户不使用自动挂载的目录一段时间之后,文件系统会被自动挂载。(默认5分钟)

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

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

4、挂载时错误解决

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

格式化分区:mkfs.ext4 /dev/sdb1可参考标题2磁盘分区当中的格式化分区操作

重新挂载即可。

4.2、错误2:不能读取超块

  可进行磁盘修复,如下:

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

重新挂载即可。 

posted @ 2023-08-04 19:14  阿尔法哲  阅读(7878)  评论(0编辑  收藏  举报