Linux

刪除 RAID 後沒有文件系統

  • June 23, 2016

所以我在 RAID1 的兩個磁碟中有 /home 分區,一個磁碟出現故障,因此系統啟動時出現很多錯誤。我沒有另一個磁碟來替換發生故障的磁碟,所以我想刪除 RAID 並只保留一個磁碟。為此,我做了:

  1. 停止 RAID:

mdadm –stop /dev/md1 2. 將塊歸零

mdadm –zero-superblock /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

謝謝

正如我們所看到的(我在 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 掛載到我們想要的位置。

引用自:https://serverfault.com/questions/785763