2块12TB做了软RAID1,需要升级成2块16TB盘
1. 查看磁盘信息,SerialNumber 等会儿会用到,防止换错盘
1 |
$ sudo hdparm -i /dev/sd{c,b} |
2. 运行 sync 命令刷写
3. 查看 md 状态
1 |
$ sudo hdparm -i /dev/sd{c,b} |
4. 查看 md 容量
1 2 3 |
$ df -h | grep md $ mdadm --detail /dev/md127 |
剔除磁盘 /dev/sdc
1 |
$ sudo mdadm --manage /dev/md127 --fail /dev/sdc |
5. 关机换盘(支持热插拔的可以开机更换)
6. 更换硬盘后加回硬盘
lsblk查看换回来的设备名称
由于是原位置更换,盘的名称还是 /dev/sdc
1 2 3 4 5 6 7 8 9 10 11 12 |
# cat /proc/sys/dev/raid/speed_limit_max # 200000 # cat /proc/sys/dev/raid/speed_limit_min # 1000 # 临时修改 raid 的同步速度限制,默认限制最低 1KB/S(1000) 同步速度太慢了,我们把这个速度限制放宽到 最低200MB/S,最高 400MB/S 。同步完成后再改回来即可,或者重启系统即可恢复成默认设置 $ sudo sysctl -w dev.raid.speed_limit_min=200000 $ sudo sysctl -w dev.raid.speed_limit_max=400000 $ sudo mdadm --manage /dev/md127 --add /dev/sdc $ cat /proc/mdstat |
7. 等待同步完成后,依照第一块盘的方式,更换掉第二块盘再次等待同步完成。
8. mdadm 扩容
1 |
$ sudo mdadm --grow --size max /dev/mdxx |
文件系统扩容
1 2 3 4 5 6 7 |
$ sudo parted /dev/md127 "resizepart 1 100%" # resize2fs 只能处理 ext4/ext3/ext2 # 如果是xfs需要使用 xfs_grows # 如果是btrfs 则需要执行 btrfs 命令 $ sudo resize2fs /dev/md127p1 ( 这里我只分了一个分区,ext4格式) |
如果上述命令报错
1 2 3 4 5 |
$ sudo LANG=C resize2fs /dev/md1 resize2fs 1.47.0 (5-Feb-2023) resize2fs: Device or resource busy while trying to open /dev/md1 Couldn't find valid filesystem superblock. |
则执行如下命令,观察一下是否分区是 LVM分区格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS ............................................................. sda 8:0 0 14.6T 0 disk └─sda1 8:1 0 14.6T 0 part └─md1 9:1 0 10.9T 0 raid1 └─vg0-volume_0 252:0 0 10.9T 0 lvm /home/data ............................................................... sdd 8:48 0 14.6T 0 disk └─sdd1 8:49 0 14.6T 0 part ............................................................... |
并且检查文件系统是 btrfs 格式,如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
$ df -Th 文件系统 类型 大小 已用 可用 已用% 挂载点 tmpfs tmpfs 1.6G 4.8M 1.6G 1% /run /dev/sde3 ext4 219G 105G 103G 51% / tmpfs tmpfs 7.8G 336K 7.8G 1% /dev/shm tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs tmpfs 7.8G 0 7.8G 0% /run/qemu /dev/sde2 vfat 512M 6.2M 506M 2% /boot/efi /dev/mapper/vg0-volume_0 btrfs 11T 11T 707G 94% /home/data tmpfs tmpfs 1.6G 204K 1.6G 1% /run/user/1001 tmpfs tmpfs 1.6G 144K 1.6G 1% /run/user/128 tmpfs tmpfs 1.6G 132K 1.6G 1% /run/user/1000 |
如果类似上述情况,需要额外执行如下命令:
1 |
$ sudo mdadm --grow --size max /dev/md1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS ............................................................. sda 8:0 0 14.6T 0 disk └─sda1 8:1 0 14.6T 0 part └─md1 9:1 0 14.6T 0 raid1 └─vg0-volume_0 252:0 0 10.9T 0 lvm /home/data ............................................................... sdd 8:48 0 14.6T 0 disk └─sdd1 8:49 0 14.6T 0 part ............................................................... |
1 2 3 |
$ sudo pvresize /dev/md1 $ sudo lvextend -l +100%FREE /dev/mapper/vg0-volume_0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS ............................................................. sda 8:0 0 14.6T 0 disk └─sda1 8:1 0 14.6T 0 part └─md1 9:1 0 14.6T 0 raid1 └─vg0-volume_0 252:0 0 14.6T 0 lvm /home/data ............................................................... sdd 8:48 0 14.6T 0 disk └─sdd1 8:49 0 14.6T 0 part ............................................................... |
1 2 3 4 5 6 7 8 9 10 11 12 |
$ df -Th 文件系统 类型 大小 已用 可用 已用% 挂载点 tmpfs tmpfs 1.6G 4.8M 1.6G 1% /run /dev/sde3 ext4 219G 105G 103G 51% / tmpfs tmpfs 7.8G 336K 7.8G 1% /dev/shm tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs tmpfs 7.8G 0 7.8G 0% /run/qemu /dev/sde2 vfat 512M 6.2M 506M 2% /boot/efi /dev/mapper/vg0-volume_0 btrfs 11T 11T 707G 94% /home/data tmpfs tmpfs 1.6G 204K 1.6G 1% /run/user/1001 tmpfs tmpfs 1.6G 144K 1.6G 1% /run/user/128 tmpfs tmpfs 1.6G 132K 1.6G 1% /run/user/1000 |
1 2 3 4 |
$ sudo apt install btrfs-progs $ sudo btrfs filesystem resize max /home/data Resize device id 1 (/dev/mapper/vg0-volume_0) from 10.91TiB to max |
1 2 3 4 5 6 7 8 9 10 11 |
$ df -Th 文件系统 类型 大小 已用 可用 已用% 挂载点 tmpfs tmpfs 1.6G 5.1M 1.6G 1% /run /dev/sde3 ext4 219G 106G 102G 52% / tmpfs tmpfs 7.8G 336K 7.8G 1% /dev/shm tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs tmpfs 7.8G 0 7.8G 0% /run/qemu /dev/sde2 vfat 512M 6.2M 506M 2% /boot/efi /dev/mapper/vg0-volume_0 btrfs 15T 11T 4.4T 71% /home/data tmpfs tmpfs 1.6G 304K 1.6G 1% /run/user/1001 tmpfs tmpfs 1.6G 180K 1.6G 1% /run/user/1000 |
删除新添加硬盘分区,并且添加新分区,保持与原磁盘一致:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
$ sudo gdisk /dev/sdd GPT fdisk (gdisk) version 1.0.10 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help): ? b back up GPT data to a file c change a partition's name d delete a partition i show detailed information on a partition l list known partition types n add a new partition o create a new empty GUID partition table (GPT) p print the partition table q quit without saving changes r recovery and transformation options (experts only) s sort partitions t change a partition's type code v verify disk w write table to disk and exit x extra functionality (experts only) ? print this menu Command (? for help): p Disk /dev/sdd: 31251759104 sectors, 14.6 TiB Model: WUH721816ALE6L4 Sector size (logical/physical): 512/4096 bytes Disk identifier (GUID): C37D08FC-C28D-401A-8EE9-8A4994A47A49 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 2048, last usable sector is 31251759070 Partitions will be aligned on 2048-sector boundaries Total free space is 0 sectors (0 bytes) Number Start (sector) End (sector) Size Code Name 1 2048 31251757055 14.6 TiB FD00 2 31251757056 31251759070 1007.5 KiB 8300 Linux filesystem Command (? for help): d 1 Partition number (1-2): 1 Command (? for help): d Using 2 Command (? for help): p Disk /dev/sdd: 31251759104 sectors, 14.6 TiB Model: WUH721816ALE6L4 Sector size (logical/physical): 512/4096 bytes Disk identifier (GUID): C37D08FC-C28D-401A-8EE9-8A4994A47A49 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 2048, last usable sector is 31251759070 Partitions will be aligned on 2048-sector boundaries Total free space is 31251757023 sectors (14.6 TiB) Number Start (sector) End (sector) Size Code Name Command (? for help): n Partition number (1-128, default 1): First sector (2048-31251759070, default = 2048) or {+-}size{KMGTP}: Last sector (2048-31251759070, default = 31251757055) or {+-}size{KMGTP}: Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem' Command (? for help): p Disk /dev/sdd: 31251759104 sectors, 14.6 TiB Model: WUH721816ALE6L4 Sector size (logical/physical): 512/4096 bytes Disk identifier (GUID): C37D08FC-C28D-401A-8EE9-8A4994A47A49 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 2048, last usable sector is 31251759070 Partitions will be aligned on 2048-sector boundaries Total free space is 2015 sectors (1007.5 KiB) Number Start (sector) End (sector) Size Code Name 1 2048 31251757055 14.6 TiB 8300 Linux filesystem Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to /dev/sdd. The operation has completed successfully. |
如果后续添加磁盘的时候报错:
1 2 |
$ sudo mdadm --manage /dev/md1 --add /dev/sdd1 mdadm: /dev/sdd1 not large enough to join array |
则需要复制分区表,解决磁盘分区差异导致报错新硬盘空间不足问题,如下:
1 2 3 4 5 6 7 |
$ sudo sfdisk -d /dev/sda > part_table $ grep -v ^label-id part_table | sed -e 's/, *uuid=[0-9A-F-]*//' | sudo sfdisk /dev/sdd $ sudo sfdisk -d /dev/sda1 > part_table_1 $ grep -v ^label-id part_table_1 | sed -e 's/, *uuid=[0-9A-F-]*//' | sudo sfdisk /dev/sdd1 |
如果上述命令继续报错
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$ grep -v ^label-id part_table_1 | sed -e 's/, *uuid=[0-9A-F-]*//' | sudo sfdisk /dev/sdd1 请检查现在是不是有人在使用此磁盘... 好的 Disk /dev/sdd1:14.55 TiB,16000898564096 字节,31251755008 个扇区 单元:扇区 / 1 * 512 = 512 字节 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘标签类型:gpt 磁盘标识符:F941003D-163E-43B8-93A6-61BE96B51BC6 旧状况: >>> 已接受脚本标头(header)。 >>> 已接受脚本标头(header)。 >>> 已接受脚本标头(header)。 >>> 已接受脚本标头(header)。 >>> 已接受脚本标头(header)。 >>> 已接受脚本标头(header)。 >>> 完成。 脚本指定的最后一个 LBA 超出范围。 脚本指定的最后一个 LBA 超出范围。 脚本指定的最后一个 LBA 超出范围。 无法应用脚本标头(header),未创建磁盘标签。 离开中。 |
那么就没办法与原始磁盘保持相同的分区模式了,只能是直接使用整个硬盘,不指定硬盘下的具体分区,修改命令如下:
1 2 |
$ sudo mdadm --manage /dev/md1 --add /dev/sdd mdadm: added /dev/sdd |
再次检查磁盘分区情况:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS ............................................................. sda 8:0 0 14.6T 0 disk └─sda1 8:1 0 14.6T 0 part └─md1 9:1 0 14.6T 0 raid1 └─vg0-volume_0 252:0 0 14.6T 0 lvm /home/data ............................................................... sdd 8:48 0 14.6T 0 disk └─sdd1 8:49 0 14.6T 0 part └─vg0-volume_0 252:0 0 14.6T 0 lvm /home/data ............................................................... |
参考链接
- 记一次mdadm软raid1升级容量
- 为什么你的 mdadm 同步这么慢
- 问如何将mdadm制作的软RAID数组迁移到新服务器和新操作系统?
- 使用 mdadm 管理 RAID 阵列
- 5 Tips To Speed Up Linux Software Raid Rebuilding And Re-syncing
- How to force mdadm to stop RAID5 array?
- How do I resize the filesystem on a RAID array?
- lvextend 逻辑卷扩容(xfs_growfs、resize2fs配合扩展文件系统)
- 如何在 Linux 上调整 XFS/Btrfs 文件系统的大小
- 记录:飞牛os更换硬盘并扩容
- linux中对标准分区(part分区)进行扩容(不需格式化)的方法
- Linux下删除分区的三种方法
- parted命令详解
- 更换 RAID1 磁盘 - 分区大小不同
- 【小工具】 - 修复软raid阵列状态为inacitve的方法