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目录就可以删除了,也可以留着,做一个备份。