小编Mat*_*nco的帖子

有人可以通过互联网嗅探 NFS 吗?

我想使用 NFS 从工作中连接到我的家庭服务器。我试过 sshfs 但有人说它不如 NFS 可靠。

我知道 sshfs 流量是加密的。但是 NFS 呢?有人可以嗅探我的流量并查看我正在复制的文件吗?

我在 LAN 中使用 NFSv4,效果很好。

security nfs

30
推荐指数
3
解决办法
4万
查看次数

在虚拟控制台上启动 getty 的最小 systemd 启动需要什么?

对于SysV的init,我需要/etc/inittab重生的getty项目中,/sbin/init二进制,二进制文件和共享库的外壳,logingetty,的PAM /安全性/阴影的东西,和一些设备文件。

因为upstart我需要几乎相同的要求,但不是/etc/inittab,我在下面有几个*.conf文件/etc/init:一个 *.confstart on startup设置运行级别telinit,每个 tty 的 *.confgetty在适当的运行级别上在该 tty 上启动/重新生成.

我需要什么配置和二进制文件systemd init

我发现的所有文档似乎都集中在如何使用已安装的系统来启动和停止服务。

从正在运行的Archfedora安装中复制的最小文件列表(内核/initrd 除外)就可以了,但我似乎找不到关于systemd.


我想知道的是,systemd在 initramfsswitch_root调用systemd /sbin/init.


例如upstart,二进制文件和两个*.conf文件:

文件/etc/init/whatever.conf

启动时开始
发出运行级别
任务
脚本
  telinit 2
结束脚本

文件/etc/init/tty1.conf

从运行级别开始 [12345]
重生
exec /sbin/agetty …

boot systemd

23
推荐指数
2
解决办法
2万
查看次数

替换大文件中包含换行符的字符串

任何人都知道一种基于非行的工具以某种内存高效的方式“二进制”搜索/替换字符串?也看到这个问题

我有一个 +2GB 的文本文件,我想对其进行处理,类似于以下内容:

sed -e 's/>\n/>/g'
Run Code Online (Sandbox Code Playgroud)

这意味着,我想删除在 a 之后出现的所有换行符>,而不是其他任何地方,因此排除tr -d.

这个命令(我从一个类似问题的答案中得到)失败了couldn't re-allocate memory

sed --unbuffered ':a;N;$!ba;s/>\n/>/g'
Run Code Online (Sandbox Code Playgroud)

那么,有没有其他不求助于C的方法呢?我讨厌 perl,但我愿意在这种情况下破例 :-)

我不确定数据中没有出现任何字符,所以\n如果可能的话,我想避免用另一个字符临时替换。

任何好主意,任何人?

sed text-processing newlines

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

`ls -s` 什么时候打印“0”

当然,测试文件是否为空的标准方法是使用test -s FILE,但我们的一个客户收到了一个包含如下测试的脚本:

RETVAL=`ls -s ./log/cr_trig.log | awk '{print $1}'`
if test $RETVAL -ne 0
then
    echo "Badness: Log not empty"
    exit 25
fi
Run Code Online (Sandbox Code Playgroud)

供应商声称它可以在他们测试过的两种环境中工作。不用说,它在我测试的两个地方都失败了。

所以,我很好奇。什么时候ls -s打印0空文件?

这是我到目前为止的发现:

  • Linux 上的 GFS:4
  • Linux 上的 ext4:0
  • Solaris 上的 ZFS:1
  • Solaris 上的 UFS:0
  • AIX 上的 jfs:0
  • HP-UX 上的 VxFS:0
  • HP-UX 上的 HFS:0
  • Mac OS X 上的 HFS:0

我还没有检查过网络文件系统。

问题:我如何优雅地向其他人解释他们的脚本是错误的

在我看来,“正确”的版本是:

if test ! -s ./log/cr_trig.log
then
    echo "Badness: Log not empty"
    exit 25
fi
Run Code Online (Sandbox Code Playgroud)

ls filesystems compatibility shell-script

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

用于字符串替换的非面向行的工具?

我最近问了一个问题,如果换行符出现在另一个特定字符之后,如何删除它。

Unix 文本处理工具非常强大,但几乎所有这些工具都处理文本行,当输入适合可用内存时,这在大多数情况下都很好。

但是如果我想替换一个不包含任何换行符的大文件中的文本序列,我该怎么办?

例如<foobar>,在\n<foobar>不逐行读取输入的情况下替换为?(因为只有一行,而且长度为 2.5G 个字符)。

text-processing

13
推荐指数
3
解决办法
1378
查看次数

为什么 Fedora 20 在软件更新后要求重启?

我在 VirtualBox 虚拟机中安装了 Fedora 20。

现在它通知我“操作系统更新”,“包括所有用户的性能、稳定性和安全性改进”,我可以选择“重新启动和安装”。

但是,单击“操作系统更新”会显示“操作系统更新”的内容,但在要更新的软件包列表中找不到新的内核、libc 或 systemd。

那么,是什么要求重启呢?

这些包在我发出时列出sudo yum update

================================================== ==============================
更新:
 chkconfig x86_64 1.3.62-1.fc20 更新 172 k
 chrony x86_64 1.30-2.fc20 更新 262 k
 emacs 文件系统 noarch 1:24.3-24.fc20 更新 58 k
 文件 x86_64 5.19-4.fc20 更新 59 k
 文件库 x86_64 5.19-4.fc20 更新 401 k
 gdb x86_64 7.7.1-18.fc20 更新 2.6 M
 ghostscript x86_64 9.14-4.fc20 更新 4.4 M
 hwdata noarch 0.269-1.fc20 更新 1.3 M
 libndp x86_64 1.4-1.fc20 更新 30 k
 libreport x86_64 2.2.3-2.fc20 更新 405 k
 libreport-anaconda …

fedora systemd reboot

11
推荐指数
2
解决办法
3068
查看次数

我怎么知道什么解压算法被编译进了 linux 内核?

如果/proc/config.gz不可用,我怎么知道正在运行的内核能够在压缩文件上使用哪些解压缩算法cpio initramfs

gzip算法是否始终可用,即使在构建内核时CONFIG_DECOMPRESS_GZIP不可用y

compression initramfs proc sysfs linux-kernel

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

`ln` 在 NFS 上是原子的且可靠的吗?在这个用例中 NFS 可以取代 GFS 吗?

我有一个集群,其中包含一堆服务器,共享磁盘包含所有节点同时访问的 GFS 全局文件系统。

集群中的每个节点都运行相同的程序(一个 shell 脚本是主要的核心)。系统处理出现在几个输入目录中的文件,它的工作方式如下:

  • 程序循环遍历输入目录。
  • 对于找到的每个文件,检查是否存在“锁定文件”,如果存在锁定文件,则跳到下一个文件。
  • 如果没有找到锁定文件,则创建锁定文件。如果锁文件创建失败(比赛失败),跳到下一个文件
  • 如果“我们”拥有锁,则处理文件并在完成后将其移开。

这一切都很好,但我想知道是否有更便宜(不太复杂)的解决方案也可以使用。我可能在考虑 NFS 或 SMB。

我使用 GFS 的原因有两个:

  1. 每个文件只存储在一个地方(当然是在冗余的底层硬件上)
  2. 文件锁定工作可靠

我像这样创建锁文件:

date '+%s:'${unid} > ${currlock}.${unid}
ln ${currlock}.${unid} ${currlock}
lockrc=$?
rm -f ${currlock}.${unid}
Run Code Online (Sandbox Code Playgroud)

其中$unid是唯一的会话标识符,$currlock/gfs/tmp/lock.${file_to_process}

的美妙之ln处在于它是原子的,因此除了同时尝试同一件事的人之外,其他所有人都失败了。

所以,我想我要问的是:NFS 能满足我的需求吗?ln在 NFS 和 GFS 上是否以相同的方式可靠地工作?

nfs lock concurrency ln gfs

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

从命令行获取进程年龄

在 linux 中,从/proc/PID/stat,我可以获得start_time(22:nd) 字段,该字段表示内核启动后进程启动的时间。

将其转换为自纪元以来的秒数格式的好方法是什么?它添加到btime/proc/stat

基本上,我正在寻找过程的年龄,而不是它开始的确切时间。我的第一种方法是将start_time正在调查的进程start_time的 与当前进程的 进行比较(假设它没有运行很长时间)。

当然必须有更好的方法。

在查看https://www.kernel.org/doc/Documentation/filesystems/proc.txt时,我没有发现任何明显的与年龄相关的参数

所以,我目前拥有的是:

process age = (current_utime - ([kernel]btime + [process]start_time))
Run Code Online (Sandbox Code Playgroud)

任何在 shell 脚本中更有效的替代方法?(理想情况下跨 DST 更改是正确的)

linux shell-script process-management

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

更换 GFS 集群的建议?

我有几个 CentOS GFS 集群(全局文件系统中的 GFS),使用光纤通道 SAN 中的共享磁盘。他们现在已经成熟了,是时候开始计划更换他们了。

它们是奇数个节点(3 或 5),并使用 APC (PDU) 电源开关设置故障节点的隔离。节点全部处于活动状态,并且在同一共享文件系统上同时读写。文件系统很小,目前还不到 1 TB,并且永远不会增长到超过商用硬盘驱动器的大小。

我有两个专有的 IP 地址资源,当节点关闭时它们会重新定位。(3 节点集群上为 1)。一切都运行良好,但当活动较多时,性能不是很好。

那么,我可以在下一代集群中做哪些不同的事情呢?

我需要的是服务正常运行时间和数据可用性。也可能具有可扩展性,但可能不会。我预计负载不会增加太多。我还需要能够像常规文件系统上的常规文件一样读写文件。不需要配额或 ACL。只是常规的 unix 权限、所有权、mtime、字节大小,以及以在除 1 个节点之外的所有节点上失败的方式创建锁定文件的能力ln(如果他们同时尝试的话)。

我不想增加物理服务器的数量(这意味着我想使用实际服务器本身的存储)。

这不是强制性的,但我认为如果我不依赖共享磁盘,那就太好了。在过去的 5 年里,我经历了两起企业级 SAN 存储不可用的事件,因此无论这种情况多么不可能,我都希望能领先一步。

由于正常运行时间非常重要,因此 1 台物理服务器和 1 个正在运行的内核太少了。虚拟机依赖于我们环境中的 SAN。

到目前为止我的想法:

  • 所有节点都可以是普通的 NFSv3 客户端(会ln按照我期望的方式工作吗?那么 NFS 服务器是什么?)
  • Ceph与 CephFS(FS 何时可以投入生产?)
  • XtreemFS(与 Ceph 相比,为什么有关它的文章如此之少?)

如您所见,我对分布式存储感兴趣,但需要经验丰富的专家的建议。特别欢迎有关 Ceph 或 XtreemFS 的建议或建议。这不是具有疯狂带宽需求的 HPC。只需要旧解决方案的可用性和可靠性,并希望具有灵活性,最好是比当前解决方案“更好”的配置。

编辑(参见 Nils 评论) 我考虑更换此解决方案的主要原因是我想看看是否可以消除 SAN 存储柜的单点故障。或者我应该使用 LVM 镜像将数据保存在同一 SAN 结构中的两个不同存储系统上?我认为两个 FC-HBA 和双交换机应该足够了。

nfs cluster distributed-filesystem

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