VPS, VM மற்றும் VPC என்றால் என்ன? இவற்றின் வேறுபாடுகள்
VM என்பது மென்பொருள் தொழில்நுட்பம், VPS என்பது வாடகைக்கு எடுக்கப்படும் சர்வர், VPC என்பது கிளவுட் நெட்வொர்க். இந்த மூன்றுக்கும் உள்ள தொழில்நுட்ப வேறுபாடுகளை விரிவாகக் காண்போம்.
VPS, VM மற்றும் VPC ஒரே பத்தியில்
VM (virtual machine) என்பது மென்பொருளால் உருவாக்கப்பட்ட ஒரு கணினி: ஒரு hypervisor ஒரு physical server-ஐ பல தனித்தனி இயந்திரங்களாகப் பிரிக்கிறது, ஒவ்வொன்றும் அதன் சொந்த kernel-ஐ இயக்குகிறது. VPS (virtual private server) என்பது உங்களுக்கு ஒரு தயாரிப்பாக வாடகைக்கு விடப்படும் server ஆகும்; இதில் operating system, பொதுவாக root access மற்றும் மாதக் கட்டணம் இருக்கும். பெரும்பாலான VPS திட்டங்கள் virtual machines-ஆகவே உள்ளன, ஆனால் சில நிறுவனங்கள் host kernel-ஐப் பகிர்ந்து கொள்ளும் containers-ஐயும் அதே பெயரில் விற்கின்றன. VPC (virtual private cloud) என்பது ஒரு server அல்ல. இது ஒரு cloud account-க்குள் நீங்கள் வரையறுக்கும் ஒரு private network; இதில் நீங்கள் வளங்களை (resources) இணைக்கலாம். VM என்பது தொழில்நுட்பம். VPS என்பது தயாரிப்பு. VPC என்பது அந்தத் தயாரிப்பைச் சுற்றியுள்ள network.
இவற்றில் இரண்டு சொற்கள் ஒரு இயந்திரத்தைக் குறிக்கின்றன. மூன்றாவது ஒரு network-ஐக் குறிக்கிறது. மக்கள் இவற்றை ஒரே தட்டில் உள்ள மூன்று தயாரிப்புகளாக ஒப்பிடுவதால், இந்தத் தவறான புரிதல் ஏற்படுகிறது.
VM என்றால் என்ன
Hypervisor என்பது வன்பொருள் (hardware) போலச் செயல்படும் ஒரு அடுக்கு ஆகும். இது ஒவ்வொரு guest-க்கும் ஒரு virtual CPU, குறிப்பிட்ட அளவு memory, virtual disk மற்றும் virtual network card ஆகியவற்றை வழங்குகிறது; மேலும், guest-கள் ஒன்றையொன்று பார்க்காதவாறு பிரிக்கிறது. KVM, Xen, Hyper-V மற்றும் VMware ESXi ஆகியவை server-களில் பொதுவாகப் பயன்படுத்தப்படுபவை. நவீன hypervisor-கள் CPU virtualisation extensions-ஐ (Intel VT-x, AMD-V) பயன்படுத்துகின்றன. இதனால், guest-ன் கட்டளைகள் interpreted செய்யப்படுவதற்குப் பதிலாக, உண்மையான CPU-விலேயே native வேகத்திற்கு நெருக்கமாக இயங்குகின்றன.
ஒரு sysadmin-க்கு முக்கியமான பகுதி kernel ஆகும். ஒரு VM அதன் சொந்த kernel-ஐக் கொண்டு boot ஆகிறது. எனவே, நீங்கள் விரும்பும் distribution-ஐத் தேர்வு செய்யலாம், kernel modules-ஐ ஏற்றலாம், மேலும் உங்களுக்கு மட்டும் பொருந்தக்கூடிய sysctl மதிப்புகளை அமைக்கலாம். இது container-லிருந்து (LXC, Docker) மாறுபட்டது; container-கள் host kernel-ஐப் பகிர்ந்து கொள்கின்றன, மேலும் அவை தங்களுக்குரிய process மற்றும் file-களை மட்டுமே பார்க்க முடியும்.
எந்தவொரு Linux கணினியிலும் ஒரே ஒரு command மூலம் இதற்கான விடையைக் கண்டறியலாம்.
systemd-detect-virtkvm என்பது நீங்கள் KVM hypervisor-ல் இயங்கும் virtual machine-ல் இருக்கிறீர்கள் என்பதைக் குறிக்கிறது. lxc அல்லது openvz என்பது நீங்கள் வேறொருவரின் kernel-ஐப் பயன்படுத்தும் container-க்குள் இருக்கிறீர்கள் என்பதைக் குறிக்கிறது. none என்பது ஆதரிக்கப்படும் virtualisation எதுவும் கண்டறியப்படவில்லை என்பதைக் குறிக்கிறது. ஒருவேளை அந்த command இல்லையென்றால், lscpu | grep -i hypervisor hypervisor தகவலைக் காட்டும், ஆனால் container-களை அடையாளம் காணாது.
VPS என்றால் என்ன
VPS என்பது ஒரு தனிமைப்படுத்தப்பட்ட server-ஐச் சுற்றியுள்ள வணிக ரீதியான அமைப்பாகும்; இது பெரும்பாலும் ஒரு VM ஆகும். இதன் அடிப்படையிலான தொழில்நுட்பம் virtualisation ஆகும். "VPS" என்ற சொல் அதை விற்பனைக்குரியதாக மாற்றும் அம்சங்களைக் குறிக்கிறது: நீங்கள் மீண்டும் நிறுவக்கூடிய OS image, ஒரு IP address, குறிப்பிட்ட bandwidth அளவு, ஒரு control panel, மாதந்திரக் கட்டணம் மற்றும் server செயலிழக்கும்போது தொடர்புகொள்ள ஒரு தொழில்நுட்பக் குழு. "Private" என்ற சொல், நூற்றுக்கணக்கான தளங்கள் ஒரே operating system மற்றும் ஒரே PHP configuration-ஐப் பகிர்ந்து கொள்ளும் shared hosting-லிருந்து இதை வேறுபடுத்திக் காட்டுகிறது.
VPS என்பது ஒரு தயாரிப்பின் பெயர், தொழில்நுட்பச் சொல் அல்ல என்பதால், அது எப்போதும் முழுமையான VM-ஐக் குறிப்பதில்லை. சில மலிவான திட்டங்கள் containers-ஐயே இதே பெயரில் விற்கின்றன. பலவற்றின் பின்னணியில் உள்ள container platform-ஆன OpenVZ, அதன் containers-ஐ "virtual private servers என்றும் அழைக்கப்படுகின்றன" என்று விவரிக்கிறது. உங்களுக்கு kernel தேவைப்படும்போதுதான் இந்த வேறுபாடு வெளிப்படும். ஒரு container அடிப்படையிலான திட்டத்தில், kernel என்பது host-உடையது; அதை மாற்ற உங்களுக்கு அனுமதி இல்லை. host ஏற்கனவே module-ஐ ஏற்றியிருந்தாலும், container-ன் module directory-ல் அதைத் தேட முடியாவிட்டால் sudo modprobe wireguard தோல்வியடையும். விடுபட்ட module-ஐ ஏற்றுவதற்கும் host kernel-ஐ மாற்றும் அனுமதி தேவை. host kernel-ல் WireGuard ஆதரவு இல்லையென்றால், interface-ஐ உருவாக்குவது (ip link add dev wg0 type wireguard) RTNETLINK answers: Operation not supported பிழையுடன் தோல்வியடையும். அத்தகைய சூழலில், wg-quick ஒரு userspace implementation (இயல்பாக wireguard-go) நிறுவப்பட்டிருந்தால் அதற்கு மாறிக்கொள்ளும்; அப்போது "Missing WireGuard kernel module. Falling back to slow userspace implementation." என்ற செய்தியை அச்சிடும். அந்த fallback முறைக்கும் container-க்கு TUN device-ஐப் பயன்படுத்த அனுமதி தேவை; எல்லா host-களும் இதை அனுமதிப்பதில்லை. userspace binary இல்லையென்றால், wg-quick பிழையுடன் நின்றுவிடும். ஒரு KVM திட்டத்தில், kernel உங்களுடையது: நீங்கள் WireGuard-ஐ நிறுவி, module ஏற்றப்படாதிருந்தால் அதை ஏற்றி, interface-ஐ configure செய்யலாம்; tunnel வெற்றிகரமாகச் செயல்படும். நீங்கள் Docker, VPN, custom kernels அல்லது உங்கள் சொந்த virtual machines-ஐ server-க்குள் இயக்கத் திட்டமிட்டால், வாங்குவதற்கு முன் virtualisation வகையைச் சரிபார்க்கவும். VPS-க்குள் virtual machines இயக்குவதற்கு, host-ல் nested virtualisation வசதி கொண்ட KVM தேவை; இத்தகைய திட்டங்கள் மிகக் குறைவு.
VPC என்றால் என்ன
VPC என்பது cloud provider-க்குள் இருக்கும் ஒரு மென்பொருள் வரையறுக்கப்பட்ட பிணையம் (software defined network) ஆகும். பெரும்பாலான cloud-களில், நீங்கள் அதற்கு 10.0.0.0/16 போன்ற CIDR குறியீட்டில் ஒரு முகவரி வரம்பை (address range) வழங்க வேண்டும், பின்னர் அதிலிருந்து subnets-களைப் பிரிக்க வேண்டும் (Google Cloud இந்த பிணையம் தழுவிய வரம்பைத் தவிர்த்து, ஒவ்வொரு regional subnet-க்கும் தனித்தனி வரம்பை வழங்குகிறது). நீங்கள் route tables-ஐ இணைத்து, உள்ளே இருக்கும் வளங்களுக்கு முன்னால் firewall விதிகளை (security groups) அமைக்கிறீர்கள். இதற்கு CPU, memory அல்லது disk கிடையாது. இதில் உள்நுழைய (login) எதுவும் இல்லை. ஒரு VPC-யில் உள்ள அனைத்து server-களையும் நீக்கினாலும், அந்த VPC காலியாக அங்கேயே இருக்கும், இதற்கு பொதுவாகக் கட்டணம் ஏதுமில்லை.
VPC உங்களுக்கு வழங்குவது தனிப்பட்ட முகவரி (private addressing) வசதியாகும். ஒரே VPC-யில் உள்ள இரண்டு server-கள் provider-ன் உள் கட்டமைப்பில் 10.0.1.15 போன்ற முகவரிகள் மூலம் பேசிக்கொள்ளும். இதனால், அந்த traffic பொது இணையத்தைத் தொடாது மற்றும் இணைய வெளியேற்றக் கட்டணமும் (internet egress) வசூலிக்கப்படாது. ஒரு database-ஐ அதன் private முகவரியில் மட்டும் இயங்க வைக்க முடியும், அப்போது எந்தவொரு port-ம் உலகிற்குத் தெரியாது.
ip -4 addr show10.0.0.0/8, 172.16.0.0/12 அல்லது 192.168.0.0/16-க்குள் இருக்கும் ஒரு முகவரி தனிப்பட்டது (private). ஒரு பொது முகவரி (public address) மட்டும் இருந்தால் server இணையத்திலிருந்து அணுகக்கூடியதாகிவிடாது: routing மற்றும் firewall விதிகள் அணுகலை அனுமதித்தால் மட்டுமே அது சாத்தியமாகும்.
VPC எனது server-ஐ private ஆக்குகிறதா?
இல்லை, இது இந்த மூன்று சொற்களைப் பற்றிய மிகவும் விலையுயர்ந்த தவறான புரிதலாகும். ஒரு VPC routing மற்றும் addressing-ஐ மட்டுமே கட்டுப்படுத்துகிறது. இணையம் ஒரு machine-ஐ அணுக முடியுமா என்பதை அது தீர்மானிப்பதில்லை. ஒரு instance-க்கு public IP இருந்து, அதன் subnet இணையத்துடன் இணைக்கப்பட்டு, security rules 0.0.0.0/0-லிருந்து port 22-ஐ அனுமதித்தால், அது VPC-யில் இருந்தாலும் இல்லாவிட்டாலும் மற்ற server-களைப் போலவே வெளிப்படையாகவே இருக்கும். ஒரு default VPC-யில் இணையத்திற்கான அந்த route ஏற்கனவே இருக்கும். VPC மூலம் உங்களுக்குக் கிடைக்கும் தனிமைப்படுத்தல் (isolation) என்பது, ஒரு resource-க்கு public address எதையும் வழங்காமல் இருப்பதும், எந்தெந்த subnet-கள் எவற்றுடன் தொடர்பு கொள்ளலாம் என்பதற்கான விதிகளை உருவாக்குவதுமே ஆகும்.
இந்த மூன்று சொற்களும் வெவ்வேறு வகையான தனிமைப்படுத்தல்களை உறுதிப்படுத்துகின்றன. ஒரு VM compute-ஐ தனிமைப்படுத்துகிறது: hypervisor CPU நேரம் மற்றும் memory-ஐ பிரிப்பதால், மற்றொரு guest-ஆல் உங்கள் RAM-ஐ வாசிக்க முடியாது. disk மற்றும் network விஷயத்தில் இந்த தனிமைப்படுத்தல் பலவீனமானது, ஏனெனில் அதே host-ல் உள்ள ஒரு பிஸியான neighbour உங்கள் வேகத்தைக் குறைக்கலாம். container அடிப்படையிலான VPS ஒரே kernel-ஐப் பகிர்ந்துகொள்வதால், kernel மட்டத்திலான bug ஒரு பகிரப்பட்ட ஆபத்தாகும். ஒரு VPC compute-ஐ எவ்விதத்திலும் தனிமைப்படுத்துவதில்லை. அது network-ஐ மட்டுமே வடிவமைக்கிறது.
விலை நிர்ணய மன மாதிரி
ஒரு VPS பொதுவாக ஒரு நிலையான இயந்திரத்திற்கு நிலையான மாதாந்திர விலையில் விற்கப்படுகிறது. மாதம் தொடங்குவதற்கு முன்பே உங்களுக்கு கட்டணம் தெரிந்துவிடும், மேலும் வட்டு (disk) மற்றும் தரவு பரிமாற்ற ஒதுக்கீடு (transfer allowance) அதில் அடங்கும். சிறிய அளவிலான பணிச்சுமைக்கு cloud instance-ஐ விட VPS-ஐத் தேர்ந்தெடுப்பதற்கு இந்த முன்கூட்டியே அறியக்கூடிய தன்மையே முக்கிய காரணமாகும்.
ஒரு cloud VM என்பது பயன்பாட்டிற்கு ஏற்ப கட்டணம் வசூலிக்கப்படும் (metered) அமைப்பாகும். இந்த instance-க்கு மணிநேர அல்லது வினாடி அடிப்படையில் கட்டணம் வசூலிக்கப்படுகிறது; வட்டு, snapshots, load balancer மற்றும் வெளிச்செல்லும் போக்குவரத்து (outbound traffic) ஆகியவற்றுக்குத் தனித்தனியாகக் கட்டணம் விதிக்கப்படுகிறது. VPC பொதுவாக இலவசமானது, ஆனால் அதனுடன் இணைக்கப்பட்டுள்ள நிர்வகிக்கப்படும் கூறுகள் இலவசமல்ல: private instances இணையத்தை அணுக உதவும் NAT gateway-க்கு மணிநேர அடிப்படையில் கட்டணம் வசூலிக்கப்படுகிறது, மேலும் அதன் போக்குவரத்து எவ்வாறு கட்டணமாக்கப்படுகிறது என்பது அந்தந்த சேவை வழங்குநரைப் பொறுத்தது. AWS-ல் NAT gateway செயலாக்கும் ஒவ்வொரு gigabyte போக்குவரத்துக்கும் கூடுதல் கட்டணம் வசூலிக்கப்படுகிறது, அதே சமயம் OVHcloud-ன் Public Cloud Gateway மணிநேர அடிப்படையிலும் பயன்பாட்டு அடிப்படையிலும் கட்டணமாக்கப்படுகிறது, இதில் போக்குவரத்து கட்டணம் உள்ளடங்கும். AWS-ல், availability zones-க்கு இடையே செல்லும் போக்குவரத்திற்கும் கட்டணம் உண்டு, ஆனால் Azure ஒரே பிராந்தியத்தில் (region) உள்ள அதன் zones-க்கு இடையிலான போக்குவரத்திற்கு கட்டணம் வசூலிப்பதில்லை. அக்டோபர் 27, 2026 நிலவரப்படி, ஒவ்வொரு பிராந்தியத்திலும் உங்களுக்கென ஒரு default VPC இருப்பதாக AWS VPC வழிகாட்டி கூறுகிறது. அதே சமயம், மார்ச் 18, 2013-க்கு முன் உருவாக்கப்பட்ட கணக்குகள், தாங்கள் ஏற்கனவே EC2 instances-ஐத் தொடங்காத அல்லது ELB, RDS, ElastiCache அல்லது Redshift வளங்களை ஒதுக்கீடு செய்யாத, செயல்படுத்தப்பட்ட பிராந்தியங்களில் மட்டுமே default VPC-களைப் பயன்படுத்த முடியும் என்று AWS VPC FAQ கூறுகிறது. நீக்கப்பட்ட ஒரு default VPC-ஐ மீண்டும் உருவாக்க முடியுமே தவிர, பழைய நிலைக்கு மீட்டெடுக்க முடியாது. Google Cloud ஒவ்வொரு புதிய திட்டத்திற்கும் ஒரு default network-ஐ வழங்குகிறது (நிர்வாகி அதை முடக்காத வரை), மேலும் நீங்கள் ஏற்கனவே உள்ள virtual network-ஐத் தேர்ந்தெடுக்கவில்லை என்றால், Azure ஒரு புதிய VM-உடன் சேர்த்து ஒரு virtual network-ஐ உருவாக்குகிறது. எது எப்படியிருந்தாலும், நீங்கள் கேட்டாலும் கேட்காவிட்டாலும் உங்கள் cloud VM இந்த நெட்வொர்க்குகளில் ஒன்றிற்குள் தான் அமையும்.
உங்களுக்கு உண்மையில் எது தேவை
- ஒரு இணையதளம், செயலி, கேம் சர்வர் அல்லது VPN-க்கு ஒரு சர்வர்: ஒரு VPS. புதிய VPS-ல் முதல் பத்து நிமிடங்கள் திட்டத்தின் பெயரை விட முக்கியமானது.
- தனிப்பட்ட முகவரிகள் (private addresses) மூலம் ஒன்றையொன்று தொடர்பு கொள்ள வேண்டிய பல சர்வர்கள்: ஒரு VPC, அல்லது உங்கள் VPS வழங்குநர் வேறு பெயரில் வழங்கும் private network வசதி.
- ஒரு முழு டேட்டா சென்டரே செயலிழந்தாலும் இயங்க வேண்டிய பணிச்சுமை: பல மண்டலங்களைக் கொண்ட கிளவுட், அதாவது ஒரு VPC-க்குள் இருக்கும் VM-கள்.
- கர்னல் (kernel) மீது முழு கட்டுப்பாடு அல்லது அதன் மேல் உங்கள் சொந்த ஹைப்பர்வைசர் (hypervisor): KVM அடிப்படையிலான VPS (ஹைப்பர்வைசர் தேவைப்பட்டால் nested virtualisation வசதியுடன்) அல்லது ஒரு dedicated server. ஒப்பிடும்போது திட்டத்திற்குப் பின்னால் உள்ள வட்டு வகை (disk type)-ஐச் சரிபார்க்கவும்.
பெரும்பாலான ஒற்றை சர்வர் திட்டங்களுக்கு VPC தேவைப்படுவதில்லை. VPS-உடன் இணைக்கப்பட்டுள்ள private network வசதியே சில இயந்திரங்களுக்குத் தேவையான அதே வேலையைச் செய்துவிடும்.
FAQ
VPS மற்றும் VM இரண்டும் ஒன்றா?
பொதுவாக, ஆம், ஆனால் எப்போதும் அல்ல. KVM, Xen அல்லது VMware-ல் உருவாக்கப்பட்ட ஒவ்வொரு VPS-ம் ஒரு virtual machine ஆகும். ஆனால், உங்கள் laptop-ல் VirtualBox மூலம் இயங்கும் VM ஒரு வணிக ரீதியான தயாரிப்பு அல்ல என்பதால், எல்லா virtual machine-களும் VPS ஆகாது. அதேபோல், எல்லா VPS-ம் VM அல்ல: OpenVZ அல்லது LXC மூலம் உருவாக்கப்பட்ட திட்டங்கள், host kernel-ஐப் பகிர்ந்து கொள்ளும் containers ஆகும். OpenVZ தனது containers-ஐ virtual private servers என்றே அழைக்கிறது. நீங்கள் kernel access-ஐச் சார்ந்திருக்கும் முன் systemd-detect-virt மூலம் உறுதிப்படுத்திக் கொள்ளுங்கள்.
ஒரு VPC-க்குள் என்னால் VPS-ஐ வைக்க முடியுமா?
பொதுவாக முடியாது, ஏனெனில் VPC என்பது ஒரு cloud provider-ன் கட்டமைப்பு ஆகும். AWS தனது subnets-ஐ ஒரே நிறுவனத்தின் கணக்குகளுக்குள் பகிர்ந்து கொள்ள அனுமதிக்கிறது. ஒரு சுயாதீனமான provider-ன் VPS, அந்த provider-ன் network-ல் இயங்குகிறது. உங்களுக்கு இரண்டிற்கும் இடையே private links தேவைப்பட்டால், அவற்றுக்கு இடையே ஒரு VPN tunnel-ஐ உருவாக்க வேண்டும்; அதன் மூலம் VPS அந்த private subnets-ஐ அணுக முடியும்.
ஒரு VPS-ஐ விட எனது cloud கட்டணம் ஏன் அதிகமாக உள்ளது?
instance-ன் விலை அதன் ஒரு பகுதி மட்டுமே. சேமிப்பு (storage), snapshots, outbound traffic, load balancers மற்றும் NAT gateways ஆகியவை metered cloud-ல் தனித்தனி வரிகளாகக் கணக்கிடப்படுகின்றன. ஒரு NAT gateway-ன் மாதக் கட்டணமே ஒரு சிறிய VPS-ன் விலையை விட அதிகமாக இருக்கலாம். ஒரு நிலையான விலை கொண்ட VPS, disk மற்றும் transfer allowance ஆகியவற்றை ஒரே தொகையாக உள்ளடக்குகிறது. இதனால்தான் ஒரே workload அங்கு மலிவாகத் தெரிகிறது.
எனது server-க்கு உண்மையான kernel access உள்ளதா என்பதை எப்படிச் சரிபார்ப்பது?
systemd-detect-virt கட்டளையை இயக்கி அதன் விடையைப் பார்க்கவும். kvm, xen அல்லது vmware (அல்லது புதிய EC2 instances-ல் amazon) இருந்தால், உங்களுக்கெனத் தனி kernel உள்ளது மற்றும் modprobe மூலம் நீங்கள் modules-ஐ ஏற்ற முடியும். lxc, lxc-libvirt அல்லது openvz இருந்தால், நீங்கள் host kernel-ஐப் பகிர்ந்து கொள்கிறீர்கள் என்று அர்த்தம். இதில் modules-ஐ ஏற்ற host kernel-ன் சலுகைகள் தேவைப்படும். அதேசமயம், host அனுமதிக்கும் பட்சத்தில் /proc/sys-ன் கீழ் உள்ள namespaced settings-ஐ (network settings உட்பட) மாற்றியமைக்க முடியும். இரண்டாவது உறுதிப்படுத்தலுக்கு uname -r-ஐப் பயன்படுத்தலாம்; இது container திட்டங்களில், உங்கள் distribution வழங்காத ஒரு kernel version-ஐக் காட்டக்கூடும்.