È­Á¤Å¥»ï´Ô tinycore-redpill vmxnet3 µå¶óÀ̹ö °³¼±ÀÌ ÇÊ¿äÇغ¸ÀÔ´Ï´Ù.

   Á¶È¸ 2334   Ãßõ 0    

 화정큐삼님이 쓰신 dsm 7.1 설치 강좌와 Pocopico님이 만든 tinycore-redpill 부트로더 덕분에 esxi 7.0 환경에서 dsm 7.1 설치해서 잘 쓰고 있습니다.

한 가지 단점은 dsm 7 버전부터 인증 받지 않은 제3자 프로그램의 root 권한을 막기 때문에 vm-tools가 정상적인 방법으로 설치가 불가능하다는 점입니다.

vm-tools가 없으면 vmxnet3 드라이버에서 다중 대기열, RSS, 소프트웨어 LRO 사용이 불가능한데 가장 치명적인건 vswitch 내에 있는 호스트끼리 통신할 때 vm-tool 없이 리눅스 vmxnet3 드라이버 모듈에 LRO가 활성화된 상태면 수신 패킷 로스 문제가 발생합니다.

쉽게 말해 가상 호스트끼리의 통신에서 LRO 활성화 상태면 vmware가 가상 스위치라는 걸 인지하고 초대형 버퍼를 보내서 초고속으로 데이터를 주고 받는 것인데 vm-tools가 없는 헤놀로지는 이를 인지하지 못합니다.

현재 제가 겪고 있는 문제는 esxi 내에서 윈도우 서버와 헤놀로지의 파일 전송 문제인데 윈도우 서버에는 vm-tools가 설치된 상태이기 때문에 헤놀->윈도우로는 10g 속도가 나오지만(동일 하드 리눅스에서는 40g 이상) 윈도우->헤놀로는 120mbps 정도로 대부분의 대형 버퍼 패킷이 로스되고 있습니다. 외부 통신은 TSO없이 하드웨어 빨로 헤놀로지에서 10g 정도는 밀어붙일 수 있는데 호스트간 통신에서 속도 저하 문제 때문에 LRO disable이 필요합니다.

예전에 올린 omnios+xpenology 글에서 헤놀로지에서 omnios nfs 원격경로 마운트 했을 때 CPU가 100프로로 치솟으면서 먹통되는 문제도 Software LRO 문제였습니다.


vmtools가 없기 때문에 ethtool 명령은 불가능하고 일반적인 리눅스 커널은 rc.local 스크립트 실행으로

modprobe -r vmxnet3

modprobe vmxnet3 disable_lro=1

lro 비활성화가 가능한데


DSM 7은 커널단에서 드라이버 모듈 적재를 막기 때문에 

modprobe -r vmxnet3 부터 거부해서 

/usr/local/etc/rc.d 스크립트 실행으로 rmmod vmxnet3 했다가 모듈 언로드 후에 드라이버 modprobe이 안 돼서 vmxnet3 연결 끊어지고 망한 상태입니다.

스냅샷 백업본 있어서 복구하면 그만이라고 생각했는데 복구하면 돌아오는데 데이터 저장된 가상디스크 붙이면 동기화 되면서 vmxnet3 드라이버를 복구하는게 아니라 둘다 지워버려서 망했습니다. Redpill DS3617xs 부트로더 올려서 마이그레이션 해서 복구해야 할 판입니다.

결국 부트로더 단에서 modprobe -r vmxnet3 modprobe vmxnet3 disable_lro=1 으로 로드하면서 LRO disable 과정이 필요합니다.

Pocopico 님께 부탁드려서 lro disabled로 parameter 수정해서 vmxnet3 커널 드라이버를 다시 빌드해야 할 것 같습니다. 

제가 redpill 부트로더에 대해 잘 몰라서 이쪽에 전문가이신 화정큐삼님께 도움 요청드립니다. 등 떠밀기..?


ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
°í·¡1006 2022-06
À§ ±ÛÀ» ÀûÀ¸½Å ºÐ ¶ÇÇÑ  ´ë´ÜÇÑ Àü¹®°¡ ¼¼¿ä ~~
     
´ó´óÀÌ 2022-06
Çä Àü¹®°¡¶ó´¢ ¾Æ´Õ´Ï´Ù~
±×³É ÀÌ°ÍÀú°Í »ðÁúÇϴ°ŠÁÁ¾ÆÇϴµ¥ ¾Æ´Â°Ç º°·Î ¾ø½À´Ï´Ù ^^;;
´ó´óÀÌ´Ô, ´Ü¼øÈ÷ µå¶óÀ̹ö°¡ µ¿ÀÛµÇ°í ¾ÈµÇ°í Á¤µµÀÇ ¼öÁØÀ̶ó¸é Á¦°¡ °£´ÜÇÏ°Ô ¿µ¾î ¹ø¿ªÇؼ­ Æ÷ÄÚÇÇÄÚ´Ô ±êÇé À̽´³ª Çì³î·ÎÁö Æ÷·³ rp-ext Áú¹®¶õ¿¡ ¿Ã·Áµå¸±¼ö ÀÖÀ»°Í °°Àºµ¥¿ä.
¼º´É °³¼±À̳ª ¹ö±×¸¦ Àâ´Â ·¹º§À̶ó¸é Á÷Á¢ ¹®ÀǸ¦ ¿Ã¸®½Ã´Â ¹æ¹ýÀÌ ÁÁÀ»°Í °°½À´Ï´Ù.
¾Æ·¡ µÎ »çÀÌÆ®¿¡ °¡ÀÔÀ» ÇϽðí, ¹ø¿ª±â´Â °æÇè»ó ±¸±Û¹ø¿ª±â°¡ °¡Àå ¿À¿ªÀÌ ÀûÀº°Í °°½À´Ï´Ù.
¿ä·ÉÀº ¹®±¸ ¸Ç ¾Õ¿¡ Ç×»ó "³ª´Â"À» ºÙ¿©ÁÖ½Ã´Â°Ô ÁÁ½À´Ï´Ù.
¿ì¸®³ª¶ó ¸»Ã³·³ Á־ »ý·«ÇÏ¸é ±âº»ÀÌ You °¡ µÇ¾î ¹ö¸³´Ï´Ù.

¾Æ¸¶, Æ÷ÄÚÇÇÄÚ´ÔÀÌ ´ëºÎºÐ ¸¹Àº ·Î±× Á¤º¸¸¦ ¿äûÇϽǰ̴ϴÙ.
±×¿¡ ¸Â´Â ·Î±×¸¦ Á¦°øÇÏ½Ã°í ´äº¯À» ÁÖ¼Å¾ß Çϴµ¥, ´Ü¼øÈ÷ µ¿ÀÛÀÌ µÇ°í ¾ÈµÇ°íÀÇ ·¹º§ÀÌ ¾Æ´Ï¶ó¼­ »ó´çÇÑ ³ë·ÂÀÌ µé¾î°¥°Í °°½À´Ï´Ù.
Àü¹®ÀûÀÎ ³»¿ëÀÌ ³Ê¹« ¸¹¾Æ¼­ Á¦°¡ ¸ðµÎ ÀÌÇظ¦ ¸øÇÏ°í ÀÖ°í ´Ù½Ã À̺κÐÀ» Àü´Þ µå¸®±â ¾î·Á¿ï°Í °°½À´Ï´Ù.
´Ù½Ã Àü¹®ÀûÀÎ Áú¹®ÀÌ µé¾î¿À¸é ´Ù½Ã ´ë´äÀÌ °¡¾ß ÇÒ°Í °°±¸¿ä.

Àú´Â ³×ÀÌƼºê Áß½ÉÀ¸·Î¸¸ Å×½ºÆ®¸¦ Çؼ­, VMÀº Áö½ÄÀÌ ÂªÀº°Íµµ µµ¿òµå¸®±â°¡ ¾î·Á¿î ºÎºÐÀÔ´Ï´Ù.
¾Æ·¡ Áú¹®¶õ È°¿ëÇϽø鼭 ¾î·Á¿ì½ÅÁ¡ ÀÖÀ¸½Ã¸é ¾ðÁ¦µçÁö Áú¹®ÁÖ½Ã¸é ±×ºÎºÐÀº µµ¿òµå¸®°Ú½À´Ï´Ù.
±êÇé°ú Çì³îÆ÷·³ µÑÁß¿¡ ÇÑ°÷¸¸ È°¿ëÇÏ½Ã¸é µÉ°Í °°Àºµ¥, Àú´Â »¡¸® ¾Ë¾Æº¸½Ã¶ó°í ¾çÂÊ¿¡ ¿Ã¸®±äÇÕ´Ï´Ù.

https://github.com/pocopico/rp-ext/issues
https://xpenology.com/forum/topic/49226-redpill-extension-drivermodules-request/page/8/
https://translate.google.co.kr/?hl=ko&tab=iT
     
´ó´óÀÌ 2022-06
³× ´Ù¼Ò ¹«·ÊÇØ º¸ÀÏ ¼ö ÀÖ´Â ±Û ÀÓ¿¡µµ Ä£ÀýÇÏ°Ô ´äº¯Áּż­ °¨»çÇÕ´Ï´Ù.
¿ª½Ã Á¦°¡ Á÷Á¢ Æ÷ÄÚÇÇÄÚ´Ô²² ¹®ÀÇÇÏ´Â°Ô ÁÁÀ» °Í °°½À´Ï´Ù.
Ä¿³Î ¸ðµâ ·Îµå ´Ü°è¿¡¼­ ½© ½ºÅ©¸³Æ®¸¸ Á¶±Ý Ãß°¡ÇÏ¸é µÉ °Í °°Àºµ¥ üũ¼¶À¸·Î ÇԺηΠext ¼öÁ¤À» ¸øÇÏ°Ô ¸·¾Æ³ù´õ±º¿ä.
dev¹®¼­ Àо´Ï±î °³¹ß °úÁ¤ÀÌ ÀÌÀü°ú ´Ù¸£°Ô ±²ÀåÈ÷ ü°èÀûÀ¸·Î ´À²¸Á³´Âµ¥ ext ·Îµå¿¡ ÀÚü pocopico ±Ô°Ý? ÀÌ ÀÖ´Â °Í °°½À´Ï´Ù.
¿µ¾î´Â ¹®Á¦°¡ ¾ø´Âµ¥ ½ÇÀº Àúµµ ºü»èÇÏ°Ô ¾Æ´Â°Ô ¾Æ´Ï¶ó¼­ pocopico´Ô Áú¹®¿¡ Á¦´ë·Î ´äÇÒ ¼ö ÀÖÀ»Áö Á¶±Ý °ÆÁ¤µË´Ï´Ù.
ÀÏ´Ü guthub¿¡ request ¿Ã¸± »ý°¢ÀÔ´Ï´Ù.
          
¿øÇϽô º¯°æ»çÇ×ÀÌ ÀÖÀ¸½Ã¸é,
Á¦°¡ ¼öÁ¤ µµ¿Íµå¸±¼öµµ ÀÖ½À´Ï´Ù.
Àúµµ Æ÷Å©ÇÑ rp-ext °¡ ÀÖ±äÇѵ¥¿ä.
´ó´óÀÌ´Ôµµ ±êÇé repo °¡ ¾øÀ¸½Å°¡¿ä?
¾øÀ¸½Ã´Ù¸é Á¦ repo ¿¡ ¼öÁ¤ÇØ µå¸®°Ú½À´Ï´Ù.
https://github.com/PeterSuh-Q3/rp-ext/tree/main/vmxnet3/src
º¯°æ ¿øÇϽô ½ºÅ©¸³Æ® Àü´Þ Áֽʽÿä.
sha256sum ´Ù½Ã gen ÇÏ°í °ª ¼öÁ¤Çؼ­ ³ÖÀ¸¸é µË´Ï´Ù.
±×Á¤µµ´Â Àúµµ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸ùµ¿ÀÌ´Ôµµ ÇÊ¿äÇϽŠext ÀÇ ±â´ÉÀº Æ÷Å©Çϼż­ Á÷Á¢ ¼öÁ¤Çؼ­ TC ¿¡ ¼öµ¿À¸·Î ·ÎµåÇؼ­ »ç¿ëÇÏ½Ã°í °è½Ê´Ï´Ù.
pocopico´ÔÀÌ »ó´çÈ÷ º¸¼öÀûÀ¸·Î ÄÚµù¿¡ Á¢±ÙÇϼż­, ¾ÈÁ¤¼ºÀ» Á¶±ÝÀÌ¶óµµ ¿µÇâÀ» ÁÖ´Â °æ¿ì´Â ÃæºÐÇÑ Å×½ºÆ® ¾øÀÌ´Â Àû¿ëÀ» ¾ÈÇØÁֽðŵç¿ä.
               
ÀÌ·¸°Ô ¼öÁ¤ÇØ µå¸®¸é µÇ³ª¿ä?

echo -n "Loading module vmxnet3 -> "

if [ `/sbin/lsmod |grep -i vmxnet3|wc -l` -gt 0 ] ; then
    echo "Module vmxnet3 loaded succesfully"
    modprobe -r vmxnet3
    modprobe vmxnet3 disable_lro=1
else
    echo "Module vmxnet3 is not loaded "
fi
                    
´äº¯ÀÌ ¾øÀ¸¼Å¼­ ÀÏ´Ü ext »ç¿ëÇؼ­ ºôµå ÇÒ ¼ö ÀÖ´Â ±¸¼ºÁ¶°ÇÀ» °®Ãß°í ¼öÁ¤ ¸¶ÃƽÀ´Ï´Ù. À§ ½ºÅ©¸³Æ®¶ó´Â °¡Á¤ÇÏ¿¡ ·Î´õ°¡ ºôµå µË´Ï´Ù.
½ºÅ©¸³Æ® ³»¿ëÀÇ º¯°æÀÌ ´Ù½Ã ÇÊ¿äÇÏ½Ã¸é ¸»¾¸ÇØ Áֽʽÿä.
¾Æ·¡Ã³·³ build action Àü¿¡ vmxnet3 ext ¸¦ »çÀü¿¡ Ãß°¡ÇØ Áֽʽÿä.
ÀÌÈÄ¿¡ ¿ÀÅä ºôµå °úÁ¤¿¡¼­ pocopico´Ô vmxnet3 ext´Â pocopico.vmxnet3 °¡ ÀÌ¹Ì Á¸ÀçÇϹǷΠoverwrite °¡ ºÒ°¡ÇÏ°í ½ºÅµµË´Ï´Ù.

DS918+ ¸¦ ¿¹·Î µç°ÍÀÌ°í TC 7°³ ¸ðµ¨ ¸ðµÎ ÁغñµÇ¾î ÀÖ½À´Ï´Ù.

(JUN MODE 7.0.1-42218 ¿ë)
./rploader.sh ext apollolake-7.0.1-42218 add https://raw.githubusercontent.com/PeterSuh-Q3/rp-ext/master/vmxnet3/rpext-index.json
(JOT MODE 7.1.0-42661 ¿ë)
./rploader.sh ext apollolake-7.1.0-42661 add https://raw.githubusercontent.com/PeterSuh-Q3/rp-ext/master/vmxnet3/rpext-index.json

Á¦°¡ esxi ȯ°æÀº Å×½ºÆ®¿ëÀ¸·Î °£½ÅÈ÷ Çϳª Àִµ¥, 10G ·£Ä«µå°¡ ¾ø¾î¼­ ½ÃÇèÀ» Çص帱 ȯ°æÀÌ ¾ÈµÇ³×¿ä.
DSM ¼³Ä¡¸¦ ¹°¾îº¸´Â junior ¸ðµå·Î ÁøÀÔÇÏ°Ô µÇ½Ã¸é ¾Æ·¡ ttyd Á¢¼ÓÇϼż­ ·Î±× Çϳª¸¸ Á¦°Ô º¸³» Áֽʽÿä.
Àß ¼öÇàµÈ°ÇÁö ºÐ¼®ÇØ º¸°Ú½À´Ï´Ù.

http://<youripaddr>:7681/

id : root / pw : ( no password )

cat /var/log/*rc*
                         
´ó´óÀÌ 2022-06
¾Ñ ¹Ùºü¼­ ¸ø ºÃ³×¿ä.  ´äº¯ÀÌ ´Ê¾î Á˼ÛÇÕ´Ï´Ù.
¿Í ÀÌ·¸°Ô±îÁö ½Å°æ ½áÁּż­ Á¤¸» °¨»çÇÕ´Ï´Ù ^^
üũ¼¶ °úÁ¤¿¡¼­ ¸ðµâÀ» ¾ð·Îµå Çß´Ù°¡ ´Ù½Ã ·ÎµåÇصµ µÇ·Á³ª ¸ð¸£°Ú³×¿ä.
¹®Á¦´Â ÇöÀç esxi¿¡¼­ Net.Vmxnet3SwLRO ¼³Á¤À» ¹Ù²ã¼­ ¸ðµç È£½ºÆ®ÀÇ ¼ÒÇÁÆ®¿þ¾î LRO¸¦ ²ö »óÅÂÀÓ¿¡µµ º¯È­°¡ ¾ø¾î¼­ LRO ¹®Á¦°¡ ¾Æ´Ñ°¡ ÇÏ°í ÀÖ½À´Ï´Ù. ÀÏ´Ü Å×½ºÆ®Çغ¸°í ·Î±× º¸³»µå¸®°Ú½À´Ï´Ù.
                         
´ó´óÀÌ 2022-06
DiskStation> cat /var/log/*rc*
START /linuxrc.syno.impl
Insert basic USB modules...
:: Loading module usb-common ... [  OK  ]
:: Loading module usbcore ... [  OK  ]
:: Loading module xhci-hcd ... [  OK  ]
:: Loading module xhci-pci ... [  OK  ]
:: Loading module usb-storage ... [  OK  ]
:: Loading kernel modules from extensions ...
Loading kmod #0 "vmxnet3.ko" for pocopico.vmxnet3 (args: )
:: Loading kernel modules from extensions ... [  OK  ]
:: Executing "on_boot" custom scripts ...
Running "check-vmxnet3.sh" for pocopico.vmxnet3->on_boot
Loading module vmxnet3 -> Module vmxnet3 loaded succesfully
/exts/exec.sh: ./check-vmxnet3.sh: line 9: modprobe: not found
/exts/exec.sh: ./check-vmxnet3.sh: line 10: modprobe: not found
Ran "check-vmxnet3.sh" for pocopico.vmxnet3->on_boot - exit=127
Running "boot-wait.sh" for redpill-boot-wait->on_boot
Confirmed a valid-looking /dev/synoboot device
Ran "boot-wait.sh" for redpill-boot-wait->on_boot - exit=0
Running "install_rd.sh" for redpill-misc->on_boot
Starting ttyd, listening on port: 7681
Ran "install_rd.sh" for redpill-misc->on_boot - exit=0
ERROR: Some of the scripts failed! See above for any with exit != 0
:: Executing "on_boot" custom scripts ... [  OK  ]
Exit on error [99] rp ext init exec failure...
Sun Jun 19 19:07:25 UTC 2022
none /sys/kernel/debug debugfs rw,relatime 0 0
DiskStation>

»õ·Î °¡»ó½Ã½ºÅÛ ¸¸µé¾î¼­ ds918+·Î Å×½ºÆ® Çغôµ¥ modprobe°¡ ¸ÔÈ÷Áö ¾Ê³×¿ä.
¾ÈµÇ´Â ÀÌÀ¯´Â github FAQ¿¡µµ ¼³¸íµÇ¾îÀִµ¥ °á±¹ Ä¿³Î µå¶óÀ̹ö¸¦ ´Ù½Ã ºôµåÇÏ´Â °Í ¸»°í´Â ¹æ¹ýÀÌ ¾øÀ» °Í °°½À´Ï´Ù.
https://github.com/pocopico/redpill-load/blob/master/FAQ.md
                         
³»¿ë È®ÀÎÇß½À´Ï´Ù. junior ¿¡¼± ¹«¿ëÁö¹°À̶ó´Â±º¿ä. ¤Ì¤Ì

What's the deal with fake modprobe?
Loading kernel modules is complex. However, in short there are two distinct ways for them to load: from userspace or from kernel space. The latter is kind of misleading since the kernel, after doing some checks, calls /sbin/modprobe to actually load the module (see kmod.c). This path is hardcoded in the kernel. Usually it's a symlink to a kmod utility which uses userspace syscalls to load the module.

Here comes the less-intuitive part. RedPill LKM is loaded on the kernel's request. It happens because we specify the elevator=elevator boot param. This causes kernel to, very early in the boot process (in fact still being in the formal init-before-boot stage), request module named elevator-iosched. There's nothing special in that name - it can be anything as long as the userspace and cmdline agree on the name. Our fake modprobe checks (very loosely) if the requested module is elevator-iosched and triggers the standard force-insmod, then deletes itself. Keep in mind that our "modprobe" isn't actually overriding anything - preboot environment contains no modprobe as it has no concept of depmods (=modprobe would be useless).
[ preboot ȯ°æ¿¡´Â depmodÀÇ °³³äÀÌ ¾ø±â ¶§¹®¿¡ modprobe°¡ Æ÷ÇԵǾî ÀÖÁö ¾Ê½À´Ï´Ù(=modprobe´Â ¾µ¸ð°¡ ¾øÀ» °ÍÀÔ´Ï´Ù). ]
LRO °¡ ¾î¶² ³»¿ëÀΰ¡ °Ë»öÀ» Çغôµ¥, ¾Æ·¡¿Í °°Àº°É ¹ß°ßÇß½À´Ï´Ù.
ESXi 7.0 ¿¡¼± ÇØ´ç»çÇ×ÀÌ ¾ø´Â ³»¿ëÀϱî¿ä?
https://www.dell.com/support/kbdoc/ko-kr/000140785/esxi-4-x-5-x%EC%97%90%EC%84%9C-lro-large-receive-offload-%EB%A5%BC-%EB%B9%84%ED%99%9C%EC%84%B1%ED%99%94%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95
     
´ó´óÀÌ 2022-06
¿¹Àü vm-tool ¹öÀü¿¡¼­ ¸®´ª½º Áö¿øÀÌ ¾àÇؼ­ LRO³ª RSS Áö¿øÀÌ Á¦´ë·Î ¾ÈµÇ´Â ¹ö±×°¡ ÀÖ¾ú´Âµ¥ ÇöÀç´Â ¸®´ª½º Ä¿³Îµµ Àß Áö¿øÇϴ°ɷΠ¾Ë°í ÀÖ½À´Ï´Ù.
 Çì³î·ÎÁö´Â vm-tool ÀÚü°¡ ¾ø´Ù´Â°Ô ¹®Á¦³×¿ä..


NAS