Tag: Linux

  • 解决NAT虚拟机中SSH问题:是宿主机的IP吗?

    解决NAT虚拟机中SSH问题:是宿主机的IP吗?

    故事始于一位虚拟机用户,他正在使用VMware Workstation Pro 12在Windows 10宿主机上运行Ubuntu 16虚拟机。他遇到了一个问题,即如何在虚拟机中通过SSH连接到宿主机。在这个故事中,我们将一起探讨解决这个问题的方法。

    问题背景

    在使用虚拟机时,有时候我们需要从虚拟机中访问宿主机,或者反过来。这对于开发和测试来说非常有用。用户的NAT网络配置如下:

    • 虚拟机网段:192.168.135.XXX(掩码255.255.255.0)
    • 网关:192.168.135.2
    • 虚拟机内部IP:192.168.135.128

    用户尝试从虚拟机SSH连接到宿主机,但遇到了一些问题。他发现无法ping通宿主机的IP地址192.168.0.103,但可以ping通以太网适配器的地址。

    解决问题的思路

    用户提出了两个问题:

    1. 他是否应该从虚拟机中SSH连接到宿主机的IP地址192.168.0.103?
    2. 他在虚拟机中尝试SSH连接宿主机的192.168.0.103时遇到“Permission denied, please try again”错误。

    让我们逐一解决这些问题:

    问题一:SSH连接到宿主机的IP地址

    SSH连接宿主机的IP地址通常是宿主机的内部IP地址。在这种情况下,用户可以尝试SSH连接到192.168.0.103,这是以太网适配器的地址。这是因为NAT已经为我们完成了地址转换,将虚拟机和宿主机连接在同一网络上。

    问题二:Permission Denied错误

    “Permission Denied”错误可能是由于用户名和密码不正确或其他身份验证问题引起的。用户应该确保他们提供的用户名和密码是正确的。此外,还需要检查宿主机的SSH配置,确保SSH服务已启用,并且用户名和密码验证可用。用户可以查看注册表中的SSH配置,以确保DefaultShell指向正确的解释器。

    结论

    在解决虚拟机中SSH连接到宿主机的问题时,需要考虑网络配置和身份验证问题。确保虚拟机和宿主机在同一网络上,并提供正确的用户名和密码。此外,检查SSH服务的配置以及注册表中的相关设置也是解决问题的关键。

    总之,虚拟机和宿主机之间的SSH连接可以通过正确的配置和身份验证来实现。这将使用户能够轻松地在它们之间传输数据和执行操作。

  • 如何解决NAS系统流量大导致自动重启的问题

    如何解决NAS系统流量大导致自动重启的问题

    前言:
    在我们的现代生活中,数据储存变得越来越重要。对于像我一样的技术爱好者和NAS(网络附加存储)用户来说,构建一个可靠且高性能的NAS系统至关重要。然而,正如我所经历的那样,有时候在构建NAS系统时会遇到一些棘手的问题,其中之一就是在处理大流量时,系统会不稳定甚至自动重启。这篇文章将介绍我在解决这个问题时的经验和方案,希望对你有所帮助。

    问题描述

    我使用了HPE Microserver Gen10四核心版作为NAS服务器,并在上面运行FreeBSD 13.2操作系统。我的数据存储采用了4个8TB硬盘的ZFS raidz2配置,同时使用了NVMe SSD来提高性能。然而,当我尝试通过NFSv4从我的NAS读取或写入大流量数据时,系统会出现自动重启的问题。这是一个非常令人困扰的情况,因为数据的完整性和可靠性对我来说至关重要。

    探索解决方案

    我首先怀疑系统更新可能导致了这个问题,但通过回滚到最初版本的系统后,问题仍然存在。我还注意到FreeBSD使用的bge网卡驱动可能存在一些问题,但是由于问题只在高流量条件下出现,很难确定是驱动问题还是NFSv4本身的问题。

    新方案

    在面对这个问题后,我提出了一些新的解决方案来解决NAS系统的自动重启问题。

    方案一:Linux + ZFS on Linux

    我考虑了使用Linux操作系统,并在其上运行ZFS文件系统。这个方案有一些优势,因为Linux和ZFS on Linux都已经有了成熟的应用案例。我认为这个方案相对简单,可以很容易地导入我的现有存储池。

    方案二:Linux + Btrfs

    另一个选择是在Linux上使用Btrfs文件系统,这也是一种备受欢迎的NAS解决方案。然而,我对Btrfs的稳定性有些担忧,因为我听说它在一些情况下可能会导致数据丢失。但是,考虑到一些商用NAS系统也在使用Btrfs,这个方案仍然值得考虑。

    方案三:Linux + mdadm + LVM + ext4/xfs

    这是我之前NAS系统的方案,它非常通用。然而,由于我需要文件系统级别的快照和数据校验功能,所以我更倾向于使用ZFS或Btrfs这种“下一代”文件系统。

    方案四:Windows Server

    最后,考虑到我的Microserver也支持Windows Server,我也考虑了这个方案。不过,我对Windows Server技术栈不太了解,而且我在公司的Windows存储体验也并不总是很愉快。

    结论

    面对NAS系统在处理大流量时自动重启的问题,我不得不重新评估我的解决方案。虽然我仍然对具体的问题原因有所困惑,但我认为将操作系统迁移到Linux并使用ZFS或Btrfs文件系统可能是一个可行的解决方案。这个决定也受到了这些方案已经在许多NAS系统中得到应用的启发。

    注意:文章内容只是个人经验分享,具体解决方案可能需要根据你的情况进行调整和实施。在做任何系统更改之前,请务必备份重要数据。

  • Linux下NAS数据存储选择:LVM+ext4还是Root on ZFS?

    Linux下NAS数据存储选择:LVM+ext4还是Root on ZFS?

    在数字化时代,数据存储是至关重要的。无论是企业还是个人用户,都需要一个可靠的方式来管理和保护数据。在这篇文章中,我们将讨论在Linux系统上搭建NAS时的一个关键问题:是选择LVM+ext4的方案还是Root on ZFS的方案?

    开篇故事

    假设你是一个充满激情的技术爱好者,最近你决定将你的硬件资源用于搭建一个高效的NAS系统,以便安全地存储和管理你的大量数据。你经过一番研究后,发现了两种主要的存储方案:LVM+ext4和Root on ZFS。你陷入了两难的境地,不知道该选择哪个方案。正是在这个关键时刻,本文将为你提供一些指导和建议,帮助你做出明智的决策。

    LVM+ext4:传统但稳定

    LVM(Logical Volume Manager)和ext4文件系统是Linux系统上的传统存储方案。LVM允许你创建逻辑卷,这些卷可以跨越多个物理硬盘,提供了一种灵活的磁盘管理方式。而ext4是Linux上最常见的文件系统,稳定性得到了广泛认可。

    优点:

    • 稳定性:ext4被广泛使用,经过多年的测试和改进,被认为是非常稳定的文件系统。
    • 易于维护:LVM提供了强大的磁盘管理工具,可以方便地扩展存储容量或进行维护。
    • 社区支持:由于其流行度,ext4和LVM都有强大的社区支持,你可以轻松找到解决问题的方法。

    缺点:

    • 快照和数据完整性:与ZFS相比,ext4在快照和数据完整性方面的功能有限。
    • 不够灵活:LVM虽然提供了一定的灵活性,但与ZFS相比,它的功能受到了限制。

    Root on ZFS:新潮而强大

    Root on ZFS是一个相对新的存储方案,它将根文件系统放在ZFS文件系统上。ZFS是一种先进的文件系统,具有出色的数据完整性和快照功能。

    优点:

    • 数据完整性:ZFS以其卓越的数据完整性而闻名,可以检测和纠正静默错误,防止数据损坏。
    • 快照:ZFS可以轻松创建快照,帮助你在数据丢失时恢复先前的状态。
    • 灵活性:ZFS支持动态磁盘扩展、数据压缩等高级功能,提供更大的灵活性。

    缺点:

    • 资源需求:ZFS需要更多的内存和计算资源,特别是在处理大容量数据时。
    • 学习曲线:相对于LVM和ext4,ZFS有一定的学习曲线,需要花时间熟悉其配置和管理。

    如何选择?

    选择合适的存储方案取决于你的具体需求和资源。如果你更注重稳定性、已经熟悉LVM和ext4,并且不需要高级的快照和数据完整性功能,那么LVM+ext4可能是一个不错的选择。

    但如果你需要更强大的数据保护功能、更高级的快照和动态扩展能力,以及愿意投入更多的硬件资源,那么Root on ZFS可能更适合你的需求。

    最终,无论你选择哪个方案,都要确保你的硬件满足系统的需求,这包括足够的内存、处理器性能和存储容量。

    结语

    在选择Linux下的NAS数据存储方案时,LVM+ext4和Root on ZFS都有其优点和缺点。关键是根据你的具体需求和资源来做出明智的决策。无论你选择哪个方案,都要确保数据的安全性和可用性,这是存储解决方案的最终目标。

    希望本文能够帮助你更好地理解这两种方案,以便做出明智的决策。无论你选择哪个方案,都要不断学习和改进,以满足不断变化的需求。

  • 解决WebDAV文件显示不全的问题:RAID5磁盘挂载异常

    解决WebDAV文件显示不全的问题:RAID5磁盘挂载异常

    大家好,我是王大神。今天我将与您分享一个关于WebDAV文件显示不全问题的解决方案。有一位朋友在他的Ubuntu 22.04主机上使用Apache2开启了WebDAV功能,但他遇到了一个奇怪的问题,无法在Windows电脑上通过RaiDrive完全看到RAID5磁盘内的文件夹和文件。在经过一些尝试后,我们来看看如何解决这个问题。

    问题背景

    首先,让我们了解一下问题的背景。用户在他的Ubuntu主机上配置了WebDAV,并且已经成功地挂载了其他文件夹,但对于RAID5磁盘内的内容却无法正常显示。他已经检查了文件夹的权限,并确保其权限设置为777,但问题仍然存在。

    尝试的解决方法

    在用户提出问题后,有一些社区成员提供了一些建议。其中一个建议是使用strace来跟踪系统调用,以查看是否有异常情况。另一个建议是尝试使用SMB替代WebDAV,因为一些用户在使用SMB后问题得到了解决。

    可能的问题根本原因

    问题的根本原因可能涉及到Linux文件权限模型以及一些隐藏属性,如ACL权限。虽然用户表示没有启用ACL权限,但RAID5磁盘与其他文件可能存在某种不同之处,这需要进一步的调查。

    浏览器直接访问问题

    用户还提到了通过浏览器直接访问RAID5文件夹时问题更为明显。这可能表明问题与WebDAV配置或Apache服务器的某些设置有关。解决这个问题可能需要检查Apache的配置文件以及错误日志,以查看是否有任何异常。

    其他用户的经验

    一些其他用户也分享了他们在使用WebDAV时遇到的类似问题。有人提到在网络连接不稳定或文件夹中包含大量文件时可能会出现问题。这可能提示请求超时或性能问题可能与问题有关。

    解决方案尝试

    在解决这个问题时,您可以尝试以下方法:

    1. 尝试SMB: 如果WebDAV无法解决问题,考虑尝试使用SMB(Server Message Block)作为替代方案。一些用户发现SMB在解决文件显示问题方面更有效。

    2. 检查Apache配置: 检查您的Apache配置文件,确保WebDAV正确配置。查看是否存在任何异常或错误设置。

    3. 查看错误日志: 使用Apache的ErrorLog功能查看错误日志,以寻找与问题相关的信息。

    4. 请求超时: 如果可能,考虑请求是否可能因超时而导致问题。如果是这种情况,可以尝试增加超时设置。

    5. 文件数量: 如果文件夹中包含大量文件,考虑减少文件数量或进行组织,以改善性能。

    结论

    在解决WebDAV文件显示不全的问题时,需要仔细检查Apache的配置和错误日志,以查找可能的原因。此外,考虑使用SMB作为替代方案,特别是在WebDAV无法解决问题时。最终,解决这个问题可能需要一些耐心和实验,以找到最佳解决方案。

    希望这篇文章对您有所帮助,如果您有任何疑问或需要更多的帮助,请随时向我提问。

  • 如何实现在当前会话断开后程序的暂停和后台继续运行

    如何实现在当前会话断开后程序的暂停和后台继续运行

    在快节奏的现代生活中,我们经常需要在SSH会话中运行程序,但如果会话断开了,程序也会随之中断,这让人颇为苦恼。曾经有一位名叫BellaCampen的用户在社交媒体上提出了这个问题,引发了大家的讨论。今天,我们将为你解答这个问题,让你的程序能够在当前会话断开后暂停或者后台继续运行,让你的工作更加高效。

    解决方案

    1. 使用nohup

    Nohup是一个强大的工具,可以让你的程序在会话断开后继续运行。你只需要在命令前加上nohup,就可以实现这个效果。比如:

    nohup your_command &

    这样,你的程序将会在后台继续运行,而且不受SSH会话的影响。这是一个简单而有效的方法。

    2. 使用tmux

    Tmux是另一个强大的工具,可以帮助你管理会话并让程序在断开后继续运行。你可以使用以下步骤:

    1. 安装tmux(如果未安装):在终端中运行 sudo apt-get install tmux 或者 sudo yum install tmux,具体命令根据你的Linux发行版而定。

    2. 启动tmux会话:运行 tmux 命令,这会创建一个新的tmux会话。

    3. 在tmux会话中运行你的程序。

    4. 断开SSH会话:即使你断开了SSH连接,tmux会话和你的程序仍然在后台运行。

    5. 重新连接:当你再次连接到服务器时,可以使用 tmux attach 命令重新附加到之前的tmux会话,继续查看和操作你的程序。

    3. 使用screen

    Screen是类似于tmux的工具,也可以实现在会话断开后继续运行程序的效果。你可以按照以下步骤使用screen:

    1. 启动一个新的screen会话:运行 screen 命令。

    2. 在screen会话中运行你的程序。

    3. 断开SSH会话:就像tmux一样,即使你断开了SSH连接,screen会话和程序仍然在后台运行。

    4. 重新连接:当你再次连接到服务器时,可以使用 screen -r 命令重新连接到之前的screen会话,继续操作你的程序。

    结语

    通过使用nohup、tmux或者screen,你可以轻松实现在当前会话断开后程序的暂停和后台继续运行。这些工具提供了灵活性和效率,让你的工作更加顺畅。不再担心会话断开导致程序中断,让你可以更专注地完成任务。

    如果你是一个经常需要在SSH会话中工作的人,不妨尝试这些方法,提高你的工作效率吧!

  • 修复GitLab-CE数据库丢失的全过程

    修复GitLab-CE数据库丢失的全过程

    在2023年4月24日,我收到了GitLab的升级通知,于是开始了升级操作,然而,这次例行升级引发了一个严重的问题,导致GitLab数据库丢失。这篇文章将记录我是如何修复GitLab的,同时也会提及一些我在这个过程中犯下的错误。虽然中途有一些操作没有及时记录截图,但我会尽量用备份的一些场景来还原过程。

    基本情况

    • 当前版本:GitLab-CE 15.9.5
    • 升级版本:GitLab-CE 15.11.0
    • 操作系统:Linux Debian 10
    • 硬件配置:2核8GB内存50GB硬盘
    • 500+仓库和13个GitLab Runner用于执行任务

    问题出现

    一切都开始于一次升级操作,我执行了升级命令,但不幸的是,一旦升级完成,问题就接踵而至。这是我犯下的第一个错误,没有在升级前对虚拟机进行快照备份,而是直接升级了内部应用。以前的升级都没有问题,因此我没有太多的警觉性。此外,由于我使用Docker部署GitLab已经有5年之久,每次更新都是按照相同的步骤进行,所以我没有过多地考虑到备份的必要性。以下是我执行的命令:

    docker rm -f docker && docker pull gitlab/gitlab-ce:latest && docker run -it --log-opt max-size=10m --log-opt max-file=3 -p 443:443 --name gitlab --restart always -v /root/gitlab/config:/etc/gitlab -v /root/gitlab/logs:/var/log/gitlab -v /root/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest

    第一次报错

    然而,升级命令执行后,我遇到了第一个错误,错误信息如下:

    SELECT COUNT(*) FROM container_repositories WHERE migration_state = 'import_skipped'
    ERROR:  column "migration_state" does not exist at character 51

    错误信息明确指出了解决方法,它建议我添加一个参数 -e GITLAB_SKIP_UNMIGRATED_DATA_CHECK=true 来重新启动实例,以绕过升级检查。于是我添加了这个参数,重新启动了GitLab实例。

    第二次报错

    然而,第二次启动后,又出现了问题,错误信息如下:

    Starting the database
    Error starting the database. Please fix the error before continuing
    Expected process to exit with [0], but received '1'

    这次的错误是关于数据库启动的问题,GitLab试图升级PostgreSQL版本,但出现了问题。它提供了另一个解决方案,要求我添加 -e GITLAB_SKIP_PG_UPGRADE=true 参数来跳过数据库升级。于是我使用了GitLab之前的版本 gitlab/gitlab-ce:15.9.5-ce.0 来重新启动。

    第三次报错

    第三次启动后,我遇到了文件权限的问题,错误信息如下:

    failed to read meta.json for a block during repair process; skipping" dir=/var/opt/gitlab/prometheus/data/01GYSNK1JKD2X5125MP0ZRPKFH err="open /var/opt/gitlab/prometheus/data/01GYSNK1JKD2X5125MP0ZRPKFH/meta.json: permission denied"

    通过分析日志,我发现只是一个权限问题,于是我毫不犹豫地将相关目录的权限设置为777:

    chmod -R 777 /root/gitlab/config
    chmod -R 777 /root/gitlab/logs
    chmod -R 777 /root/gitlab/data

    然后进行了第三次重启。

    第四次报错

    第四次启动后,我遇到了与邮件

    通知相关的错误,错误信息如下:

    Could not determine email for job (please check DB for incomplete objects)

    这个错误并没有提供直接的解决方案,但它暗示了可能存在数据库问题。在这一点上,我开始感到紧张,因为我没有数据库备份。但我决定尝试一个解决方案,我执行了以下命令:

    sudo gitlab-rake gitlab:db:bootstrap

    这个命令似乎修复了一些数据库问题,然后我进行了第四次重启。

    第五次报错

    第五次启动后,终于没有再次报错,GitLab看起来正常运行了。我尝试登录,并确保所有存储库和项目都存在。但是,当我尝试访问一个项目时,我遇到了一个新的问题,即无法获取存储库的内容,错误信息如下:

    The repository could not be found.

    这个问题让我感到非常焦虑,因为我拥有的存储库非常重要。我开始寻找解决方法,但在这个过程中,我再次犯了一个错误,没有停止GitLab容器,而是继续尝试解决问题。这导致了我在一次数据恢复尝试中误删除了存储库数据。

    数据恢复

    在数据丢失之后,我感到非常沮丧,但我没有放弃。我开始尝试从GitLab备份文件中恢复数据。幸运的是,我之前有一个定期备份GitLab数据的任务,这些备份文件位于 /root/gitlab/backups 目录下。我决定尝试从这些备份中恢复数据。

    恢复备份

    首先,我列出了可用的备份文件,使用以下命令:

    ls /root/gitlab/backups

    然后,我选择了最近的一个备份文件,执行了以下命令来恢复数据:

    docker exec -t gitlab gitlab-backup restore BACKUP=xxx

    在这里,xxx 是我选择的备份文件名。恢复过程可能需要一些时间,因为它涉及到将数据从备份文件还原到数据库中。

    恢复存储库

    一旦数据恢复完成,我还需要恢复存储库的数据。由于我之前误删了存储库数据,我只能尝试从GitLab Runner的备份中恢复存储库。这是我犯下的又一个错误,因为我应该在执行任何操作之前停止GitLab容器以防止进一步的数据丢失。

    我列出了GitLab Runner的备份文件,使用以下命令:

    ls /root/gitlab/data/gitlab-runner/data

    然后,我选择了最近的一个备份文件,执行了以下命令来恢复数据:

    docker run --rm -v /root/gitlab/data/gitlab-runner/data:/data ubuntu cp -R /backup /data

    这将备份文件从Runner容器复制到了宿主机的Runner数据目录中。

    修复存储库

    然而,这还不够,因为存储库数据仍然无法访问。我需要执行以下命令来修复存储库数据:

    docker exec -t gitlab gitlab-rake gitlab:storage:rollback ORIG_STORAGE=/var/opt/gitlab/git-data/backups/

    这个命令将存储库数据从备份中还原到正确的位置。

    结论

    经过多次尝试和一些错误,我终于成功地修复了GitLab数据库丢失的问题,并且成功恢复了存储库数据。这次经历教训深刻,我意识到了数据备份的重要性,以及在遇到问题时要及时停止容器以防止进一步的损失。同时,我也学到了如何从GitLab备份中恢复数据,以及如何修复存储库数据。希望这篇文章对其他遇到类似问题的人有所帮助。

    下一步计划

    在修复了GitLab的问题后,我计划进一步改进我的GitLab部署策略,确保数据的安全性和可恢复性。我还会继续学习并提升自己的技术能力,以更好地应对类似问题。同时,我也会分享这次经历和教训,希望能够帮助其他人避免类似的困境。

  • 如何实现在5分钟后执行快捷指令

    如何实现在5分钟后执行快捷指令

    你是否曾经想过在5分钟后执行一个特定的快捷指令,但却发现Siri并不总是理解你的意图?在这篇文章中,我们将探讨如何实现这个目标,以及一些有趣的方法来绕过Siri的限制。

    Siri的局限性

    Siri是苹果的虚拟助手,可以执行各种任务,包括执行快捷指令。然而,当我们尝试告诉Siri在5分钟后执行某个快捷指令时,它似乎并不总是能够准确识别我们的意图。通常情况下,Siri会创建一个5分钟后的提醒事项或者家庭任务,而不是执行我们所期望的快捷指令。

    Crontab服务的尝试

    有一位用户提到了使用Crontab服务的方法。Crontab是一种在Unix系统上用于定时执行任务的工具,但它通常用于服务器和计算机系统,而不是手机上。虽然这个方法可能在某些情况下有效,但对于大多数普通用户来说,它可能不够方便。

    快捷指令的实时性

    另一位用户提到了快捷指令的实时性。事实上,快捷指令通常是实时执行的,而不是预定执行的。这意味着要在将来的某个时间点执行快捷指令可能需要一些额外的技巧。

    修改快捷指令添加等待时间

    有一种方法是在你的快捷指令的开头添加一个等待时间。例如,你可以在指令的最前面加上一个等待300秒的命令,这样就可以实现在5分钟后执行该指令。这个方法确实可以实现目标,但有一个缺点,那就是如果你想要改变等待时间,你需要进入快捷指令并手动修改它。

    使用变量和Siri的帮助

    另一个方法是使用变量,并通过Siri的语音输入来设置等待时间。这需要一些额外的操作,但可以让你更加灵活地控制执行时间。你可以将等待时间设置为一个变量,然后在呼叫Siri时弹出一个输入框,让你手动输入等待时间。这样,你就可以轻松地在不同时间执行不同的指令。

    使用闹钟替代

    如果你不介意稍微繁琐一些的方法,你还可以使用手机的闹钟功能来代替Siri。你可以设置一个闹钟,在闹钟响起时执行你想要的快捷指令。虽然这不是最直接的方法,但它是一个可行的替代方案。

    使用at命令

    另一个方法是使用at命令。at是一个用于在将来的某个时间点执行命令的工具,通常在Unix和Linux系统上使用。虽然这需要一些命令行操作,但它可以让你相对轻松地安排快捷指令的执行时间。

    创造自定义的解决方案

    最后,你还可以考虑创建自定义的解决方案。例如,你可以编写一个包含延迟执行逻辑的自定义快捷指令,然后在需要时手动启动它。这样,你可以完全掌握执行时间,尽管这需要一些额外的努力。

    结论

    虽然Siri在执行快捷指令时可能存在一些限制,但通过一些创新的方法,你仍然可以实现在5分钟后执行特定的快捷指令。无论你选择哪种方法,都要确保它符合你的需求和习惯。

    在未来,我们也期待看到苹果可能会改进Siri的功能,使其更加灵活和智能,以满足用户不断变化的需求。

  • 构建自己的NAS家庭服务器:省钱、省心、省心事

    构建自己的NAS家庭服务器:省钱、省心、省心事

    在这个数字化时代,我们积累了大量的数据和服务需求。无论是照片、视频还是文档,数据的存储和访问对于每个人都至关重要。然而,云存储和订阅服务的费用逐渐攀升,使人们陷入了昂贵的存储解决方案和复杂的订阅费用之中。如果你正寻求一种方法来摆脱这一困境,那么自己构建一个便宜的DIY NAS家庭服务器可能是一个更好的选择。

    DIY NAS与购买现成产品的对比

    在决定是否走DIY NAS的路线之前,值得考虑一下你对设备的需求。QNAP或Synology等品牌的NAS产品提供了更为简单、不费时的选择。它们提供了预安装的操作系统和全面的软件套件,可以处理云文档、备份等各种任务。此外,它们支持Docker容器、硬件RAID,并且可以扩展到许多NVMe和SATA端口,满足高级用途。但请准备好支付高昂的价格以换取即插即用的便捷性。

    相比之下,DIY NAS涉及的步骤更多,不仅包括选择硬件,还包括设置软件。但优势也是显而易见的:DIY路线为你的预算提供更多的性能,具有更大的硬件和升级灵活性,而且你可以通过重新利用旧笔记本电脑、PC或树莓派来节省大量费用。我多年来一直在我的树莓派4上运行家庭服务器,直到最近才升级。

    选择适合建造廉价NAS的硬件

    要从零开始构建NAS有两种主要方法:一种是使用类似PC的专用外壳,另一种是使用带有直接附加存储(DAS)的迷你PC。前者是重新利用旧CPU的绝佳方式,可以提供大量的NVMe和SATA端口,以实现最佳性能和存储。然而,选择主板、内存、电源和机箱等部件相对复杂,如果没有零件在手,成本可能会迅速超过预制NAS的价格。

    如果你从零开始并且不需要特别复杂的配置,我建议选择迷你PC和DAS路线。它们价格便宜,设置简单,而且在需要额外处理能力或可扩展存储时仍然非常容易升级。唯一的缺点是与较大的主板相比,NVMe/SATA硬盘连接数有限。要获得外部存储的良好性能,你需要一个USB 3.0(5Gbps)端口或更高版本,但即使这样,如果打算在同一DAS中在多个SSD之间传输大量数据,这也可能成为瓶颈。你可以通过使用10Gbps USB 3.1 Gen 2端口、电缆和DAS来解决这个问题,但这些更昂贵。但对于存储照片、音乐和文件来说,5Gbps的USB速度已经足够了,特别是与旋转硬盘一起使用时。

    选择适用于DIY NAS的CPU/迷你PC

    选择合适的CPU/迷你PC是关键决策。由于NAS始终处于开启状态,低待机功耗是一个很大的优点,但这需要与提供的最大性能进行权衡。基本的NAS用例,如文件共享,需要非常少的功率,但如果你想进行AI图像识别或HDR视频转码,需求会迅速增加。

    例如,1W的基于Arm架构的Raspberry Pi 3可以用于Plex媒体服务器,但只支持直接播放。而4W的树莓派4型号勉强可以运行低比特率的1080p x265软件转码。但要实现4K转码,通常需要Intel Core i5或i7处理器,伴随着大约60W的系统空闲功耗。幸运的是,现代移动芯片上的Intel Quick Sync或类似的硬件转码效果相当不错,可以大幅降低功耗。我编制了一个大致的硬件指南,以满足特定用例的需求,但不可能涵盖每一种硬件。

    芯片组 TDP范围 用例
    极低功耗 Raspberry Pi 3 1-3W 文件共享和备份、媒体服务器(仅直接播放)、基本的Minecraft服务器
    低功耗 Raspberry Pi 4B、Intel J、AMD Ryzen嵌入式(无GPU) 5-20W 文件共享和备份、媒体服务器、低用户数1080p视频转码、基本的图片机器学习、低玩家数量的Minecraft服务器、家庭助手
    平衡功耗 Intel N、AMD Ryzen嵌入式(带GPU) 10-30W 文件共享和备份、媒体服务器、多用户4K视频转码、图片机

    器学习、Minecraft服务器、家庭助手
    高级 | Intel Core i3、i5、i7、AMD Ryzen 3、5、7 | 45-200W | 文件共享和备份、媒体服务器、高质量多用户视频转码、图片机器学习、Minecraft服务器、家庭助手

    在我的最新构建中,我选择了一台新的搭载Intel N100处理器的Trigkey G5迷你PC(来自亚马逊,售价200美元),配备了过剩的16GB LPDDR5内存、双2.5Gbps LAN以及一块性价比较高的500GB NMVe操作系统固态硬盘。这款迷你PC在空闲状态下的功耗仅略低于6W(几乎与树莓派4相当),但却配备了四个3.4GHz的Alder Lake E核心和硬件转码功能。在峰值时可以达到30W的功耗,足以处理广泛的应用程序和我测试过的四个4K HDR HVEC到1080p的转码流。这远远超过了中端NAS市场上充斥着的Intel Celeron J和AMD Ryzen V1000芯片所提供的性能。

    5W和60W待机功耗之间的差距可能会带来每年100美元的差异。

    搭配一台4盘位的Terramaster DAS(来自亚马逊,售价170美元),可以获得高达80TB的存储容量,这个配置比高端的Synology DS923+(售价600美元)还要强大,成本不到其三分之二。尽管没有硬件RAID支持(我不需要),但你可以为你的DAS添加这个功能,成本相对较低。

    这只是高端DIY选项的一个例子。你可以选择一台搭载Intel N5095、8GB内存的迷你PC(来自亚马逊,售价149美元)和一个双盘位外壳(来自亚马逊,售价80美元),价格大致与入门级的Synology DS223相当。但同样,这款芯片的性能显著更强,足以处理数个4K转码流,并从庞大的库中创建图片缩略图。廉价DIY NAS配置的另一个好处是,迷你PC可以自带一个2.5英寸硬盘或两个,如果这正是你所需要的,你可以廉价地将一个2.5英寸硬盘连接到USB硬盘上,或者选择适合你的存储需求并根据需要进行升级的多种两盘、四盘甚至更多盘位的DAS选项。

    安装DIY NAS软件的技巧

    到目前为止,一切都很容易,但安装软件是为了省钱而进行的努力所需要付出的时间。虽然我不能在这里涵盖所有可能的配置选项,但我可以提供一些初学者友好的简短提示,帮助你入门。

    为你的NAS选择操作系统

    尽管坚持使用熟悉的操作系统如Windows可能很诱人,但NAS更适合没有显示器的操作系统,比如众多的Linux发行版之一。此外,我们还可以享受到Docker的好处。然而,对于未经培训的人来说,安装和使用Linux命令行可能会感到困难。幸运的是,OpenMediaVault提供了可启动的ISO媒体,使安装过程非常简单,所以我不需要在这里重复步骤。只需将一个USB驱动器刻录成可启动盘,在你的PC上引导它,然后按照步骤在全新硬盘上安装OMV即可。TrueNAS Scale也是一个不错的选择,因为它提供了可启动的ISO媒体,但本文重点介绍了OMV。

    但值得注意的是,我的最新设置无法检测到我的迷你PC的LAN硬件,在使用新硬件时可能会出现问题。因此,我安装了最新版本的Debian(包括最新的Linux内核),并确保在安装过程中启用了SSH,以便我可以在启动时访问命令行。如果需要命令行访问,你需要找到你的NAS本地IP地址,并使用像Putty这样的服务进行隧道连接。

    然后,我使用了这个非常有帮助的脚本来在其上安装OMV——这与在树莓派上安装OMV的过程相同。一旦安装完成,你需要从路由器的设置中找到NAS/PC的本地IP地址(例如192.168.1.10),然后通过Web浏览器登录到OMV。就是这样,你将不再需要触及命令行。

    添加应用程序和服务

    OMV默认提供了管理硬盘驱动器、设置网络文件共享、同步备份和监视系统所需的一切。但我们还需要安装一些应用程序来更充分地利用我们的设置。这就是Docker派上用场的地方。首先,你需要在System > omv_extras > Docker-repo下启用Docker,然后在System > Plugins中安装Compose插件(如果尚未安装omv_extras,你也可以在这里找到它)。

    现在,你应该能够看到Service > Compose菜单。进入Files开始添加应用程序。OMV提供了

    一些示例,你可以添加它们,其中包括Deluge、Plex、Pihole、Syncthing等流行的应用程序。但在保存和启动服务之前,我们需要了解一些关于docker-compose文件的基础知识,特别是volumes参数。

    Docker可能令人生畏,但一旦你掌握了它,就能够访问广阔的自托管软件世界。选择太多,因此我列出了一个非穷尽的列表,以便你入门。

    媒体服务器

    • Jellyfin — 开源媒体服务器,支持良好的客户端。
    • Plex — 闭源媒体服务器,支持广泛的客户端。
    • Navidrome — 开源音乐服务器。

    图片查看器

    • Photoprism — 具有机器学习功能的照片库。
    • Lychee — 开源画廊管理工具。
    • Immich — 早期开发的Google照片替代方案。

    办公/文件

    • Nextcloud — 开源的自托管云存储。
    • Owncloud — 半开源的自托管云存储。

    有用的工具

    • Home Assistant — 在一个地方管理你的智能家居设备。
    • Nginx反向代理管理器 — 通过你自己的子域名将服务暴露在网上。
    • Pihole — 通过将流量路由通过你的服务器来阻止广告。

    从简单的备份到自托管的替代品,以替代昂贵的云服务,构建一个廉价的DIY NAS可以割断与日俱增的昂贵云服务的联系。现成的NAS硬件是入门的好方法,尤其是如果你时间有限。但希望这篇指南能够说服你,自己构建PC或Mini-PC/DAS设置是掌控自己设置的好方法。而且成本要低得多,硬件要多得多,比Synology或QNAP多得多。

    如果你对自己的DIY NAS有更多的需求和野心,那么自己动手搭建一个NAS可能是个不错的选择。不仅可以根据自己的需求定制硬件,还可以掌控整个系统,提供更多的性能和灵活性。当然,这需要更多的时间和精力,但最终的结果可能会更加令人满意。

    最后,不要忘记备份你的数据,因为DIY NAS虽然强大,但也有风险。无论你选择哪种方式,都要确保你的数据安全,这样你就可以享受到自己构建的NAS带来的自由和性能优势。

  • 声音魔法:VITS音频转换框架揭秘

    声音魔法:VITS音频转换框架揭秘

    在一个安静的夜晚,我坐在电脑前,思考着如何将我的声音转化成我的最爱的音乐人的声音。这似乎是一个不可能的任务,但却充满了神秘感。突然,我发现了一个名为Retrieval-based-Voice-Conversion-WebUI的项目,它基于VITS(Voice Inference from Text and Speech)框架,提供了一个轻松易用的声音转换工具。于是,我踏上了声音魔法之旅,今天我将与大家分享这一奇妙的经历。

    声音转换的魅力

    在开始揭秘Retrieval-based-Voice-Conversion-WebUI之前,让我们先来聊聊声音转换的魅力。声音是一种神奇的媒介,可以传达情感、表达个性,甚至改变现实。你是否曾经梦想过能够像你喜爱的歌手一样唱歌?或者是在特定场合中,用某位名人的声音发表演讲?声音转换技术为这些梦想提供了可能性。

    但是,要将声音从一种变成另一种,这绝非易事。声音转换涉及复杂的信号处理、深度学习模型和大量的数据。幸运的是,现在有了一些强大的工具和框架,它们使声音转换变得更加容易和有趣。

    Retrieva-based-Voice-Conversion-WebUI简介

    Retrieval-based-Voice-Conversion-WebUI是一个基于VITS框架的声音转换工具,它可以将一种声音转换为另一种声音,同时保留语音的自然感觉。这个项目的目标是让声音转换变得容易,并且可以在普通电脑上进行,无需高端硬件。

    以下是这个项目的一些关键特点:

    • 通过使用top1检索将源特征替换为训练集特征,减少音调泄漏。
    • 即使在相对较差的显卡上,也可以进行轻松快速的训练。
    • 即使使用少量数据进行训练,也可以获得相对好的结果(建议使用不少于10分钟的低噪音语音)。
    • 支持模型融合以改变音色。
    • 提供易于使用的WebUI界面。
    • 使用UVR5模型快速分离声音和乐器。
    • 使用最强大的高音提取算法InterSpeech2023-RMVPE来防止消音问题,提供了显著更好的结果,速度更快,资源消耗更低。

    现在,让我们一起来探索如何使用Retrieval-based-Voice-Conversion-WebUI进行声音转换。

    准备环境

    首先,确保你的Python版本是3.8或更高。然后,执行以下命令以安装主要依赖项:

    # 安装PyTorch相关核心依赖项,如果已安装,请跳过
    pip install torch torchvision torchaudio

    接下来,可以使用Poetry来安装其他依赖项:

    # 安装Poetry依赖管理工具,如果已安装,请跳过
    curl -sSL https://install.python-poetry.org | python3 -
    
    # 安装项目依赖项
    poetry install

    或者,你也可以使用pip来安装它们:

    # 对于Nvidia显卡
    pip install -r requirements.txt
    
    # 对于Windows上的AMD/Intel显卡(DirectML):
    pip install -r requirements-dml.txt
    
    # 对于Linux / WSL上的Intel ARC显卡,使用Python 3.10:
    pip install -r requirements-ipex.txt
    
    # 对于Linux上的AMD显卡(ROCm):
    pip install -r requirements-amd.txt

    接下来,你需要下载其他预模型文件,可以在项目的Huggingface空间中找到它们。这些文件包括了用于推断和训练的预模型文件。确保将它们放在正确的目录下。

    开始声音转换

    一旦你的环境准备好了,你可以使用以下命令启动WebUI:

    python infer-web.py

    如果你使用的是Windows或macOS,你可以直接下载并解压RVC-beta.7z文件,然后使用go-web.bat(Windows)或sh ./run.sh(macOS)来启动WebUI。

    结束语

    声音转换是一门神奇的艺术,它使我们能够在声音的世界中自由穿越。Retrieval-based-Voice-Conversion-WebUI为我们提供了一个便捷的工具,让我们能够将声音转换成我们想要的样子。无论是在娱乐还是工作中,这个项目都有着巨大的潜力。探索声音的可能性,释放声音的魔法吧!

  • 深度操作系统(deepin):迎来智能化升级,开启AI未来

    深度操作系统(deepin):迎来智能化升级,开启AI未来

    在数字化时代,操作系统扮演着关键角色,为各种计算机软件提供了运行和支持的平台。而如今,深度操作系统(deepin)通过引入大型AI模型,正迈向智能化未来,释放了AI的无限潜力。本文将为你介绍深度操作系统的智能化升级,以及其对用户体验和应用领域的积极影响。

    开篇故事:深度操作系统的AI之梦

    在一个富有科技感的办公室里,小明打开了他的电脑。深度操作系统(deepin)的最新版本已经正式发布,而他迫不及待地想要体验这个智能化的新系统。在不久的将来,他可以通过语音、图像等多种方式与电脑互动,享受更便捷、智能化的操作体验。

    这只是一个普通用户的愿景,但它正变为现实。深度操作系统在2023年宣布实现了大型AI模型的能力接入,为用户带来了更智能、更便捷的操作体验。让我们一起深入了解这个令人振奋的新发展。

    深度操作系统迎来智能化升级

    深度操作系统一直以来都积极参与国内外开源建设,不断消化吸收国内外先进技术,加速提升创新能力。而今,深度操作系统的智能化升级意味着更多可能性的开启。

    大模型能力接入

    深度操作系统实现了国内外主流大型AI模型的能力接入,并将其封装成深度操作系统的AI底层公共能力。这一举措的意义重大,因为大型AI模型具有强大的语言理解和处理能力,使操作系统能够更好地理解用户行为,从而提升用户体验。

    操作系统中的AI助理

    未来,每位用户都将拥有一个专属的AI助理,它将运行在操作系统之上。这个AI助理将为用户提供全新的交互模式,使用户可以通过自然的对话与计算机进行交流,获取更个性化的服务。

    AI作为操作系统的基础能力

    AI将成为操作系统的基础能力之一,合作伙伴可以直接调用操作系统提供的AI能力,从而释放平台的更多潜力。这意味着未来的应用将更加智能化,用户可以享受到更多便利和个性化的服务。

    智能化应用体验

    为了让用户尽早享受到智能化的便利,深度操作系统选择了三大常用应用进行AI能力的落地,它们分别是智能全局搜索、邮件应用和浏览器。

    智能全局搜索

    智能全局搜索支持自然语言搜索、图片内容搜索和文档内容搜索,用户可以轻松实现“一键搜索,一键直达”的便捷体验。不管是查找文件名还是文件内容,都可以得到智能的搜索结果,大大提高了搜索效率。

    邮件应用的新体验

    邮件应用在日常办公中非常常见,但往往需要大量时间用于书写、排版等工作。通过深度操作系统的AI能力,用户可以更加高效地处理邮件,包括邮件内容的生成、主题的提炼、邮件内容的润色等功能,极大提升了工作效率。

    浏览器的新玩法

    深度操作系统的浏览器应用也得到了智能化升级。用户可以通过提问代替搜索来获取信息,浏览器提供了聊天问答、快捷浮窗、自定义提示词等功能,使浏览变得更加智能和便捷。

    深度操作系统的AI未来

    深度操作系统一直致力于打造最易上手的Linux操作系统,为用户提供无与伦比的体验。AI的引入将使操作系统变得更加智能,用户可以通过语音识别、图像识别等技术更加便捷地进行操作,提高了日常使用的便利性。

    未来,深度操作系统将继续探索更多的AI应用模式,随着技术的不断进步,它将成为更加优秀的开源操作系统,为全球用户带来更好的体验。同时,深度操作系统也期待更多的开发者和企业能够参与到这一创新过程中,共同推动开源操作系统和大型AI模型的深度融合,为构建更美好的未来科技世界贡献力量。

    深度操作系统的智能化升级是一个令人振奋的里程碑,它将为用户带来更加智能和便捷的操作体验,也为AI技术的发展开辟了新的道路。

    结语

    深度操作系统的智能化升级代表了AI技术在操作系统领域的深入应用,它为用户带来了更多便利和
    个性化的体验。随着未来的不断发展,我们可以期待更多智能化的应用将进入我们的生活,让我们的数字化世界变得更加智能、更加便捷。