linux服务器上一次数据迁移事例

公司服务器有一个系统盘40G,目前已经用掉了30%左右,老板新购了一块磁盘200G,让我把之前数据迁移到新的磁盘上。迁移工作非常顺利。这里和大家分享下我是怎么做的。

格式化

lsblk查看新的磁盘文件名

首先我们需要知道磁盘文件用,用lsblk来查看,知道了新的磁盘文件名为/dev/vdb

分区

我将200G的磁盘分了两个区,大小分别为50G和100G,剩下50G留着以后看看怎么用。

# 分区的命令
fdisk /dev/vdb
……
# 强制让内核重新找一次分区表
partprobe
# 格式化分区
mkfs.xfs /dev/vdb1
mkfs.xfs /dev/vdb2   

挂载

分区及格式化后,就需要挂载分区。linux下分区必须先挂载才能使用。

创建一个新的目录/data,用来挂载/dev/vdb1。这个分区暂时保留,留着以后用。

网站数据都在/www 目录下,这个目录的数据我们是准备存放到新磁盘分区上的。怎样让迁移工作量最小化呢?

我采用的方法是,将原目录/www 修改为 /wwwbak,然后重新创建空目录 /www 。/www目录现在是空的了,所以可以挂在到新的磁盘分区上,我们将100G的分区挂载到/www目录。然后将/wwwbak目录的所有数据复制到/www目录。至此,迁移工作就完成了。

# 关闭nginx及mysql服务
killall nginx
killall mysqld

# 将原/www目录修改为/wwwbak
mv /www /wwwbak
# 创建空目录
mkdir /www /data

# 挂载
mount /dev/vdb1 /data
mount /dev/vdb2 /www

修改/etc/fstab文件

修改/etc/fstab 文件,让开机自动挂载。

# 查看分区的uuid
blkid

# 修改fstab文件内容
vim /etc/fstab
...

# 重新挂载一遍看有没有错误
mount -a

迁移数据

迁移数据这个时候就非常简单了

# 复制数据
cp -a /wwwbak/* /www

# 开启ningx和mysql
/etc/init.d/nginx start
/etc/init.d/mysql start

数据迁移后,/wwwbak目录就可以删除了,也可以留着,做一个备份。