gpt4 book ai didi

linux - 模拟挂载卷错误导致只读

转载 作者:IT王子 更新时间:2023-10-29 00:33:31 25 4
gpt4 key购买 nike

几天前,我们遇到了一个意外错误,即我们的 RedHat linux 机器上安装的驱动器之一变为只读。该问题是由数据中心的网络中断引起的。

现在我需要看看我是否可以重现相同的行为,即在应用程序运行时将驱动器重新安装为只读。

我尝试重新挂载它是只读的,但这没有用,因为有打开的文件(正在写入日志)。

如果我有机器的根访问权限(但没有管理程序的访问权限),是否有办法暂时导致只读。

该卷是通过 /etc/fstab 安装的。记录如下:

UUID=abfe2bbb-a8b6-4ae0-b8da-727cc788838f /                     ext4    defaults        1 1
UUID=8c828be6-bf54-4fe6-b68a-eec863d80133 /opt/sunapp ext4 rw 0 2

这里是几个命令的输出,显示了我们安装的驱动器的详细信息。我可以根据需要添加更多详细信息。

fdisk -l 的输出

Disk /dev/vda: 268.4 GB, 268435456000 bytes, 524288000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0008ba5f

Device Boot Start End Blocks Id System
/dev/vda1 * 2048 524287966 262142959+ 83 Linux

Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

lsblk 命令的输出:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda 253:0 0 80G 0 disk
└─vda1 253:1 0 80G 0 part /
vdb 253:16 0 250G 0 disk /opt/sunup

blkid 命令的输出:

/dev/vda1: UUID="abfe2bbb-a8b6-4ae0-b8da-727cc788838f" TYPE="ext4" 
/dev/sr0: UUID="2017-11-13-13-33-07-00" LABEL="config-2" TYPE="iso9660"
/dev/vdb: UUID="8c828be6-bf54-4fe6-b68a-eec863d80133" TYPE="ext4"

parted -l 命令的输出:

Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0
has been opened read-only.
Error: /dev/sr0: unrecognised disk label
Model: QEMU QEMU DVD-ROM (scsi)
Disk /dev/sr0: 461kB
Sector size (logical/physical): 2048B/2048B
Partition Table: unknown
Disk Flags:

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 268GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags
1 1049kB 268GB 268GB primary ext4 boot


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:

Number Start End Size File system Flags
1 0.00B 42.9GB 42.9GB ext4

最佳答案

是的,你可以做到。但这里提出的方法可能会导致数据丢失,所以仅用于测试。

假设您将 /dev/vdb 安装为 /opt/sunapp,请执行以下操作:

  1. 首先,卸载它。您可能需要先关闭所有使用它的应用程序。
  2. 配置一个循环设备来镜像/dev/vdb的内容:

    losetup /dev/loop0 /dev/vdb
  3. 然后,挂载 /dev/loop0 而不是 /dev/vdb:

    mount /dev/loop0 /opt/sunapp -o rw,errors=remount-ro
  4. 现在,您可以运行您的应用程序了。当需要将 /opt/sunapp 设置为只读时,使用此命令:

    blockdev --setro /dev/vdb

    之后,尝试写入 /dev/loop0 将导致 I/O 错误。一旦文件系统驱动程序检测到这一点,它就会将文件系统重新挂载为只读。

要恢复一切,您需要卸载 /opt/sunapp,分离循环设备,并使 /dev/vdb 再次可写:

umount /opt/sunapp
losetup -d /dev/loop0
blockdev --setrw /dev/vdb

关于linux - 模拟挂载卷错误导致只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53267157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com