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 文件中使得挂载持久化,主机重启后将自动挂载硬盘
方法 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 的具体使用方法可自行查询学习。
4、挂载时错误解决
4.1、错误 1:写保护,将以只读方式挂载
格式化分区:mkfs.ext4 /dev/sdb1可参考标题 2 磁盘分区当中的格式化分区操作
重新挂载即可。
4.2、错误 2:不能读取超块
可进行磁盘修复,如下:
# 磁盘目录:/dev/vdb
fsck.ext3 -B 1024 /dev/vdb
重新挂载即可。