AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-589943

melonfsck's questions

Martin Hope
melonfsck - she her
Asked: 2024-10-05 19:22:30 +0800 CST

为什么中断中的异常总是导致Kernel Panic?

  • 10

如果在为用户进程提供服务(如系统调用或页面调入)的上下文中或在进程中发生内核中的 CPU 异常(如错误的内存访问或无效的操作码),则在设置kthread之前,panic_on_oops有用的信息将被转储,任务将终止。无需惊慌。有时系统仍然完全可用。足以让用户尝试同步磁盘、正常终止程序,并以其他方式为紧急重启做准备。

但不幸的是,如果异常发生在原子上下文中(如中断或软中断),则采取的操作始终是内核恐慌(带有描述"Fatal exception in interrupt")——无论任何设置或构建时配置如何。这很可悲。为什么不能模拟中断返回,并保持系统运行,希望某些部分仍能正常工作?谢谢。

我知道我可以mdelay()在“中断异常”的代码路径中放置一个无限,而不是panic(),这样只会让本地 CPU 停滞。但通常在发生这种情况后就没有什么可以做的事情了……即使机器中有数百个 CPU,它们很快就会全部锁定。所以不是很有用。

process
  • 2 个回答
  • 68 Views
Martin Hope
melonfsck - she her
Asked: 2024-09-17 06:08:20 +0800 CST

为什么对于特定文件,“cat | wc -c”显示的大小与“ls -l”不同?

  • 9

发行版是 Ubuntu 22.04,我正在运行一个新创建的ext4文件系统,我已将设置复制到该文件系统(在另一台机器上使用 rsync)。我正在运行手动编写的(python)文件系统性能测试,该测试在不同的机器上正常工作。完全偶然地,我发现wc(或ls)中存在某种不正确的行为,这种行为仅针对我系统上的特定文件表现出来 - 就我目前发现的而言 - /usr/bin/pkexec。如果这相关,则该框正在运行官方 Ubuntu 的 coreutils 版本 8.32-4。

这是我针对任何不同文件所讨论的操作的示例:

$ ls -l /usr/bin/top
-rwxr-xr-x 1 root root 379389 Jun 11 12:04 /usr/bin/top
$ cat /usr/bin/top | wc -c
379389
$

注意 ls 和 wc 显示的尺寸。它们是相同的。

现在,有一个文件/usr/bin/pkexec。根据手册页,

      pkexec - Execute a command as another user

发生了这种情况

$ ls -l /usr/bin/pkexec
-rwsr-xr-x 1 root root 519851 Jun  11 12:04 /usr/bin/pkexec
$ cat /usr/bin/pkexec | wc -c
32145
$

大小不同。确实不同。
我认为这与某些文件系统损坏有关,我在恢复模式下运行了 fsck。什么都没有改变。
然后我将磁盘带到最初执行 rsync 的机器上。(它运行的是 Arch Linux)。我在那里挂载了 Ubuntu 的根分区。哇!

# ls -l /mnt/disk/usr/bin/pkexec
-rwsr-xr-x 1 root root 519851 Jun  11 12:04 /mnt/disk/usr/bin/pkexec
# cat /mnt/disk/usr/bin/pkexec | wc -c
519851
#

这里显示的大小相等。我不明白。我有一个不同版本的 Ubuntu 机器,上面文件的信息如下:

$ ls -l /usr/bin/pkexec
-rwsr-xr-x 1 root root 32145 Jul  26 14:45 /usr/bin/pkexec
$ cat /usr/bin/pkexec | wc -c
32145
$

wc这里的大小匹配。我发现此版本的 Ubuntu 中此文件的正确大小是“32145”。但在第一台机器上,我看到和中的大小甚至不匹配ls。我可能有这些解释

  • 机器安装了不同的更新。但为什么实用程序之间显示的大小不同?
  • 这是对该二进制文件的某种运行时保护/usr/bin/pkexec,因为我看到它是 SUID - 也许操作系统通过向用户显示不正确的数据来保护它?但为什么这种行为只在一台机器上出现,而在另一台机器上没有出现呢?

感谢您的帮助和解释。我想我不了解 Linux 的一些重要内容。

PS如果我使用 Python 等语言读取目录“/usr/bin”,并检索文件的元数据,问题也会出现。然后我读取每个文件并检查结果长度。pkexec元数据中为 - 时,结果为 519851 字节。但如果我读取文件,结果会短得多 - 只有 32145 字节。谢谢。

ubuntu
  • 1 个回答
  • 88 Views
Martin Hope
melonfsck
Asked: 2024-06-30 20:16:09 +0800 CST

如何恢复失效的 DM 快照?

  • 5

我正在使用设备映射器快照。

假设这/dev/sda是只读的原始设备,并且/dev/sdb是 COW 设备。我通过以下方式创建了持久快照:

# cat /dev/zero > /dev/sdb
# dmsetup create mysnap
0 1000000000 snapshot /dev/sda /dev/sdb P 16
^D
# ls /dev/mapper/
control    mysnap
#

一段时间内,它运行良好。

每次启动后,为了重新连接我的持久快照,我都会运行相同的命令:

dmsetup create mysnap
0 1000000000 snapshot /dev/sda /dev/sdb P 16

但有一天我在操作过程中不小心断开了只读的 origin 设备(COW 设备还在)。出现了这样的内核消息:

device-mapper: snapshots: Invalidating snapshot: error reading/writing

发生这种情况后,任何尝试附加快照(在任何机器上)都会导致错误:

device-mapper: snapshots: Snapshot is marked invalid

设备mysnap已创建,但它拒绝任何读/写并显示“输入/输出错误”。

是否可以清除 DM 快照上的“无效”状态并将其恢复,或者至少恢复数据?
我相信这种“无效”状态完全是人为的,因为根据我的经验,持久性 DM 快照在整个系统崩溃后仍能幸存下来。

disk
  • 1 个回答
  • 28 Views
Martin Hope
melonfsck
Asked: 2024-06-01 21:30:09 +0800 CST

nvidiafb 除法错误 (GT710)

  • 5

我不需要插入nouveau或安装专有驱动程序的“帮助”。问题是关于nvidiafb.谢谢。


我在 Linux 6.9-rc2 上使用 nvidia GT710 GPU。我想nvidiafb为我的旧 GPU 使用简单的驱动程序。在该系统上,我只需要帧缓冲区,不需要其他任何东西(没有 DRI)。但nvidiafb不起作用,它崩溃了。

# modprobe nvidiafb
Killed
#
nvidiafb: Device ID: 10de1287
Console: switching to colour dummy device 80x25
nvidiafb 0000:03:00.0: vgaarb: deactivate vga console
nvidiafb: CRTC0 analog not found
nvidiafb: CRTC1 analog not found                            
nvidiafb: Unable to detect display type...
...Using default of CRT
nvidiafb: Unable to detect which CRTCNumber...
...Defaulting to CRTCNumber 0                               
nvidiafb: Using CRT on CRTC 0                               
fbcon: NV28 (fb0) is primary device

divide error: 0000 [#1] PREEMPT_RT SMP                     
CPU: 0 PID: 194915 Comm: modprobe Tainted: G           OE      6.9.0-rc2-home-rt+ #3                                                                    Hardware name: OEM X79G/X79G, BIOS 4.6.5 08/02/2022
RIP: 0010:nvGetClocks+0x18f/0x290 [nvidiafb]
Code: 0f 84 91 00 00 00 3d 30 03 00 00 0f 84 86 00 00 00 41 8b 89 04 05 00 00 0f b6 c5 44 0f b6 c9 c1 e9 10 0f af c2 31 d2 83 e1 0f <41> f7 f1 d3 e8 89 06 48 8b 87 a8 12 00 00 8b 88 00 05 00 00 0f b6
RSP: 0018:ffffa681b17e74e0 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffff921541eb4518 RCX: 0000000000000000
RDX: 0000000000000000 RSI: ffffa681b17e7520 RDI: ffff921541eb4420
RBP: ffffa681b17e74e8 R08: ffffa681b17e7524 R09: 0000000000000000                                                                                           R10: ffff921541eb4420 R11: 00000000002e18c8 R12: 0000000000000020                                                                                           R13: 0000000000000008 R14: 0000000000000008 R15: 0000000000000068
FS:  00007fa3af639c40(0000) GS:ffff922406200000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f2f8401f000 CR3: 00000010275bc001 CR4: 00000000001706f0
Call Trace:
<TASK>
  ? show_regs+0x6b/0x80
  ? __die_body+0x24/0x70
  ? die+0x42/0x70
  ? do_trap+0xde/0x100
  ? do_error_trap+0x73/0xa0
  ? nvGetClocks+0x18f/0x290 [nvidiafb]
  ? exc_divide_error+0x3f/0x60
  ? nvGetClocks+0x18f/0x290 [nvidiafb]
  ? asm_exc_divide_error+0x1f/0x30
  ? nvGetClocks+0x18f/0x290 [nvidiafb]
  NVCalcStateExt+0x1da/0x9b0 [nvidiafb]
  ? set_inverse_trans_unicode+0xd0/0x100
  ? kmalloc_trace+0xac/0x280
  nvidiafb_set_par+0x4a3/0xa40 [nvidiafb]
  fbcon_init+0x2af/0x600                                       
  visual_init+0xf2/0x190                                       
  do_bind_con_driver+0x1d2/0x4a0  
  do_take_over_console+0x144/0x240
  ? vprintk_default+0x21/0x30
  do_fbcon_takeover+0x78/0x130                               
  do_fb_registered+0x139/0x270
  fbcon_fb_registered+0x3b/0x90                              
  ? fb_add_videomode+0x81/0xf0
  register_framebuffer+0x20a/0x300                           
  nvidiafb_probe+0x6a4/0xad0 [nvidiafb]
  ? rt_spin_unlock+0x1c/0x50                                
  local_pci_probe+0x4f/0xb0
  pci_device_probe+0xcc/0x280
  really_probe+0xff/0x390
  __driver_probe_device+0x8a/0x170
  driver_probe_device+0x23/0xb0
  __driver_attach+0xc9/0x190                                 
  ? __pfx___driver_attach+0x10/0x10
  bus_for_each_dev+0x80/0xd0                                 
  driver_attach+0x22/0x30
  bus_add_driver+0x123/0x230
  driver_register+0x68/0x130
  ? __pfx_nvidiafb_init+0x10/0x10 [nvidiafb]
  __pci_register_driver+0x6e/0x80                             
  nvidiafb_init+0x37/0x50 [nvidiafb]                         
  do_one_initcall+0x4c/0x310                                 
  ? do_init_module+0x28/0x270                                
  ? kmalloc_trace+0xac/0x280
  do_init_module+0x6a/0x270                                  
  load_module+0x221b/0x22e0
  init_module_from_file+0x9c/0xe0                            
  ? init_module_from_file+0x9c/0xe0                        
  idempotent_init_module+0x173/0x230                         
  __x64_sys_finit_module+0x61/0xc0                           
  do_syscall_64+0x79/0x120                                 
  ? ksys_mmap_pgoff+0x11c/0x260                              
  ? syscall_exit_to_user_mode+0x87/0x1c0
  ? do_syscall_64+0x85/0x120                                 
  ? do_syscall_64+0x85/0x120
  entry_SYSCALL_64_after_hwframe+0x71/0x79
RIP: 0033:0x7fa3af75988d
Code: 5b 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 73 b5 0f 00 f7 d8 64 89 01 48                                                      RSP: 002b:00007ffe8864c978 EFLAGS: 00000246 ORIG_RAX: 0000000000000139                                                                                      RAX: ffffffffffffffda RBX: 0000563b56dcbf80 RCX: 00007fa3af75988d                                                                                           RDX: 0000000000000000 RSI: 0000563b56dbacd2 RDI: 0000000000000005                                                                                           RBP: 0000000000040000 R08: 0000000000000000 R09: 0000000000000002                                                                                            R10: 0000000000000005 R11: 0000000000000246 R12: 0000563b56dbacd2                                                                                           R13: 0000563b56dcc1b0 R14: 0000563b56dcc950 R15: 0000563b56dc5110                                                                                            
</TASK>                                                    Modules linked in: nvidiafb(+) vgastate fb_ddc vmnet(OE) vmw_vsock_vmci_transport vsock vmw_vmci vmmon(OE) ip6t_REJECT nf_reject_ipv6 ip6t_rt ipt_REJECT nf_reject_ipv4 xt_recent nft_limit xt_limit xt_addrtype xt_tcpudp xt_pkttype nft_chain_nat xt_MASQUERADE xt_nat nf_nat xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nft_compat nf_tables nfnetlink binfmt_misc intel_rapl_msr intel_rapl_common sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_realtek snd_hda_codec_generic snd_hda_scodec_component snd_hda_codec_hdmi nls_iso8859_1 snd_hda_intel snd_intel_dspcfg input_leds snd_intel_sdw_acpi kvm joydev snd_hda_codec snd_hda_core snd_hwdep snd_pcm snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq rapl snd_seq_device intel_cstate snd_timer serio_raw pcspkr snd ioatdma soundcore dca mac_hid sch_fq_codel dm_multipath scsi_dh_rdac scsi_dh_emc scsi_dh_alua parport_pc ppdev lp parport efi_pstore ip_tables x_tables autofs4 btrfs raid10 raid456 async_raid6_recov async_memcpy
  async_pq async_xor async_tx raid1 raid0 gpu_sched drm_gpuvm drm_exec mxm_wmi video wmi i2c_algo_bit drm_ttm_helper ttm drm_display_helper cec rc_core drm_kms_helper cdc_ether usbnet drm hid_generic psmouse r8152 usbhid crct10dif_pclmul crc32_pclmul uas ghash_clmulni_intel sha512_ssse3 usb_storage hid sha256_ssse3 ahci sha1_ssse3 mii r8169 i2c_i801 libahci lpc_ich i2c_smbus realtek aesni_intel crypto_simd cryptd
---[ end trace 0000000000000000 ]---                       
RIP: 0010:nvGetClocks+0x18f/0x290 [nvidiafb]
Code: 0f 84 91 00 00 00 3d 30 03 00 00 0f 84 86 00 00 00 41 8b 89 04 05 00 00 0f b6 c5 44 0f b6 c9 c1 e9 10 0f af c2 31 d2 83 e1 0f <41> f7 f1 d3 e8 89 06 48 8b 87 a8 12 00 00 8b 88 00 05 00 00 0f b6                                                     
RSP: 0018:ffffa681b17e74e0 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffff921541eb4518 RCX: 0000000000000000                                                                                          RDX: 0000000000000000 RSI: ffffa681b17e7520 RDI: ffff921541eb4420                                                                                          
RBP: ffffa681b17e74e8 R08: ffffa681b17e7524 R09: 0000000000000000
R10: ffff921541eb4420 R11: 00000000002e18c8 R12: 0000000000000020                                                                                           
R13: 0000000000000008 R14: 0000000000000008 R15: 0000000000000068                                                                                         
FS:  00007fa3af639c40(0000) GS:ffff922406200000(0000) knlGS:0000000000000000                                                                                
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f2f8401f000 CR3: 00000010275bc001 CR4: 00000000001706f0

note: modprobe[194915] exited with preempt_count 2

到底是什么问题导致它无法与我的 GPU 一起正常工作?处的划分nvGetClocks+0x18f/0x290位于video/fbdev/nvidia/nv_hw.c,可能在这里(第 213 行)。对于这个特定的 GPU(而不是其他较旧的 GPU),除法的除数部分如何最终为零?

谢谢。

kernel
  • 1 个回答
  • 92 Views
Martin Hope
melonfsck
Asked: 2024-05-24 22:32:36 +0800 CST

Xorg FBDEV 拒绝使用指定的帧缓冲区

  • 5

我将 Xorg 与FBDEV驱动程序一起使用,配置:

Section "Device"
    Identifier "Device0"
    Driver "fbdev"
    Option "fbdev" "/dev/fb0"
    Option "ShadowFB" "false"
EndSection

我的系统中有一个新的帧缓冲区设备,它是/dev/fb1.我调整了配置:

Section "Device"
    Identifier "Device0"
    Driver "fbdev"
    Option "fbdev" "/dev/fb1"
    Option "ShadowFB" "false"
EndSection

但是不行,还是用/dev/fb0,甚至打不开/dev/fb1。我正在使用基于 Ubuntu(基于 Jammy)的操作系统并xserver-xorg-video-fbdev安装了软件包。如果我这样做,一切都会顺利

mount --bind /dev/fb1 /dev/fb0

但这不是一个选项,因为我想访问两个帧缓冲区(所以我撤消了umount /dev/fb0它)。
谢谢你的帮助

x11
  • 1 个回答
  • 16 Views
Martin Hope
melonfsck
Asked: 2024-04-05 04:19:47 +0800 CST

如何为页面大小不是 4096 的 x86_64 编译 Linux?

  • 6

我试图编译页面大小高于 4096 的 x64 Linux 内核。需要通过 VFS 挂载具有高块大小的文件系统。在其他架构上,我可以使用内核配置选择页面大小。它不适用于 x86_64。是否可以更改 x86_64 上的页面大小?我尝试将 PAGE_SHIFT 增加到 16 arch/x86/include/asm/page_types.h,但它只会导致错误。

如果可以在 x86_64 上构建不同的页面大小,那么支持哪些页面大小以及正确的配置是什么?

linux-kernel
  • 1 个回答
  • 30 Views
Martin Hope
melonfsck
Asked: 2024-03-19 01:32:56 +0800 CST

当 FS 处于读/写状态时,直接写入文件的范围是否安全?

  • 6

给定 ext4 文件系统上的任何文件,都可以(使用filefrag -v)获取该文件在底层块设备上的实际偏移量+长度列表。

当文件系统以读写方式安装时,打开设备并向它们写入是否安全?它会导致 fs 损坏吗? 我这么问是因为我将实现一个替代loop驱动程序,它将完全绕过文件系统层,因此具有更好的性能。

如果我没记错的话,交换文件就是这样实现的。如果说的有什么不对的地方请指正。
答案是否依赖于文件系统?如果文件突然被删除,并且这些偏移量被某些元数据重用,会发生什么?
最后,有没有办法锁定文件,防止其被e4defrag或类似的东西重新定位?防止文件被删除(位于内核空间)的最佳方法是什么?是否有一些内核内部结构可以用来获取文件范围列表​​?

filesystems
  • 1 个回答
  • 40 Views
Martin Hope
melonfsck
Asked: 2024-03-15 03:51:48 +0800 CST

为什么文件系统已卸载但仍在使用?

  • 8

我使用 ext4 文件系统很长时间了,这是我第一次看到 ext4 文件系统的奇怪行为。 底层设备中发生 I/O 错误,并且该文件系统被重新挂载为只读,其中存在
ext4 文件系统。这很好,符合配置的预期。但由于某种未知的原因,现在不可能完全卸载文件系统。 命令成功返回。进一步运行该命令会显示“未安装”。 安装条目已从命令输出中消失。文件系统未安装在其他任何地方。 但。 第一:我在 dmesg 中看不到通常的文本。事实上,dmesg 中什么也没有。 /dev/dm-2



umount /the/mount/point
mount

EXT4-fs: unmounting filesystem
第二件事(它本身就说明出了问题):

root# cat /proc/meminfo | grep dirty
Dirty:           9457728 kB
root# time sync

real    0m0.012s                                                                                
user    0m0.000s                                                                                
sys     0m0.002s
root# cat /proc/meminfo | grep dirty
Dirty:           9453632 kB

第三件事:调试目录/sys/fs/ext4/dm-2仍然存在。尝试写入“1”,希望/sys/fs/ext4/dm-2/simulate_fail它能关闭文件系统。但它什么也没做,在 dmesg 中什么也不显示。
最后,第四件事导致设备无法使用:

root# e2fsck -fy /dev/dm-2
e2fsck 1.46.5 (30-Dec-2021)
/dev/dm-2 is in use.
e2fsck: Cannot continue, aborting.

我知道可以重新启动等。这个问题不是为了解决一些简单的新手问题。我希望有 ext4 文件系统经验的人帮助我了解导致此行为的原因。
该dm-2设备没有安装在其他任何地方,没有绑定安装,也没有被其他任何东西使用。
在用 进行测量时,没有其他任何东西使用脏缓存cat /proc/meminfo | grep dirty。
成功的卸载调用不是MNT_DETACH(未-l使用标志)。尽管如此,它几乎立即成功了(这很奇怪)。挂载点不再挂载:但正如我上面所描述的,可以很容易地看出文件系统没有卸载。

更新:正如 AB 指出的,我尝试检查文件系统是否仍然安装在不同的命名空间中。我没有将它安装在不同的命名空间中,所以我没想到会看到任何东西。但是,令人惊讶的是,它被安装在不同的命名空间中,令人惊讶的是(用户名已更改):

4026533177 mnt       1 3411291 an-unrelated-nonroot-user       xdg-dbus-proxy --args=43

我尝试进入该命名空间并使用它卸载它,nsenter -t 3411291 -m -- umount /the/mount/point
这导致了分段错误(核心转储),这在 dmesg 中

[970130.866738] Buffer I/O error on dev dm-2, logical block 0, lost sync page write
[970130.867925] EXT4-fs error (device dm-2): ext4_mb_release_inode_pa:4846: group 9239, free 2048, pa_free 4
[970130.870291] Buffer I/O error on dev dm-2, logical block 0, lost sync page write
[970130.949466] divide error: 0000 [#1] PREEMPT SMP PTI
[970130.950677] CPU: 49 PID: 4118804 Comm: umount Tainted: P        W  OE      6.1.68-missmika #1
[970130.953056] Hardware name: OEM X79G/X79G, BIOS 4.6.5 08/02/2022
[970130.953121] RIP: 0010:mb_update_avg_fragment_size+0x35/0x120
[970130.953121] Code: 41 54 53 4c 8b a7 98 03 00 00 41 f6 44 24 7c 80 0f 84 9a 00 00 00 8b 46 14 48 89 f3 85 c0 0f 84 8c 00 00 00 99 b9 ff ff ff ff <f7> 7e 18 0f bd c8 41 89 cd 41 83 ed 01 0f 88 ce 00 00 00 0f b6 47
[970130.957139] RSP: 0018:ffffb909e3123a28 EFLAGS: 00010202
[970130.957139] RAX: 000000000000082a RBX: ffff91140ac554d8 RCX: 00000000ffffffff
[970130.957139] RDX: 0000000000000000 RSI: ffff91140ac554d8 RDI: ffff910ead74f800
[970130.957139] RBP: ffffb909e3123a40 R08: 0000000000000000 R09: 0000000000004800
[970130.957139] R10: ffff910ead74f800 R11: ffff9114b7126000 R12: ffff910eb31d2000
[970130.957139] R13: 0000000000000007 R14: ffffb909e3123b80 R15: ffff911d732beffc
[970130.957139] FS:  00007f6d94ab4800(0000) GS:ffff911d7fcc0000(0000) knlGS:0000000000000000
[970130.957139] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[970130.957139] CR2: 00003d140602f000 CR3: 0000000365690002 CR4: 00000000001706e0
[970130.957139] Call Trace:
[970130.957139]  <TASK>
[970130.957139]  ? show_regs.cold+0x1a/0x1f
[970130.957139]  ? __die_body+0x24/0x70
[970130.957139]  ? __die+0x2f/0x3b
[970130.957139]  ? die+0x34/0x60
[970130.957139]  ? do_trap+0xdf/0x100
[970130.957139]  ? do_error_trap+0x73/0xa0
[970130.957139]  ? mb_update_avg_fragment_size+0x35/0x120
[970130.957139]  ? exc_divide_error+0x3f/0x60
[970130.957139]  ? mb_update_avg_fragment_size+0x35/0x120
[970130.957139]  ? asm_exc_divide_error+0x1f/0x30
[970130.957139]  ? mb_update_avg_fragment_size+0x35/0x120
[970130.957139]  ? mb_set_largest_free_order+0x11c/0x130
[970130.957139]  mb_free_blocks+0x24d/0x5e0
[970130.957139]  ? ext4_validate_block_bitmap.part.0+0x29/0x3e0
[970130.957139]  ? __getblk_gfp+0x33/0x3b0
[970130.957139]  ext4_mb_release_inode_pa.isra.0+0x12e/0x350
[970130.957139]  ext4_discard_preallocations+0x22e/0x490
[970130.957139]  ext4_clear_inode+0x31/0xb0
[970130.957139]  ext4_evict_inode+0xba/0x750
[970130.989137]  evict+0xd0/0x180
[970130.989137]  dispose_list+0x39/0x60
[970130.989137]  evict_inodes+0x18e/0x1a0
[970130.989137]  generic_shutdown_super+0x46/0x1b0
[970130.989137]  kill_block_super+0x2b/0x60
[970130.989137]  deactivate_locked_super+0x39/0x80
[970130.989137]  deactivate_super+0x46/0x50
[970130.989137]  cleanup_mnt+0x109/0x170
[970130.989137]  __cleanup_mnt+0x16/0x20
[970130.989137]  task_work_run+0x65/0xa0
[970130.989137]  exit_to_user_mode_prepare+0x152/0x170
[970130.989137]  syscall_exit_to_user_mode+0x2a/0x50
[970130.989137]  ? __x64_sys_umount+0x1a/0x30
[970130.989137]  do_syscall_64+0x6d/0x90
[970130.989137]  ? syscall_exit_to_user_mode+0x38/0x50
[970130.989137]  ? __x64_sys_newfstatat+0x22/0x30
[970130.989137]  ? do_syscall_64+0x6d/0x90
[970130.989137]  ? exit_to_user_mode_prepare+0x3d/0x170
[970130.989137]  ? syscall_exit_to_user_mode+0x38/0x50
[970130.989137]  ? __x64_sys_close+0x16/0x50
[970130.989137]  ? do_syscall_64+0x6d/0x90
[970130.989137]  ? exc_page_fault+0x8b/0x180
[970130.989137]  entry_SYSCALL_64_after_hwframe+0x64/0xce
[970130.989137] RIP: 0033:0x7f6d94925a3b
[970130.989137] Code: fb 43 0f 00 f7 d8 64 89 01 48 83 c8 ff c3 90 f3 0f 1e fa 31 f6 e9 05 00 00 00 0f 1f 44 00 00 f3 0f 1e fa b8 a6 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 05 c3 0f 1f 40 00 48 8b 15 c1 43 0f 00 f7 d8
[970130.989137] RSP: 002b:00007ffdd60f7d08 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
[970130.989137] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 00007f6d94925a3b
[970130.989137] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 000055ca1c6f7d60
[970130.989137] RBP: 000055ca1c6f7b30 R08: 0000000000000000 R09: 00007ffdd60f6a90
[970130.989137] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
[970130.989137] R13: 000055ca1c6f7d60 R14: 000055ca1c6f7c40 R15: 000055ca1c6f7b30
[970130.989137]  </TASK>
[970130.989137] Modules linked in: 88x2bu(OE) erofs dm_zero zram ext2 hfs hfsplus xfs kvdo(OE) dm_bufio mikasecfs(OE) simplefsplus(OE) melon(OE) mikatest(OE) iloveaki(OE) tls vboxnetadp(OE) vboxnetflt(OE) vboxdrv(OE) ip6t_REJECT nf_reject_ipv6 ip6t_rt ipt_REJECT nf_reject_ipv4 xt_recent xt_tcpudp nft_limit xt_limit xt_addrtype xt_pkttype nft_chain_nat xt_MASQUERADE xt_nat nf_nat xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nft_compat nf_tables binfmt_misc nfnetlink nvidia_uvm(POE) nvidia_drm(POE) intel_rapl_msr intel_rapl_common nvidia_modeset(POE) sb_edac nls_iso8859_1 x86_pkg_temp_thermal intel_powerclamp coretemp nvidia(POE) snd_hda_codec_realtek snd_hda_codec_generic ledtrig_audio snd_hda_codec_hdmi cfg80211 joydev snd_hda_intel input_leds snd_intel_dspcfg snd_intel_sdw_acpi snd_hda_codec kvm_intel snd_hda_core snd_hwdep kvm snd_pcm snd_seq_midi rapl snd_seq_midi_event snd_rawmidi intel_cstate serio_raw pcspkr snd_seq video wmi snd_seq_device snd_timer drm_kms_helper fb_sys_fops snd syscopyarea sysfillrect sysimgblt soundcore
[970130.989137]  ioatdma dca mac_hid sch_fq_codel dm_multipath scsi_dh_rdac scsi_dh_emc scsi_dh_alua msr parport_pc ppdev lp parport drm efi_pstore ip_tables x_tables autofs4 raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx raid1 raid0 multipath linear crct10dif_pclmul hid_generic crc32_pclmul ghash_clmulni_intel sha512_ssse3 sha256_ssse3 sha1_ssse3 usbhid cdc_ether aesni_intel usbnet uas hid crypto_simd r8152 cryptd usb_storage mii psmouse ahci i2c_i801 r8169 lpc_ich libahci i2c_smbus realtek [last unloaded: 88x2bu(OE)]
[970131.024615] ---[ end trace 0000000000000000 ]---
[970131.203209] RIP: 0010:mb_update_avg_fragment_size+0x35/0x120
[970131.204344] Code: 41 54 53 4c 8b a7 98 03 00 00 41 f6 44 24 7c 80 0f 84 9a 00 00 00 8b 46 14 48 89 f3 85 c0 0f 84 8c 00 00 00 99 b9 ff ff ff ff <f7> 7e 18 0f bd c8 41 89 cd 41 83 ed 01 0f 88 ce 00 00 00 0f b6 47
[970131.207841] RSP: 0018:ffffb909e3123a28 EFLAGS: 00010202
[970131.209048] RAX: 000000000000082a RBX: ffff91140ac554d8 RCX: 00000000ffffffff
[970131.210284] RDX: 0000000000000000 RSI: ffff91140ac554d8 RDI: ffff910ead74f800
[970131.211512] RBP: ffffb909e3123a40 R08: 0000000000000000 R09: 0000000000004800
[970131.212749] R10: ffff910ead74f800 R11: ffff9114b7126000 R12: ffff910eb31d2000
[970131.213977] R13: 0000000000000007 R14: ffffb909e3123b80 R15: ffff911d732beffc
[970131.215181] FS:  00007f6d94ab4800(0000) GS:ffff911d7fcc0000(0000) knlGS:0000000000000000
[970131.216370] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[970131.217553] CR2: 00003d140602f000 CR3: 0000000365690002 CR4: 00000000001706e0
[970131.218740] note: umount[4118804] exited with preempt_count 1

机器仍然可以工作,可以同步其他文件系统:

root# sync -f /
root#

但不是全局同步:

root# sync
(goes D state forever)

与该 Ghost 文件系统相关的脏缓存没有消失,文件系统仍然“挂载”
这些问题的原因是什么?

filesystems
  • 1 个回答
  • 60 Views
Martin Hope
melonfsck
Asked: 2024-02-20 20:16:34 +0800 CST

EXT4 如何处理底层存储空间突然不足的情况?

  • 10

通常,块设备驱动程序会报告设备的正确大小,并且可以实际使用所有“可用”块。因此,文件系统事先知道它可以向此类设备写入多少内容。
但在某些特殊情况下,例如使用dm-thin或dm-vdo设备时,这种说法是错误的。如果这种块设备的ENOSPC底层存储(上层 FS 对此一无所知)已满,那么它们随时可能返回错误。

因此,我的问题是,在这种情况下会发生什么:EXT4 文件系统已挂载r/w,处于async模式(默认),并且正在执行大量写入。磁盘缓存(脏内存)也会参与其中,此时如果用户运行sync命令,就会有大量数据需要写入。

但突然间,该 EXT4 文件系统的底层块设备开始拒绝任何写入,因为“没有剩余空间”。文件系统的行为是什么?
它会打印错误并进入r/o中止所有写入并可能导致数据丢失的模式吗?如果没有,它是否会等待空间,定期重试写入并拒绝新写入?在这种情况下,如果其他进程尝试分配大量 RAM,巨大的磁盘缓存会发生什么情况?(在 Linux 上,脏内存被认为是可用的,不是吗?)。
考虑到最坏的情况,如果磁盘缓存在错误发生时占用了大部分 RAM ENOSPC(因为管理员已设置vm.dirty_ratio太高),内核会崩溃或锁定吗?或者它只会使所有想要分配内存的进程等待/挂起?最后,不同文件系统的行为是否有所不同?
提前致谢。

linux
  • 2 个回答
  • 353 Views
Martin Hope
melonfsck
Asked: 2024-01-29 05:51:08 +0800 CST

崩溃后是否可以从非持久 DM 快照恢复数据?

  • 6

我经常使用非持久设备映射器快照,示例表如下所示:

0 10485760 snapshot /dev/sdc3 /dev/sdc6 N 16

万一发生崩溃,我仍然拥有两者/dev/sdc3,/dev/sdc6因为磁盘是非易失性的。但是是否有可能取回该snapshot设备,或者至少以某种方式恢复更改/dev/sdc6?我知道持久快照的存在是出于我的目的,但我仍然很好奇。谢谢。

crash
  • 1 个回答
  • 33 Views
Martin Hope
melonfsck
Asked: 2023-11-01 15:05:08 +0800 CST

如何让Linux读取分区中的分区表?

  • 5

例如,我有一个(GPT 分区的)磁盘/dev/sda。

/dev/sda8是该磁盘上的一个分区。我使用该cfdisk实用程序在/dev/sda8. 我希望这些分区可以通过类似/dev/sda8p1. 但Linux并没有自动识别它们。

如何让 Linux 识别分区中的分区,并在可能的情况下实现自动化?

disk
  • 2 个回答
  • 68 Views
Martin Hope
melonfsck
Asked: 2023-10-26 05:38:05 +0800 CST

使用 SysRQ 紧急重新安装是克隆硬盘的可接受方法吗?

  • 5

我使用的是 Linux (Ubuntu),有人告诉我可以使用下面描述的方法将系统的硬盘克隆到另一个硬盘 - 插入一台新机器。(无需从 Live CD 启动)

它假设系统的磁盘是/dev/sda,以 root 身份挂载的分区是/dev/sda1,并且将其克隆到的空磁盘是/dev/sdb。

echo u > /proc/sysrq-trigger 重新挂载所有文件系统,包括以 root 只读方式挂载的文件系统。

e2fsck -fy /dev/sda1 更正了因强制 R/O 重新挂载而导致的文件系统错误。

dd if=/dev/sda of=/dev/sdb将磁盘克隆到空磁盘。

e2fsck -fy /dev/sdb1修复新克隆的文件系统。在这一步,它通常会告诉您固定的块校验和。

reboot -f 重新启动系统。在此步骤中,我断开新克隆的磁盘,并将其插入新电脑。

我已经使用此方法两次,并且所有机器都工作正常,但我担心这样做可能会导致一些危险的文件系统问题?如果是,为什么?我以后应该避免使用这种方法克隆硬盘吗?

linux
  • 2 个回答
  • 54 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve