我试图从 OpenVPN 手册中理解以下声明。
https://community.openvpn.net/openvpn/wiki/IPv6
在路由设置中,您不能使用您的联机网络;您必须使用唯一的路由网络范围,就像使用 IPv4 路由时一样。
简而言之,这就是说要通过开放式 VPN 运行 IPv6(而不将其隐藏在 NAT 后面),您需要有两个 IPv6 /64 块。或者至少一个块和一个完全独立的 IPv6 地址。
谁能解释这是为什么?
我正在努力解决这个问题,因为我有一台分配了 /64 块的服务器。从网络的角度来看,该块中的所有流量都必须发送到我的服务器 (?)。在该服务器上,如果不是它自己的 IP,则所有到该块的流量都将通过 VPN 发送。从 VPN 客户端的角度来看,如果不是它自己的 IP,那么所有到该块的流量都将通过 VPN 发送。
我不明白为什么将相同的 /64 块分配给两个接口会导致整个块分配给一台服务器的问题。
我正在寻找一种压缩磁盘上交换的方法。我并不是在寻求对替代解决方案进行更广泛的讨论。请参阅最后的讨论。
我努力了...
使用压缩的 zfs zvol 进行交换是行不通的。它的设置有效,交换有效,交换确实发生了一些,所以我想有人可能会说它在技术上是一个可行的解决方案,但是如果它比软盘访问慢,并导致您的系统“工作”,那么您的工作解决方案到底如何“工作”十次中有十次完全冻结?尝试了几次——一旦系统进入内存压力条件,一切都会冻结。我也尝试使用 losetup 间接使用它,甚至尝试使用 zfs zvol 作为 zram 的支持设备。没有区别,总是相同的结果——写入/读取速度极其缓慢,系统不可避免地在压力下崩溃。
BTRFS。仅支持未压缩的交换文件。显然,也只支持未压缩的循环图像,因为我尝试了 dd-ing 一个空文件,使用常规 ext2 格式化它,压缩它,作为循环设备安装,并在其中创建一个交换文件。不起作用,即使我在启用强制压缩的情况下安装了 btrfs - compsize 显示 ext2 图像压缩比恰好为 1.00 。
Zswap——它只是内存和常规磁盘交换之间的缓冲区。常规磁盘交换仍然是常规磁盘交换,zswap 在将页面写入其中之前解压缩页面。
Zram——自从它作为compcache诞生以来就有一个支持设备选项,人们会认为它是多年来一直使用压缩磁盘交换的完美候选者。没有这样的运气。虽然您可以随意将压缩的内存页面写回磁盘,但页面在写入之前会被解压缩。与 zswap 不同的是,它不会写入相同和零填充的页面,这既节省了 i\o,又稍微提高了吞吐量,并保证使用循环安装的稀疏文件作为 backing_dev。到目前为止,这是我在低端设备上找到的交换优化的最佳选择,尽管它仍然缺乏磁盘压缩。
还有什么想法我还可以尝试吗?也许有一些我不知道的压缩块设备层,可以压缩写入其中的任何内容,不需要文件系统?也许我可以使用一些压缩的覆盖层?但在 FUSE 中没有这样做,因为 FUSE 本身就是交换的对象,除非您知道一种方法来防止它被交换。
由于我没有看到对此进行太多探索,因此欢迎您提出您喜欢的任何疯狂建议。拜托,让我们往墙上扔东西,看看什么能粘住。
对于专家来说——如果你们中的任何人阅读过,甚至编写过与此问题相关的 Linux 源代码的任何部分,请尽可能详细地描述,为什么您认为这还没有实现,以及如何实现如果您有任何想法,您认为它可以实施吗?显然,如果可以的话,请务必实现这一点,那就太棒了。
讨论
在将其标记为重复之前——我知道围绕 stackexchange 存在一些类似的问题,但我看到没有一个有有效的答案,也很少有任何进一步的反馈。因此,我将尝试在这里描述细节,对所有内容进行汇总,希望比我聪明的人能够弄清楚这一点。我不是程序员,只是一个用户和一个脚本小子,所以这应该是一个相当低的跨越门槛。
多买点内存就可以了,便宜
买一个固态硬盘
交换不好
反正压缩很慢,何苦呢
如果你要说的只是上述任何一句话——走开。因为参数是优化。不管现在的内存多么便宜,它都不是免费的。交换总是需要的,拥有它对系统有好处,这一事实已经被证实了很多年。压缩没什么,即使是“重型”算法在过去十年制造的任何处理器上执行速度也快得愚蠢。最后,当然,如果您使用 SSD,压缩实际上可能会成为瓶颈,但并不是每个人都会优先考虑速度而不是磁盘空间使用,而 HDD 驱动器确实从磁盘压缩中受益匪浅,但仍然非常受欢迎且数量众多,不容忽视。
我正在尝试了解 inode 编号(如 所示ls -i)如何与 ext4 分区配合使用。
我试图了解它们是否是 linux 内核的构造并映射到磁盘上的 inode,或者它们是否实际上是存储在磁盘上的相同数字。
问题:
ls -i为两个不同的文件生成相同的 inode 编号,只要它们在不同的分区上即可。我为什么要问...
我想在具有 1.5TB 数据和大约 2000 万个文件(文件名)的 USB 硬盘驱动器上创建二级索引。文件范围从 10 字节到 100 GB。其中许多是多次硬链接,因此单个文件(磁盘上的 blob)可能有多达 200 个文件名。
我的任务是通过检测重复项并用更多硬链接替换重复项来节省磁盘空间。
现在作为一个单独的练习,我想我可以为磁盘上的每个文件创建一个数据库,它是 shasum、权限等......一旦构建,检测重复应该是微不足道的。我需要确定我使用的是正确的唯一键。由于存在大量硬链接,文件名不合适。我希望我可以使用 inode 编号。
我想了解的是,当我下次重新启动机器时,我们是否会更改 inode 编号。或者,如果它们更加不稳定(在我构建数据库时它们会改变吗?)
我阅读的所有文档都捏造了内核提供的 inode 编号与磁盘上的 inode 之间的区别。根据我已经阅读的文章,这些是否相同尚不清楚。
我注意到,在Debian相关系统,在系统级的crontab脚本/etc/cron.hourly,/etc/cron.daily......正在逐步赞成systemd定时器退役。例如:
$ cat logrotate
#!/bin/sh
# skip in favour of systemd timer
if [ -d /run/systemd/system ]; then
exit 0
fi
...
Run Code Online (Sandbox Code Playgroud)
我认为一个目标是逐步淘汰 cron 和 anacron。(见注 1)
对我来说,cron 的一个关键用例是用户定义的 crontabs ( crontab -e),它允许用户安排自己的作业以自己的用户身份运行,而无需系统管理员权限。
systemd 中是否有任何功能(当前或计划中)允许非管理员用户安排重复性任务?
注 1:
稍微削弱了之前的陈述,除了那些对 cron 的坏话和对 systemd 计时器的赞美之外,我没有发现任何特别好的讨论。我没有发现任何证据表明这个方向是由 Linux 发行版的众神传下来的。但是我确实注意到它是一种旅行方向。因此,此声明仅基于以下想法:如果这是一个旅行方向,并且随着时间的推移,我希望大多数/所有包最终都采用相同的方式并使一个系统 (cron) 变得冗余。
假设我正在构建一个 CLI 应用程序。假设它是用 Python 编写的。为了简单起见,假设此应用程序回显给定的目录或文件规范路径。
用户致电myApp ..
我的应用程序如何知道它是从哪里调用的?shell 是否提供某种信息?环境变量?
扩展点似乎不起作用 ( echo ${.})。所以点本身作为参数是没有帮助的。它只是告诉我“当前目录”。但是,同样,我从哪里获取当前目录?