Virtio£ºÕë¶Ô Linux µÄ I/O ÐéÄ⻯¿ò¼Ü
¸Å¶øÑÔÖ®£¬virtio
ÊǰëÐéÄ⻯ hypervisor ÖÐλÓÚÉ豸֮ÉϵijéÏó²ã¡£virtio
ÓÉ Rusty Russell ¿ª·¢£¬Ëûµ±Ê±µÄÄ¿µÄÊÇÖ§³Ö×Ô¼ºµÄÐéÄ⻯½â¾ö·½°¸ lguest
¡£±¾ÎÄÔÚ¿ªÆªÊ±½éÉܰëÐéÄ⻯ºÍÄ£ÄâÉ豸£¬È»ºó̽Ë÷ virtio
µÄϸ½Ú¡£±¾ÎĵÄÖØµãÊÇÀ´×Ô 2.6.30 Äں˷¢ÐаæµÄ virtio
¿ò¼Ü¡£
Linux ÊÇ hypervisor չ̨¡£ÈçÎÒµÄ ÆÊÎö Linux hypervisor
ËùÊö£¬Linux Ìṩ¸÷ÖÖ hypervisor ½â¾ö·½°¸£¬ÕâЩ½â¾ö·½°¸¶¼ÓÐ×Ô¼ºµÄÌØµãºÍÓŵ㡣ÕâЩ½â¾ö·½°¸°üÀ¨ Kernel-based Virtual Machine (KVM)¡¢lguest
ºÍ User-mode Linux µÈ¡£ÔÚ Linux ÉÏÅ䱸ÕâЩ²»Í¬µÄ hypervisor ½â¾ö·½°¸»á¸ø²Ù×÷ϵͳ´øÀ´¸ºµ££¬¸ºµ£µÄ´óСȡ¾öÓÚ¸÷¸ö½â¾ö·½°¸µÄÐèÇ󡣯äÖеÄÒ»ÏÏúΪÉ豸µÄÐéÄ⻯¡£virtio
²¢Ã»ÓÐÌṩ¶àÖÖÉ豸ģÄâ»úÖÆ£¨Õë¶ÔÍøÂç¡¢¿éºÍÆäËûÇý¶¯³ÌÐò£©£¬¶øÊÇΪÕâЩÉ豸ģÄâÌṩһ¸öͨÓõÄǰ¶Ë£¬´Ó¶ø±ê×¼»¯½Ó¿ÚºÍÔö¼Ó´úÂëµÄ¿çÆ½Ì¨ÖØÓá£
ÍêÈ«ÐéÄ⻯ºÍ°ëÐéÄ⻯
¼ÓÈë My developerWorks ÉϵÄÂÌɫС×é
ÔÚ My developerWorks É쵀 GReen IT Report ¿Õ¼ä
ºÍ ÂÌÉ«¼ÆËãС×é
ÉÏÌÖÂÛ¹ØÓÚÄÜÔ´¡¢Ð§Âʺͻ·¾³µÄÖ÷Ìâ²¢¹²Ïí×ÊÔ´¡£
ÈÃÎÒÃÇ¿ìËÙÌÖÂÛÒ»ÏÂÁ½ÖÖÀàÐÍÍêÈ«²»Í¬µÄÐéÄ⻯ģʽ£ºÍêÈ«ÐéÄ⻯ºÍ°ëÐéÄ⻯¡£ÔÚÍêÈ«ÐéÄ⻯
ÖУ¬À´±ö²Ù×÷ϵͳÔËÐÐÔÚλÓÚÎïÀí»úÆ÷É쵀 hypervisor Ö®ÉÏ¡£À´±ö²Ù×÷ϵͳ²¢²»ÖªµÀËüÒѱ»ÐéÄ⻯£¬²¢ÇÒ²»ÐèÒªÈκθü¸Ä¾Í¿ÉÒÔÔÚ¸ÃÅäÖÃϹ¤×÷¡£Ïà·´£¬ÔÚ°ëÐéÄ⻯
ÖУ¬À´±ö²Ù×÷ϵͳ²»½öÖªµÀËüÔËÐÐÔÚ hypervisor Ö®ÉÏ£¬»¹°üº¬ÈÃÀ´±ö²Ù×÷ϵͳ¸ü¸ßЧµØ¹ý¶Éµ½ hypervisor µÄ´úÂ루¼û ͼ 1
£©¡£
ÔÚ
ÍêÈ«ÐéÄ⻯ģʽÖУ¬hypervisor
±ØÐëÄ£ÄâÉ豸Ӳ¼þ£¬ËüÊÇÔڻỰµÄ×îµÍ¼¶±ð½øÐÐÄ£ÄâµÄ£¨ÀýÈç£¬ÍøÂçÇý¶¯³ÌÐò£©¡£¾¡¹ÜÔڸóéÏóÖÐÄ£ÄâºÜ¸É¾»£¬µ«ËüͬʱҲÊÇ×îµÍЧ¡¢×Ôӵġ£ÔÚ°ëÐéÄ⻯ģʽ
ÖУ¬À´±ö²Ù×÷ϵͳºÍ hypervisor Äܹ»¹²Í¬ºÏ×÷£¬ÈÃÄ£Äâ¸ü¼Ó¸ßЧ¡£°ëÐéÄ⻯·½·¨µÄȱµãÊDzÙ×÷ϵͳ֪µÀËü±»ÐéÄ⻯£¬²¢ÇÒÐèÒªÐ޸IJÅÄܹ¤×÷¡£
ͼ 1. ÔÚÍêÈ«ÐéÄ⻯ºÍ°ëÐéÄ⻯»·¾³ÏµÄÉ豸ģÄâ
Ó²¼þËæ×ÅÐéÄ⻯¼¼Êõ¶ø²»¶Ï¸Ä±ä¡£ÐµĴ¦ÀíÆ÷ͨ¹ýÄÉÈë¸ß¼¶Ö¸ÁîÀ´ÈÃÀ´±ö²Ù×÷ϵͳµ½ hypervisor µÄ¹ý¶É¸ü¼Ó¸ßЧ¡£´ËÍ⣬Ӳ¼þÒ²Ëæ×ÅÊäÈë/Êä³ö£¨I/O£©ÐéÄ⻯¶ø²»¶Ï¸Ä±ä£¨²Î¼û ²Î¿¼×ÊÁÏ
Á˽â Peripheral Controller Interconnect [PCI] passthrough ºÍ single- and
multi-root I/O ÐéÄ⻯£©¡£
virtio µÄÌæ»»Õß
virtio
²¢²»ÊǸÃÁìÓòÖеÄΨһ°ÔÖ÷¡£Xen Ìṩ°ë
Ïà¹ØÎĵµ£º
3. Ö¸ÕëÓëÊý×éµÄ±È½Ï
²»Í¬µã£º
Êý×飺ҪôÔÚ¾ªÌì´æ´¢ÇøÓò±»´´½¨£¨ÈçÈ«¾ÖÊý×飩£¬ÒªÃ´ÔÚÕ»Éϱ»´´½¨¡£Êý×éÃû¶ÔÓ¦×Å£¨¶ø²»ÊÇÖ¸Ïò£©Ò»¿éÄڴ棬ÆäµØÖ·ÓëÈÝÁ¿ÔÚÉúÃüÖÜÆÚÄÚ±£³Ö²»±ä£¬Ö»ÓÐÊý×éµÄÄÚÈÝ¿ÉÒԸı䡣
Ö¸Õ룺¿ÉÒÔËæÊ±Ö¸ÏòÈÎÒâÀàÐ͵ÄÄÚ´æ¿é£¬ËüµÄÌØÕ÷ÊÇ“¿É±ä”£¬ËùÒÔÎÒÃdz£Óà ......
¾ßÌå²½ÖèÈçÏ£º
£¨Ò»£©´ò¿ªSource Insight£¬µ¥»÷¡¾ÏîÄ¿¡¿°´Å¥£¬µ¯³öÏÂÀ²Ëµ¥¡£
£¨¶þ£©µ¥»÷¡¾ÐÂÏîÄ¿¡¿°´Å¥£¬µ¯³ö¡¾ÐÂÏîÄ¿¡¿¶Ô»°¿ò£¬ÊäÈëÏîÄ¿ÃûºÍ´æ·Å·¾¶£¬µ¥»÷¡¾È·¶¨¡¿°´Å¥¡£Èçͼ1Ëùʾ¡£
ͼ1 ÐÂÏîÄ¿¶Ô»°¿ò
ÎÄÕÂÀ´Ô´£ºhttp://top-e.org/jiaoshi/html/539.html
£¨Èý£©µ¯³ö¡¾Ìí¼Óɾ³ýÎļþ¡¿¶Ô»°¿ò£¬ÔÚÄÚºËÔ´´ú ......
1.Ò»ÖÖ¶¨Ò庯ÊýÖ¸ÕëµÄ·½·¨
<linux/proc_fs.h>
typedef int (read_proc_t)(char *page, char **start, off_t offset, int count, int *eof, void *data);
read_proc_t *proc_read;
ÕâÖÖ¶¨Òå·½·¨ÓÐÒ»¸öÓÅÊÆ¾ÍÊÇ£¬¼´Ê¹ÄãûÓп´µ½read_proc_tµÄ¶¨Ò壬ҲÄܹ»Çå³þµÄÖªµÀproc_readÊÇÒ»¸öÖ¸Õ룬ÈçÏÂÃæ ......
Ò»¡¢×ܽáһϣº
1.LinuxϵͳÏÂÆô¶¯MySQLµÄÃüÁ
mysqladmin start
/etc/init.d/mysql start (Ç°ÃæÎªmysqlµÄ°²×°Â·¾¶)
2.linuxÏÂÖØÆômysqlµÄÃüÁ
mysqladmin restart
/etc/init.d/mysql restart (Ç°ÃæÎªmysqlµÄ°²×°Â·¾¶)
3.linuxϹرÕmysqlµÄÃüÁ
mysqladmin shutdown
/etc/init.d/mysql shutd ......
Èý¡¢VMAºÍPAGE½á¹¹ ºÍmmapº¯Êý
1.page Ö÷Òª³ÉÔ±
atomic_t count;
//Õâ¸öÒ³µÄÒýÓÃÊý. µ±Õâ¸ö count µôµ½ 0, ÕâÒ³±»·µ»Ø¸ø¿ÕÏÐÁбí.
void *virtual;
//Èç¹ûÒ³±»Ó³É䣬Ôò±íʾÕâÒ³µÄÄÚºËÐéÄâµØÖ·; ·ñÔò, NULL.
unsigned long flags;
//ÃèÊöҳ״̬µÄÒ»Ì×λ±êÖ¾. ÕâЩ°üÀ¨ ......