模拟安装的卷错误以导致只读

时间:2018-11-12 17:24:46

标签: linux linux-device-driver volume readonly

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

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

我试图将其重新安装为只读,但由于某些文件被打开(正在写入日志)而无法正常工作。

如果我具有对计算机的超级用户访问权限(但对虚拟机管理程序没有访问权限),是否可以临时导致只读。

该卷通过so can see, but not written grep '.\{80\}' test.txt sed -i "s/\(.\{3\}\)/\1\n--/" test.txt 挂载。这是记录:

/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

2 个答案:

答案 0 :(得分:4)

是的,您可以做到。但是这里提出的方法可能会导致数据丢失,因此只能用于测试。

假设您已将/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

答案 1 :(得分:0)

当我遇到磁盘损坏等问题时,我使用了ntfsfix。 请查看这些命令是否可以解决问题。

Foo<tag<1, true>> foo;