综述
按之前所说,保留群晖系统,但文件不存群晖而放到HP服务器的硬件raid磁盘阵列
常见方案无非smb nfs sftp webdav等,但我之前想直接搞出个iSCSI挂到群晖只是理论上行,从esxi没能找到这种做法
思考了下,原理是esxi是第一层虚拟化,之后所有的东西已经不再直接和硬件打交道,所以就算能搞出iSCSI协议也有性能损失,还不如继续用更上层协议
现有的openwrt已经是一个linux内核了,理论上装插件就能支持这些。然而不幸的是openwrt原来是未路由器开发的嵌入式系统,但我并没有嵌入式系统的开发和debug经验,在尝试过安装插件各种蜜汁bug后自己编译,依然不行。更坑爹的是编译需要科学上网,编译环境的科学上网依赖openwrt内部插件分流,死循环
详细尝试记录在后面,持续更新中
openwrt尝试
暂时创建thin模式的虚拟磁盘4T,挂到opwnwrt的/data下
和普通服务器操作一样,cfdisk可以方便的创建分区,选GPT即可
mkfs.ext4 /dev/sdb可以格式化磁盘
给nas新建一个用户vim /etc/passwd
echo “nas:*:1000:1000:nas:/tmp:/bin/ash” >>/etc/passwd
passwd nas设置密码
/etc/group 新增组
echo “nas:x:1000:” >> /etc/group
smbpasswd -a nas添加smbpasswd用户
之后进入openwrt的挂载点下新建挂载点后选择自定义挂载位置到/data即可
然后开启openwrt的文件共享,这里使用samba,选择允许用户nas,保存应用即可
之后网页保存
注意,这里如果要扩容的是overlay分区,官方的x86-64镜像无法扩容overlay是已知bug,见https://github.com/openwrt/openwrt/issues/7352
如镜像版本 openwrt-22.03.2-x86-64-generic-squashfs-combined-efi
直接在/etc/rc.local 插入”mount /dev/sda3 /overlay” 就能绕过去,不需要重新编译
lean的版本修过了所以没问题 不要浪费时间找乱七八糟的教程了,浪费时间
https://github.com/coolsnowwolf/lede/blob/master/package/system/fstools/patches/0001-fstools-support-extroot-for-non-MTD-rootfs_data.patch
这样操作完发现没权限写入,给加下权限 chmod o+w /data && chmod g+w /data
测速发现只有300Mbps的速度,感觉不对劲看了下openwrt的监控发现是CPU100%,尝试增加CPU核数到2继续测试
2core
尝试升级samba版本到4后发现luci-app-samba4装不上,暂时手动配置server /etc/samba/smb.config.template
[openwrtstorage]
path = /data
valid users = nas
writable = yes
read only = no
create mask = 0666
director mask = 0755
inherit owner = yes
这样虽然速度不太稳定,但勉强能跑满千兆网了,后面再研究为啥
nfs尝试
安装服务 sudo apt install nfs-kernel-server
添加共享 echo “/data 192.168.2.1(rw,sync,no_hide)”>>/etc/exports
修改端口 http://bryanw.tk/2012/specify-nfs-ports-ubuntu-linux/ 注意kernal-server的配置要用–port
rpcinfo -p查看端口
跨防火墙失败,因为ubuntu下的start-stop-daemon加了参数后就无法传递给mountd了,导致端口无法修改
https://wiki.debian.org/SecuringNFS
http://bryanw.tk/2012/specify-nfs-ports-ubuntu-linux/
直接放和nas一个网段,速度依旧跑不满千兆。。。。迷
openmediavault尝试
https://forum.openmediavault.org/
下载iso后新建虚机安装,这次数据盘直接用100G预分配的测速IO
在test下安装启动后没啥问题,修改到管理网的交换机下和nas放一起继续测速
整个界面简介明了,常见协议都支持
写入速度排查
这种情况下测试,客户端本地磁盘原地复制读写速度均大于1Gbps峰值,下载到同网段windows可以跑满1G带宽,可以排除客户端磁盘和网络瓶颈以及服务器网络瓶颈
scp linux->linux同文件的速度是30MBps,约240Mbps,因此怀疑服务器磁盘连续速度有瓶颈
dd测试 dd if=/dev/zero of=./test.data bs=1G count=1 oflag=direct发现结果如下
记录了1+0 的读入
记录了1+0 的写出
1073741824字节(1.1 GB,1.0 GiB)已复制,36.2007 s,29.7 MB/s
果然啊。。。折腾半天居然是这个问题
接下来继续排查是esxi的虚拟化导致,还是硬件故障
在esxi命令行下执行 time dd if=/dev/zero of=test.data bs=100M count=50
50+0 records in
50+0 records out
real 0m 24.03s
user 0m 16.95s
sys 0m 0.00s
平均速度是208MB/s,说明也不是HPraid卡和硬件的瓶颈,硬件本身至少有这个写入速度的能力
那就只能继续怀疑esxi虚拟化带来的问题了。。。。TMD上次win10启动缓慢查了半天就是esxi的锅,这次磁盘写入缓慢没准又是esxi的问题
不过也可能是我哪里没选对?
仔细观察发现esxi提醒的虚拟机操作系统的类型不对,我默认选的都是linux64,它建议我选Debian 10 64。选择后重启系统再试
dd if=/dev/zero of=./test.data bs=1G count=1 oflag=direct
记录了1+0 的读入
记录了1+0 的写出
1073741824字节(1.1 GB,1.0 GiB)已复制,17.7218 s,60.6 MB/s
确实有提升,真的是因为这个选项导致的吗?
swapoff -a 禁掉swap后再试,etc/fstab也注释掉swap分区
dd if=/dev/zero of=./test.data bs=1G count=1 oflag=direct
dd: 1073741824 字节的输入缓冲导致内存耗尽(1.0 GiB)
果然dd的运行依赖内存,更改成10次100M继续测速
dd if=/dev/zero of=./test.data bs=100M count=10 oflag=direct
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,25.1924 s,41.6 MB/s
这个速度和windows上网卡320Mbps左右带宽监控的速度能对上
奇怪的是相同的虚拟机磁盘,win10下能有130MBps左右的写入速度,还是在同时读的情况下
所以综合排除应该是linux系统或者是ext4文件系统的问题,在旧NAS上也是单盘ext4相同命令测速如下
dd if=/dev/zero of=./test.data bs=100M count=10 oflag=direct
10+0 records in
10+0 records out
1048576000 bytes (1.0 GB) copied, 7.46678 s, 140 MB/s
uname -a输出如下,尝试从这上面寻找点线索?
Linux openmediavault 5.16.0-0.bpo.4-amd64 #1 SMP PREEMPT Debian 5.16.12-1~bpo11+1 (2022-03-08) x86_64 GNU/Linux
尝试将磁盘改成独立,不受esxi快照影响继续测试如下
root@openmediavault:~/data# dd if=/dev/zero of=./test.data bs=100M count=10 oflag=direct
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,4.37703 s,240 MB/s
root@openmediavault:~/data# dd if=/dev/zero of=./test.data bs=100M count=10 oflag=direct
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,4.24505 s,247 MB/s
root@openmediavault:~/data# dd if=/dev/zero of=./test.data bs=100M count=10 oflag=direct
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,4.25252 s,247 MB/s
root@openmediavault:~/data# dd if=/dev/zero of=./test.data bs=100M count=10 oflag=direct
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,3.99055 s,263 MB/s
再次测速如下图,终于能跑满了,但奇怪的是,为啥非独立的NTFS磁盘没这个问题呢?debian linux下挂载的ext4才会这样
thin+独立模式测试
预分配100G测试ok后,继续尝试thin模式,因为我还想省点地方拿来测集群搭建用
root@openmediavault:~/data# dd if=/dev/zero of=./test.data bs=100M count=10 oflag=direct
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,21.3584 s,49.1 MB/s
root@openmediavault:~/data# dd if=/dev/zero of=./test.data bs=100M count=10 oflag=direct
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,21.3513 s,49.1 MB/s
root@openmediavault:~/data# dd if=/dev/zero of=./test.data bs=100M count=10 oflag=direct
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,20.5089 s,51.1 MB/s
root@openmediavault:~/data# dd if=/dev/zero of=./test.data bs=100M count=10
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,17.6997 s,59.2 MB/s
root@openmediavault:~/data# dd if=/dev/zero of=./test.data bs=100M count=10 oflag=direct
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,22.037 s,47.6 MB/s
这样差不多480Mbps的带宽,按这个效果来看的话,后面需要整理下文件做分类,然后弄两块虚拟磁盘都选独立。
thin模式用作长期存储,所以写入慢点也无所谓,同时是按实际大小消耗磁盘阵列,把需要备份的文件存到这里,有硬件raid的保护可以满足安全性提升的目的
预分配的磁盘用作下载热数据+日常使用,或者干脆接着用原来的nas和本地盘也行,反正都是下的电影和番剧,极端情况丢了就丢了,把种子放到HP服务器存一份就行
另外后面mysql集群使用的虚拟硬盘,必须勾选这个独立+预分配,否则会对后续分布式的性能测试带来难以排查的性能问题
参考
https://blog.csdn.net/kk380446/article/details/114213014
https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html
0 Comments