删除 RAID 后无文件系统

删除 RAID 后无文件系统

因此,我将 /home 分区放在 RAID1 中的两个磁盘上,其中一个磁盘发生故障,因此系统启动时出现大量错误。我没有另一个磁盘来替换发生故障的磁盘,因此我想移除 RAID 并仅保留一个磁盘。为此,我执行了以下操作:

  1. 停止 RAID:

    mdadm --stop /dev/md1

  2. 将区块归零

    mdadm --zero-超级块 /dev/md1

  3. 删除配置文件 /etc/mdadm/mdadm.conf

  4. 更新 fstab

此后,我无法再挂载该分区,因为它似乎没有文件系统。

我不知道我是否已经破坏了文件系统。我可以恢复它吗?

fdisk -l 返回:

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 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
Disklabel type: dos
Disk identifier: 0x000f04de

Device     Boot Start        End    Sectors   Size Id Type
/dev/sda1        2048 1953523711 1953521664 931.5G da Non-FS data

谢谢

答案1

正如我们所见(我使用 Msegade 现场看到了问题),问题在于生成的 sda1 不是包含文件系统的分区。禁用 RAID 后,sda 有 1 个分区,其中包含一个具有自己的 (DOS) 分区表的映像:

root@server:~# fdisk /dev/sda

Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 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
Disklabel type: dos
Disk identifier: 0x000f04de

Device     Boot Start        End    Sectors   Size Id Type
/dev/sda1        2048 1953523711 1953521664 931.5G da Non-FS data


Command (m for help):

因此我们可以看到:

root@server:~# fdisk /dev/sda1

Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sda1: 931.5 GiB, 1000203091968 bytes, 1953521664 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
Disklabel type: dos
Disk identifier: 0x00000000

Device      Boot Start        End    Sectors   Size Id Type
/dev/sda1p1 *     2048 1953521663 1953519616 931.5G 83 Linux


Command (m for help): 

当然,我们可以优化这个过程,但对于将分区用于虚拟机映像,这是一个类似的过程。首先,我们看到第一个空闲的循环设备:

root@server:~# losetup -f
/dev/loop0

然后我们将 sda1 连接到 loop0

root@server:~# losetup /dev/loop0 /dev/sda1

使用 kpartx 我们创建映射的设备:

root@server:~# kpartx -av /dev/loop0

如果我们运行 lsblk,我们会看到结果:

root@server:~# lsblk 
NAME      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda         8:0    0 931.5G  0 disk 
`-sda1      8:1    0 931.5G  0 part 
sdb         8:16   0 931.5G  0 disk 
|-sdb1      8:17   0   953M  0 part /
[...]
loop0       7:0    0 931.5G  0 loop 
`-loop0p1 253:0    0 931.5G  0 part

以及映射的设备文件:

root@server:~# ls -lsa /dev/mapper/
total 0
0 drwxr-xr-x  2 root root      80 Jun 23 16:02 .
0 drwxr-xr-x 19 root root    3500 Jun 23 16:02 ..
0 crw-------  1 root root 10, 236 Jun 23 16:02 control
0 lrwxrwxrwx  1 root root       7 Jun 23 16:02 loop0p1 -> ../dm-0

所以我们现在可以将文件系统 /dev/mapper/loop0p1 挂载到我们想要的位置。

答案2

我认为整个过程失败是因为您没有移除 raid 设备 md1。具体步骤如下:1. mdadm --stop raid_device2. mdadm --remove raid_device3. mdadm --zero-superblock component_device…

相关内容