我有一台 Ubuntu 18.04 LTS 服务器,上面有两个 3TB 富士通 SATA 磁盘,带有 MBR 分区表。fdisk -l 和 lsblk 的输出如下所示:
sudo fdisk -l /dev/sd[ab]
Disk /dev/sda: 2,7 TiB, 3000592982016 bytes, 5860533168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x0f6b5c4d
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 1953525167 1953523120 931,5G fd Linux RAID autodetect
/dev/sda2 1953525760 4294967294 2341441535 1,1T fd Linux RAID autodetect
Disk /dev/sdb: 2,7 TiB, 3000592982016 bytes, 5860533168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x0f6b5c4d
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 1953525167 1953523120 931,5G fd Linux RAID autodetect
/dev/sdb2 1953525760 4294967294 2341441535 1,1T fd Linux RAID autodetect
和
jan@xenon:/etc/grub.d$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 2,7T 0 disk
├─sda1 8:1 0 931,5G 0 part
│ └─md0 9:0 0 931,4G 0 raid1
│ ├─lvraid0-boot 253:0 0 952M 0 lvm /boot
│ ├─lvraid0-root 253:1 0 9,3G 0 lvm /
│ ├─lvraid0-usr 253:2 0 41,4G 0 lvm /usr
│ ├─lvraid0-var 253:3 0 27,1G 0 lvm /var
│ ├─lvraid0-local 253:4 0 20G 0 lvm /usr/local
│ └─lvraid0-home 253:5 0 1,3T 0 lvm /home
└─sda2 8:2 0 1,1T 0 part
└─md1 9:1 0 1,1T 0 raid1
└─lvraid0-home 253:5 0 1,3T 0 lvm /home
sdb 8:16 0 2,7T 0 disk
├─sdb1 8:17 0 931,5G 0 part
│ └─md0 9:0 0 931,4G 0 raid1
│ ├─lvraid0-boot 253:0 0 952M 0 lvm /boot
│ ├─lvraid0-root 253:1 0 9,3G 0 lvm /
│ ├─lvraid0-usr 253:2 0 41,4G 0 lvm /usr
│ ├─lvraid0-var 253:3 0 27,1G 0 lvm /var
│ ├─lvraid0-local 253:4 0 20G 0 lvm /usr/local
│ └─lvraid0-home 253:5 0 1,3T 0 lvm /home
└─sdb2 8:18 0 1,1T 0 part
└─md1 9:1 0 1,1T 0 raid1
└─lvraid0-home 253:5 0 1,3T 0 lvm /home
sdc 8:32 0 238,5G 0 disk
├─sdc1 8:33 0 32G 0 part [SWAP]
└─sdc2 8:34 0 206,5G 0 part
mdadm 设置如下:
sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sat Mar 8 12:55:25 2014
Raid Level : raid1
Array Size : 976630488 (931.39 GiB 1000.07 GB)
Used Dev Size : 976630488 (931.39 GiB 1000.07 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sun Mar 7 16:39:14 2021
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : xenon:0 (local to host xenon)
UUID : 862908d9:73a53975:471031c2:2e8d79fd
Events : 1429528
Number Major Minor RaidDevice State
2 8 1 0 active sync /dev/sda1
3 8 17 1 active sync /dev/sdb1
sudo mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Wed Apr 29 23:17:46 2020
Raid Level : raid1
Array Size : 1170588608 (1116.36 GiB 1198.68 GB)
Used Dev Size : 1170588608 (1116.36 GiB 1198.68 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sun Mar 7 16:27:26 2021
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : xenon:1 (local to host xenon)
UUID : df9fa048:c1e13ee2:fc85098e:0292f063
Events : 2010
Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 8 18 1 active sync /dev/sdb2
如上所示,每个磁盘都有两个分区,用于制作两个软件 RAID 1 卷 md0 和 md1,而 LVM 又将它们用于卷组 lvraid0。这一切都运行良好,但由于使用 MBR 分区表,磁盘布局浪费了大量空间,这使我无法使用磁盘的全部大小。原因是我最初有两个 1 TB 磁盘,后来我将其替换为 3 TB 磁盘。我还应该提到我的服务器使用的是 BIOS(不是 UEFI)
为了使用整个磁盘空间,我想将磁盘分区从 MBR 更改为 GPT。我研究过如何做到这一点,似乎可以使用类似以下的方法,但我希望得到一些使用特定命令做过类似事情的人的意见,这样我就不会安装失败:
- 从 RAID 卷 md0 和 md1 中删除一个驱动器 /dev/sdb
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2
我是否应该将 /dev/sdb 分区的内容清零以避免 mdadm 设备扫描出现问题?
dd if=/dev/zero of=/dev/sdb1 bs=1M count=1000
dd if=/dev/zero of=/dev/sdb2 bs=1M count=1000
如果我不这样做,我担心某些 mdadm 或 lvm2 扫描可能会发现剩余内容 - 请指定相关命令
- 重新分区 /dev/sdb 以使用 GPT
我想对驱动器进行如下分区:
a. 一个分区 /dev/sdb1 用于 md0,就像 MBR 磁盘上一样
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 1953525167 1953523120 931,5G fd Linux RAID autodetect
b. 一个分区 /dev/sdb2 供 GRUB2 使用,大小为 10 MB ?
c. 一个分区 /dev/sdb3 用于将来可能的 UEFI - 100MB ?
d. 一个分区 /dev/sdb4 用于 md1,比原始 md1 大
e. 留出一些空间供将来 MDADM/LVM2 使用
我应该为 RAID autodect、可启动、GRUB 等的新分区使用哪些 GPT 代码。我知道它们与 MBR 磁盘不同,但不知道该使用哪一个
将 /dev/sdb 重新添加到两个 RAID 卷
我是否需要删除 RAID 写入意图位图?如果需要,如何删除、何时删除,以及如何/何时重新创建?
mdadm -–manage /dev/md0 -–add /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb4
现在等待重新同步完成
- 在新创建的分区上安装 grub2
grub-install /dev/sdb 会正常工作吗?我想如果我对专用 grub 分区使用了正确的代码,它就会正常工作。据我所知,LBA 扇区 0 应该有一个保护性引导记录,其余的在 GRUB 分区中。这能确保磁盘可引导吗?
我想我现在应该更新我的 mdadm 配置:
mdadm --detail --scan > /etc/mdadm/mdadm.conf
and update the boot environment:
update-initramfs -u -k all
update-grub
/etc/fstab 应该没问题,因为 UUID 是 LVM2 UUID
并在进一步更改其他 MBR 磁盘 /dev/sda 之前验证系统是否可以从新的 GPT 磁盘启动
- 调整卷大小
我假设在两个驱动器都从 MBR 更改为 GPT 后会发生这种情况
我保留 /dev/md0 的大小作为原始 MBR 磁盘,这样应该没问题吧?
我怀疑我需要告诉 mdadm /dev/md1,它现在位于比原始 MBR 磁盘大得多的分区 /dev/sdb3 上,需要扩展。我该怎么做?
mdadm –grow /dev/md1 –size=max ??
完成后,我想我还需要告诉 LVM2 使用现在更大的物理卷 /dev/md1。我该怎么做?
pvresize /dev/md1 ??
我想我还需要调整 /home 的大小,驻留在 /dev/md1 上,以使用增加的空间。我使用 ext4 文件系统,所以我想我应该使用一些
resize2fs /dev/lvraid0/home ??
希望有人能帮忙?我以前在网上找到过一些指南,但现在似乎找不到了 :-(