我有一台使用软件 RAID (raid1) 的服务器,我需要增加根分区上的卷。我一直在谷歌上搜索,但没有找到如何做到这一点的运气。我有 2x1TB RAID1。
我的 df -h:
Filesystem Size Used Avail Use% Mounted on
rootfs 20G 20G 0 100% /
/dev/root 20G 20G 0 100% /,
devtmpfs 3.9G 4.0K 3.9G 1% /dev
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 788M 256K 788M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 3.9G 0 3.9G 0% /run/shm
none 100M 0 100M 0% /run/user
overflow 1.0M 4.0K 1020K 1% /tmp
/dev/md3 898G 72M 852G 1% /home
我的 fdisk -l:
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 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
Disk identifier: 0x000e1568
Device Boot Start End Blocks Id System
/dev/sdb1 * 4096 40962047 20478976 fd Linux RAID autodetect
/dev/sdb2 40962048 42008575 523264 82 Linux swap / Solaris
/dev/sdb3 42008576 1953517567 955754496 fd Linux RAID autodetect
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 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
Disk identifier: 0x000a0d60
Device Boot Start End Blocks Id System
/dev/sda1 * 4096 40962047 20478976 fd Linux RAID autodetect
/dev/sda2 40962048 42008575 523264 82 Linux swap / Solaris
/dev/sda3 42008576 1953517567 955754496 fd Linux RAID autodetect
Disk /dev/md3: 978.7 GB, 978692538368 bytes
2 heads, 4 sectors/track, 238938608 cylinders, total 1911508864 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
Disk identifier: 0x00000000
Disk /dev/md3 doesn't contain a valid partition table
Disk /dev/md1: 21.0 GB, 20970405888 bytes
2 heads, 4 sectors/track, 5119728 cylinders, total 40957824 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
Disk identifier: 0x00000000
Disk /dev/md1 doesn't contain a valid partition table
答案1
在实时系统上做到这一点非常棘手。您选择的组织在调整规模方面非常不灵活。
我的建议是将根分区的一些大块移入/home
并创建一个符号链接。
如果您确实想调整大小,可以使用以下方法。我建议首先在虚拟机中练习,因为您可能会面临系统无法启动(如果幸运的话)或丢失数据(如果不幸的话)的风险。请确保您的备份是最新的。
停止除 sshd 之外的所有服务。我们将取消 RAID 的同步,此时
/
或/home
此后对文件进行的任何修改都将丢失。手动关闭 RAID 组件
/dev/sdb
并将其从阵列中删除。同时关闭交换/dev/sdb2
。mdadm /dev/md1 -f /dev/sdb1 mdadm /dev/md1 -r /dev/sdb1 mdadm /dev/md3 -f /dev/sdb3 mdadm /dev/md3 -r /dev/sdb3 swapoff /dev/sdb2
重新分区
/dev/sdb
。我建议您使用更灵活的分区方案,即 LVM。这样,您以后想要调整大小的操作就会容易得多。创建一个跨越整个磁盘的 RAID 1 卷(交换空间除外)。我假设 RAID 的新卷现在/dev/sdb1
仍然/dev/sdb2
是交换空间。卷的顺序并不重要。/dev/sdb1
现在使用单个组件构成RAID 1 卷的一部分。mdadm --create /dev/md4 -l 1 -n 2 missing /dev/sdb2
使新的 RAID 卷成为左心室容量物理卷,并创建包含它的卷组。
pvcreate /dev/md4 vgcreate main /dev/md4
创建具有所需大小的根逻辑卷,以及跨越其余可用空间的主 LV。
lvcreate --size 40g -n root main lvcreate --size 100%FREE -n home main
/dev/mapper/main_root
在和上创建文件系统/dev/mapper/main_home
。也跑mkswap /dev/sdb2
。挂载新的文件系统并将数据复制到那里。
mkdir /media/new_root /media/new_home mount /dev/mapper/main_root /media/new_root mount /dev/mapper/main_home /media/new_home cp -ax / /media/new_root cp -ax / /media/new_home
运行
chroot /media/new_root
存储配置并将其更新到新组织。您需要更新/etc/fstab
才能安装/dev/mapper/main_root
在/home
.还要注释掉 的交换条目/dev/sda2
。您还需要使新系统可引导,这取决于您的引导加载程序。请注意,LILO 和 Grub2 可以从 LVM 引导,但 Grub 0.9x 不能。重新启动到新系统。仅当您在虚拟机中完成所有这些步骤并确认其有效后才可以执行此操作!
重新分区
/dev/sda
与 相同/dev/sdb
。mkswap /dev/sda2
那就跑吧swapon /dev/sda2
。您现在可以取消注释/dev/sda2
in 的条目/etc/fstab
。添加
/dev/sda1
到新的RAID1阵列并让它在后台同步。mdadm --add /dev/md4 /dev/sda1