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-19340

Jeremy Friesner's questions

Martin Hope
Jeremy Friesner
Asked: 2024-05-02 05:02:43 +0800 CST

有没有办法减慢 SSD 修剪速度,使其在进行过程中不影响驱动器的读取性能?

  • 7

在我的测试 Linux 机器上安装了Transcend TS2TMTE662T2-G1 SSD。我在 1.8TB ext4 分区上创建了一个 100GB 的虚拟文件,然后我cat <bigdummy.bin >/dev/null尽可能快地从该文件中顺序读取数据。

运行时cat,我iostat -t nvme0n1p6 --human 1在不同的 shell 窗口中运行以监视 SSD 的读取性能...它看起来相当不错,我每秒读取约 2.2 GB:

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
nvme0n1p6     18232.00         2.2G         0.0k         0.0k       2.2G       0.0k       0.0k

然后我rm从分区中删除了大约 600GB 的(不相关的)文件,然后我跑去fstrim --all告诉 SSD 开始擦除新丢弃的块。在进行修剪的同时,我iostat再次查看了输出,以了解我的cat进程的读取性能现在的表现如何:

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
nvme0n1p6       215.00        18.1M         0.0k         8.8G      18.1M       0.0k       8.8G

哎呀,一点也不好。读取带宽已降低至区区 18MB/秒,每秒事务数也同样降低了 100 倍。

对我来说,期望 SSD 能够获得 100% 的正常读取性能可能是不合理的,因为该 SSD 也在执行's8.8G/s操作kb_dscd,但由于块丢弃操作对时间要求不是特别严格(因为我不这样做)我不太关心它是在 30 秒内完成还是持续 30 分钟),有什么方法可以减慢该过程,以便我的驱动器的读取性能在该过程中不会受到如此严重的影响?例如,如果 SSD 仅执行 500 M/s 的kb_dscd操作,它(也许)会有更多时间以接近其通常速率的速度处理其正常的读取 I/O 任务?

(动机:这是一个媒体流媒体盒,它最终会想要同时进行录制和播放,可能是 24/7,如果我可以定期启动 TRIM 操作,而不显着影响媒体盒继续流媒体内容的能力,那就太好了同一时间。)

linux
  • 1 个回答
  • 792 Views
Martin Hope
Jeremy Friesner
Asked: 2023-01-27 16:40:30 +0800 CST

有没有办法通过 INADDR_ANY 排除网络接口的绑定?

  • 5

在网络编程中,通常将INADDR_ANY(or IN6ADDR_ANY) 作为第二个参数的一部分传递给bind(),告诉网络堆栈您希望套接字从机器恰好具有的任何网络接口接收连接/流量。许多程序都这样做,因为它通常是最有用的行为。另一个常见的选项是指定要绑定到的单个网络接口。

但是,我有一个用例,我希望我的 Linux 机器上的一个特定网络接口被“保留”,因为它不包含在绑定到INADDR_ANY. 特别是,我希望这个网络接口只能被明确绑定到它的 IP 地址的套接字使用(或者可能已经执行了一些其他明确的步骤来表明他们知道这个网络接口的特殊状态并希望使用无论如何)——如果您愿意的话,可以说是一种“套接字白名单”,以确保只有少数精心挑选的应用程序可以通过该网络接口发送/接收流量。(如果重要的话,这些应用程序可能是我编写并亲自控制的应用程序)

在 Linux 中是否有任何机制可以实现这一点?

我考虑过但并不完全满意的一些方法:

  1. 修改所有应用程序以显式绑定到他们想要使用的网络接口,而不是绑定到INADDR_ANY,并且不在集合中包括此网络接口。(工作量太大,而且我可能无权修改所有此类应用程序)
  2. 在网络接口上设置防火墙,以便只接受特定端口上的流量。(这可能有点工作,但这意味着我必须提前指定我将在界面上使用的所有端口,这排除了需要动态端口分配的软件......当然仍然有可能出现一些意想不到的情况应用程序变得“幸运”并且恰好绑定到白名单端口之一,这是不可取的)
  3. 切换到 SELinux 或类似的具有细粒度 ACL 的面向安全的发行版(这里不是一个现实的选择,出于各种原因我不会进入)
linux
  • 1 个回答
  • 31 Views
Martin Hope
Jeremy Friesner
Asked: 2016-06-21 19:09:40 +0800 CST

这个 IPv6-link-local 地址(由 Windows 报告)是否正确?如果是这样,为什么?

  • 6

从我在线阅读的内容来看,通过获取网络接口的 MAC 地址,在其中插入一个 FF:FE 字,或者在一些额外的位中进行 OR'ing 来生成 IPv6 链接本地地址,等等:例如 MAC 地址 00: 3E:E1:c6:20:c2 对应于 IPv6 链路本地地址 fe80::23e:e1ff:fec6:20c2%en0,知道 MAC 地址的程序可以计算 IPv6 地址,反之亦然。

这似乎在我的 Macintosh 上运行良好,但在我同事的 Windows 机器上,我们看到了这个(来自 ipconfig 的输出):

Connection-specific DNS Suffix  . :
Link-local IPv6 Address . . . . . : fe80::eb:b41:3e4c:fd9e%11
IPv4 Address. . . . . . . . . . . : 192.168.0.3
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :

在这里,网络接口的 MAC 地址(即 0b:41:3e:4c:fd:9e )看起来只有字节“eb”OR'd 到它的前面,而不是插入 ff:fe 到正如我所期望的那样。

谁能解释这是为什么?即,Windows 是否在做一些与此处的 IPv6 链接本地地址规范相反的事情,或者它只是使用了一些我不知道的其他可接受的 MAC-> IPv6 约定?或者,当从 MAC 地址生成 fe80 地址时,供应商可能只是被允许做任何他们想做的事情?

windows ipv6 link-local
  • 1 个回答
  • 1798 Views
Martin Hope
Jeremy Friesner
Asked: 2013-05-14 17:51:44 +0800 CST

为什么要求 IGMP 和 MLD 将未注册的数据包转发到所有端口?

  • 2

首先,介绍一些背景知识:我的理解是 IGMP(及其 IPv6 表亲 MLD)的目的是通过确保多播数据包仅传输到实际对这些数据包感兴趣的目的地来避免浪费带宽。这个逻辑是对旧的/更简单的交换机行为的改进,它无论如何都将传入的多播数据包广播到所有其他端口,并让连接的设备丢弃它们不感兴趣的多播数据包。

IGMP 和 MLD 通过让交换机维护一个表来执行此操作,该表跟踪哪些连接的设备当前加入了哪些多播组,并且当多播数据包进入时,交换机仅将其转发到加入由数据包的目的地址。到目前为止,一切都很好。

但据我的同事说,有一个奇怪的特殊情况:如果没有设备加入特定的多播组,那么交换机必须将任何传入的多播数据包转发到所有端口(嗯,从技术上讲,转发到连接了 IGMP 路由器的所有端口,但他说这相当于同一件事,因为大多数交换机不知道哪些端口连接了 IGMP 路由器,因此会回退到所有端口的泛洪)。

这对我来说似乎非常违反直觉——为什么一个其全部目的是避免多播泛洪的算法在没有人对接收多播数据感兴趣的情况下故意泛滥到所有端口?这样做是为了确保向后兼容希望接收他们从未请求过的多播数据包的损坏的多播实现吗?如果不是,这样做的动机是什么?它似乎大大降低了算法的实用性。

作为参考,我的同事指出的指南位于RFC 4541的第 2.1.2 节中:

3) An unregistered packet is defined as an IPv4 multicast packet with
   a destination address which does not match any of the groups
   announced in earlier IGMP Membership Reports.

  If a switch receives an unregistered packet, it must forward that
  packet on all ports to which an IGMP router is attached.  A switch
  may default to forwarding unregistered packets on all ports.
  Switches that do not forward unregistered packets to all ports
  must include a configuration option to force the flooding of
  unregistered packets on specified ports.

我认为以下段落可以解释动机,但我不明白:

In an environment where IGMPv3 hosts are mixed with snooping
switches that do not yet support IGMPv3, the switch's failure to
flood unregistered streams could prevent v3 hosts from receiving
their traffic.  Alternatively, in environments where the snooping
switch supports all of the IGMP versions that are present,
flooding unregistered streams may cause IGMP hosts to be
overwhelmed by multicast traffic, even to the point of not
receiving Queries and failing to issue new membership reports for
their own groups.

即,为什么无法淹没未注册的流会阻止 v3 主机接收其流量?(v3 主机不会知道加入他们想要接收流量的任何组吗?)在另一种情况下,由于洪水造成的流量损失不会与非洪水造成的流量损失一样严重吗?

routing
  • 3 个回答
  • 2078 Views
Martin Hope
Jeremy Friesner
Asked: 2012-12-04 17:13:52 +0800 CST

SSD 驱动器的 ext3 分区上的突然断电后文件系统损坏是“预期行为”吗?

  • 13

我的公司生产嵌入式 Debian Linux 设备,它从内部 SSD 驱动器上的 ext3 分区启动。因为该设备是一个嵌入式“黑匣子”,它通常以粗暴的方式关闭,只需通过外部开关切断设备的电源即可。

这通常没问题,因为 ext3 的日志记录使事情井井有条,所以除了偶尔丢失部分日志文件外,一切都很好。

然而,我们最近看到许多单元在经过多次硬电源循环后,ext3 分区开始出现结构问题——特别是,我们在 ext3 分区上运行 e2fsck,它发现了许多类似的问题显示在本问题底部的输出列表中。运行 e2fsck 直到它停止报告错误(或重新格式化分区)以清除问题。

我的问题是……在遭受大量突然/意外关机的 ext3/SSD 系统上看到这样的问题意味着什么?

我的感觉是,这可能是我们系统中出现软件或硬件问题的迹象,因为我的理解是(除非有错误或硬件问题)ext3 的日志记录功能应该可以防止此类文件系统完整性错误。(注意:我知道用户数据没有记录,因此可能会发生用户文件被篡改/丢失/截断的情况;我在这里专门讨论文件系统元数据错误,如下所示)

另一方面,我的同事说这是已知/预期的行为,因为 SSD 控制器有时会重新排序写入命令,这可能会导致 ext3 日志混淆。特别是,他认为即使硬件和软件都正常运行,ext3 日志也只是降低了文件系统损坏的可能性,而不是不可能,所以我们不应该对时不时看到这样的问题感到惊讶。

我们谁是对的?

Embedded-PC-failsafe:~# ls
Embedded-PC-failsafe:~# umount /mnt/unionfs
Embedded-PC-failsafe:~# e2fsck /dev/sda3
e2fsck 1.41.3 (12-Oct-2008)
embeddedrootwrite contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Invalid inode number for '.' in directory inode 46948.
Fix<y>? yes

Directory inode 46948, block 0, offset 12: directory corrupted
Salvage<y>? yes

Entry 'status_2012-11-26_14h13m41.csv' in /var/log/status_logs (46956) has deleted/unused inode 47075.  Clear<y>? yes
Entry 'status_2012-11-26_10h42m58.csv.gz' in /var/log/status_logs (46956) has deleted/unused inode 47076.  Clear<y>? yes
Entry 'status_2012-11-26_11h29m41.csv.gz' in /var/log/status_logs (46956) has deleted/unused inode 47080.  Clear<y>? yes
Entry 'status_2012-11-26_11h42m13.csv.gz' in /var/log/status_logs (46956) has deleted/unused inode 47081.  Clear<y>? yes
Entry 'status_2012-11-26_12h07m17.csv.gz' in /var/log/status_logs (46956) has deleted/unused inode 47083.  Clear<y>? yes
Entry 'status_2012-11-26_12h14m53.csv.gz' in /var/log/status_logs (46956) has deleted/unused inode 47085.  Clear<y>? yes
Entry 'status_2012-11-26_15h06m49.csv' in /var/log/status_logs (46956) has deleted/unused inode 47088.  Clear<y>? yes
Entry 'status_2012-11-20_14h50m09.csv' in /var/log/status_logs (46956) has deleted/unused inode 47073.  Clear<y>? yes
Entry 'status_2012-11-20_14h55m32.csv' in /var/log/status_logs (46956) has deleted/unused inode 47074.  Clear<y>? yes
Entry 'status_2012-11-26_11h04m36.csv.gz' in /var/log/status_logs (46956) has deleted/unused inode 47078.  Clear<y>? yes
Entry 'status_2012-11-26_11h54m45.csv.gz' in /var/log/status_logs (46956) has deleted/unused inode 47082.  Clear<y>? yes
Entry 'status_2012-11-26_12h12m20.csv.gz' in /var/log/status_logs (46956) has deleted/unused inode 47084.  Clear<y>? yes
Entry 'status_2012-11-26_12h33m52.csv.gz' in /var/log/status_logs (46956) has deleted/unused inode 47086.  Clear<y>? yes
Entry 'status_2012-11-26_10h51m59.csv.gz' in /var/log/status_logs (46956) has deleted/unused inode 47077.  Clear<y>? yes
Entry 'status_2012-11-26_11h17m09.csv.gz' in /var/log/status_logs (46956) has deleted/unused inode 47079.  Clear<y>? yes
Entry 'status_2012-11-26_12h54m11.csv.gz' in /var/log/status_logs (46956) has deleted/unused inode 47087.  Clear<y>? yes

Pass 3: Checking directory connectivity
'..' in /etc/network/run (46948) is <The NULL inode> (0), should be /etc/network (46953).
Fix<y>? yes

Couldn't fix parent of inode 46948: Couldn't find parent directory entry

Pass 4: Checking reference counts
Unattached inode 46945
Connect to /lost+found<y>? yes

Inode 46945 ref count is 2, should be 1.  Fix<y>? yes
Inode 46953 ref count is 5, should be 4.  Fix<y>? yes

Pass 5: Checking group summary information
Block bitmap differences:  -(208264--208266) -(210062--210068) -(211343--211491) -(213241--213250) -(213344--213393) -213397 -(213457--213463) -(213516--213521) -(213628--213655) -(213683--213688) -(213709--213728) -(215265--215300) -(215346--215365) -(221541--221551) -(221696--221704) -227517
Fix<y>? yes

Free blocks count wrong for group #6 (17247, counted=17611).
Fix<y>? yes

Free blocks count wrong (161691, counted=162055).
Fix<y>? yes

Inode bitmap differences:  +(47089--47090) +47093 +47095 +(47097--47099) +(47101--47104) -(47219--47220) -47222 -47224 -47228 -47231 -(47347--47348) -47350 -47352 -47356 -47359 -(47457--47488) -47985 -47996 -(47999--48000) -48017 -(48027--48028) -(48030--48032) -48049 -(48059--48060) -(48062--48064) -48081 -(48091--48092) -(48094--48096)
Fix<y>? yes

Free inodes count wrong for group #6 (7608, counted=7624).
Fix<y>? yes

Free inodes count wrong (61919, counted=61935).
Fix<y>? yes


embeddedrootwrite: ***** FILE SYSTEM WAS MODIFIED *****

embeddedrootwrite: ********** WARNING: Filesystem still has errors **********

embeddedrootwrite: 657/62592 files (24.4% non-contiguous), 87882/249937 blocks

Embedded-PC-failsafe:~# 
Embedded-PC-failsafe:~# e2fsck /dev/sda3
e2fsck 1.41.3 (12-Oct-2008)
embeddedrootwrite contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Directory entry for '.' in ... (46948) is big.
Split<y>? yes

Missing '..' in directory inode 46948.
Fix<y>? yes

Setting filetype for entry '..' in ... (46948) to 2.
Pass 3: Checking directory connectivity
'..' in /etc/network/run (46948) is <The NULL inode> (0), should be /etc/network (46953).
Fix<y>? yes

Pass 4: Checking reference counts
Inode 2 ref count is 12, should be 13.  Fix<y>? yes

Pass 5: Checking group summary information

embeddedrootwrite: ***** FILE SYSTEM WAS MODIFIED *****
embeddedrootwrite: 657/62592 files (24.4% non-contiguous), 87882/249937 blocks
Embedded-PC-failsafe:~# 
Embedded-PC-failsafe:~# e2fsck /dev/sda3
e2fsck 1.41.3 (12-Oct-2008)
embeddedrootwrite: clean, 657/62592 files, 87882/249937 blocks
filesystems
  • 2 个回答
  • 2594 Views
Martin Hope
Jeremy Friesner
Asked: 2010-03-19 10:20:49 +0800 CST

“强化”嵌入式 ext4 文件服务器以防止意外断电的最佳方法?

  • 6

首先,介绍一点背景知识:我的公司生产一种音频流设备,它是一种无头、机架安装的 Linux 机器,带有一个固态 e-SATA 驱动器。该驱动器使用 ext4 格式化。用户可以使用 Samba/CIFS 连接到系统以上传新的音频文件或访问现有的文件。还有用于通过网络流式传输音频的自定义软件。

这一切都很好。唯一的问题是用户是音频人员,而不是计算机人员,并且将系统视为“黑匣子”,而不是计算机。这意味着在一天结束时,他们不会 ssh 进入盒子并输入“/sbin/shutdown -h”;他们只是要切断机架的电源并离开,并期望第二天仍能正常工作。

由于 ext4 有日志、日志校验和等,所以这主要是有效的。唯一不起作用的情况是有人通过 Samba 上传新文件,然后在上传的数据完全刷新到磁盘之前切断系统电源。在这种情况下,他们第二天来,发现他们的新文件被截断或完全丢失,并且很不高兴。

我的问题是,避免这个问题的最佳方法是什么?有没有办法让 smbd 在每次上传结束时调用“同步”?(上传性能并不那么重要,因为它们只是偶尔发生)。或者有没有办法告诉 ext4 在对文件进行任何更改后的几秒钟内自动刷新?(再次,为了安全,可以牺牲性能)我应该设置特定的写入顺序模式,激活屏障等吗?

ext4 data-protection
  • 3 个回答
  • 1651 Views
Martin Hope
Jeremy Friesner
Asked: 2009-10-02 15:57:50 +0800 CST

获得以太网“透明”冗余的最佳方法?

  • 2

如果这是一个明显的问题,我深表歉意,就冗余网络而言,我是新手,我不确定谷歌的关键字是什么。我的应用场景是这样的:

  • 该系统由少量基于 Linux 的服务器组成(从 1 到 20 不等)
  • 每台服务器上都有两个物理以太网插孔
  • 系统在一个隔离的局域网上运行——它没有以任何方式连接到互联网
  • 在每台服务器上运行的(定制/内部)应用软件通过持久的 TCP 连接和/或 UDP 多播与其他服务器上的对等方进行通信。
  • 所有通信都通过 IPv6 进行
  • 为了获得网络冗余,显而易见的事情是拥有两个高速以太网交换机,并将每个 Linux 服务器连接到两个交换机。这样,如果其中一个交换机发生故障,或者有人意外切断了以太网电缆,则可以通过另一条电缆/交换机继续通信,并且系统将保持完整功能。

    我的问题是,有没有办法让冗余对应用软件 100% 透明?(通过透明,我的意思是应用程序软件不必知道或关心有多个以太网端口;理想情况下,它只会看到一个 eth0 而不是 eth1……如果数据停止流过其中一个两个物理以太网端口,无论出于何种原因,应用软件都不必检测故障或执行任何特殊操作即可继续工作)。

    额外的带宽对我的目的并不重要(千兆以太网的一个“通道”就足够快了),但简单性和可靠性才是。

    ethernet
    • 2 个回答
    • 653 Views

    Sidebar

    Stats

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

      新安装后 postgres 的默认超级用户用户名/密码是什么?

      • 5 个回答
    • Marko Smith

      SFTP 使用什么端口?

      • 6 个回答
    • Marko Smith

      命令行列出 Windows Active Directory 组中的用户?

      • 9 个回答
    • Marko Smith

      什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

      • 3 个回答
    • Marko Smith

      如何确定bash变量是否为空?

      • 15 个回答
    • Martin Hope
      Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
    • Martin Hope
      Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
    • Martin Hope
      Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
    • Martin Hope
      cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

    热门标签

    linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

    Explore

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

    Footer

    AskOverflow.Dev

    关于我们

    • 关于我们
    • 联系我们

    Legal Stuff

    • Privacy Policy

    Language

    • Pt
    • Server
    • Unix

    © 2023 AskOverflow.DEV All Rights Reserve