DevinZ A Blogger 2023-04-12T22:15:00+08:00 Typecho http://www.devinz.org/feed/atom/ <![CDATA[The Voice of April]]> http://www.devinz.org/covid2019.html 2023-04-12T22:15:00+08:00 2023-04-12T22:15:00+08:00 Devin http://www.devinz.org covid.jpg

听同事说,这两天地铁已经不强制带口罩了。

今天限行。早上我打算尝试着不戴口罩坐地铁。出门前还是犹豫了一下,谨慎起见,还是在兜里装个皱巴巴的旧口罩。于是我脸上空无一物,一边往地铁口走,一边想:如果因为我没有戴口罩被地铁里的保安拦下来,我应该怎么应对。等走到了地铁里,我假装面无表情,目光没有和任何一位保安对视,顺利且快速地通过了安检和闸机。过了闸机之后,我甚至还有些失望,保安为什么没有拦住我,像之前那样冲我呵斥:把口罩戴上!

我看着地铁人流中每一个人,他们的脸上都挂着各式各样的造型的口罩,也只有我一个人没有戴。或许是从众心态作祟还是什么原因,我的心里甚至还有一丝不自在和尴尬。而且说实话,车厢里的空气和味道其实并不好。30分钟的车程里,只有少数一两个乘客盯着我看了几眼,倒也没后续。我甚至在想,这时候如果有人跳出来质问我,我应该怎么做。最终一直到我出了地铁,也什么都没发生。

回想过去的三年多,恍然如一场怪梦。

我到现在还清晰记得武肺疫情刚刚开始的阶段,因为在家关了将近两个月,因为无法我忍受头发太长,试图对着镜子用儿童电动理发器“自理”解决,然后顺理成章的喜提光头的可笑画面,在腾讯视频会议的公司全体会议里,大家都打开了摄像头,我偏偏没有,因为光头真的很丑。

那些无休止的核酸检测、社区封控,还有变换着花样的各种出入证,以及滥用权力的社区人员、打电话威胁我的警官、还有形形色色的保安以及藏在防护服后面的各种人(而且他们会有一个可笑的代号叫「大白」)至今还充斥在我的记忆里。还有我们跟随着风向抢购物资,屯水屯菜、屯布洛芬、抗原、一直到奥司他韦。

2022年11月24日,中国全面放开疫情管控的前一周,我沿着北京三环步行,看着三环的过街天桥上一个个写着大字的红色横幅,和在大量在天桥上站着望风的人民群众。之后路过了一个贴满告示的核酸检测亭,上面张贴满了各种不同规格字体样式的告示,还有那仓促而奇怪的造型,在那天的重度雾霾的天气中,显的特别荒谬。于是我掏出手机拍下了一张这张照片,并在人群的队伍里做了最后一次核酸。

2022年12月5日,我和绝大多数人一样,感染了奥密克戎,在家躺了十天才转阴,那几天确实很难熬,严重的腰痛骨痛,没什么食欲,体重也大量降低,但我知道我肯定会好,就一定能坚持下来。恢复之后,我开始给不在北京的朋友们邮寄布洛芬和抗原,帮助他们准备迎接即将到来的疫情。连我手里仅有的两瓶阿兹夫定,都成了香饽饽一样珍贵。

三年过去,我没有打一针国产灭活新冠疫苗。同时,也因为我有一些浅显的互联网技术认知,尽可能通过技术手段不使用各种健康码防疫码,尽可能地不去做核酸。这些都是我用自己最微弱,也是唯一可行的方式,去表达自己对抗国家机器的态度。

在充斥着奇怪的拼音缩写和和谐声音的国内互联网环境中,还有我自己默默保存下来的那些数字记忆。当我打开收藏夹再次翻看纪录片《The Voice of April》,看到评论区最新的一条回复:“时隔一年,再看一次,依然忍不住眼泪”。

不知道那些失去了特殊权力的人内心是否会变的黯淡,也不知道这个国家的人,还要多久才能摘下口罩。

]]>
<![CDATA[MacOS Ventura 的新 SMB 文件共享 Bug]]> http://www.devinz.org/macos_ventura_smb_drive_fix.html 2023-03-31T14:12:00+08:00 2023-03-31T14:12:00+08:00 Devin http://www.devinz.org 其实在 SMB 连接上翻车已经是苹果的祖传艺能了。2017年我也发现过类似的Bug。
出现错误的图片
这几天又发现了一个 SMB 文件共享连接故障的 Bug,“连接到服务器“192.168.1.10”时出现问题。请检查服务器名称或IP地址,然后再试一次。如果问题持续发生,请联系系统管理员”。

原本可以正常使用的 SMB(Samba)文件共享连接,系统升级后,突然就不工作了。造成这次 Bug 原因也是非常奇葩,是先前能够正常挂载的 SMB 驱动器使用了「自定义图标」造成的。

修复方法也很简单(当然为了解决这个问题我也花了几天时间):

先重启已经无法连接的 Samba 服务器,然后你会发现可以重启后是能够正常挂载一次的(锁定系统或者隔一段时间后再连接就又会出现故障)。然后在 MacOS 中,在桌面上找到已经挂载的驱动器图标,选中后按 “Command+I”打开属性,用鼠标单击顶部的自定义图标,然后再按下 “Command+X” 把自定义图标剪掉,之后驱动器图标会恢复为系统默认样式,最后重新系统,故障应该可以顺利解决。

如果重启后仍然无法连接,可以再次尝试先重启已经无法连接的 Samba 服务器并再次挂载,并在 MacOS 中使用命令行,彻底清除之前已经挂载的驱动器的扩展属性:

xattr -c /Volumes/你的共享\ 名称

提示:如果驱动器名称中有空格,请在空格前键入“\”,如上所示。问题即可解决。

这个问题在旧版本的 MacOS Monterey 下不会出现的,只会发生在 MacOS Ventura 13.2 及 13.3下,另外同样能对iOS 16.3造成影响。目前最新的 13.4 Beta 1 尚未修复这个错误。

这个问题在AppleInsider论坛 \ Reddit 上也有过大量讨论。

如果上述操作对你仍然无效,则可以试图切换 MacOS 的 SMB版本:

sudo sh -c "echo '[default]' >> /etc/nsmb.conf; echo 'protocol_vers_map=6' >> /etc/nsmb.conf"
7:这将启用 SMB 1/2/3(默认)
6:这将启用 SMB 2/3
4:这将仅启用 SMB 3
2:这将仅启用 SMB 2
1:这将仅启用 SMB 1启用

此处的 =6 代表设置为仅 SMB v2/3(低版本的 Mac 系统曾经是使用 “smb_neg=smb2_only”,现在失效了)。这个命令会在 /etc 目录中添加一个 nsmb.conf 文件,系统检测到这个文件后就会默认按照你设置的值对外连接SMB。修改后需要重启才能生效。(如果需要回到默认连接,只需要 rm /etc/nsmb.conf 即可)。

]]>
<![CDATA[Parallels Desktop 17 for MacOS 虚拟机软件的常见错误处理方法]]> http://www.devinz.org/Parallels-Desktop-for-mac.html 2022-06-09T15:46:00+08:00 2022-06-09T15:46:00+08:00 Devin http://www.devinz.org 本篇文章是对Parallels Desktop 常见问题的修复方法整理

错误提示:Failed to start the VM: Operation canceled. The operation has been canceled. (255)

解决方法:说明你的PD版本有变化,但虚拟机仍处于休眠或者中止状态,还没有匹配好。请将虚拟机关机,或者强行停止虚拟机,再退出PD,然后重新启动PD,再运行启动公交即可解决。(强行停止虚拟机的方法:右键PD,选择控制中心,双击虚拟机齿轮附近空白处,打开虚拟机窗口,然后在屏幕左上方的菜单栏,选择操作—停止,这样也可以强行关闭虚拟机。)


错误提示:Failed to start the VM: The configuration file you specified is invalid. Make sure that the specified file is a valid Parallels virtual machine configuration file and it is not corrupt, or select another file. (255)

解决方法:虚拟机的文件已丢失,可以右键PD,选择控制中心,检查虚拟机的状态,如果虚拟机已经损坏,建议重装虚拟机系统。如果出现以下的状态,可以到回收站找回本体文件,然后复制到你Mac电脑的个人文件夹中,路径为/Users/你的用户名/Parallels。


错误提示:无法打开“Windows 11.app“,因为无法验证开发者。 MacOS无法验证此App 不包含恶意软件。 此项目位于磁盘映像“直接启动 Windows 11.dmg“上。“Safaribevitor伟德备用网址器“于2022年1月1日从“www.icloud.com“下载了此磁盘映像。

解决方法:在「系统偏好设置—安全性和隐私中—通用」,在下方选择「仍要打开」允许这个程序即可。


错误提示:The command is available only in Parallels Desktop for Mac Pro or Business Edition. (255)

解决方法:右键Docker栏的PD图标,选择关于Parallels Desktop,看是否有Pro Edition的标识,如果没有,就是标准版的。①关闭虚拟机,退出PD②进入MAC系统的系统偏好设置,选择时间与日期,修改系统时间为2021年2月2号③然后启动 PD,运行虚拟机,继续试用④进入虚拟机后,你的PD版本会自动切换到专业版⑤最后把时间改回来。或者尝试:①在PD输入密钥的界面下,不要关闭窗口②进入MAC系统的系统偏好设置,选择时间与日期,修改系统时间为2021年2月2号③然后回到PD输入密钥的窗口,点然后点免费试用14天,你会有惊喜发现。④点继续试用,你的PD版本会自动切换到专业版⑤把时间改成正确时间。


错误提示:Failed to get VM config: The virtual machine could not be found. The virtual machine is not registered in the virtual machine directory on your Mac. (255)

解决方法:可能是虚拟机未装好,可以右键Dock栏,选择控制中心,查看虚拟机的状态,是否有安装好?或者是你的虚拟机名称并非 Windows 11,请关闭或者强行停止win11虚拟机,到PD控制中心重命名,注意大小写和空格。(Win10的标准名字是Windows 10,Win11的标准名字是Windows 11,Ubuntu的标准名字是Ubuntu Linux)。


错误提示:Failed to start the VM: Unable to perform the operation because "Windows 11" is not stopped. This operation can be performed for stopped virtual machines only. (255)

解决方法:虚拟机已在后台运行,可以手动运行PD,右键Dock栏的PD图标, 选择控制中心,查看虚拟机系统的运行状态,可以右键电源图标,选择关闭或者停止,然后重新运行延时工具即可。另外,如果你的虚拟机设置成融合模式,已经后台运行,重复运行延时工具也可能会有这个报错,建议关闭融合模式。


错误提示:Aug 20 04:20:00 pdfmbootstrap[1131] : prlctl[1065]: Failed to initialize Parallels Desktop in unattended mode. This may be caused by ether corrupt installation or if you just installed Parallels Desktop. In order to initialize Parallels desktop ether: 1. Start Paralles Desktop by double-clicking to Parallels Desktop bundle, or 2. Run following initialization procedure from command line: sudo "/Applications/Parallels

解决方法:虚拟机系统没有安装,建议全新安装虚拟机系统,如果曾经有安装虚拟机,可以导入进来,路径为/Users/你的用户名/Parallels文件夹里,双击pvm格式的虚拟机文件,可以自动导入。如果没有这个文件,则需要重新安装虚拟机。


错误提示:Failed to start the VM: This product was activated for a limited period of time that has now expired. Purchase a new activation key (https:// www.parallels.com/buy-pdfm17-zh_CN/) to continue using Parallels Desktop. (255)

解决方法:提示超出激活时间,需要购买激活密钥。若出现如图错误提示,或者类似的提示,请退出PD软件,到Mac电脑应用程序文件夹,把Parallels Desktop软件拖动到垃圾篓。然后自行更换其他可用版本,操作不会影响你的Windows虚拟机数据。另外建议禁用PD软件更新,方法:右键Dock栏的PD图标,选择偏好设置—通用,把检查更新设置成从不,把自动下载更新的勾去掉即可。


错误提示:sh: /usr/local/bin/prlctl: No such file or directory (127)

解决方法:当前安装的可能是 App Store 应用商店中的阉割版的,或者PD程序有损坏,请到官方网站下载或者寻找其他的版本下载。重新安装前先删除之前的PD程序:在Dock栏退出PD,在应用程序中把Parallels Desktop图标拖入到废纸篓。在「系统偏好设置—安全性和隐私中—通用」,在下方选择「仍要打开」允许这个程序即可。

错误提示:安装程序无法自动安装 Virtual Machine Communication Interface Sockets (VSock)

解决方法:安装kb4474419后重新再安装VMware Tools即可。下载地址

]]>
<![CDATA[mac 打印机驱动打包迁移方法]]> http://www.devinz.org/mac-printer-drivers.html 2022-04-21T10:33:00+08:00 2022-04-21T10:33:00+08:00 Devin http://www.devinz.org 从x86的Mac迁移到ARM架构的m1 pro,这时候需要把原本的打印驱动迁移过去。方法如下:

打印机的驱动程序文件位置:
通常位于 /Library/Printers/vendor_name 中。
还有位于 /Library/Printers/PPDs/Contents/Resources 中的支持 PPD。
根据使用的打印机,其他供应商文件夹中可能有更多文件。

恢复:
位于 /Library/Preferences 中的文件 org.cups.printers.plist
位于 /Library/Printers 中的文件 InstalledPrinters.plist
位于~/Library/Preferences 中有几个文件,org.cups.PrintingPrefs.plist和com.apple.print.add.plist

使用如下命令控制cups打印服务开关:
sudo launchctl stop org.cups.cupsd
sudo launchctl start org.cups.cupsd

使用如下命令打开cups的web设置开关:
cupsctl WebInterface=no
cupsctl WebInterface=yes
打开之后,可以通过http://localhost:631/ 访问cups的web设置。

]]>
<![CDATA[Fairy Dream]]> http://www.devinz.org/fairy510.html 2021-04-20T06:41:00+08:00 2021-04-20T06:41:00+08:00 Devin http://www.devinz.org 图形创作。使用 Illustrator 和 Motion 5。

608c24c609d81_608c258595258.gif

]]>
<![CDATA[如何修改 Mac 的打印比例伟德永久官网默认值为100%?]]> http://www.devinz.org/macos_print_scale.html 2021-04-19T13:53:00+08:00 2021-04-19T13:53:00+08:00 Devin http://www.devinz.org 每次使用 macOS 的预览打印功能,都会自动按照纸张大小伟德永久官网内容,并且伟德永久官网总是很保守,经常97%比例,而不是保持100%原比例。伟德永久官网默认值这事儿还不归CUPS管,因为本质上是程序本身,也就是 Preview 预览程序自身决定的自动伟德永久官网。研究了一下,还是找到了修改的办法:

首先,退出预览应用程序,在终端中输入以下内容,然后再次启动预览,即可。

defaults write com.apple.Preview PVImagePrintingScaleMode 0

要还原此设置(仍然开启自动伟德永久官网),可以使用以下命令:

defaults delete com.apple.Preview PVImagePrintingScaleMode

当然,也可以打开 ~/Library/Containers/com.apple.Preview/Data/Library/Preferences/com.apple.Preview.plist 手动添加如下值:

<key>PVImagePrintingScaleMode</key>
<string>0</string>

以上方法适用于macOS 10.11以上。

]]>
<![CDATA[王德发]]> http://www.devinz.org/wtf.html 2020-12-11T14:26:41+08:00 2020-12-11T14:26:41+08:00 Devin http://www.devinz.org wtf.png

]]>
<![CDATA[Updating Homebrew... 长时间不动解决方法]]> http://www.devinz.org/13691.html 2020-05-29T13:46:00+08:00 2020-05-29T13:46:00+08:00 Devin http://www.devinz.org 在国内的网络环境下使用 Homebrew 安装软件的过程中可能会长时间卡在 Updating Homebrew 这个步骤。

例:执行 brew install composer 命令

~ brew install composer
Updating Homebrew... # 如果碰到长时间卡在这里,参考以下 2 种处理方法


方法 1:按住 control + c 取消本次更新操作

~ brew install composer
Updating Homebrew...
^C

按住 control + c 之后命令行会显示 ^C,就代表已经取消了 Updating Homebrew 操作。大概不到 1 秒钟之后就会去执行我们真正需要的安装操作了

➜  ~ brew install composer
Updating Homebrew...
^C==> Satisfying dependencies
==> Downloading https://getcomposer.org/download/1.7.2/composer.phar
...

这个方法是临时的、一次性的

方法 2:使用 Alibaba 的 Homebrew 镜像源进行加速

平时我们执行 brew 命令安装软件的时候,跟以下 3 个仓库地址有关:

  1. brew.git
  2. homebrew-core.git
  3. homebrew-bottles

通过以下操作将这 3 个仓库地址全部替换为 Alibaba 提供的地址

  1. 替换 / 还原 brew.git 仓库地址

    替换成阿里巴巴的 brew.git 仓库地址:
    cd "$(brew --repo)"
    git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git

    还原为官方提供的 brew.git 仓库地址
    cd "$(brew --repo)"
    git remote set-url origin https://github.com/Homebrew/brew.git

  2. 替换 / 还原 homebrew-core.git 仓库地址

    替换成阿里巴巴的 homebrew-core.git 仓库地址:
    cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
    git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git

    还原为官方提供的 homebrew-core.git 仓库地址
    cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
    git remote set-url origin https://github.com/Homebrew/homebrew-core.git

  3. 替换 / 还原 homebrew-bottles 访问地址
    这个步骤跟你的 macOS 系统使用的 shell 版本有关系,所以先来查看当前使用的 shell 版本

    echo $SHELL
    # 如果你的输出结果是 /bin/zsh,参考?的 zsh 终端操作方式
    # 如果你的输出结果是 /bin/bash,参考?的 bash 终端操作方式

3.1 zsh 终端操作方式

# 替换成阿里巴巴的 homebrew-bottles 访问地址:
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc

# 还原为官方提供的 homebrew-bottles 访问地址
vi ~/.zshrc
# 然后,删除 HOMEBREW_BOTTLE_DOMAIN 这一行配置
source ~/.zshrc

3.2 bash 终端操作方式

# 替换 homebrew-bottles 访问 URL:
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile

# 还原为官方提供的 homebrew-bottles 访问地址
vi ~/.bash_profile
# 然后,删除 HOMEBREW_BOTTLE_DOMAIN 这一行配置
source ~/.bash_profile
]]>
<![CDATA[为Mac OSX 安装 tcping]]> http://www.devinz.org/install-tcping-for-macosx.html 2020-05-27T12:26:00+08:00 2020-05-27T12:26:00+08:00 Devin http://www.devinz.org tcping是一款命令行程序,其操作类似于“ping”,但是它通过tcp端口工作,能够监听检测某个端口的状态和延时时间,默认是80端口,也可以指定其它端口。原作者是Eli Fulkerson。

如何安装tcping

1.首先安装homebrew

安装tcping首先需要需要有 homebrew 环境(一款Mac OS平台下的软件包管理工具),如果已经安装则可以跳过本步骤。

按Command+Space 后输入 Terminal 后,按回车启动终端。在终端中输入:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null

之后按回车,如果需要输入密码,则输入密码,输入的密码不会被显示在屏幕上,输入完毕后直接按回车即可,然后等待命令行完成。

2.通过homebrew安装tcping。安装好homebrew 环境后,在终端中输入:

brew install tcping

回车后等待命令完成后tcping即可安装成功。

tcping的用法及参数

名称

tcping - 通过建立到网络主机的连接来模拟tcp上的"ping" .
测量系统达到[SYN],接收目标的[SYN] [ACK]和发送[ACK]的时间。
需要注意的是,最后一个ACK不包括在内-仅包括发送到发送端的时间。

概要

tcping [-tdsvf46] [-i 间隔] [-n 次数] [-w 间隔] [-b n] [-r 次] [-j 深度] [--tee 文件名称] [-f] 目标 [端口]

描述

tcping测量在其自身与远程主机之间执行TCP 3种握手(SYN,SYN/ACK,ACK)所需的时间。
不包括传出最终ACK的传输时间,仅包括将其丢弃所需的(最短)时间线缆在近端。这允许(SYN,SYN/ACK)的请求,响应时间近似于相当于ICMP。

命令参数

-4 建议使用IPv4
-6 优先使用IPv6
-t 连续ping,直到通过control-c停止
-n count
        发送ping,然后停止。默认值4。
-i 间隔
        在两次ping之间等待_interval_秒。默认值1.允许使用小数。
-w 间隔
        等待_interval_秒以获取响应。默认值2。允许使用小数。
-d 在每条回显中显示日期和时间
-f 除了建立连接外,还强制发送至少一个字节。
-g 计数
        在_count_次ping失败后放弃。   
-b 类型
        启用蜂鸣声。
        “ -b 1”将“向下”发出蜂鸣声。如果主机启动了,但现在没有启动,则发出哔声。
        “ -b 2”将“响起”哔声。如果主机掉线了,但现在却掉线了,请发出哔声。
        “ -b 3”将在“更改”时发出蜂鸣声。如果主机是一种方式,但现在是另一种方式,则发出哔声。
        “ -b 4”将“总是”发出哔声。
-c 仅在更改的状态下显示输出  
-r 计数
        每次计数时,我们都会为主机执行新的DNS查找,以防主机更改。
-s 成功后立即退出。        
-v 打印版本并退出。
-j 计算抖动。抖动定义为上次响应时间与历史平均值之间的差。
-j s深度
        与-j一样计算抖动,但指定了可选的_depth_参数。如果指定_depth_ tcping将
        使用先前的_depth_值来计算滚动平均值。
--tee _文件名_
        输出重复到指定的_filename_。Windows仍不能依赖于具有有用的命令行
        环境。* nix伙计们,不要嘲笑我。
- append
        使用--tee时,追加而不是覆盖输出文件。           
- file
        将“目标”选项视为文件名。该文件成为目的地的来源,并在
        逐行 某些选项在此模式下不起作用,并且不会保留统计信息。
destination
        DNS名称,IP地址或(在“ http”模式下)URL。
        不要在“ http”模式下指定协议(“ http://”)。也不要通过“:port”语法指定服务器端口。
        例如:“ tcping http://www.elifulkerson.com:8080/index.html”将失败
        请使用以下样式:“ tcping www.elifulkerson.com/index.html 8080”。                      

port

        一个数字TCP端口,从1到65535。如果未指定,则默认为80。
--header
        包括带有命令行参数和时间戳的标头。如果使用--tee,则暗含标题。

HTTP模式选项

-h    使用“ http”模式。在http模式下,我们将尝试获取指定的文档并返回其他值,包括
        文档的大小,http响应代码,kbit / s。
-u    在“ http”模式下,在每个输出行上包括目标URL。

--post    在http模式下使用POST而不是GET。
--head    在http模式下使用HEAD而不是GET。
--get    为了简化起见,可以调用“ http”模式。

--proxy-server _proxyserver_
        连接到_proxyserver_来请求URL,而不是URL本身所指示的服务器。
--proxy-port _port_
        指定代理服务器的数字TCP端口。默认为3128
--proxy-credentials 用户名:密码
        指定一个用户名:密码对,作为“代理授权:基本”标头发送。

返回值

如果所有ping成功,则tcping返回0;如果ping零成功,则返回1;对于混合结果,返回2。
]]>
<![CDATA[群晖 Cloud Station Server 套件远程异地同步的问题]]> http://www.devinz.org/synology-dsm-cloud-station-server-problem.html 2020-05-20T14:28:00+08:00 2020-05-20T14:28:00+08:00 Devin http://www.devinz.org 起因

最近有两台群晖远程异地文件同步的需求,原计划是打算同步共享文件夹 “Docs”。一开始先想到的是群晖自家的 Cloud Station Server套件,于是开始测试:

  1. 群晖A安装Cloud Station Server套件,选中了 “Docs”的同步;
  2. 群晖B安装Cloud Station ShareSync,选中群晖A中的“Docs”。

设置完成后,发现群晖A的 Cloud Station Server会试图扫描整个共享文件夹 “Docs”(是由图纸图片文件组成约8TB的数据),导致Cloud Station Server的数据库和日志暴增,最终无法响应。之后在群晖官网找到了 Cloud Station Server的技术白皮书,发现现有的数据量已经远远超出了他们所设计的性能范围。

之后又无奈的测试了开源的同步软件Syncthing:功能看起来很好,跑起来发现问题还是挺多的,主要还是数据量太大造成的,不同的目录会经常出现不同的权限错误,扫描反复中断,并且内网穿透也是时断时续,看来还是不适合在生产环境中使用。

于是只能退而求其次,再次回到 Cloud Station Server的方案,打算只同步共享文件夹 “Docs”的子文件夹"Sync(约50GB)",可惜新的问题又出现了:

因为群晖A的Cloud Station Server只能选择拟同步的“共享文件夹”(不能选择子文件夹),但在群晖B的Cloud Station ShareSync的高级设置中,可以在拟同步的文件夹中指定同步子文件夹"Sync1")。设置完成后,发现群晖A的Cloud Station Server仍然试图扫描整个“Docs”共享文件夹,还是会导致数据库和日志暴增,最终无法响应。于是联系了群晖技术支持,答复如下:

“ Cloud Station Server 是一定要扫描整个共享文件夹,这是当前的设计。如果是双向同步,除了Cloud Station Server,没有其他替代的同步方案。建议新建一个共享文件夹,然后将这50GB的文件放进去,单独创建任务进行同步。”

这种答复,Mmm...如果新建共享文件夹然后单独创建同步任务,是不现实的,因为除了权限问题,还涉及到变更路径,多出一个共享文件夹也会影响用户习惯。

曲线救国

后来我想到一个曲线救国的方式,使用mount —bind命令,达到欺骗 Cloud Station Server 的目的,避免对整个“Docs”共享文件夹的扫描的目的。

实现方法如下:

  1. 新建一个“FakeSync”共享文件夹;
  2. 然后使用mount —bind命令,把“FakeSync”共享文件夹和真正要同步的子文件夹“Docs/Sync”连接起来。打开ssh,输入:sudo mount --bind /volume1/FakeSync/ /volume1/Docs/Sync,实现所有对后一个目录的访问其实都是对前一个目录的访问;
  3. 在群晖A的Cloud Station Server中创建任务,指定同步“FakeSync”;群晖B的Cloud Station ShareSync中指定群晖A的“FakeSync”;
  4. 再用VI到/etc/rc.local中添加一遍 sudo mount --bind /volume1/FakeSync/ /volume1/Docs/Sync,这样才能开机自动挂载,避免重启之后同步失效。

结语

  • 对中小企业,使用群晖入门级的企业存储产品是相对有性价比的方案。群晖的技术支持不错,但是解决不了太多问题,你就是反馈了某些需求,未来也大概率不能解决;
  • DSM系统愿景是美好的,缺点也有不少,比如没有ACL同步、用户和用户组的同步,用户列表和权限不能以表格形式导出(虽然可以备份用户配置然后再用数据库编辑软件打开)等等。现有的功能,实际用下来也或多或少有些问题(不知道未来的DSM7是否会有改善);
  • 目前没有免费软件或者开源软件能够真正稳定地实现海量数据(10TB以上)的同步。至于商用软件,可能会有更好的,不太了解。
  • ]]>