小编Tot*_*tor的帖子

将 shell 的 read 命令与实时编辑功能一起使用(类似 readline)

是否有标准 (POSIX) 方式从 shell 脚本中询问用户一些数据read,例如,同时允许实时编辑正在键入的文本(readline 是做什么的)?

我知道bashread -e varname,允许什么刚刚输入而不会退格键删除最后输入的字符启动脚本中使用键盘箭为例的人,要修改或更正。

但是,read -ebash 特定的。而且,如果您意识到在长句的开头犯了错误,删除所有已写的内容仍然非常麻烦......

shell bash posix readline

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

是否可以在不重新启动的情况下扩大 / 分区?

我可以在不重新启动的情况下扩大根 ( /) 分区fdisk(删除使用相同的第一个扇区重新创建它,但最后一个扇区更大)。

但是,我无法让内核重新读取分区表

# partx -va /dev/vda
partx: /dev/vda: adding partition #5 failed: Device or resource busy
partx: /dev/vda: error adding partition 5

# kpartx -va /dev/vda
device-mapper: reload ioctl on vda5 failed: Invalid argument
add map vda5 : 0 41492480 linear 0:0 2048

# hdparm -z /dev/vda
/dev/vda:
 re-reading partition table
 BLKRRPART failed: Device or resource busy

# sfdisk -R /dev/vda
BLKRRPART: Device or resource busy
This disk is currently in use. …
Run Code Online (Sandbox Code Playgroud)

linux partition sfdisk

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

将单驱动器 LVM 卷转换为跨 3 个驱动器的条带卷

在我使用 LVM 的服务器上,我在单个驱动器 (PV) 上有一个简单的线性 LV。现在,我向服务器添加了另外 2 个(相同大小)驱动器 (PV)。

如果可能的话,我想将我现有的线性 LV 转换为跨 3 个驱动器的条带化 LV(类似 RAID0)。由于条带化,这将使我能够提高性能。我知道这在理论上是可能的。

我尝试了很多东西,比如基于这个网站技术为我的 LV 创建一个条纹镜像,但在我的情况下它更复杂,因为我想继续使用原始驱动器(在网站上,它是从单个驱动器的迁移LV 到 3 个其他驱动器)。

我越来越熟悉 pvmove,lvconvert和其他 LVM 工具,但没有成功。请帮忙。:)

如果需要,我在另一个驱动器上的额外空间很少(大约是我原始 LV 大小的 5%)。

lvdisplay -m的如下:

--- Logical volume ---
LV Path                /dev/vg_space/vol_space
LV Name                vol_space
VG Name                vg_space
LV Status              available
# open                 1
LV Size                260.75 GiB
Current LE             66752
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently …
Run Code Online (Sandbox Code Playgroud)

storage lvm

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

什么在使用我的交换空间?

在 Debian Linux 3.16 机器上,我使用了 244 MB 的交换空间:

# free -h
             total       used       free     shared    buffers     cached
Mem:           94G        36G        57G       1.9G       3.8G        11G
-/+ buffers/cache:        20G        73G
Swap:         487M       244M       243M
Run Code Online (Sandbox Code Playgroud)

看看这个,我找不到使用的 244 MB。

# for file in /proc/*/status ; do grep VmSwap $file; done | sort -nk 2 | tail
VmSwap:        0 kB
VmSwap:        0 kB
VmSwap:        0 kB
VmSwap:        0 kB
VmSwap:        0 kB
VmSwap:        0 kB
VmSwap:        4 kB
VmSwap:       12 kB
VmSwap:       16 kB
VmSwap: …
Run Code Online (Sandbox Code Playgroud)

swap linux-kernel

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

Linux VM 的磁盘变为只读 = 除了重启别无选择?

我在 VMware + SAN 上有几个 Linux VM。

发生了什么

SAN 上出现问题(失败路径),因此有一段时间,Linux VM 驱动器上出现 I/O 错误。当路径故障转移完成时,为时已晚:每台 Linux 机器都认为其大部分驱动器不再“值得信赖”,将它们设置为只读设备。根文件系统的驱动器也受到影响。

我试过的

  • mount -o rw,remount / 没有成功,
  • echo running > /sys/block/sda/device/state 没有成功,
  • 深入挖掘/sys以找到解决方案,但没有成功。

我可能没有尝试过的

  • blockdev --setrw /dev/sda

最后...

我不得不重新启动我所有的 Linux VM。Windows 虚拟机很好...

来自 VMware 的更多信息...

问题描述为here。VMware 建议增加 Linux scsi 超时以防止发生此问题。

问题!

但是,当问题确实最终会发生,有没有办法让驱动器回读写模式?(一旦 SAN 恢复正常)

linux vmware block-device readonly reboot

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

在 Linux 上设置默认 IO 调度程序的推荐方法是什么?

我想deadline成为我系统的默认 IO 调度程序,并且我不想在重新启动时丢失该配置。这样做的正确方法是什么?(我正在使用 Debian)

一些提示:

  • 有一个启动脚本在做echo deadline >| /sys/block/sda/queue/scheduler
  • 在 GRUB 启动配置中使用内核参数 elevator=deadline
  • 使用udev类似的规则SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="deadline"
  • 等等。

什么是“首选”解决方案?

编辑:我可以有一个配置,将 iosched 设置为deadline仅适用于启动时存在的驱动器,而不适用于后续的热插拔驱动器(如 USB 密钥)?

scheduling io debian configuration

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

“mount -o remount,ro”是否刷新文件系统缓冲区?

在Linux上,是否mount -o remount,ro刷新文件系统缓冲区/缓存,或者我也应该运行sync来实现这一点?

linux filesystems mount buffer

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

为什么可以使用此 sftp 配置离开 CHROOT?

我正在尝试创建用户 lenny,该用户在文件夹中/home/lenny/具有读写权限,并且没有外壳,但只能通过 SFTP 访问。我正在做以下事情:

useradd lenny
mkdir /home/lenny
usermod -d /home/lenny lenny
passwd lenny
chown lenny:lenny /home/lenny
chmod 755 /home/lenny
usermod -s /bin/false myuser
Run Code Online (Sandbox Code Playgroud)

然后我修改了/etc/ssh/sshd_config

Subsystem sftp internal-sftp`  

Match User lenny
ChrootDirectory /home/lenny
ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)

现在,当我这样做时,sftp lenny@server我可以通过执行cd /和轻松离开 CHROOT ls -la,我看到了一切!

这是为什么???我不明白,配置应该没问题,还是我错了?

linux chroot ssh sftp debian

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

Linux 上“blockdev --flushbufs”和“sync”之间的区别?

在 Linux 上运行blockdev --flushbufs和在实践上有区别sync(1)吗?(除了blockdev针对特定设备进行刷新和sync系统范围内的冲洗)。

sync(1)手册页说它刷新文件系统缓冲区(仅?)。如果在dd不经过文件系统层的情况下对驱动器进行 I/O(比如),sync真的无效吗?

我什么时候应该使用一个而不是另一个?

linux buffer disk

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

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
查看次数