ç§ãã¡ãäœããããã«ã€ããŠã®ããã€ãã®èšè
ç§ãèšå®ããç®æšã®1ã€ã¯ãæ倧éã®ã·ã³ãã«ãã§ãã ãããã£ãŠããã®èšäºã§ã¯æå°éã®ããŒã«ã»ããã䜿çšããŸããããããèªäœã¯ã§ããã ãã·ã³ãã«ã«äœ¿çšã§ããŸãã ã€ã¡ãŒãžãinitrdã«çŽæ¥ããã¯ããåãTFTPãµãŒããŒã§çºè¡ããŸããããã«ãããã«ãŒãã«ãšããŒãããŒããŒãæäŸãããŸãã
ãªãã·ã§ã³ã®ç¶ããšããŠãæåŸã®ã»ã¯ã·ã§ã³ã§ãã®ã¿ã¹ã¯ã§ã®OpenVZã®äœ¿çšã«ã€ããŠèª¬æããŸã-ç§ã®æèŠã§ã¯ãä»®æ³ãã¹ãã§ã®äœæ¥ã¯chrootç°å¢ããã䟿å©ã§ã-ç¹ã«å€§èŠæš¡ãªãµãŒããŒã®æŽæ°ãè¡ãå ŽåïŒãããŠç°¡åãªãã¹ãã«äŸ¿å©ã§ãïŒã
OpenVZã䜿çšããããšã«ããå Žå-ïŒç¹ã«è€æ°ã®ãã¹ãã·ã¹ãã ãããå Žåã¯ç¹ã«ïŒDHCPããã³TFTPãµãŒããŒãVZã³ã³ãããŒå ã«é 眮ããããšãæ€èšããŠãã ãã-ããã«ãããã¡ã€ã³ãã¹ãã·ã¹ãã ã«é害ãçºçããå Žåã«DHCPãµãŒããŒãå±éã§ããŸãã
è¡ããŸãããã
DHCP
ããã§ã¯ãã¹ãŠãç°¡åã§ãã dhcpdã䜿çšããŸããã ããã©ã«ãã®æ§æã§ã次ãå ¥åããŸãã
# dhcpd pxelinux
option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
site-option-space "pxelinux";
option pxelinux.magic f1:00:74:7e;
if exists dhcp-parameter-request-list {
option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
}
group
{
option pxelinux.configfile "configs/bla-bla.ru/config"; # pxelinux`a
filename "/var/lib/tftpboot/pxelinux.0"; #
#
host first.bla-bla.ru
{
hardware ethernet 48:5b:39:90:b9:06; #MAC
fixed-address 192.168.0.100;
option host-name "first.bla-bla.ru";
}
#
host second.bla-bla.ru
{
hardware ethernet 48:5b:39:90:b9:07; #MAC
fixed-address 192.168.0.101;
option host-name "second.bla-bla.ru";
}
}
subnet 192.168.0.0 netmask 255.255.255.0 #, dhcp-
{
option routers 192.168.0.1; #
option domain-name-servers 192.168.0.2; #DNS
range 192.168.0.100 192.168.0.150; #
}
deny unknown-clients; #
dhcpdãåèµ·åããŸãã ããã§ããããã¯ãŒã¯çµç±ã§èµ·åããè»ãæäŸãããŸãã
TFTP
TFTPã®å Žåãtftp-hpaã䜿çšãããŸããã æ£ããåäœããããã«ã¯ã次ã®è¡ã/etc/xinetd.d/tftpã«å ¥åãããŸãïŒubuntuã§èªåã§ãã¡ã€ã«ãäœæããå¿ èŠããããŸããïŒã
service tftp
{
port = 69
socket_type = dgram
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = /var/lib/tftpboot
disable = no
}
èšå®ãããããããã«ããããã¯ãŒã¯çµç±ã§ãã·ã³ãããŠã³ããŒãããããã®ãã¹ãŠã®é©åãªãã®ã/ var / lib / tftpbootã«ä¿åããŸãã xinetdãåèµ·åããŸãã TFTPãæºåãã§ããŸãã
ããŒãããŒããŒïŒPXELinuxïŒ
PXELinuxã¯SYSLinux`aïŒãããããã¹ãŠã®Linux-CDã€ã³ã¹ããŒã«CDã§äœ¿çšãããŸãïŒã®ååã®å åŒã§ããããããã¯ãŒã¯çµç±ã§ããŒãããããã«èšèšãããŠããŸãã Ubuntuã®netbootã€ã¡ãŒãžããããŒãããŒããŒãååŸããŸããããä»ã®æ¹æ³ã§å ¥æã§ãããšæãããŸãã ãã€ããªïŒpxelinux.0ïŒã/ var / lib / tftpboot /ã«é 眮ããŸãã ããã©ã«ãã®èšå®ã¯pxelinux.cfgãµããã£ã¬ã¯ããªã«ãããããã©ã«ããã¡ã€ã³ã®èšå®ãšããŠäœ¿çšãããŸãïŒãã«ãã¹ã¯/var/lib/tftpboot/pxelinux.cfg/defaultã«ãªããŸãïŒã ãã ããdhcpdæ§æã§ã¯ãbla-bla.ruã°ã«ãŒãã®ãµãŒããŒãconfigs / bla-bla.ru / configïŒãã«ãã¹/var/lib/tftpboot/configs/bla-bla.ru/configããæ§æãéžæããããšã瀺ããŸããïŒ ãããã£ãŠãå¿ èŠãªãã£ã¬ã¯ããªãäœæããæ§æã«æžã蟌ã¿ãŸãã
default linux
timeout 100
label linux
kernel kernels/vmlinuz-2.6.32
append panic=15 initrd=images/bla-bla.ru/current
ã芧ã®ãšãããã«ãŒãã«ã¯kernelsã«ä¿åãããã€ã¡ãŒãžèªäœã¯images /ã«ä¿åãããŸãã ãã¡ãããã«ãŒãã«ã®ããŒãžã§ã³ã¯åŸã§æå®ããŸãã ããããããããã¹ãŠã¯åŸã§ã§ãããä»ã®ãšããã¯ãã€ã¡ãŒãžèªäœã®å¶äœã«åŸäºããŸãã
ç»åãæºåãã
å ã»ã©èšã£ãããã«ãç»åã¯initrdã«çŽæ¥ä¿åãããŸãã ãã®æ¹æ³ã¯ãSquashFS + UnionFSã䜿çšãããããã¯ããã«ç°¡åã§ãïŒåŸè ã¯ã«ãŒãã«ã«å«ãŸããŠããªããããåŸè ã®æ ¢æ§çãªåã³ã³ãã€ã«ãå¿ èŠã§ãïŒã ãããŠãããç°¡å/å®å šãªnfs_root è¿œå ã®é害ãã€ã³ãã«ãªãå¯èœæ§ãããè¿œå ã®ãµãŒãã¹ã¯å¿ èŠãããŸããã
Ubuntuã§ã€ã¡ãŒãžãäœæããŸãããDebianã§ãæé ã¯äŒŒãŠããŸãã ãããã£ãŠãdebootstrapãå¿ èŠã§ãã ã©ããã«ãã£ã¬ã¯ããªãäœæãïŒ/ root / imageã«ããŸãïŒãããã«ã€ã¡ãŒãžãå±éããŸãã ããšãã°ãUbuntu LucidïŒ
debootstrap lucid /root/image
ããã§chroot`ãå®è¡ããã«ãŒãã«ãïŒãŠãããã«ïŒé 眮ããŸãã chroot`aãçµäºããçµæã®ã«ãŒãã«ã/ var / lib / tftpboot / kernels /ã«ãã©ãã°ããåã®ã»ã¯ã·ã§ã³ã®èšå®ã«å ¥åããŸãã ã¡ãªã¿ã«ã貎éãªå Žæãå æããªãããã«ãç°å¢èªäœããåé€ããããšãã§ããŸãã
ããããæ¢ã«ç解ããŠããããã«ããã®ç°å¢ã¯å°æ¥ã®ã€ã¡ãŒãžã§ãã ããã§ãå¿ èŠãªããã±ãŒãžãé 眮ããæ§æãç·šéã§ããŸãã ãŸãã/ etc / fstabãäœæããå¿ èŠããããŸãïŒãããèšå ¥ããããªãå Žåã§ããããã«/ procãé 眮ããŸã;ïŒïŒãšinitãã¡ã€ã«ãã«ãŒãã«é 眮ããå¿ èŠããããŸãïŒãããªãã§ã¯ãã«ãŒãã«ãããã¯ã¯äœããã®çç±ã§æå³çã§ããããå®è¡ããæš©å©ããªããå 容ã¯ç©ºã§ããïŒã ãŸãã/ etc / network / interfacesã«dhcpã§IPã¢ãã¬ã¹ã®åä¿¡ãå ¥åããããšããå§ãããŸã-DHCPãµãŒããŒã¯éçã¢ãã¬ã¹ãçºè¡ã§ããŸãã
ããã§ãç»åãçµã¿ç«ãŠãæºåãã§ããŸããã ãããããã®åã«ãããã»ã¹ã®1ã€ã®æ©èœã«ã€ããŠç¥ã£ãŠããå¿ èŠããããŸãïŒ cpio-ããŒããªã³ã¯ãããã¯ããæ¹æ³ãç¥ããŸãã ã ã€ãŸãããããã解æããªããšãifupãifdownãmkfsããã®ä»ã®ãã¡ã€ã«ãªã©ã®ãŠãŒãã£ãªãã£ã倱ãããŸãã
ãã®åé¡ã解決ããããã«ãPerlã§ãããã解æããå°ããªæŸèæãäœæããŸãã ã ã³ãŒãã¯ãã¡ãã§ãã ãã®ã¹ã¯ãªããã«ãã£ã¬ã¯ããª/ã«ãŒã/ã€ã¡ãŒãžããã©ã¡ãŒã¿ãŒãšããŠæå®ããããã§ãªã³ã¯ã解æããŸãã 次ã«ãç°å¢ããããã£ã¬ã¯ããªïŒ/ root / imageïŒã«ç§»åããŠã次ã®ããã«èšããŸãïŒ
find | cpio -H newc -o -p > ../bla-bla.ru; gzip -9 ../bla-bla.ru;cp ../bla-bla.ru.gz /var/lib/tftpboot/images/bla-bla.ru/2011-03-16;ln -s /var/lib/tftpboot/images/bla-bla.ru/2011-03-16 /var/lib/tftpboot/images/bla-bla.ru/current
ãã®ã³ãã³ãã¯ãinitrdã®ããã«ã€ã¡ãŒãžãããã¯ããé©åãªå Žæã«é 眮ããcurrentãžã®ãªã³ã¯ãäœæããŸãïŒconfigã§æå®ãããŸãïŒã
以äžã§ãïŒ ãããã¯ãŒã¯çµç±ã§èµ·åããããšãããšããã·ã³ã¯äœæããã€ã¡ãŒãžããèµ·åããŸãã
Openvz
OpenVZã®å©ããåããŠãçããç»åã¢ãã«ãäœæããŸãã VZä»®æ³ã³ã³ãã¥ãŒã¿ãŒã®ã€ã¡ãŒãžã¯ããªãŒã®åœ¢ã§ãã£ã¹ã¯ã«ããã®ãŸãŸãä¿åããããããæåã«ç®çã«äŸ¿å©ã§ãããããã£ãŠãããããããã¯ãããšäŸ¿å©ã§ãã ç§ã®å Žåãããå°ãé²ãã§ãOpenVZã³ã³ãããŒå ã«ãDHCP + TFTPãåéããŸããïŒãã¡ãããå¥ã ã«ïŒã
ãã®åé¡ã解決ããããã«OpenVZã䜿çšãããå Žå-ãã®ä»®æ³åã·ã¹ãã ïŒã«ãŒãã«ãµããŒããvzctlïŒã®æäœã«å¿ èŠãªãã¹ãŠãåãããµãŒããŒãæ¢ã«ãããšä»®å®ããŸã-幞ããªããšã«ããã®ãããã¯ã«é¢ããååãªããã¥ã¡ã³ãããããŸãã
ä»®æ³ãã·ã³ãäœæããŸãã
vzctl create 100 --hostname model.bla-bla.ru
ãŸã å®è¡ããå¿ èŠã¯ãããŸããã ãã©ã€ããŒããã£ã¬ã¯ããªã®å å®¹å šäœïŒããã©ã«ãã§ã¯/ var / lib / vz / private / 100ã100ã¯äœææã«æå®ãããVEIDïŒãåé€ããåã®æ®µèœã§äœæãããã£ã¬ã¯ããªããªãŒãããã«é 眮ããŸãã
ãã§ã«ãããã¯ãŒã¯èšå®ã®èªåååŸãã€ã¡ãŒãžãããããã€ãããã·ã¹ãã ã«å ¥åã§ããŠããå Žå-DHCPãµãŒããŒã®æ§æãå ¥åããŠãã®ä»®æ³ãã·ã³ã®ã¢ãã¬ã¹ãçºè¡ããã®ã«æ tooã«ãªããªãã§ãã ããïŒã³ã³ãããŒã®MACã¢ãã¬ã¹ã¯ããã¹ãã·ã¹ãã ã³ã³ãœãŒã«ããvzctl enterãå®è¡ããŠå®è¡ããããšã§ç¢ºèªã§ããŸãïŒ ifconfigïŒãããã§ãªããã°ããããã¯ãŒã¯ãªãã§æŸçœ®ããããªã¹ã¯ããããŸãã
以äžãéå§ããŸãã
vzctl start 100
è¯å®çãªçµæãåŸããããšãä»®æ³ãã·ã³ã¯ã¢ãã¬ã¹ã®DHCPãµãŒããŒã«ã¢ã¯ã»ã¹ãããããã¯ãŒã¯çµç±ã§å©çšå¯èœã«ãªããŸãã ããã§ãã€ã¡ãŒãžãäœæããæ¬æ Œçãªãã·ã³ãšåãæ¹æ³ã§äœæ¥ã§ããŸãã
ã€ã¡ãŒãžãèªåçã«æ§ç¯ããããã«ã次ã®ããã«æ©èœããå°ããªPerlã¹ã¯ãªãããäœæããŸããã
- ããããŒã§ã¯ããã¢ãã«ãïŒã€ã¡ãŒãžãååŸããä»®æ³ãã·ã³ïŒãšdhcpãµãŒããŒã®VEIDã宣èšããŸãã dhcpãµãŒããŒãVZã³ã³ããã«ãªãå Žåã¯ã$ out_pathãä¿®æ£ããŠãã ããïŒ
- ã¹ã¯ãªããã§æå®ãããåä»®æ³ãã·ã³ã«ã€ããŠãå€æŽæé/ var / lib / apt / extended_statesããã§ãã¯ãããŸãïŒãã®ãã¡ã€ã«ã¯ããã±ãŒãžã®ãªã¹ããå€æŽããããã³ã«å€æŽãããŸã-apt-getãä»ããŠã€ã³ã¹ããŒã«/æŽæ°ïŒãåä¿¡ããã¿ã€ã ã¹ã¿ã³ãã¯/ var /ã«æžã蟌ãŸããŸãcache / netboot / numberïŒãã£ã¬ã¯ããªãååšããå¿ èŠããããŸãïŒã
- ã¹ã¯ãªãããã£ãã·ã¥ããã®ã¿ã€ã ã¹ã¿ã³ãããã§ãã¯ããããã¡ã€ã«ã®å€æŽæéãããçãå Žåãä»®æ³ãã·ã³ã¯åæ¢ããŸãã
- 次ã«ã/ var / cache / aptãïŒã¹ããŒã¹ãç¯çŽããããã«ïŒã¯ãªãŒã³ã¢ãããããcpioã€ã¡ãŒãžãåéãããŸãããã®åŸãä»®æ³ãã·ã³ãåã³èµ·åããŸãã 以åã¯ãããŒããªã³ã¯ã解æãã以åã®ã¹ã¯ãªãããå®è¡ãããŠããŸããã PATHã«èšè¿°ãããŠãããã£ã¬ã¯ããªã«ãããšèããããŠãããnb_links_breakerèªäœãšåŒã°ããŠããŸãã
- æåŸã®æ®µéã§ã¯ãcpioã€ã¡ãŒãžãgzipã«ãã£ãŠæŒãããç®çã®å Žæã«ç§»åãããŸãïŒããã©ã«ãã§ã¯-/ var / lib / tftpboot / images / virtual_name / dateãšcurrentããã®ãªã³ã¯ãæ·»ä»ãããŸãïŒã
ã芧ã®ãšãããã¹ã¯ãªããã¯æãåçŽã§ãããå¿ èŠã«å¿ããŠãä»ã®å€æŽã«å¯Ÿå¿ããããã«æžãæããããšãã§ããŸãã ããªãã¯åœŒã®cronãæããããšãã§ãã圌ã¯å¿ èŠã«å¿ããŠç»åãåéããèªåã§ããã»ã¹ã«åŸããŸãã
åèš
ææ¡ããããªãã·ã§ã³ã«ã¯2ã€ã®æãããªãã€ãã¹ç¹ããããŸããRAMãã£ã¹ã¯ã䜿çšããããã®RAMæ¶è²»éãšãããŒããã£ã¹ã¯ã«æ¯ã¹ãŠèµ·åæéãé·ãïŒç»åã®ååŸãšå±éã«ããïŒ è£åŽã¯çµæã®æ©èœã§ããã€ã¡ãŒãžãã¢ã»ã³ãã«ãããšãæ°åã§æ°ãããµãŒããŒãã³ããã·ã§ã³ããæ©äŒãåŸãããã¢ã»ã³ãã«ãããåã€ã¡ãŒãžã¯æŽæ°ã倱æããå Žåã®ããŒã«ããã¯ãã€ã³ããšããŠæ©èœããŸãã
ãã¡ãããããã§ã¯ããããã¯ãŒã¯çµç±ã§ããŒãããæ©èœãåããinitrdã«ããã±ãŒãžåãããåºæ¬ã·ã¹ãã ãååŸããããã«å¿ èŠãªäžè¬çãªååãšæäœã«ã€ããŠã®ã¿èª¬æããŸãã mdadm`a configããæ°ãããµãŒããŒã§ãã£ã¹ã¯ãããŒãã£ã·ã§ã³åå²ãããªã©ã®äœæ¥ãç°¡åã«ããå°ããªã¹ã¯ãªãããªã©ãããŸããŸãªä»äžãã®ãªãã·ã§ã³ã¯èªè ã®è£éã«ä»»ãããŠããŸãã
ããã誰ãã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã ãæž èŽããããšãããããŸããã :)