在分区中重新分配空间而不会丢失数据

Filesystem 1K-blocks Used Available Use% Mounted on /dev/md0 1829037 1745454 0 100% / tmpfs 255940 0 255940 0% /lib/init/rw udev 10240 44 10196 1% /dev tmpfs 255940 0 255940 0% /dev/shm /dev/mapper/sys-srv 206424760 35519164 160419836 19% /srv 

这是我的服务器上的DF的输出。 很明显,我需要在md0中进行操作,我想从/ srv中取出它。 有人可以找出我的磁盘安装,并build议我如何增加分区上的2GB的10个或更多?

pvs输出:

 Incorrect metadata area header checksum Incorrect metadata area header checksum Incorrect metadata area header checksum Incorrect metadata area header checksum Incorrect metadata area header checksum Incorrect metadata area header checksum PV VG Fmt Attr PSize PFree 
/dev/md0 lvm2 -- 232.88G 232.88G /dev/md1 sys lvm2 a- 231.02G 29.02G

vgs输出:

 Incorrect metadata area header checksum VG #PV #LV #SN Attr VSize VFree sys 1 2 0 wz--n- 231.02G 29.02G 

lvs输出:

 Incorrect metadata area header checksum LV VG Attr LSize Origin Snap% Move Log Copy% srv sys -wi-ao 200.00G 
swap sys -wi-ao 2.00G

fdsik -l输出:

 Disk /dev/sda: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 243 1951866 fd Linux raid autodetect /dev/sda2 244 30401 242244135 fd Linux raid autodetect Disk /dev/sdb: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 * 1 243 1951866 fd Linux raid autodetect /dev/sdb2 244 30401 242244135 fd Linux raid autodetect Disk /dev/md0: 1998 MB, 1998585856 bytes 2 heads, 4 sectors/track, 487936 cylinders Units = cylinders of 8 * 512 = 4096 bytes Disk /dev/md0 doesn't contain a valid partition table Disk /dev/md1: 248.0 GB, 248057888768 bytes 2 heads, 4 sectors/track, 60561008 cylinders Units = cylinders of 8 * 512 = 4096 bytes Disk /dev/md1 doesn't contain a valid partition table Disk /dev/dm-0: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/dm-0 doesn't contain a valid partition table Disk /dev/dm-1: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/dm-1 doesn't contain a valid partition table
Disk /dev/sda: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 243 1951866 fd Linux raid autodetect /dev/sda2 244 30401 242244135 fd Linux raid autodetect Disk /dev/sdb: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 * 1 243 1951866 fd Linux raid autodetect /dev/sdb2 244 30401 242244135 fd Linux raid autodetect Disk /dev/md0: 1998 MB, 1998585856 bytes 2 heads, 4 sectors/track, 487936 cylinders Units = cylinders of 8 * 512 = 4096 bytes Disk /dev/md0 doesn't contain a valid partition table Disk /dev/md1: 248.0 GB, 248057888768 bytes 2 heads, 4 sectors/track, 60561008 cylinders Units = cylinders of 8 * 512 = 4096 bytes Disk /dev/md1 doesn't contain a valid partition table Disk /dev/dm-0: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/dm-0 doesn't contain a valid partition table Disk /dev/dm-1: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/dm-1 doesn't contain a valid partition table 

你需要添加更多的细节。 在df的输出中,分区布局( fdisk -l的输出)和/ dev / mapper可能意味着你正在使用LVM,所以如果是这样的话( pvs; vgs; lvs的输出)。 另外,你的rood的/proc/mdstat的内容似乎是RAID。

您的df输出暗含的RAID和LVM的混合将会使重新排列空间变得更加困难,如果//srv都在同一个LVM卷组中 – 您可能会发现更快,更容易检查备份,擦除机器,重新排列,并从备份恢复您的数据和configuration。 您可以通过缩小/svr根文件系统中的某些内容,使用释放的空间创build新的卷,移动文件并将它们安装在正确的位置 – 这将为您带来一些空间,直到您可以安排更大的更改。 /home通常是很好的select, /var/log或许也是,但这取决于空间的使用。 同样作为一个快速胜利,确保你已经清除了软件包caching(在类似Debian的系统上的aptitude clean ),并从/var/log中移出你不太可能需要的旧日志。

编辑:(附加的细节后)

在您的设置中似乎有什么问题,因为md0看起来像是一个挂载为简单文件系统的2Gb卷,而LVM却将其列为(更大)的pv。

不过,除非您需要(例如,因为您正在使用基于LVM快照的方法以最less的停机时间进行一致性备份),否则您可以在其他pv / vg上拥有大量的可用空间。 基本的程序是:

  1. 在当前/ /(清理临时文件,删除软件包caching和/或旧的日志),让你没有运行在烟雾空间明智
  2. 使用lvcreate所需的大小为新的根文件系统添加逻辑卷
  3. 从一个LiveCD或类似的启动(救援模式/单用户模式启动可能也会工作,并且更可能了解您的RAID / LVM布局没有额外jiggery pokery))。 希望这个例子(救援启动或活CD)可以看到你的RAID和LVM设置在这种情况下:
  4. 复制文件系统原始的dd if=/dev/md0 of=/dev/mapper/sys-root ,用resize2fs /dev/mapper/sys-root调整它的大小来填充更大的逻辑卷(它会要求你先运行fsck ,遵循它的指令来做到这一点),并给复制的文件系统一个新的UUID与uuidgentune2fs /dev/hdaX -U <uuid-generated-by-uuidgen> (也注意到这个UUID,你可能需要它)
  5. 挂载新的文件系统并更新/etc/fstab来引用新文件系统而不是旧文件系统
  6. 重新启动并手动告诉grub(我假设grub,如果它是一个旧的安装,你可能仍然使用lilo作为引导程序)来引导这个新的文件系统,而不是旧的
  7. 如果这样做,你应该使用新的文件系统作为根高兴地更新它的grubconfiguration包括新的设置作为一个选项,并重新运行grub安装与新的configuration
  8. 你仍旧有旧的文件系统,grub被configuration为在旧的和新的之间提供双启动,以防某些事后被发现

(在自动取款机上rest,所以我没有时间研究上述所需的确切命令/程序 – 查看相关文档/论坛获取更多详细信息)

任何这样的主要操作一样:在继续之前确保您的备份是最新的,并且/或者将完整的原始副本或磁盘/文件系统移动到另一个驱动器,以防万一出现不可逆转的错误。

您的/ srv设备正在使用LVM,它允许您在LVM托pipe设备池中相当自由地重新分配磁盘空间,不幸的是,您的根分区看起来像是直接安装在您的md0 RAIDarrays中,因此您可能无法通过该磁盘重新分配空间LVM。

相反,你可以使用mount --bindmount --bind in / under / srv的一部分,这使得/ srv下/ live中的一部分成为了/ dev / md0的空间。

我build议你可能会重新定位home / home或者你的/ var挂载点,因为它们通常是较大的,但是你可以使用du -sh /*来告诉你磁盘使用情况。 /。

然后,您可以将大目录的内容复制到/ srv并绑定挂载,然后重新挂载/在其他地方删除复制目录的旧内容,示例配方:

mkdir /srv/var
cp -a /var/* /srv/var/
mount --bind /var /srv/var
mkdir /tmp/root
mount /dev/md0 /tmp/root
#rm -rf /tmp/root/var

请注意,如果您正在使用可能正在使用的文件系统的任何部分,则最好在单用户模式下完成,并且要小心! 您可能只想将复制的分区重命名为/进行testing,以确保它在删除之前有效。