Linux 3.6:更优秀的虚拟化平台

摘要:这一版本的更新包括Btrfs新特性;挂起到磁盘和内存;TCP "Fast Open"模式;"TCP small queues"来解决bufferbloat问题;NFS/NBD安全交换;更好的ext4配额支持;支持PCIe D3cold电源状态;支持VFIO,并可以保证guest driver对裸主机设备的安全访问。

Linux 3.6的重大改进包括:

1. Btrfs:子卷配额、配额组、快照差别、跨子卷复制。

1.1. 子卷配额和配额组

每个子卷都可以设置相应的大小限制。一旦子卷大小达到限制配额将无法继续写入数据。该功能可用来代替配额,通过分配每个用户home一个子卷,并设置大小限制。

然而单独设置子卷配额是非常困难的,Btrfs支持配额组概念,可以通过创建一个配额组,并将多个子卷加入该组:该组中的所有子卷将会自动应用相同的配额限制。该功能命令是:

btrfs qgroup create/destroy assign/remove show/limit

1.2. 快照差别(或者说“send/receive”)

Btrfs可以计算两个快照间的区别,并在文件中存储其不同之处。该存储文件可以用在之后重建sent子卷/快照。send/receive的主要用处在于备份。

1.3. 跨子卷复制

Btrfs写时复制设计支持很多文件同时共享相同的底层数据,这使得不需要增倍使用空间就可以复制(使用 cp --reflink)文件或者路径。它有一个限制,尽管:不可以跨子卷进行复制,但这一限制现在已经没有了(但仍然不可以跨vfsmount复制文件,例如:文件系统上分开挂载的两个子卷)

2. 同时挂载到磁盘和内存

在便携式设备上,将休眠的镜像写入磁盘并挂起设备非常有用。如果电池用光了甚至丢失。计算机将会立刻关机,在重新启动后会从休眠镜像中恢复系统。否则会从内存中恢复,而休眠的镜像则会被忽略。

如果你希望将休眠镜像保存到swap并挂起到RAM,你可以使用“echo suspend > /sys/power/disk; echo disk > /sys/power/state”命令

3. 对SMBv2协议的支持

cifs网络文件系统增加了对SMB协议第二版的支持。SMB2协议是流行的CIFS和SMB网络文件共享协议的继承者,并且在2006年引入Vista后,一直是Windows操作系统的本体文件分享原理。SMB2的实现最终会给用户带来更好的性能、安全和更多的特性。

4. TCP Fast Open(客户端)

“Fast Open”是建立TCP链接的最优选择,相比于一般TCP会话能够减少一个RTT(round time trip),在访问流行网站时可以提速4%-41%。但这一版本仅加入了客户端的TFO支持。

5. Bufferbloat fight:TCP small queues

TCP small queues是另一个减少网络拥堵的机制,它的目标在于减少xmit queues (qdisc & device queues)中TCP包的数量,来减少RTT和cwnd bias,以此解决部分网络拥堵情况。我们可以在不降低名义带宽的情况下,减少每一个批量发送者的缓冲区:每Gbit< 1ms (相比于50ms with TSO)以及每100Mbit < 8ms (相比于132 ms)

6. 基于NFS/NBD的安全交换

Linux Terminal Server项目推荐使用Network Block Device(NBD)交换,在其手册上还有在某些地方。如何通过NBD设置交换的指南。即使如此,频繁使用NBD交换的机器还是会在几分钟内死锁。该版本允许使用NBD交换,但也增加了对通过NFS交换的支持。

7. ext4:更好的配额支持

ext4增加了对配额的支持,并视其为一类元素,这也就是说,不再是一单独的可见文在文件系统目录层,配额文件将会作为文件系统元数据存储在隐藏的索引节点中,将可以直接有e2fsprogs管理,配额哦将在文件系统被挂载的瞬间自动应用。而repquota程序则不会首先启动,除非实现了一个QUOTASCAN_OPEN接口。详细信息:https://ext4.wiki.kernel.org/index.php/Design_For_1st_Class_Quota_in_Ext4

8. PCIe D3cold电源状态支持

新版本增加了对PCI Express运行时D3cold电源状态的支持。D3cold是PCIe设备最底层省电模式。

9. VFIO:userspace driver裸机安全访问设备

VFIO驱动是一个IOMMU/设备不可知框架,在一个受IOMMU保护的安全的环境中向向userspace直接暴露设备访问。换句话说,它保证了安全的、无特权的userspace driver。为什么Linux需要它?虚拟机经常为了最高I/O性能使用直接设备访问(“设备分配”)。从设备和主机透视图来看,它只是简单地将虚拟机转变成一个用户驱动,因此能够显著降低延迟、更高的带宽、并可以直接使用裸机驱动。某些应用,特别是在高性能计算领域,也能从低开销、命名空间直接设备访问中收益,例如:网络适配器(通常基于非TCP/IP)和计算加速器。

详细更新可以查看Linux Kernel官网

### Python 中创建虚拟环境的方法 #### 使用 Poetry 创建虚拟环境 Poetry 是一种现代工具,用于管理和打包 Python 项目。通过 `poetry init` 初始化新项目时,可以选择跳过不确定部分并稍后编辑 `pyproject.toml` 文件来调整配置[^1]。 当设置参数 `virtualenvs.create=true` 后,在执行 `poetry install` 或者 `poetry add` 的时候,如果没有现成的虚拟环境,则会自动生成一个新的虚拟环境。对于同时安装有多个 Python 版本的情况,默认情况下 Poetry 倾向于选用 Python 2 来构建新的虚拟环境;不过可以通过命令 `poetry env use pythonX.X` 显式指明要采用哪个版本作为基础解释器(X.X代表具体的次要版本号)。 为了激活由 Poetry 构建出来的虚拟环境,通常不需要额外操作因为这一步骤会被自动化处理好。但是有时候也需要手动切换到特定环境中去工作,这时可以利用 `poetry shell` 进入交互模式或是简单地调用 `source $(poetry env info -p)/bin/activate` (适用于 Unix/Linux/MacOS) 完成激活过程。 ```bash # 设置 poetry 配置项以启用自动创建虚拟环境功能 poetry config virtualenvs.create true # 指定使用 Python 解释器版本(例如 Python 3.8) poetry env use python3.8 # 手动进入诗歌管理下的某个具体项目的虚拟环境中 poetry shell ``` #### 使用 VirtualEnv 工具创建虚拟环境 VirtualEnv 提供了一种轻量级的方式来进行隔离化的开发测试。在 Ubuntu 上面,用户能够借助如下指令快速建立起基于 Python 3.x 的专属空间: ```bash mkvirtualenv -p python3 my_env_name ``` 这里 `-p python3` 参数用来声明所期望的基础镜像为 Python 3.x 系列中的某一个小版本实例化而成的新副本,并赋予其独一无二的名字以便日后识别与管理方便起见[^2]。 一旦完成了上述步骤之后,便可通过简单的 `deactivate` 和 `workon my_env_name` 分别实现退出当前活动状态以及重新加载之前定义好的上下文环境的功能特性。 #### 使用 Conda 创建虚拟环境 Conda 不仅是一个包管理系统而且还是跨平台环境下优秀的解决方案之一。它允许开发者们轻松地建立多套相互之间互不影响的工作区,只需一条简洁易懂的语句即可完成整个流程: ```bash conda create --name environment_name python=3.6 ``` 这条命令将会依据给定名称和指定的主要语言级别构造出一个全新的容器结构体,其中包含了所有必要的组件和支持库文件集合[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值