1. cgroup文件系统
作为lmctfy的基础,cgroup文件系统是必要的,否则执行init时会报错
ls /sys/fs/cgroup/
blkio cpuacct devices hugetlb perf_event
cpu cpuset freezer memory systemd
说明已经挂载了cgroup文件系统,上面显示的就是cgroup目录文件结构,具体含义参考Linux 容器的建立和简单管理
如果系统没有cgroup,可以自己安装一下。
apt-get install cgroup-lite
2. Example (create a memory-only container with 100MB
limit)
下面可以试一下github项目中的例子了。
初始化lmctfy,In order to run lmctfy we must first initialize the machine. This only needs to happen once and is typically done when the machine first boots.
sudo lmctfy init ""
sudo lmctfy create memory_only "memory:{limit:100000000}"
此处的文件目录是以/sys/subsys/为根目录创建的,所以运行时要确保有该目录的读写权限
创建container后,报错···有时间查下原因吧
Command exited with error message: 5: Failed to open file "/sys/fs/cgroup/memory/memory_only/memory.stale_page_age" for hierarchy 7
貌似还能继续,查看创建的container,居然存在!
lmctfy list containers -r /
name="/memory_only"
创建的结果可以看到,试试能不能运行点什么呢
ls /sys/fs/cgroup/memory
cgroup.clone_children memory.max_usage_in_bytes memory.swappiness
cgroup.event_control memory.move_charge_at_immigrate memory.usage_in_bytes
cgroup.procs memory_only memory.use_hierarchy
cgroup.sane_behavior memory.oom_control notify_on_release
memory.failcnt memory.pressure_level release_agent
memory.force_empty memory.soft_limit_in_bytes tasks
memory.limit_in_bytes memory.stat
sudo lmctfy run memory_only "echo hello world"
hello world
sudo lmctfy run -n /memory_only "echo hello from a daemon"
pid="3338"
sudo lmctfy run /memory_only /bin/bash
#
不考虑上面的错误,我们的例子已经能成功的运行起来了,看着已经成功的bash,是不是可以在这个100M内存的container上有点小作为了?