服务器用于存放数据的硬盘不够了,但是由于装机时没有采用LVM卷组,因此无法将新硬盘快速合并为一个大的存储空间。现在服务器的sda
用于安装操作系统,sdb
为一个普通ext4分区挂载至/home
,现希望将新加入的sdc
与sdb
一起创建一个lvm卷组,并挂载至/home
。
使用须知
请务必先完整阅读后在操作,并确保你具有以下知识:
- 熟练的Linux运维技术
- 了解磁盘分区
- 了解LVM原理
- 明白数据是无价的
操作步骤
- 卸载正在使用的硬盘
1 2 3
|
umount /dev/sdb1
fuser -cu /dev/sdb1
|
- 在新硬盘上创建新分区并格式化
1 2 3 4 5 6 7 8
|
fdisk /dev/sdc g 新建一份 GPT 分区表 n 添加新分区 默认回车 分区号 默认回车 第一个扇区 默认回车 大小 w 将分区表写入磁盘并退出 mkfs.ext4 /dev/sdc1
|
- 将sdb的内容传输至sdc,虽然采购的硬盘为同一型号,但是由于批次的原因两者大小并不相同,新硬盘有7814033408个扇区大于旧硬盘的7814035087,因此可以直接操作,否则参考第4步,现缩小文件系统
1 2 3
|
dd if=/dev/sdb1 of=/dev/sdc1 bs=512M
watch -n 10 kill -USR1 682642
|
- 缩小新硬盘上的文件系统(移动存储的内容)
1 2 3 4 5 6 7
|
e2fsck -f /dev/sdc1
resize2fs -p /dev/sdc1 3584G > /dev/sdc1 上的文件系统现在为 939524096 个块(每块4k)。
dumpe2fs -h /dev/sdc1
|
- 缩小新硬盘上的文件系统(缩小分区表)
1 2 3 4 5 6 7
|
fdisk /dev/sdc d 删除分区 n 添加新分区 默认回车 分区号 默认回车 第一个扇区 上一步的块数*4 w 将分区表写入磁盘并退出
|
- 将旧硬盘的分区类型改为LVM
1 2 3 4
|
fdisk /dev/sdb t 更改分区类型 31 Linux LVM w 将分区表写入磁盘并退出
|
- 创建LVM卷组并格式化
1 2 3 4 5
|
lvm pvcreate /dev/sdb1 vgcreate vg_data /dev/sdb1 lvcreate -n lv_home -l 100%FREE vg_data mkfs.ext4 /dev/vg_data/lv_home
|
- 将新硬盘上的数据传至LVM卷组
1
|
dd if=/dev/sdc1 of=/dev/mapper/vg_data-lv_home bs=512M
|
- 重新分区新硬盘
1 2 3 4 5 6 7
|
fdisk /dev/sdc d 删除分区 n 添加新分区 默认回车 分区号 默认回车 第一个扇区 默认回车 大小 w 将分区表写入磁盘并退出
|
- 将新硬盘加入LVM卷组
1 2 3 4
|
lvm pvcreate /dev/sdc1 vgextend vg_data /dev/sdc1 lvextend -l +100%FREE /dev/vg_data/lv_home
|
- 扩容LVM卷组的文件系统
1 2
|
e2fsck -f /dev/vg_data/lv_home resize2fs -p /dev/vg_data/lv_home
|
- 查询新硬盘的UUID,修改fstab,使之开机可以自动挂载
1 2 3 4 5 6 7
|
ll /dev/disk/by-uuid/
vim /etc/fstab
mount -a
|