mkfs.ext4 -F - 以后如何避免数据丢失?

yae*_*ael -1 linux filesystems mkfs

在我们运行此mkfs命令在设备上创建文件系统之前,例如/dev/sde

如何知道此设备上是否已存在某些数据?:

mkfs.ext4 -j -m 0 /dev/sde -F
Run Code Online (Sandbox Code Playgroud)

我执行了mkfs.ext4on /dev/sde,但没有收到有关此驱动器上存在(-ed)数据的任何警告,因此所有数据都丢失了。

将来如何避免这种情况?


mkfs.ext4 -j -m 0 /dev/sde -F
Run Code Online (Sandbox Code Playgroud)

And*_*nle 5

如何知道 /dev/sde 上是否已经存在某些数据

您可以尝试挂载它。您可以尝试检查磁盘分区表。但是,如果您没有使用能够理解磁盘上实际内容的正确工具,那么无论您使用何种工具,都可能会报告磁盘上没有数据。所以归根结底,在你做一些会破坏磁盘上数据的事情之前,你需要知道磁盘上有什么。

作为系统管理员,您有权销毁数据。你需要小心。

因此所有数据都会丢失......如何避免这种情况?

不要跑

mkfs.ext4  -j -m 0 /dev/sde -F
Run Code Online (Sandbox Code Playgroud)

在包含您不想丢失的数据的磁盘上。

说真的 - 那是“修复” -不要这样做。您运行了一个命令来创建一个新的文件系统/dev/sde,甚至使用了-F“强制”选项来确保该命令无论做什么都可以运行。每mkfs.ext4手册页

   -F     Force mke2fs to create a filesystem, even if the specified
          device is not a partition on a block special device, or if
          other parameters do not make sense. ...
Run Code Online (Sandbox Code Playgroud)

数据没了。从中吸取教训,以后要多加小心。

  • 我倾向于使用`file -s /dev/sde` 而不是挂载——例如它可以包含一个LVM PV,它本身不是一个可挂载的文件系统,但可以包含文件系统。原则上我猜你应该使用`lsblk --fs /dev/sde`。因为`file -s` 不会准确显示RAID 设备,至少当RAID 元数据存储在设备末尾时。`lsblk --fs` 对于最常见的块设备内容应该更准确/可靠。不知道直接在块设备上的数据库,可能是 `file -s` 在那里有优势,或者没有。 (2认同)