# 迁移存储空间的简要步骤
1. 在新硬盘划出分区用于存储
2. 在新分区上创建PV
3. 将新的PV纳入VG
4. 迁移LV到新的PV
5. VG删除旧PV
## 概念说明
NAME SIZE FSTYPE MOUNTPOINT
sda 80G
**─sda1 94M
**─sda2 63.9G ext4 /
**─sda3 3G linux_raid_member
**─md0 16G LVM2_member
**─trim_0e72302c_83fd_4f5d_a22e_71bfa1e66a4c-0 16G btrfs
sdb 200G
**─sdb1 94M
**─sdb2 63.9G
**─sdb3 3G
上面内容是硬盘分布结构,可以通过lsblk命令查看
sudo lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,UUID
sda/sdb是物理硬盘, sda1/sda2/sda3是物理硬盘的分区, md0是物理卷(PV), trim_0e72302c_83fd_4f5d_a22e_71bfa1e66a4c是卷组(VG), trim_0e72302c_83fd_4f5d_a22e_71bfa1e66a4c-0是逻辑卷(LV)。
trim_0e72302c_83fd_4f5d_a22e_71bfa1e66a4c-0是VG-LV的组合, 代表一个存储空间,可实际存储可能会分布在多个PV上,这里只有一个PV。
PV是实际存储数据的空间,VG/LV是RAID的逻辑空间。
所以迁移数据是思路是先将LV迁移到新的PV上,然后删除旧的PV。
## 1. 给新硬盘划出分区
1. sudo parted /dev/sdb # 进入parted
2. print free # 查看空闲分区
3. mkpart # 新建分区, 依次输入分区名、文件系统、起始位置、结束位置,print free可以查看分区信息
4. quit # 退出parted保存分区信息
## 2. 创建PV
1. sudo pvcreate /dev/sdb3 # 创建PV, /dev/sdb3是新硬盘的分区
2. sudo pvs # 查看PV信息
## 3. 将新的PV纳入VG
1. sudo vgextend trim_0e72302c_83fd_4f5d_a22e_71bfa1e66a4c /dev/sdb3 # 将新的PV纳入VG
2. sudo vgs # 查看VG信息
## 4. 迁移LV到新的PV
### 先收缩原LV空间
1. sudo btrfs filesystem show /vol1 # 查看btrfs文件系统大小及使用情况
2. sudo btrfs filesystem resize -14G /vol1 # 收缩btrfs文件系统大小, 这里是收缩14G, 最终大小比使用空间稍大即可
3. sudo lvresize -L 1.5G /dev/trim_dd73d4df_319d_46a6_be24_7b999362d68d/0 # 收缩LV大小, 这里是收缩到1.5G(比btrfs稍大)
### 迁移LV
1. sudo pvmove /dev/md0 /dev/sdb3 # 迁移LV到新的PV
2. sudo pvs # 查看PV信息, 可以看到md0的空闲空间已经释放
## 5. VG删除旧PV
1. sudo vgreduce trim_dd73d4df_319d_46a6_be24_7b999362d68d /dev/md0 # 删除旧的PV
### 扩大目标分区
1. sudo parted /dev/sdb # 进入parted
2. print free # 查看空闲空闲
3. resizepart 3 # 调整分区大小, 输入结束位置
4. quit # 退出parted保存分区信息
### 扩大PV空间
1. sudo pvresize /dev/sdb3 # 扩大PV空间
### 扩大LV空间
1. sudo lvresize -L 136G /dev/trim_dd73d4df_319d_46a6_be24_7b999362d68d/0 # 扩大LV空间, 这里是扩大到136G(比PV略小)
### 扩大btrfs文件系统大小
1. sudo btrfs filesystem show /vol1 # 查看btrfs文件系统大小及使用情况
2. sudo btrfs filesystem resize +134G /vol1 # 扩大btrfs文件系统大小, 这里是扩大134G(最终比LV略小)
## 最后sda1(BIOS BOOT)与sda2(EXT4系统盘)可以用DG克隆分区进行迁移
|