Linux挂载新硬盘并把data目录迁移到新硬盘(使用LVM)

Linux2022-09-06
Linux挂载新硬盘并把data目录迁移到新硬盘(使用LVM)-下一朵云

一、系统环境

Linux挂载新硬盘并把data目录迁移到新硬盘(使用LVM)-下一朵云

CentOS Linux release 7.9.2009 (Core)

启用了LVM功能,LVM的使用参考《LVM的安装和使用方法》

添加一块1.2T的硬盘,并创建逻辑卷,方便以后扩容,将 /data 目录下的数据迁移到新的逻辑卷。

二、添加硬盘、格式化

(1)关机、添加新硬盘、开机,执行以下命令查看磁盘

 [root@Nextcloud ~]# fdisk -l
Linux挂载新硬盘并把data目录迁移到新硬盘(使用LVM)-下一朵云
图1 查看磁盘

如图1,已经可以看到新添加的硬盘 /dev/sdb 1171.5 GB,如果看不到新加的磁盘,请执行以下命令后重新尝试

echo "- - -" >  /sys/class/scsi_host/host0/scan
echo "- - -" >  /sys/class/scsi_host/host1/scan
echo "- - -" >  /sys/class/scsi_host/host2/scan
echo "- - -" >  /sys/class/scsi_host/host3/scan
echo "- - -" >  /sys/class/scsi_host/host4/scan
echo "- - -" >  /sys/class/scsi_host/host5/scan
echo "- - -" >  /sys/class/scsi_host/host6/scan

其中是host0还是host1…,跟新插入的硬盘口有关系,不清楚就逐个试一遍

(2)格式化新硬盘

格式化磁盘,创建一个分区sdb1

[root@Nextcloud ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x7dd623c6 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-2516582399,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-2516582399,默认为 2516582399):
将使用默认值 2516582399
分区 1 已设置为 Linux 类型,大小设为 1.2 TiB

修改磁盘类型为Linux LVM,保存退出

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):L

 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris        
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx         
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据 
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具      
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt         
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问       
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要       
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep        
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT            
1e  隐藏的 W95 FAT1 80  旧 Minix       
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

三、创建逻辑卷

(1)在sdb1分区,创建PV

[root@Nextcloud ~]# pvcreate /dev/sdb1  
  Physical volume "/dev/sdb1" successfully created.

(2)创建VG

[root@Nextcloud ~]# vgcreate data-01 /dev/sdb1
  Volume group "data-01" successfully created

(3)创建LV,把所有空间分配给data-01-lv

[root@Nextcloud ~]# vgdisplay 
  --- Volume group ---
  VG Name               data-01
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <1.07 TiB
  PE Size               4.00 MiB
  Total PE              279295
  Alloc PE / Size       0 / 0   
  Free  PE / Size       279295 / <1.07 TiB
  VG UUID               N06in2-nsM1-NKD1-ifSW-HMP7-xNrQ-Om3Nze
   
[root@Nextcloud ~]# lvcreate -l 279295 -n data-01-lv data-01
  Logical volume "data-01-lv" created.

(4)格式化并挂载LV

将LV的文件系统格式化成xfs,执行如下命令

[root@Nextcloud ~]# fdisk -l
磁盘 /dev/mapper/data--01-data--01--lv:1171.4 GB, 1171448135680 字节,2287984640 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@Nextcloud ~]# mkfs -t xfs /dev/mapper/data--01-data--01--lv

将LV临时挂载到 /mnt/tmp

[root@Nextcloud ~]# mkdir -p /mnt/tmp
[root@Nextcloud ~]# mount /dev/mapper/data--01-data--01--lv /mnt/tmp
[root@Nextcloud ~]# 

此时执行如下命令,即可查看到新的磁盘已经成功添加

[root@Nextcloud ~]# df -hT
/dev/mapper/data--01-data--01--lv xfs       1.1T   33M  1.1T    1% /mnt/tmp

四、同步 /data 的数据到 /mnt/tmp

[root@Nextcloud ~]# rsync -avx /data/ /mnt/tmp/

等待同步完成,如果提示-bash: rsync: 未找到命令,执行以下命令安装rsync即可

yum install rsync -y

删除 /data 文件夹,并将LV挂载到 /data

[root@Nextcloud]# rm -rf /data
[root@Nextcloud]# mkdir /data
[root@Nextcloud]# mount /dev/mapper/data--01-data--01--lv /data

五、设置开机自动挂载

(1)查看LV的UUID

[root@Nextcloud]# blkid
/dev/mapper/data--01-data--01--lv: UUID="f8d019f5-7111-4d59-82f0-5b417dab55c7" TYPE="xfs" 

(2)编辑/etc/fstab文件添加以下内容

UUID=f8d019f5-7111-4d59-82f0-5b417dab55c7 /data xfs     defaults 0 0 

六、测试验证

重启系统,查看系统启动后新增的硬盘是否自动挂载

[root@Nextcloud ~]# df -hT

此时我们可以看到新增硬盘已经正常挂载,且文件格式为xfs,符合预期。

Linux挂载新硬盘并把data目录迁移到新硬盘(使用LVM)-下一朵云
图2 挂载成功