小编Tot*_*tor的帖子

Linux md-RAID 如何处理磁盘读取错误?

有2种情况:

  • read 命令在内核级别超时(默认为 30 秒),
  • 在内核失去耐心之前,驱动器报告它无法读取给定扇区(我感兴趣的情况)。

内核超时

由于驱动器访问通常通过 Linux SCSI 层,我认为超时情况完全由该层处理。根据此文档,它会在重置驱动器、总线、主机等后多次尝试该命令。如果这些都不起作用,SCSI 层将使设备脱机。在这一点上,我认为 md 层只是“发现”一个驱动器不见了,并将其标记为丢失(失败)。这样对吗?

驱动器报告错误

某些驱动器可以配置为在达到特定超时后报告读取错误,从而中止内部恢复尝试。这称为ERC(或 TLER、CCTL)。磁盘超时通常配置为操作系统超时(或硬件 RAID 控制器)之前触发,以便后者知道真正发生了什么,而不仅仅是“等待和中止”。

我的问题是:Linux(和 md)如何处理驱动器报告的读取错误?

它会再试一次,做一些聪明的事情,还是只是让驱动器脱机而不通过上面“内核超时”中描述的所有尝试?当这种事情发生时,md 甚至知道吗?

有些人认为ERC 在 Linux 上很危险,因为它不会给驱动器足够的时间来尝试恢复。他们还说 ZFS-raid 很好,因为如果发生读取错误,由于 RAID 冗余,它会计算丢失的不可读扇区数据,并将其覆盖回驱动器。然后后者应该停止尝试读取讨厌的扇区,自动将其标记为坏的(不再使用),并将其重新映射到一个良好的扇区。

md 也能做到这一点吗?

software-raid error-handling linux-kernel disk md

5
推荐指数
1
解决办法
3944
查看次数

通过询问内核知道哪个目录是“mount -o bind”(Linux)

如果我这样做mount -o bind /my/dir /mnt/tmp,我可以看到的内容/my/dir之内/mnt/temp。但是,如果我输入 ,则会cat /proc/mounts得到以下输出:

/dev/sda7 /my ext4 rw,relatime,user_xattr,barrier=1,data=ordered 0 0
/dev/sda7 /mnt/tmp ext4 rw,relatime,user_xattr,barrier=1,data=ordered 0 0
Run Code Online (Sandbox Code Playgroud)

如您所见,我知道那sda7是底层设备,但我不知道该文件系统中的哪个目录在/mnt/temp.

如果不输入mount不依赖于内核而是依赖于/etc/mtab. 我想从内核本身获取信息。

编辑:这将是很好,如果该解决方案还可以用于约束目录工作在安装时/etc/fstab用这种线:/my/dir /mnt/temp none bind 0 0

linux mount linux-kernel

5
推荐指数
1
解决办法
848
查看次数

使用限制性防火墙规则通过 SSL 处理 FTP 的正确方法?

如果没有 SSL,FTP 可以在有状态防火墙上正常工作,例如 netfilter ( iptables) +nf_conntrack_ftp内核模块,如下所示:

# modprobe nf_conntrack_ftp
# iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

问题在于,当使用 SSL 时,FTP 连接跟踪模块无法工作,因为它无法窥探会话以发现选择用于数据交换的会话端口。因此无法动态打开该端口。

是否有一种正确的方法可以使启用 SSL 的 FTP 服务器正常工作,而无需禁用防火墙?

有关信息,我使用vsftpdssl_enable=YES配置选项。

ftp firewall iptables ssl ftps

5
推荐指数
1
解决办法
4063
查看次数

列出来自特定代号或套件的软件包(基于 apt 的系统)

我已经知道如何列出来自给定“来源”的每个包,这要归功于aptitude 出色的搜索功能

aptitude search "?origin(My Backports)"
Run Code Online (Sandbox Code Playgroud)

然而,在存储库Release文件中,不仅有Origin:,还有Codename:Suite:。例如,当前的Debian Release 文件有:

Origin: Debian
Suite: stable
Codename: wheezy
Run Code Online (Sandbox Code Playgroud)

我如何搜索那些CodenameSuite

aptitude apt package-management

5
推荐指数
1
解决办法
724
查看次数

使 grub 菜单显示得更快(不像动画)

我不确定它是否应该是那样或者它是否是一个错误,但我不得不看着我的 Grub 菜单屏幕缓慢地构建自己。我必须看着它在菜单周围画线,就像是 C64 做图形和其他东西一样。大约需要 5 秒,直到我终于可以看到菜单项并选择一项。

知道如何摆脱它吗?如果重要的话,我正在运行 Ubuntu Gnome 16.04。

boot grub2

5
推荐指数
1
解决办法
2213
查看次数

在哪里可以找到 /dev/sda1 分区上的 VBR?

我有一个内置硬盘/dev/sda,看起来像这样:

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 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 identifier: 0x00042134

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   293048319   146523136   83  Linux
/dev/sda2       293050366   312580095     9764865    5  Extended
/dev/sda5       293050368   312580095     9764864   82  Linux swap / Solaris
Run Code Online (Sandbox Code Playgroud)

现在我可以轻松找到带有 的 MBR xxd …

linux boot boot-loader hard-disk mbr

4
推荐指数
2
解决办法
2202
查看次数

在 Linux 上无损地更改 JPEG 的 dpi 值

如何更改dpi记录在 JPEG 文件中的值而不实际触及任何其他内容,也不重新压缩图像?

欢迎使用 Linux 兼容的解决方案。

这个 2011 年的链接说我们当时可能没有工具来做到这一点......

linux jpeg dpi

4
推荐指数
1
解决办法
1615
查看次数

如何使终端模拟器在 HiRes 屏幕上可用?

在具有 3200x1800 屏幕的 Debian Stretch 上,使用 Cinnamon 桌面,界面大小相当合适。

但是,我习惯于xterm作为终端使用。问题:窗口在我的屏幕上显得小得可笑。同样的事情rxvt.

所以,现在,我用gnome-terminal它工作得很好,但我不喜欢它多。

如何使终端模拟器在高分辨率屏幕上可用?

terminal-emulator resolution

4
推荐指数
1
解决办法
1394
查看次数

查看 Linux 上的进程使用 malloc() 保留了多少内存

我知道如果一个进程做了一个malloc()但实际上并没有在这个内存上写,Linux 会认为这个内存是空闲的并且可以被其他进程使用(过度使用)。

无论如何,有没有办法知道malloc()给定进程占用了多少内存?(即使没有使用)

此信息存在于 中的系统范围内/proc/meminfo,但我想知道特定过程。

我挖了进去,/proc/<PID>/{smaps,stat,statm}但我不确定它是否显示了这些信息。

linux process memory

4
推荐指数
1
解决办法
3223
查看次数

更改窗口周围的边框颜色(编辑 GTK 主题)

我正在使用一个相当新的版本Cinnamon(5.4.12),带有桌面主题Adwaita-darkAdwaita有时)。

当我启动一个gnome-terminal窗口时,它周围有一个非常细的(1px?)白色边框。但由于我喜欢黑色终端,所以我为其配置了黑色背景,但现在我再也看不到窗口边框了。其他深色背景应用程序也会发生这种情况。

当终端窗口重叠,甚至彼此相邻时,区分哪个是哪个可能会非常令人困惑。

我尝试改变这种颜色但没有成功:

  • 通过在 中搜索主题文件/usr/share/themes/Adwaita
  • 通过玩来~/.config/gtk-3.0/gtk.css覆盖一些配置,
  • 通过阅读 其他 类似的 问题,但它们要么已经过时,要么不适用于我的用例。

那么,如何将gnome-terminal窗口(以及可能所有其他窗口)的边框颜色更改为白色?

gtk theme gnome-terminal cinnamon

4
推荐指数
1
解决办法
4234
查看次数

rfkill:输入处理程序已禁用

当我启动我的 Linux 系统(Debian/stable)时,我看到最后一行dmesg状态:

[   44.043657] rfkill: input handler disabled
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

debian linux-kernel

3
推荐指数
1
解决办法
2838
查看次数

Debian 7 apt 正在使用“官方”相同版本升级我的自定义反向移植包!

并祝大家新年快乐..

最近我从 debian backport 源构建了 nginx deb 包 v1.4.4,当然我已经将它添加到 apt sources.list 并且一切顺利。

我已经跑apt-get update那么apt-get -V upgrade今天检查的debian如何贴切7会表现得..这是我得到了什么:

root@debian-lab:~/nginx-1.4.4-packages# apt-get -V upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
   nginx-full (1.4.4-1~bpo70+1 => 1.4.4-1~bpo70+1)
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/464 kB of archives.
After this operation, 9,027 kB disk space will be freed.
Do you want to continue …
Run Code Online (Sandbox Code Playgroud)

debian apt upgrade backports

2
推荐指数
1
解决办法
1248
查看次数

netcat 捕获以太网

如何确保以下命令的结果:

nc eth0 &> capture.txt
Run Code Online (Sandbox Code Playgroud)

会捕获通过 eth0 传输的数据 + 错误吗?

networking ethernet netcat

1
推荐指数
1
解决办法
1323
查看次数