docs:vserver
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| docs:vserver [2013-03-16 21:42] – [cgroups with libcgroup] arekm | docs:vserver [2015-10-05 15:07] (current) – syn on glen | ||
|---|---|---|---|
| Line 15: | Line 15: | ||
| ===== Installing Vserver host on PLD Linux ===== | ===== Installing Vserver host on PLD Linux ===== | ||
| - | vserver support is included in PLD Linux main kernels, so you can just install kernel package | + | Ensure |
| - | + | ||
| - | < | + | |
| - | # poldek -u kernel | + | |
| - | </ | + | |
| - | + | ||
| - | or alternatively, | + | |
| - | < | + | |
| - | # poldek -u kernel-longterm | + | |
| - | </ | + | |
| + | You can check this from kernel config: | ||
| + | < | ||
| + | # modprobe configs | ||
| + | # zgrep CONFIG_VSERVER / | ||
| + | CONFIG_VSERVER=y | ||
| + | </ | ||
| ===== Installing guest PLD Linux Vserver ===== | ===== Installing guest PLD Linux Vserver ===== | ||
| Line 65: | Line 62: | ||
| If you need to use another combination, | If you need to use another combination, | ||
| - | * pld-ac - [[:AcInfo|PLD 2.0 (Ac)]] | + | * pld-ac - [[:ac|PLD 2.0 (Ac)]] |
| - | * pld-th - [[:ThInfo|PLD 3.0 (Th)]] | + | * pld-th - [[:th|PLD 3.0 (Th)]] |
| You may choose one using '' | You may choose one using '' | ||
| Line 395: | Line 392: | ||
| [[http:// | [[http:// | ||
| - | You can use //lcap// program to see available | + | You can use //lcap// program to see available |
| Line 579: | Line 576: | ||
| ==== Running 32 bit vserver on an 64 bit host ==== | ==== Running 32 bit vserver on an 64 bit host ==== | ||
| - | With recent PLD util-vserver package you can create 32-bit guest systems inside a 64-bit host. First you need to prepare a new distribution definition skeleton: | ||
| + | With recent [[package> | ||
| + | To specify arch during guest creation, use '' | ||
| - | < | + | < |
| </ | </ | ||
| - | Then copy your repository configuration to ''/ | ||
| - | + | If you need to set '' | |
| - | + | < | |
| - | < | + | # echo linux_32bit |
| + | # echo i686 > / | ||
| </ | </ | ||
| - | Later to force i686 32bit use: | ||
| - | |||
| - | |||
| - | < | ||
| - | # echo i686 > / | ||
| - | </ | ||
| - | however, you can do that at vserver build time using arguments '' | ||
| Line 719: | Line 710: | ||
| + | ==== Running auditd inside guest ==== | ||
| + | |||
| + | You need '' | ||
| + | |||
| + | ==== XFS filesystem - kernel upgrade causes xfs related oops (xfs_filestream_lookup_ag) ==== | ||
| + | |||
| + | After upgrading from 2.6-3.4 kernels (possibly other versions) to 3.18 (tested, possibly other versions) kernel ooppses | ||
| + | almost immediately after accessing some files on xfs filesystem with '' | ||
| + | (or other filestream related function). | ||
| + | |||
| + | That's because vserver patch for kernels earlier than 2.6.23 patched xfs filesystem to introduce new flag: | ||
| + | |||
| + | <file c> | ||
| + | #define XFS_XFLAG_BARRIER | ||
| + | </ | ||
| + | |||
| + | and files/dirs with such flag got saved on your filesystem. | ||
| + | |||
| + | Starting with kernel 2.6.23 kernel introduced filestreams which are using 0x00004000 bit, thus causing conflict with vserver. | ||
| + | |||
| + | <file c> | ||
| + | #define XFS_XFLAG_FILESTREAM | ||
| + | </ | ||
| + | |||
| + | Vserver stopped adding such xfs xflag in 3.13 BUT your existing filesystem can still have XFS_XFLAG_BARRIER (0x00004000) set | ||
| + | causing oops in newer kernels. | ||
| + | |||
| + | How to find out if I'm affected? | ||
| + | |||
| + | IIF you don't use filestream feature then modify http:// | ||
| + | |||
| + | <file diff> | ||
| + | diff --git a/ | ||
| + | index 4e22ecd..887512f 100644 | ||
| + | --- a/ | ||
| + | +++ b/ | ||
| + | @@ -34,19 +34,21 @@ dotime(void *ti, char *s) | ||
| + | void | ||
| + | | ||
| + | { | ||
| + | - | ||
| + | - (long long)sp-> | ||
| + | - | ||
| + | - | ||
| + | - | ||
| + | - | ||
| + | - | ||
| + | - | ||
| + | - | ||
| + | - | ||
| + | - | ||
| + | - | ||
| + | - | ||
| + | + if (sp-> | ||
| + | + | ||
| + | + (long long)sp-> | ||
| + | + | ||
| + | + | ||
| + | + | ||
| + | + | ||
| + | + | ||
| + | + | ||
| + | + | ||
| + | + | ||
| + | + | ||
| + | + | ||
| + | + | ||
| + | + } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | and then run it with mounted directory of each filesystem (bstat /; bstat /home etc). It will print "ino ..." information for filestream files. | ||
| + | |||
| + | |||
| + | How to clean up? | ||
| + | |||
| + | rsync files to other partition, recreate problematic partition and then copy files back. | ||
| ===== Debian or Ubuntu guest installation ===== | ===== Debian or Ubuntu guest installation ===== | ||
| Line 1006: | Line 1074: | ||
| * add '' | * add '' | ||
| - | * restart your vserver and run '' | + | * restart your vserver and run '' |
| ===== Network namespace in vservers ===== | ===== Network namespace in vservers ===== | ||
| + | |||
| + | Starting from util-vserver 0.30.216-1.pre3054 there is basic support for creating network namespaces with interfaces inside. | ||
| + | |||
| + | Enabling netns and two capabilities: | ||
| + | |||
| + | |||
| + | < | ||
| + | touch / | ||
| + | echo NET_ADMIN >> / | ||
| + | echo NET_RAW >> / | ||
| + | echo ' | ||
| + | </ | ||
| + | |||
| + | Avoid context isolation since it makes little sense when using network namespaces: | ||
| + | < | ||
| + | |||
| + | Configure interfaces: | ||
| + | |||
| + | 0 - arbitrary directory name, just for ordering | ||
| + | |||
| + | myiface0 will be interface name inside of guest (optional, default geth0, | ||
| + | geth1 and so on) | ||
| + | |||
| + | veth-host - interface name on the host side | ||
| + | |||
| + | < | ||
| + | mkdir -p / | ||
| + | echo myiface0 > / | ||
| + | echo veth-host > / | ||
| + | </ | ||
| + | |||
| + | !!! FINISH ME. FINISH ME. FINISH ME. !!! | ||
| + | |||
| + | ===== Network namespace in vservers (OLD WAY) ===== | ||
| Enabling netns and two capabilities: | Enabling netns and two capabilities: | ||
| Line 1014: | Line 1117: | ||
| - | < | + | < |
| - | touch /etc/vserver/ | + | touch /etc/vservers/ |
| echo NET_ADMIN >> / | echo NET_ADMIN >> / | ||
| echo NET_RAW >> / | echo NET_RAW >> / | ||
| Line 1116: | Line 1219: | ||
| </ | </ | ||
| For these to work you need at least util-vserver-0.30.216-1.pre2955.3 (that .3 is important) and turn on per subsys support by doing: | For these to work you need at least util-vserver-0.30.216-1.pre2955.3 (that .3 is important) and turn on per subsys support by doing: | ||
| - | |||
| < | < | ||
| # touch / | # touch / | ||
| + | </ | ||
| + | |||
| + | ===== cgroups mountpoint ===== | ||
| + | |||
| + | if you have cgroups mounted somewhere else, you can inform vserver of that (it searching in ''/ | ||
| + | |||
| + | < | ||
| + | none / | ||
| + | </ | ||
| + | |||
| + | you need to tell vserver where it mounted: | ||
| + | < | ||
| + | # cat / | ||
| + | /dev/cgroup | ||
| </ | </ | ||
docs/vserver.1363466566.txt.gz · Last modified: 2013-03-16 21:42 by arekm