20221110nas扩容

综述

按之前所说,保留群晖系统,但文件不存群晖而放到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
Leave a Reply