rsyncã®è² è·ãæããæ¹æ³
ãªã¢ã¼ããµã¼ãã¼ã¨ã®ãã¡ã¤ã«åæã®éã«rsyncã³ãã³ãã使ç¨ããã¨ä¾¿å©ã§ãããç¹ã«ä½ãæå®ããªãå ´åã¯å
¨åã§åãã¦ãããããè² è·ãæããã¾ãã
rsyncã®è² è·ãæããæ¹æ³ã«ã¤ãã¦ãããã¤ãè¨è¼ãããã¨æãã¾ãã
1. 転éé度ã調æ´ãã
bwlimitãªãã·ã§ã³ãä»ãããã¨ã§ã転éããé度ã調æ´ã§ãã¾ãã
æå®ããå¤ã®åä½ã¯Kbpsåä½ã§æå®ããã¾ãã
ä¾ãã°ã1MB/secã®å ´åã¯ã1024KB/secâ8192 Kbps/secãªã®ã§ --bwlimit=8192ãæå®ãã¾ãã
rsync -e "ssh" --bwlimit=8192 remotehost:/remote_srcdir/ /local_destdir
2. sshã使ç¨ããå ´åãè² è·ã®ä½ãæå·æ¹å¼ã§CPUè² è·ãæãã
sshçµç±ã§rsyncã使ç¨ããå ´åãã»ãã¥ãªãã£ä¸ç¹ã«åé¡ããªããã° arcfour(RC4)ã®ããã«è² è·ã®ä½ãæå·æ¹å¼ã使ç¨ãããã¨ã§CPUè² è·ãæãããã¨ãå¯è½ã§ãã
rsync -e "ssh -c arcfour" remotehost:/remote_srcdir/ /local_destdir
3. ãã¼ã«ã«ãµã¼ãã¼å´ã®è² è·ãæãã
ãã¼ã«ã«ãµã¼ãã¼å´ã®rsyncã®è² è·ãæããã«ã¯ioniceããã³niceã使ç¨ãããã¨ã§æãããã¨ãå¯è½ã§ãã
ionice -c3 nice -n 19 rsync -e "ssh" --bwlimit=8192 remotehost:/remote_srcdir/ /local_destdir
4. ãªã¢ã¼ããµã¼ãã¼å´ã®è² è·ãæãã(sshã使ç¨ããå ´å)
sshã使ç¨ãã¦ããå ´åã«ãªã¢ã¼ããµã¼ãã¼å´ã®è² è·ãæããã«ã¯ rsync-pathãªãã·ã§ã³ã§ioniceããã³niceãæå®ããä¸ã§rsyncãå®è¡ãããããã«ãããã¨ã§è² è·ãä¸ãããã¨ãå¯è½ã§ãã
rsync -e "ssh" --rsync-path="ionice -c3 nice -n 19 rsync" remotehost:/remote_srcdir/ /local_destdir
5. ãªã¢ã¼ããµã¼ãã¼å´ã®è² è·ãæãã(xinetdã使ç¨ããå ´å)
ãªã¢ã¼ãå´ãxinetdã使ç¨ãã¦ããå ´åãniceã ãã§ããã°/etc/xinetd.d/rsyncã§niceãæå®ãããã¨ã§åªå 度ãä¸ãããã¨ãã§ãã¾ãããioniceã¾ã§æå®ããå ´åã¯ãrsyncãã©ããããã¹ã¯ãªããã使ãrsyncã®åã«ioniceããã³niceãå®è¡ãããã¨ã§åªå 度ãä¸ãããã¨ãå¯è½ã§ãã
ä¾ãã°ãã©ããããã¹ã¯ãªããã /usr/local/bin/slow_rsync.sh ã¨ãã¦ä¸è¨ã®ãããªå 容ã§ä½æãã¾ãã
#!/bin/bash /usr/bin/ionice -c3 /bin/nice -n 19 /usr/bin/rsync $@
使ããã¹ã¯ãªããã«å®è¡æ¨©éãä¸ãã¾ãã
# chmod +x /usr/local/bin/slow_rsync.sh
/etc/xinetd.d/rsyncãä¿®æ£
# default: off # description: The rsync server is a good addition to an ftp server, as it \ # allows crc checksumming etc. service rsync { # disable = yes disable = no socket_type = stream wait = no user = root #server = /usr/bin/rsync server = /usr/local/bin/slow_rsync.sh # server_args = --daemon server_args = --daemon --config=/etc/rsyncd.conf log_on_failure += USERID only_from = 192.168.1.0/24 127.0.0.1 }
/etc/rsyncd.confãç·¨éãã¾ãã
æ¢ã«ç¨æããã¦ããå ´åã¯å¤æ´ã®å¿
è¦ã¯ããã¾ãããããã¹ãããããã®ä»®ã®è¨å®ã¨ãã¦ä»¥ä¸ã®ãããªå
容ã§è¨è¼ãã¾ãã
# # Global # uid = nobody gid = nobody # # www file modules # [www] path = /var/www use chroot = no read only = yes
xinetdããªãã¼ããã¾ãã
# service xinetd reload
å®éã«åæ ããã¦ããã確èªãã¦ã¿ã¾ãã
$ dd if=/dev/zero of=/var/www/html/tmpfile bs=1 count=0 seek=1G $ mkdir -p /var/tmp/dest $ cd /var/tmp/dest $ rsync -az 127.0.0.1::www/html ./ & $ ionice -p`pgrep -u nobody rsync` idle: prio 7 $ ps -lu nobody F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 R 99 26515 26514 67 95 19 - 17274 - ? 00:00:00 rsync
ioniceãidle(-c3) prio 7(æä½)
psã®çµæãNI 19ã¨æä½åªå
度ã§å®è¡ããã¦ãããã¨ãããããã¨æãã¾ãã
以ä¸ãä¸è¨çµã¿åããããã¨ã§å¤§å¹
ã«è² è·ãä¸ãããã¨ãã§ããã¨æãã¾ãã
ä½ããã®ãå½¹ã«ç«ã¦ãã°å¹¸ãã§ãã