项目场景

项目服务器的磁盘容量太小不够用了,需要新加硬盘,将数据库迁移到新的磁盘上,新加的硬盘是全新未分好区的,记录一下分区挂载以及迁移数据库的步骤

具体步骤

在开始挂载之前,我写过这篇博客ubuntu服务器挂载硬盘,所以这次自然而然我也是按照这篇博客里面的步骤来操作的,当我执行到
mount -t ntfs-3g /dev/vdb /datadir时,控制台报

NTFS signature is missing.
Failed to mount '/dev/vdb': Invalid argument
The device '/dev/vdb' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?

看起来意思是我的vdb磁盘未分区,所以我先分区

1. 分区以及格式化

1) 查看一下调整后的磁盘状态

 fdisk -l

2) 磁盘分区

fdisk /dev/vdb

下面根据提示,输入相应的指令

3) 查看已分区数量

p

显示还没有分区

4) 新增加一个分区

n

5) 分区类型,选择主分区

p

分区号选1(若1已被占用,则选2)

回车     默认选择(起始扇区)

回车     默认选择(结束扇区)

6) 修改分区类型

t

7) 选分区1

8) 修改为LVM(8e就是LVM)

8e

9) 写分区表,完成后退出fdisk命令

w

10) 重启电脑(问了公司的运维,说建议重启电脑,防止以后重启电脑后挂载没起效,但是后面我看到有永久挂载的配置,如果你的服务器不能重启,是不是可以考虑不重启)

11) 格式化分区

mkfs.ext3 /dev/vdb1(等执行完)

这里我按照我之前博客的做法,格式化的时候执行的命令是
mkfs.ntfs /dev/vdb1
导致我的磁盘被格式化成了NTFS文件系统,这个后面说

2. 挂载

查看磁盘情况

lsblk

进行挂载

mount /dev/vdb1 /datadir

这里我按照我之前博客的做法,是使用这个命令去挂载
mount -t ntfs-3g /dev/vdb1 /datadir

永久挂载(不会因为重启丢失挂载信息)

使用文本编辑器打开/etc/fstab文件

vi /etc/fstab

添加一行

/dev/vdb1 /datadir      ext3    defaults 0 0

参考一位大佬的解析

在这里插入图片描述
保存/etc/fstab文件并退出

重新加载该文件使挂载信息生效

mount -a

查看磁盘容量情况

df -h

至此挂载成功

3.Postgresql数据库迁移

先看下我的docker-compose.yml文件

在这里插入图片描述
我把整个postgresql文件夹cp到新磁盘

1)我使用NTFS格式化磁盘的情况下,执行docker-compose up -d的时候失败,控制台报权限问题
在这里插入图片描述
然后我就一直在给postgresql的data文件夹赋权限,但是怎么chmod怎么chown都没有更改到文件夹的权限,一度以为我的命令有问题,或者是docker部署的postgresql本来就对权限严格,没有适配docker,一度想放弃docker部署postgresql,后面想直接重新在这个新磁盘路径下起一个新的postgresql,把旧的pg_dump过来这边算了,最后发现是我天真了,新的磁盘连新的postgresql都起不了,emo了一段时间之后,突然想到,会不会是挂载磁盘的方式有问题,然后就试了新的挂载方式,果然

2)我使用ext3格式化磁盘的情况,直接cp -a整个postrgesql文件夹过来新的磁盘,直接启动,没有任何问题,激动

总结

最后总结一下这次的问题,我对文件系统的格式没有熟悉,直接使用以前经验,以前使用NTFS方式挂载的磁盘是已经格式化分区好的了,这次不一样,是未做分区处理的,最后补充一下各个文件系统的解析

NTFS、exFAT、FAT32和ext4是不同的文件系统,它们在功能、性能和适用场景上有一些区别。在选择外置固态硬盘的文件系统时,你需要考虑你的使用需求以及设备的兼容性。

NTFS (New Technology File System):

特点:强大的文件系统,支持大文件和大容量分区。具有许多高级功能,如权限控制、日志记录和压缩。
优点:适用于Windows系统,对大容量存储和大文件支持良好。
缺点:在某些非Windows环境下可能支持不够好,不是所有设备都能够正常读写NTFS格式的磁盘。

exFAT (Extended File Allocation Table):

特点:是FAT32的升级版本,支持更大的文件和分区。设计用于移动设备和闪存存储。
优点:兼容性较好,支持大文件,适用于跨平台使用。
缺点:不如NTFS在大容量存储和高级功能方面强大,可能在某些非Windows环境下的兼容性存在问题。

FAT32 (File Allocation Table 32-bit):

特点:旧的文件系统,支持最大文件大小为4GB,最大分区容量为2TB。
优点:兼容性较好,适用于较小容量的设备和不需要高级功能的场景。
缺点:由于文件和分区大小的限制,不适合大容量存储和大文件的需求。
ext4 (Fourth Extended File System):

特点:是Linux系统上常用的文件系统,支持大文件和大容量分区,具有较好的性能和稳定性。
优点:适用于Linux系统,支持大容量和大文件,有较好的性能。
缺点:在Windows和macOS上的兼容性相对较差。

参考链接:

  1. NTFS、exFAT、FAT32、ext4各有什么区别,外置硬盘格式化推荐哪一种
  2. Ext3、Ext4、FAT、FAT32、NTFS、exFAT、Sparse、Raw
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐