AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 47707
Accepted
Stu
Stu
Asked: 2009-07-30 11:28:45 +0800 CST2009-07-30 11:28:45 +0800 CST 2009-07-30 11:28:45 +0800 CST

在linux中移动到更大的驱动器

  • 772

我在非根卷驱动器上有一个空间不足的 linux 机器。移动到更大的驱动器的最佳方法是什么?

我想我启动到单用户模式,格式化,安装新驱动器,执行一些保留链接、权限、文件日期和其他所有内容的神奇复制命令,然后卸载旧驱动器,将新驱动器安装为旧名称并重新启动。

听起来对吗?我错过了什么吗?建议?提示?有人知道cp命令是什么吗?

这是一个 ubuntu 机器。

backup linux drive
  • 6 6 个回答
  • 2334 Views

6 个回答

  • Voted
  1. Best Answer
    David Spillett
    2009-07-30T11:50:56+08:002009-07-30T11:50:56+08:00

    如果你给出了你当前的布局(fdisk -l如果你不使用 LVM,输出会做,如果你使用 LVM,输出会是“ fdisk -l”,“ pvdisplay -C”,“ vgdisplay -C”和“ lvdisplay -C”)和你希望增长的驱动器/分区,我们可以给出更准确的答案。

    假设“非根卷驱动器”是指具有单个分区的驱动器,其中包含要增长到新磁盘上的卷,旧磁盘显示为 sdb(及其上的分区 sdb1),现有分区是一个 ext2 或 ext3 文件系统,新磁盘在其中并分区为单个卷(例如,sdc1),并且您希望完全移动到新磁盘以摆脱旧磁盘,以下将起作用:

    1. 备份数据,以防万一
    2. 停止访问卷 /dev/sdb1 的任何服务和其他进程
    3. 卸载它
    4. dd if=/dev/sdb1 of=/dev/sdc1
    5. fsck /dev/sdc1 -C 0
    6. resize2fs /dev/sdc1 -p
    7. 将任何指向旧设备(即在 /etc/fstab 中)的指针调整到新设备
    8. 重新挂载并重新启动服务
    9. 下次机器断电时卸下旧驱动器。您可能希望将其保留一段时间作为紧急备份,以防新驱动器出现故障

    编辑: fsck 上的“-C 0”和 resize2fs 上的“-p”告诉各自的实用程序在执行任务时输出进度信息。调整大小操作应该非常快(如果使卷变小,通常只需要很长时间,因为在这种情况下需要移动更多数据)。如果您安装了pv,那么您也可以通过将 dd 调用替换为“pv /dev/sdb1 > /dev/sdc1”,让第 3 步为您提供进度信息

    编辑 2:对于相当完整的卷,这是一个不错的选择,因为它首先会逐块复制,因此不需要在关心文件系统结构时翻转驱动器头(因此复制速度将与“速度旧驱动器可以批量读取”和“新驱动器可以批量写入的速度”)并且它不会与硬链接,设备节点或文件系统中可能存在的任何其他特殊内容混淆 - 对于卷相当空,您会发现其中一种基于 cp/cpio 的方法要快得多,因为它们不会将所有空块从磁盘复制到磁盘

    • 10
  2. cas
    2009-07-30T13:51:29+08:002009-07-30T13:51:29+08:00

    对于这种工作,我更喜欢 rsync,因为如果有任何东西中断了复制过程,你可以再次运行 rsync,它会从中断的地方继续,而不是从头开始。

    您也可以在系统正常运行时运行 rsync(尽管 rsync 复制文件时会慢一些)。然后,当您准备好切换到新驱动器时,要么关闭正在写入旧驱动器的所有内容(包括用户进程、守护进程、cron 作业等),要么重新启动到单用户模式并再次运行 rsync , 将新驱动器与初始 rsync 运行时发生的任何更改同步。

    流程大致是:

    • 安装新驱动
    • 使用您喜欢的文件系统进行分区并格式化
    • 安装它
    • rsync 旧 fs 到新 fs
    • 重启进入单用户模式
    • 再次同步
    • 编辑 /etc/fstab 以挂载新 fs 代替旧文件
    • 再次重新启动(或先关闭并删除旧驱动器)

    如果将来可能再次发生这种情况,或者如果您想同时使用旧驱动器和新驱动器的容量,那么您可能需要考虑将 LVM 用于新驱动器......然后将数据同步到它并编辑fstab 同上。一旦系统在 LVM 卷组上运行,您就可以将旧驱动器(和/或任何额外的新驱动器)添加到卷组并调整 fs 的大小。

    • 4
  3. Chad Huneycutt
    2009-07-30T11:42:52+08:002009-07-30T11:42:52+08:00

    我最喜欢的文件系统副本:

    (cd /src; tar cf - .) | (cd /dst; tar xpf -)

    不过,我很想看看其他人的建议。由于您要移动整个文件系统,因此可能会有更好的选择。哦,原来的文件系统在 LVM 卷上吗?

    • 1
  4. TCampbell
    2009-07-30T11:44:53+08:002009-07-30T11:44:53+08:00

    我自己一直偏爱cpio:

    cd /src; find . -print | cpio -dpum /dst

    • 0
  5. Kevin M
    2009-07-30T11:45:19+08:002009-07-30T11:45:19+08:00

    如果它不是 root,并且没有使用 drive( /usr/sbin/lsof | grep '/path/to/mount/point),那么您不需要引导到单用户模式。

    cp -a如果不是 LVM,我会这样做。但我记得,Ubuntu(至少是第 9 版)需要备用安装光盘。我不知道其他版本。

    • 0
  6. Jure1873
    2009-07-30T12:04:12+08:002009-07-30T12:04:12+08:00

    如果您有 lvm,您可以在不重新启动/停止任何服务的情况下即时执行此操作,如果您的系统支持热插拔驱动器,您也可以更换驱动器。- 对新磁盘进行分区 - pvcreate 新分区 - pvcreate new_disk - 将卷组扩展到新分区 vgextend datavg new_disk - pvmove old_disk new_disk

    • 0

相关问题

  • IIS 6.0 (Windows Server 2003) 备份的最佳实践?

  • 10TB数据和3台服务器的备份解决方案

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

  • 最佳混合环境(OS X + Windows)备份?[关闭]

  • 如何从 SQL Server 2008 中的备份中排除索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve