[求助]COW(Copy On Write)用户注销时候,自动删除快照怎样实现

47 views
Skip to first unread message

tlze

unread,
May 11, 2012, 11:11:14 PM5/11/12
to sh...@googlegroups.com
       想实现用gpxe+iscsi做无盘服务器,每台客户机启动时用lvm创建cow snapshot,
然后用户注销(关机,重启)时自动删除这个快照。(实质等于还原)

       网上找了很多相关的文章,但都是静态的创建一对一的快照,没找到有动态的方法:
pxe启动时需要dhcp+tftp+iscsi,在这个时候要创建快照,怎么插入这一步呢?还有客户端注销
后服务器怎么获得事件并删除这个客户端的快照呢?

大伙给点方向建议或相关的链接。非常需要你们的帮助,先谢谢!

摘录:“6、使用COW(Copy On Write)技术 所有用户的磁盘回写都写入服务器快照空间,
不破坏原始数据,用户注销时候,自动删除快照。快照过程对用户和客户机操作系统完全透明。”
但没有具体说明是怎么实现的。

--------------------------signature--------------------------
tlze

liyaoshi

unread,
May 12, 2012, 12:36:49 AM5/12/12
to sh...@googlegroups.com
啥叫快照?

Chaos Eternal

unread,
May 12, 2012, 12:40:33 AM5/12/12
to sh...@googlegroups.com

iscsi连接发起的时候做快照删除动作。

另外,其实可以用qemu-nbd,感觉比iscsi和lvm好。又能压缩,又能快照,还支持模板。

tlze

unread,
May 12, 2012, 12:55:27 AM5/12/12
to sh...@googlegroups.com

这样应该要修改iscsitarget了吧?现在去看看nbd,还没发现这个。

Chaos Eternal

unread,
May 12, 2012, 1:05:14 AM5/12/12
to sh...@googlegroups.com

写个wrapper就可以

tlze

unread,
May 12, 2012, 2:00:23 AM5/12/12
to sh...@googlegroups.com

好的,大方向有了。再问问,这个包装可不可用shell脚本写?

Liang Guo

unread,
May 12, 2012, 4:32:31 AM5/12/12
to sh...@googlegroups.com
2012/5/12 tlze <why...@gmail.com>:

提供一个思路,无盘服务器启动步骤如下:

1 从dhcp获取地址,及tftp服务器信息
2 从tftp服务器获取kernel及initrd文件
3 将执行权限交给内存中的kernel及initrd文件
4 initrd文件通过dhcp获取到网络地址
5 initrd中的iscsi initiator发起到iscsi target的连接
6 连接建立,内核看到一块物理磁盘(实际上是iscsi lun)
7 启动这块物理磁盘上的系统

如果你想在在建立iscsi target前建立快照, 则需要在步骤4和步骤5之间动手脚。

至于快照删除,则建议定时housekeeping工作,删除不用的快照
--
Liang Guo
http://bluestone.cublog.cn

Chaos Eternal

unread,
May 12, 2012, 6:51:47 AM5/12/12
to sh...@googlegroups.com

当然用shell, 偶只会shell.

tlze

unread,
May 12, 2012, 9:01:17 AM5/12/12
to sh...@googlegroups.com
现在大概也是这个想法,正在了解怎么为iscsitarget做个包装。创建前删除旧的。

--------------------------signature--------------------------
tlze


2012/5/12 Liang Guo <bluesto...@gmail.com>

Shell Xu

unread,
May 12, 2012, 9:41:50 PM5/12/12
to sh...@googlegroups.com

啥?

from miui

Chaos Eternal

unread,
May 17, 2012, 4:07:15 AM5/17/12
to sh...@googlegroups.com
就是说,因为偶只懂shell,所以偶提出的方案不会超出shell能解决的范围。

前两天爪机,今天详细说一下方案:

偶建议楼主用qemu-nbd来做,比那个lvm+iscsi好。
好处在于:
1. qemu-img 创建qcow2格式可以压缩,节省io;
2. qcow2可以做snapshot
3. qemu-nbd 在启动的时候可以指定单独的文件放snapshot,很容易就实现模板功能
4. qemu-nbd 可以跟inetd集成,脚本很方便:

#!/bin/sh

CLIENTIP=$IP

SSFILE=/tmp/SS_FILE_$CLIENTIP

qemu-nbd -p 0 -s $SSFILE /path/to/template.img

rm $SSFILE


我忘记inetd脚本里面存客户端ip的环境变量是啥了,有没有好人帮忙查一下。


2012/5/13 Shell Xu <shell...@gmail.com>:

Chaos Eternal

unread,
May 17, 2012, 4:18:16 AM5/17/12
to sh...@googlegroups.com
本来想吐槽一下qemu-nbd 那个 -p 0的参数,因为让我找了很久。

结果4年前就有人吐过了:

http://lists.gnu.org/archive/html/qemu-devel/2008-09/msg00592.html


2012/5/17 Chaos Eternal <chaose...@shlug.org>:

Shell Xu

unread,
May 17, 2012, 6:52:59 AM5/17/12
to sh...@googlegroups.com

我说我解决不能

from miui

tlze

unread,
May 17, 2012, 11:51:54 AM5/17/12
to sh...@googlegroups.com

我那天根据你的建议搜索了qemu-nbd,linux行,但windows没有驱动,只有iscsi和AoE,我有windows需求,不好意思,当时没反馈。(电教室改双系统)
想到的方案是:每个客户端一个snapshot然后iscsitarget创建一个tun,这样每个客户端就可以独立还原。
现正在想办法让不同客户端连接到不同的iscsi tun。可行否?
或许有更好的建议?
谢谢!

在 2012-5-17 下午4:07,"Chaos Eternal" <chaose...@shlug.org>写道:

Chaos Eternal

unread,
May 17, 2012, 10:32:21 PM5/17/12
to sh...@googlegroups.com
杯具

好像iscsid没有办法用inetd启动,否则你就可以用上面的办法写个脚本包一下了。

还是给nbd写个 windows driver?再或者客户端先起一个linux, 然后kvm一个windows出来。。。反正瓶颈在io上,不在cpu上。。

2012/5/17 tlze <why...@gmail.com>:

tlze

unread,
May 18, 2012, 4:03:48 AM5/18/12
to sh...@googlegroups.com
谢谢!
找到一个符合要求的开源项目:http://sourceforge.net/projects/wliscsi/
不过应该很久没维护了,大概看了下代码(我就只有最基本的语法基础),这个的做法应该是
直接修改内核(代码里是mingzhao-dm-cache)实现动态snapshot的。

但要修改内核代码的话,维护起来可就有难度(没到这水平),理想中是找到能用现成开源软
件拼成的方案,借助开源的力量,然后形成文档,添加脚本或简单包装,简单到很多电教室都
可以有双系统选择,起码可以引起一批学生的好奇,不会直接一进就是windows(现在直接
放弃windows直接linux不太可能)。

linux的无盘系统找到有好几个,ltsp,drbl等,也是针对电教室的方案,但好奇怎么都没“还原”
功能的,这样的话,学生用怎么维护,每次用完手工删除一遍?(有Clonezilla 再生龍要收费)
windows的无盘方案也很多(包括商业),但能双系统并用,免费,持续维护好像没找到。

继续查找中!

--------------------------signature--------------------------
tlze


2012/5/18 Chaos Eternal <chaose...@shlug.org>
Reply all
Reply to author
Forward
0 new messages