首页 文章 精选 留言 我的

精选列表

搜索[生命周期管理工具],共10003篇文章
优秀的个人博客,低调大师

[To be translated] Nova:libvirt image 的生命周期

翻译自:http://www.pixelbeat.org/docs/openstack_libvirt_images/ The main stages of a Virtual Machine disk image as it transfers through OpenStack to be booted under libvirt are: Initially the image is downloaded from glance and cached in libvirt base. We'll consider the options for handling a qcow2 image stored in glance, as that format can be downloaded quite efficiently from glance as it supports compression, and image sparseness can be maintained. This article will focus on the flow and transformations in "libvirt base", which is used to cache, preprocess and optionally back, VM disk images. Configuration First we'll summarize the config variables involved, before presenting the operations associated with each config combination, in each OpenStack release. Note I'm describing upstream OpenStack here, and not my employer'sRed Hat OpenStackwhich has back-ported enhancements between versions where appropriate. Config Default Release Description use_cow_images True Cactus Whether to useCoWimages for "libvirt instance disks" force_raw_images True Essex Allows disablingconvert to rawin "libvirt base" foroperational reasons libvirt_images_type 'default' Folsom Deprecates use_cow_images and allows selecting LVM libvirt images [libvirt]/images_type 'default' Icehouse Deprecates libvirt_images_type in the [DEFAULT] section preallocate_images 'none' Grizzly Instance disks preallocation mode. 'space' =>fallocateimages resize_fs_using_block_device False Havana Allows enabling of direct resize for qcow2 images The main reason that raw images are written in "libvirt base" by default (since Diablo), is to remove possible compression from the qcow2 image received from glance. Note compression in qcow2 images is read only, and so this will impact reads from unwritten portions of the qcow2 image. Users may want to change this option, depending on CPU resources and I/O bandwidth available. For example, systems with slower I/O or less space available, may want to trade the higher CPU requirements of compression, to minimize input bandwidth. Note raw images are used unconditionally with libvirt_images_type=lvm. Whether to use CoW images for the "libvirt instance disks" also depends on I/O characteristics of the user's system. Without CoW, more space will be used for common parts of the disk image, but on the flip side depending on the backing store and host caching, there may be better concurrency achieved by having each VM operate on its own copy. Enabling preallocation of space for the "libvirt instance disks" can help with both space guarantees and I/O performance. Even when not using CoW instance disks, the copy each VM gets is sparse and so the VM may fail unexpectedly at run time with ENOSPC. By running fallocate(1) on the instance disk images, we immediately and efficiently allocate the space for them in the file system (if supported). Also run time performance should be improved as the file system doesn't have to dynamically allocate blocks at run time, reducing CPU overhead and more importantly file fragmentation. Disk image operations For each release and config combination, here are the created files and associated operations in getting aqcow2image from glance through to being booted in a libvirt Virtual Machine. Folsom, force_raw_images=True, use_cow_images=True This results in each instance booting from a CoW image, backed by a resized raw image. Novacommand Source code Notes wget http://glance/$image -Obase_/$hex.part images.fetch qemu-img convert -O raw $hex.part $hex.converted images.fetch_to_raw Creates sparse file mv $hex.converted $hex;rm $hex.part images.fetch_to_raw imagebackend.create_image cp $hex $hex_$size libvirt.utils.copy_image Creates sparse file qemu-img resize $hex_$size $size disk.extend resize2fs $hex_size disk.extend Unpartitioned ext[234] qemu-img create -f qcow2 -o backing_file=...$instance_dir/disk libvirt.utils.create_image Folsom, force_raw_images=True, use_cow_images=False This results in each instance booting from a copy of a resized raw image. Novacommand Source code Notes wget http://glance/$image -Obase_/$hex.part images.fetch qemu-img convert -O raw $hex.part $hex.converted images.fetch_to_raw Creates sparse file mv $hex.converted $hex;rm $hex.part images.fetch_to_raw imagebackend.create_image cp $hex$instance_dir/disk libvirt.utils.copy_image qemu-img resize disk disk.extend resize2fs disk disk.extend Unpartitioned ext[234] Folsom, force_raw_images=False, use_cow_images=False This results in each instance booting from a copy of a resized qcow2 image. Novacommand Source code Notes wget http://glance/$image -Obase_/$hex.part images.fetch mv $hex.part $hex images.fetch_to_raw imagebackend.create_image cp $hex$instance_dir/disk libvirt.utils.copy_image qemu-img resize disk disk.extend resize2fs disk disk.extend Ignored for qcow2¹ Folsom, force_raw_images=False, use_cow_images=True This results in each instance booting from a CoW image, backed by a resized qcow2 image. Novacommand Source code Notes wget http://glance/$image -Obase_/$hex.part images.fetch mv $hex.part $hex images.fetch_to_raw imagebackend.create_image cp $hex $hex_$size libvirt.utils.copy_image qemu-img resize $hex_$size $size disk.extend resize2fs $hex_size disk.extend Ignored for qcow2¹ qemu-img create -f qcow2 -o backing_file=...$instance_dir/disk libvirt.utils.create_image Grizzly, force_raw_images=True, use_cow_images=True Grizzlyintroducesa change for use_cow_images=True, where it will resize in the $instance_dir rather than in base_. So the resize will not be cached, but this is minimal CPU tradeoff per instance boot, for the extra space saved in base_. We'll just present the default config values here which illustrates the only significant change from Folsom. This results in each instance booting from a resized CoW image, backed by a raw image. Novacommand Source code Notes wget http://glance/$image -Obase_/$hex.part images.fetch qemu-img convert -O raw $hex.part $hex.converted images.fetch_to_raw Creates sparse file mv $hex.converted $hex;rm $hex.part images.fetch_to_raw imagebackend.create_image qemu-img create -f qcow2 -o backing_file=...$instance_dir/disk libvirt.utils.create_image qemu-img resize disk $size disk.extend resize2fs disk disk.extend Grizzly always ignores² [²UpdateSep 2013: Stanislaw Pitucha also noticed that the above referenced Grizzly change introduced a regression where unpartitioned qcow2 images were no longer resized. See the Havanaresize_fs_using_block_deviceoption below for details.] Grizzly, preallocate_images='space' Grizzly also hasnew fallocate functionalityin this area controlled by thepreallocate_imagesconfig option. If that is set to 'space', then after the operations above, the $instance_dir/ images will befallocated to immediately determine if enough space is available, and to possibly improve VM I/O performance due to ongoing allocation avoidance, and better locality of block allocations. ¹ Havana, resize_fs_using_block_device=False As noted in the first Grizzly change above, Stanislaw Pitucha noticed that change introduced a regression where unpartitioned qcow2 images were no longer resized. He supplied afix to resize qcow directlyrather than relying on the raw image being available, which would also cater for the force_raw_images=False case that even pre Grizzly did not. This new option can be used to enable this support, but there are somelarge performance and possible security issuesso it's not enabled by default. This support will be available in the upcomingHavanarelease. General performance considerations Performance has improved in this area through each OpenStack release, with some of the main topics to consider, for past and future changes being: Minimize I/O Note these wereimplemented in Essex: Copy images, then resize, rather than vice versa Directly generating images in the $instance_dir/ Intelligent reading of sparse input Reproduction of sparse input on output Use compression Note this was implemented in Folsom: Avoid file sytem overhead by setting libvirt_images_type=lvm. Note file system overheadvaries depending on file system Minimize storage Use compression Use sparse output/generation Avoid resized copies when not needed Use CoW if appropriate Improve caching Avoid thrashing the page cache with large intermediate images Improve low level caching through better storage allocation Preprocessing Preprocessing may be possible on images likepreallocation=metadatawhich trades off initial CPU cost for possibly much better run time I/O performance Such cost would be some what alleviated by havingasynchronous populationof the base_ cache 本文转自SammyLiu博客园博客,原文链接:http://www.cnblogs.com/sammyliu/p/4427567.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android log 管理工具

1、logger 项目地址:https://github.com/orhanobut/logger 2、KLog 项目地址:https://github.com/ZhaoKaiQiang/KLog 博客介绍:http://kaizige.vip/2016/06/13/klog/ 3、自定义日志 上面两个日志框架使用起来很简单,功能很强大,但是有时我们不需要那么强大的功能,或者为了尽可能精简代码,压缩apk包的大小。那就使用下面一个自定义的日志管理类,只有一个类,小而巧。 package www.yiba.com.wifisdk.utils; import android.util.Log; /** * 日志工具类 使打印日志变得简单 自动识别调用日志函数的类名 方法名 与位置 不需要繁琐的TAG 可以方便的 设置debug模式 发布时候 * 可以直接修改debug为false 就不会输出日志了 */ public class LogUtil { /** * true:打开log false:关闭所有的日志 */ public static boolean OPEN_LOG = true; /** * true : 打开debug 日志 false:关闭debug日志 */ public static boolean DEBUG = true; /** * TAG 名称 */ private static String tag = "yiba_sdk"; private String mClassName; private static LogUtil log; private static final String USER_NAME = "@tool@"; private LogUtil(String name) { mClassName = name; } /** * Get The Current Function Name * * @return Name */ private String getFunctionName() { StackTraceElement[] sts = Thread.currentThread().getStackTrace(); if (sts == null) { return null; } for (StackTraceElement st : sts) { if (st.isNativeMethod()) { continue; } if (st.getClassName().equals(Thread.class.getName())) { continue; } if (st.getClassName().equals(this.getClass().getName())) { continue; } return mClassName + "[ " + Thread.currentThread().getName() + ": " + st.getFileName() + ":" + st.getLineNumber() + " " + st.getMethodName() + " ]"; } return null; } public static void i(Object str) { print(Log.INFO, str); } public static void d(Object str) { print(Log.DEBUG, str); } public static void v(Object str) { print(Log.VERBOSE, str); } public static void w(Object str) { print(Log.WARN, str); } public static void e(Object str) { print(Log.ERROR, str); } /** * 用于区分不同接口数据 打印传入参数 * * @param index * @param str */ private static void print(int index, Object str) { if (!OPEN_LOG) { return; } if (log == null) { log = new LogUtil(USER_NAME); } String name = log.getFunctionName(); if (name != null) { str = name + " - " + str; } // Close the debug log When DEBUG is false if (!DEBUG) { if (index <= Log.DEBUG) { return; } } switch (index) { case Log.VERBOSE: Log.v(tag, str.toString()); break; case Log.DEBUG: Log.d(tag, str.toString()); break; case Log.INFO: Log.i(tag, str.toString()); break; case Log.WARN: Log.w(tag, str.toString()); break; case Log.ERROR: Log.e(tag, str.toString()); break; default: break; } } }

优秀的个人博客,低调大师

Ubuntu 25.04 “Plucky Puffin” 已结束生命周期

Ubuntu 25.04 “Plucky Puffin” 已于 2026 年 1 月 15 日停止支持,Canonical 将不再为其提供软件和安全更新支持。 Ubuntu 25.04于 2025 年 4 月 17 日发布,由于它不是 Ubuntu LTS(长期支持)版本,因此仅获得 9 个月的支持,直至 2026 年 1 月。Ubuntu 25.04 采用 Linux 6.14 内核系列,并配备了 GNOME 48 “Bengaluru”桌面环境系列。 建议用户可升级到Ubuntu 25.10 “Questing Quokka”,该版本将继续获得六个月的支持,直至 2026 年 7 月。与 Ubuntu 25.04 相比,Ubuntu 25.10 版本附带了更多功能,Linux kernel6.17 和最新的 GNOME 49 “Denver”桌面环境。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册