Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 模拟已安装的卷错误以导致只读大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

几天前,我们遇到了一个意外错误,其中我们的RedHat linux机器上的一个挂载驱动器变为只读.问题是由数据中心的网络中断引起的. 现在我需要看看我是否可以重现相同的行为,即在应用程序运行时将驱动器重新挂载为只读. 我试图重新安装它是只读的但是没有用,因为有文件被打开(正在写日志). 如果我具有对计算机的root访问权限(但无法访问管理程序),是否有一种临时导致只读的方法. 该卷通过/ etc
几天前,我们遇到了一个意外错误,其中我们的RedHat linux机器上的一个挂载驱动器变为只读.问题是由数据中心的网络中断引起的.

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

我试图重新安装它是只读的但是没有用,因为有文件被打开(正在写日志).

如果我具有对计算机的root访问权限(但无法访问管理程序),是否有一种临时导致只读的方法.

该卷通过/ 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,请执行以下操作:

>首先,卸下它.您可能需要先关闭所有使用它的应用程序.
>配置循环设备以镜像/ dev / vdb的内容

losetup /dev/loop0 /dev/vdb

>然后,挂载/ dev / loop0而不是/ dev / vdb:

@H_150_24@mount /dev/loop0 /opt/sunapp -o rw,errors=remount-ro

>现在,您可以运行您的应用程序.当需要将/ 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 – 模拟已安装的卷错误以导致只读全部内容,希望文章能够帮你解决linux – 模拟已安装的卷错误以导致只读所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。