有一天,当我在 Vmware 下的 Linux 客户机上扩展磁盘时,我经历了一次真正的脑放屁时刻。我将 Vmware 磁盘文件拉伸到所需的大小,然后执行了在没有LVM 的 Linux 客户机上通常执行的操作:删除了 LVM 分区并重新创建了它,从与旧分区相同的位置开始,但扩展到了新的大小磁盘。(接下来是 fsck 和 resize2fs。)
然后我意识到 LVM 在原始分区上的行为方式与 ext2/3/4 不同...从最近的备份(幸运的是,仅在五个小时前进行)恢复 Linux 来宾后,我现在很好奇我如何从以下场景中恢复过来。毕竟几乎可以肯定,我将来也会成为一个笨蛋。
具有一个磁盘的虚拟 Linux 客户机,分区为一个 256MB 的 /boot(主)分区 (/dev/sda1),其余部分位于逻辑扩展分区 (/dev/sda5)。
然后使用 pvcreate 将 /dev/sda5 设置为物理卷,并使用常用的 vgcreate 命令在其上创建一个卷组 (vgroup00)。然后vgroup00被分成两个逻辑卷root和swap,逻辑上用于/和swap。/ 是 ext4 文件系统。
由于我有损坏的 guest 虚拟机的备份,因此我能够使用 vgcfgrestore 从 /etc/lvm/backup 下找到的备份 LVM 设置重新创建卷组,并使用与物理卷相同的 UUID 等。运行此命令后,我有两个与之前大小相同的逻辑卷,其中有 4GB 的可用空间,用于扩展磁盘。
但是,当我尝试运行“fsck /dev/mapper/vgroup00-root”时,它抱怨超级块损坏。我尝试通过运行“mke2fs -n /dev/mapper/vgroup00-root”来定位备份超级块,但这些都不起作用。然后我尝试运行TestDisk,但当我要求它查找超级块时,它只给出了由于文件系统损坏而无法打开文件系统的错误。
那么,在Ubuntu Server 10.04 64位中LVM2的默认分配策略下,是否有可能从卷组的末尾分配逻辑卷呢?这肯定可以解释为什么恢复的逻辑卷不包含预期的数据。我可以通过重新创建大小和磁盘位置与之前完全相同的 /dev/sda5 来恢复吗?我可以使用其他工具来查找和恢复文件系统吗?(很明显,问题不在于我是否应该从一开始就以不同的方式来做这件事,我知道。这是一个关于当狗屎已经开始流行时该怎么办的问题。)
我正在尝试在用户空间中安装 ext4 分区映像。(没有 sudo,没有对 /dev/loop0 或 /etc/fstab 等进行特殊配置/权限修改)。所以我希望 FUSE 能够拯救我们。
然而,似乎每个通过FUSE系统挂载的文件系统都需要有一个特殊的FUSE驱动程序,而且我还没有找到适用于linux的linux读写ext4 FUSE驱动程序。
有没有办法通过 FUSE 挂载 ext4 映像(具有写入权限)?
我有一个很大的 ext4 文件系统,我目前正在缩小它(在我的情况下为 109Tb -> 83Tb),并且需要很长时间(询问时的第 5 天)。目前我可以通过iotop. 然而,从互联网上粗略一瞥,似乎 resize2fs 并没有像增加卷(大约 2011 年)那样针对收缩进行优化。
就此而言,如果我能帮上忙,我不想打断它,但我觉得这么长时间运行文件系统更改有点赤裸裸。考虑到我们知道前后的空间需求(以及块数/块大小),ext4 收缩的正确/及时估计是什么?
涉及软件:
e2fs...:1.43.1debian 4.19.16-1-bpo9+1我的特定文件系统:
当前输出:
resize2fs -p ...:
[root@devlynx]## ~:: resize2fs -p /dev/storage/storage 83T
resize2fs 1.43.4 (31-Jan-2017)
Resizing the filesystem on /dev/storage/storage to 22280142848 (4k) blocks.
Begin pass 2 (max = 802451420)
Relocating blocks XX--------------------------------------
Run Code Online (Sandbox Code Playgroud)
iotop:
TID PRIO USER DISK READ DISK WRITE SWAPIN …Run Code Online (Sandbox Code Playgroud) 问题resize2fs:在大型 (8-28Tb) ext4 文件系统上进行脱机收缩操作的“第 2 步”期间,进度条指示什么?
细节:
我已经resize2fs使用(“进度”)标志完成了大约 5 次收缩操作-p,但我无法弄清楚“pass 2”的“进度条”告诉我什么。下面包含示例输出。
进度条开始时全部为破折号,并部分填充 X,但 X 的数量在整个操作过程中增加和减少,并且在每种情况下操作均已完成,但进度条不完整。有时,当第 2 遍完成时,进度条会部分填充,如下面的示例输出所示,但至少在一种情况下,它完成时没有 X(“空”),尽管在操作期间存在 X。有时,X 的数量在整个操作过程中会多次增加和减少;例如,从0增加到8个X,然后减少到0,然后增加到6,然后回到0,然后增加到6并完成。
# resize2fs -M -p /dev/media/media
resize2fs 1.45.4 (23-Sep-2019)
Resizing the filesystem on /dev/media/media to 820975573 (4k) blocks.
Begin pass 2 (max = 369742748)
Relocating blocks XXXXX-----------------------------------
Begin pass 3 (max = 44944)
Scanning inode table XX--------------------------------------
Run Code Online (Sandbox Code Playgroud)
系统: PopOS 20.04(基本上是Ubuntu 20.04)。 resize2fs1.45.4。让我知道是否还有其他相关版本可以包含在此处。
先前的研究:
手册页仅引用“完成百分比”:
在离线调整大小期间打印每个 resize2fs 操作的百分比完成条,以便用户可以跟踪程序正在执行的操作。
...但第二阶段的行为不符合该描述,但增加和减少似乎表明它正在尝试传达某些信息。
我在 Google、ServerFault …
我在 RAID 0 配置中有四个 NVMe 驱动器。
我正在尝试确定阵列正在处理多少 IOPS。
当我运行时iostat,似乎一个驱动器处理的 IO 比其他三个驱动器多。
这是iostat收集数据方式的错误、mdadm 的已知问题,还是我错误地配置了阵列?
使用详情。
# iostat
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
nvme0n1 1669.12 22706.35 13975.13 63422465065 39034761844
nvme3n1 753.28 13228.56 12185.39 36949483692 34035736524
nvme1n1 635.93 13781.47 14014.10 38493855272 39143630456
nvme2n1 744.35 14704.94 14283.13 41073264648 39895068820
md0 4291.15 72863.78 56468.04 203520212237 157724286024
Run Code Online (Sandbox Code Playgroud)
软件 RAID 设备详细信息
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Feb 19 22:45:06 2021
Raid Level : raid0
Array …Run Code Online (Sandbox Code Playgroud) 有一个多年前创建的(并且多次调整大小)带有 ext4 的文件系统。电源故障后,它停止安装。\n当我尝试手动安装它时,我收到错误:
\n# mount /dev/space/vservershosting-vs /mnt/\nmount: /mnt: mount(2) system call failed: Structure needs cleaning.\nRun Code Online (Sandbox Code Playgroud)\ndmesg 中有更多信息:
\n[32618.800854] EXT4-fs error (device dm-44): __ext4_iget:5080: inode #2: block 1953722220: comm mount: invalid block\n[32619.264574] EXT4-fs (dm-44): get root inode failed\n[32619.264633] EXT4-fs (dm-44): mount failed\nRun Code Online (Sandbox Code Playgroud)\nfsck 无需任何修复即可通过:
\n# fsck.ext4 -c -f -v /dev/space/vservershosting-vs\ne2fsck 1.44.5 (15-Dec-2018)\nChecking for bad blocks (read-only test): done \n/dev/space/vservershosting-vs: Updating bad block inode.\nPass 1: Checking inodes, blocks, and sizes\nPass 2: Checking directory structure \nPass 3: Checking …Run Code Online (Sandbox Code Playgroud) 我最近使用 dd 将一个 11GB ext4 分区备份到一个文件,重新分区并将该文件恢复到一个 40GB 分区。parted 现在显示分区为 40GB,Nautilus 将其读取为 11GB,两者都将驱动器列为只有 2GB 可用空间。
这是文件系统问题还是分区问题,如何在不重新分区到 11GB、添加文件和增加分区的情况下修复它?
特别想将存储空间用于音乐/视频文件,但有一些常用的 doc/xls/etc) - 想知道是否有具体的理由选择一个。
谢谢
我听说即使是像 EXT3/EXT4 这样的日志文件系统也可能在电源故障期间损坏,例如来自维基百科 [1]:
In the event of a system crash or power failure,
such file systems are quicker to bring back online and
less likely to become corrupted.
Run Code Online (Sandbox Code Playgroud)
任何人都可以通过举例来提供更多的细节,当
我相信 CentOS 5 中的默认操作系统文件系统是 ext3。
是否可以在 Centos 5.x 或仅在 6.x 上使用 ext4?我可以将现有的 ext3 文件系统升级到 ext4 吗?