2014년 4월 30일 수요일

[Linux Kernel] 52주차(2014.04.26) 후기

10차 ARM 리눅스 커널 스터디 52주차(2014.04.26) 후기입니다.
일시 : 2014.04.26 (52주차)
모임명 : NAVER개발자커뮤니티지원_IAMROOT.ORG_10차ARM-C
장소 : 토즈 타워점
장소지원 : NAVER 개발자 커뮤니티 지원 프로그램
참여인원 : 5명
스터디 진도 :
  • start_kernel()-> mm_init()->kmem_cache_init() 분석중

스터디관련 내용

start_kernel()->mm_init()->kmem_cache_init()

create_boot_cache()

void __init create_boot_cache(struct kmem_cache *s, const char *name, size_t size, unsigned long flags)                                                      
    {
    int err;

    // s->name: boot_kmem_cache_node.name: NULL
    s->name = name;
    // s->name: boot_kmem_cache_node.name: "kmem_cache_node"

    // s->size: boot_kmem_cache_node.size: 0
    // s->object_size: boot_kmem_cache_node.object_size: 0
    s->size = s->object_size = size;
    // s->size: boot_kmem_cache_node.size: 44
    // s->object_size: boot_kmem_cache_node.object_size: 44

    // flags: SLAB_HWCACHE_ALIGN: 0x00002000UL, ARCH_KMALLOC_MINALIGN: 64, size: 44
    // s->align: boot_kmem_cache_node.align: 0
    s->align = calculate_alignment(flags, ARCH_KMALLOC_MINALIGN, size);
    // s->align: boot_kmem_cache_node.align: 64

    // s: &boot_kmem_cache_node, flags: SLAB_HWCACHE_ALIGN: 0x00002000UL
    err = __kmem_cache_create(s, flags);

    if (err)
            panic("Creation of kmalloc slab %s size=%zu failed. Reason %d\n", name, size, err);
    s->refcount = -1;       /* Exempt from merging for now */
    }

kmem_cache_open()

  • if(!kmem_cache_has_cpu_partial(s))
    • kmem_cache_open()
      • // s: &boot_kmem_cache_node, kmem_cache_debug(&boot_kmem_cache_node): 0
      • return !kmem_cache_debug(s);
      • return 0
  • init_kmem_cache_nodes(s)
    • if(slab_state == DOWN) {
      • early_kmem_cache_node_alloc(node)
        • page = new_slab(kmem_cache_node, GFP_NOWAIT, node);

define GFP_NOWAIT (GFP_ATOMIC & ~__GFP_HIGH)

  • GFP_ATOMIC :
    • __GFP_HIGH : 0x20u
    • GFP_NOWAIT : 0x0
    • attbibute((bitwise))”로 검색한 결과 중 하나를 따라가다 보니
      다음과 같은 내용들을 알 수 있었습니다.
       리눅스 소스에 ~linux/Documentations/sparse.txt라는 파일이 있습니다.
        문서 제목은 "Using sparse for typechecking"입니다.
        sparse는 "semantic parser"에서 따온 이름으로, 그 패키지 안에 들어있는
        sparse라는 이름의 프로그램은 static analyzer라고 합니다.
      
      sparse.txt 문서의 내용처럼, 커널 소스에서 “make C=1”이나 “make C=2”라고
      명령을 주면 C 소스 파일에 대해 sparse 프로그램을 실행합니다.
      그 때 “CHECKFLAGS=-DCHECKER -DCHECK_ENDIAN“ 옵션을 함께 주면
      소스 코드에서 “attribute((bitwise))”가 활성화 된 상태로 sparse
      프로그램이 이를 분석하게 됩니다. 그래서 “attribute((bitwise))”
      속성이 일치하지 않는 변수 할당 등을 발견하면 다음과 같은 식의 메시지를 출력합니다.
        validation/foul-bitwise.c:9:9: warning: restricted degrades to integer
        validation/foul-bitwise.c:9:15: warning: restricted degrades to integer
        validation/foul-bitwise.c:19:9: error: incompatible types for operation (-)
        validation/foul-bitwise.c:19:9: argument has type restricted unsigned short [usertype] a
      
      리눅스가 sparse를 작성하기 시작한 건 소스 내에서 사용자 메모리 공간에 대한 포인터와
      커널 메모리 공간에 대한 포인터가 섞여 쓰이는 문제를 해결하기 위해서였다고 합니다.
      컴파일러로는 탐지하기 힘든 코딩 상의 오류이죠. ~linux/include/linux/compiler.h에
      그 내용이 들어가 있습니다. 그리고 이후 그걸 확장해서 엔디안 검사까지 하도록 확장된
      듯 합니다.
  • int alloc_flags = ALLOC_WMARK_LOW|ALLOC_CPUSET;
    • ALLOC_WMARK_LOW : 1
    • ALLOC_CPUSET : 0x40u
    • struct mem_cgroup *memcg = NULL;
    • 이것을 선언하는 것이 .c에서 선언을 하는 이유는?
        memcontrol.h에서 선언을 하였지만, .c에서 정의한 것을 사용할 수는 있겠지만
        *포인터로 선언되어 문제가 되지 알을것이다. 
      
  • gfp_mask &= gfp_allowed_mask;
    • gfp_mask : 0x201200
    • gfp_allowd_mask : 0x1ffff2f
    • 0x201200
  • lockdep_trace_alloc(gfp_mask);
    • lockdep_trace_alloc(g) do { } while (0)
      • null function
  • might_sleep_if(gfp_mask & __GFP_WAIT);
    • gfp_mask : 0x201200
    • __GFP_WAIT : 0x10u
    • 0
  • if (should_fail_alloc_page(gfp_mask, order)) return NULL;
    • return false;
  • if (unlikely(!zonelist->_zonerefs->zone)) return NULL;
    • !zonelist->_zonerefs->zone
    • (&contig_page_data)->node_zonelists->_zonerefs->zone
  • if (!memcg_kmem_newpage_charge(gfp_mask, &memcg, order))
    • gfp_mask: 0x201200, memcg : NULL, order : 0
    • return true
    • ! true : 0
  • cpuset_mems_cookie = get_mems_allowed();
    • return 0
    • cpuset_mems_cookie : 0
    • first_zones_zonelist(zonelist, high_zoneidx,
      nodemask ? : &cpuset_current_mems_allowed,
      &preferred_zone);
    • zonelist : (&contig_page_data)->node_zonelists
    • N_MEMORY : N_HIGH_MEMORY : 3
    • node_state[N_MEMORY]
    • N_MEMORY : 3
    • N_HIGH_MEMORY : 3
    • node_state[N_HIGH_MEMORY] : node_state[3]
    • next_zones_zonelist()
    • while (zonelist_zone_idx(z) > highest_zoneidx ||
      (z->zone && !zref_in_nodemask(z, nodes)))
    • return contig_page_data->node_zonelists->_zonerefs[1]
  • perferred_zone: (&congit_page_data->node_zonelists->_zonerefs[1]
    • page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, nodemask, order, zonelist, high_zoneidx, alloc_flags, preferred_zone, migratetype);
    • gfp_mask: 0x201200
    • __GFP_HARDWALL: 0x20000
    • nodemask : NULL
    • zonelist : contig_page_data->noze_zonelists->_zonerefs[1]
    • preffered_zone : (&contig_page_data)->node_zonelists
    • migratetype : 0

GFP_KERNEL 에 대하여

GFP_KERNEL가 GFP_USER보다 priority가 높다는 것은, GFP_KERNEL option으로 호출하면, kmalloc의 메모리가 부족하면 메모리가 확보될때가지 계속 시도하지만,
GFP_USER option로 호출하면, 메모리 부족하면 fail로 끝난다고 합니다.

GFP_ATOMIC

it means roughly “make the allocation operation atomic”. This means that the kernel will try to find the memory using a pile of free memory set aside for urgent allocation. If that pile doesn’t have enough free pages, the operation will fail. This flag is useful for allocation within interrupt handlers.

GFP_KERNEL

it will try a little harder to find memory. There’s a
possibility that the call to kmalloc() will sleep while the kernel is trying to find memory (thus making it unsuitable for interrupt handlers). It’s much more rare for an allocation with GFP_KERNEL to fail than with GFP_ATOMIC.
In all cases, kmalloc() should only be used allocating small amounts of memory (a few kb). vmalloc() is better for larger amounts.
Also note that in lab 1 and lab 2, it would have been arguably better to use GFP_KERNEL instead of GFP_ATOMIC. GFP_ATOMIC should be saved for those instances in which a sleep would be totally unacceptable.

싸이월드 사진 백업을 받는 프로그램

그 외

  • 스터디 시작 1년을 맞아서 조촐한 저녁 축하 파티를 했습니다.
  • 가족과 함께 즐거운 시간을 보내고 다음 주(5월 10일)에 소스 분석을 계속합니다.
  • Ubutu 14.04 LTS가 kernel 3.13.0을 사용합니다. LTS는 2019년까지 서비스를 계속할 예정이므로 가능하다다면 LTS 커널이 좋다는 의견이었습니다. 하지만 지금까지 한 공부한 것이 많아서, 각자 연휴기간동안 저희 커널 3.11에서 3.13으로 옴겨서 분석할 수 있을지 각자가 고민해 보기로 하였습니다.

스터디 로그

3278ad9..9ce507a master -> origin/master
Updating 3278ad9..9ce507a
Fast-forward
include/linux/cpuset.h | 5 +
include/linux/gfp.h | 107 +++

include/linux/kernel.h | 1 +
include/linux/lockdep.h | 1 +
include/linux/memcontrol.h | 3 +-
include/linux/mmzone.h | 15 +++
include/linux/nodemask.h | 14 +-
include/linux/numa.h | 2 +
include/linux/types.h | 1 +
include/uapi/linux/types.h | 1 +
mm/internal.h | 4 
mm/memcontrol.c | 1 +
mm/mmzone.c | 8 ++

mm/page_alloc.c | 53 +++—-
mm/slab.h | 2 +
mm/slab_common.c | 1 +
mm/slub.c | 45 ++-
17 files changed, 254 insertions(+), 10 deletions(-)

2014년 4월 24일 목요일

[번역] OpenStack 2014.1 (Icehouse) 릴리즈 노트

전반적인 업그레이드 참고 사항

  • bug 1294246 을 피하기 위해 Windows 패키지 작성자는 pbr 0.8을 사용해야합니다.
  • log-config 옵션은 log-config-append로 변경되어 기존에 했던 기존의 설정을 완전히 덮어 쓰지 않고, 지정된 설정 만 추가 할 수 있습니다 ( https:/ / bugs.launchpad.net / oslo / + bug/1169328 ,https://bugs.launchpad.net/oslo/+bug/1238349).
  • 중단 시간을 최소화하기 위해, OpenStack Compute를 업그레이드하기 전에 OpenStack Networking을 업그레이드하고 neutron-metadata-agent를 다시 시작해야합니다. Compute는 neutron-metadata-agent 서비스로 이번 제공하는 X-Tenant-ID를 확인할 수 있어야합니다 (https://bugs.launchpad.net/neutron/+bug/1235450).

OpenStack Object Storage (Swift)

새로운 주요 기능

  • 기능 감지 기능 : Swift 프록시 서버는 기본적으로 요청에 응답하게했습니다 (비활성화할 수도 있습니다). 요청에 대한 응답은 클러스터 정보가 포함하며 클라이언트는 클러스터가 어떤 기능을 지원하는지 판단할 수 있습니다. 이렇게하면 하나의 클라이언트가 여러 Swift 클러스터와 통신을하며, 요청한 기능을 지원하는 기능이라면 Swift 클러스터를 사용할 수 있습니다.
  • 시스템 메타 데이터 보존 방법 : Swift는 계정 및 컨테이너의 시스템 수준 메타 데이터를 지원하게되었습니다. 시스템 메타 데이터는 코어 Swift 서버를 통해 사용자 정의 메타 데이터를 검토하지 않고 안전하고 안전한 형태로 관련 Swift 자원의 내부 사용자 정의 메타 데이터를 저장할 수 있습니다. 이 새로운 게이트 키퍼 미들웨어가 클라이언트에서 전송 또는 요청 된 데이터로부터 시스템 메타 데이터의 누수를 방지합니다.
  • 계정 수준 ACL 및 ACL 형식 v2 : 계정에 ACL 또는 다른 형식의 계정 레벨 액세스 제어 권한 헤더를 가지게되었습니다. 이 헤더의 값은 인증 시스템에서 해석 할 수있는 JSON 형식입니다. 구현 참조는 TempAuth 의해 제공되고 있습니다. 다음 문서를 참조하십시오.http://swift.openstack.org/overview_auth.html
  • 개체 복제 ssync (rsync 대체) : Swift 스토리지 노드는 복제 통신에 rsync 대신 Swift 프리미티브를 사용할 수있게되었습니다.
  • 읽기 실패시 자동 재시작 : 개체 서버의 읽기 소스 시간 초과시 지정된 범위에서 다른 서버를 시도 할 수있게되었습니다. 이렇게하면 클라이언트 요청의 실패를 최종 사용자에게 숨길 수 있습니다.
  • 향후 스토리지 정책을위한 노력

알려진 문제

현재는 없습니다.

업그레이드시주의 사항

업그레이드에 영향을주는 설정의 변경 내용은
https://github.com/openstack/swift/blob/master/CHANGELOG 의 전체 변경 이력 정보를 읽어주세요. 종래대로, Swift는 다운 타임없이 업그레이드 할 수 있습니다.

OpenStack Compute (Nova)

새로운 주요 기능

업그레이드 지원

  • 제한된 라이브 업그레이드 (역주 : 실행 중인 소프트웨어 버전 업)에 대응했습니다. 이것은 클라우드 구축자가 Compute 업그레이드 실시를위한 클라우드 전체의 정지없이 먼저 제어 기반을 업그레이드 한 다음 개별 컴퓨팅 노드를 업그레이드할 수 있습니다.

Compute 드라이버

Hyper-V

  • RDP (역주 : Windows 원격 데스크톱) 콘솔에 대응

Libvirt (KVM)

  • Libvirt 드라이버는 현재 Compute 인스턴스 시작을위한 주문을 받아서 만들어진 커널 명령 행 옵션을 제공 할 수있게되었습니다. 커널 명령 행 옵션은 Glance에 저장된 이미지 메타 데이터의 os_command_line 키가 제공되어 있으면, 거기에서 가져옵니다. 제공되지 않으면 기본 커널 명령 행 옵션이 사용됩니다.
  • Libvirt 드라이버는 현재 인스턴스에 대한 블록 장치 액세스를 제공하기 위해, VirtIO Block (virtio-blk) 대신 VirtIO SCSI (virtio-scsi)를 사용할 수있게되었습니다. VirtIO SCSI는 VirtIO Block의 향후 후계로서 향상된 확장 성 및 성능을 제공하도록 디자인 된 반 가상화 SCSI 컨트롤러 장치입니다.
  • Libvirt 드라이버는 현재 엔트로피 증가를 제공하기 위해, Compute 인스턴스에 VirtIO RNG 장치 추가에 대응했습니다. Virtio RNG는 반 가상화 난수 생성기입니다. 이것은 컴퓨팅 인스턴스의 엔트로피 풀을 충족하기 위해 컴퓨팅 노드가 컴퓨팅 인스턴스에 대해 엔트로피를 제공 할 수 있도록합니다. 사용되는 기본 엔트로피 장치는 / dev / random하지만 호스트에 연결된 하드웨어 RNG 장치의 사용도 가능합니다. Virtio RNG 장치의 사용은 인스턴스 생성에 사용 된 이미지의 메타 데이터의 hw_rng 속성 사용에 적용됩니다.
  • Libvirt 드라이버는 현재 기본 비디오 드라이버 (cirros) 이외의 비디오 드라이버를 사용하도록 인스턴스에 구성 할 수 있습니다. 이것은 다른 비디오 드라이버 모델 다른 양의 비디오 RAM 다른 모니터 수를 지정할 수 있도록합니다. 이러한 값은 이미지 메타 데이터의 hw_video_model, hw_video_vram, hw_video_head 속성은 설정할 수 있습니다. 현재 지원되는 비디오 드라이버 모델은 vga, cirrus, vmvga, xen, qxl입니다.
  • Libvirt 드라이버 왓치 독 지원이 추가되었습니다. 사용되는 왓치 독 장치는 i6300esb입니다. 이것은 이미지 속성의 hw_watchdog_action 속성 또는 맛의 확장 사양 (extra_specs)을 disabled 이외의 값으로 설정하여 사용할 수 있습니다. 해당 hw_watchdog_action 속성 값 (인스턴스 실패 이벤트의 취할 수있는 왓치 독 장치 동작을 의미한다)는 poweroff, reset, pause, none입니다.
  • High Precision Event Timer (HPET)은 이번 Libvirt 드라이버 사용시 생성 된 인스턴스에서는 비활성화되도록합니다. 이 옵션 사용 Windows 게스트에서 고부하시에 시계가 어긋나는 문제가 발각 된 것입니다.
  • Libvirt 드라이버는 현재 높은 신뢰성을 위해 인스턴스를 실행하는 Neutron 이벤트 수신에 대응했습니다. 이것은 이러한 이벤트 전송에 해당하는 비교적 새로운 Neutron가 필요하며 네트워크 준비를 기대하는 인스턴스와 필요한 실제의 통신 경로 사이의 충돌을 피할 수 있습니다.

VMware

  • VMware Compute 드라이버는 현재 가상 머신의 Diagnostics (진단) 통화에 대응했습니다. Diagnostics는 “nova diagnostics INSTANCE”(INSTANCE 인스턴스 이름이나 인스턴스 ID로 대체) 명령을 사용하여 얻을 수 있습니다.
  • VMware Compute 드라이버는 현재 ISO 이미지에서 인스턴스 부팅을 지원했습니다.
  • VMware Compute 드라이버는 현재 캐시 된 이미지의 노화에 대응했습니다.

XenServer

  • 모든 XenServer 전용 설정 항목은 명칭이 변경되고 nova.conf의 [xenserver 섹션으로 이동되었습니다. 오래된 항목 이름은이 릴리스에서 이전 작동하지만 이전 항목 이름은 이번 폐지 예정입니다, Nova의 향후 릴리스에서 이러한 대응이 삭제 될 예정입니다.
  • PCI passthrough 에 대한 지원이 처음 추가되었습니다.
  • XenServer CI 도입을 통해 그룹 B 상태가 유지되었습니다.
  • 여러 임시 디스크의 이주 및 크기 조정 을 포함한 임시 디스크 지원이 개선되었습니다.
  • vcpu_pin_set 에 대응했습니다 (Dom0 용 CPU 리소스를 고정 할 때 필수).
  • 수많은 성능 및 안정성 향상이 이루어졌다.

API

  • Compute API V3에서 OS-DCF : diskConfig API 속성이 지원되지 않습니다.
  • Compute API는 현재 XML과 JSON 포맷 모두 지원하지만 XML 포맷 지원은 폐지 예정이며, 이후 릴리스에서 제거 될 예정입니다.
  • Compute API는 현재 폐지 된 컴퓨팅 노드를 영구적으로 제거하는기구를 공개했습니다. 이전에 nova-compute 서비스가 비활성화되고 시스템이 다시 설치된 경우에도 nova-compute 서비스가 목록에 남아있었습니다. 이 기능은 ExtendedServicesDelete API 확장으로 볼 수 있습니다.
  • V3 API의 admin_action 플러그인을 여러 플러그인으로 분할했습니다. 이를 통해 운영자는 현재 admin_action 플러그인이 제공하는 기능의 하위 집합을 활성화 할 수 있습니다.
  • Compute 서비스는 현재 OpenStack Networking (Neutron)에서 인증시 세입자 이름 대신 테넌트 ID를 사용하게되었습니다. 이 개혁은 중복 세입자 이름을 허용하는 OpenStack Identity API v3에 지원합니다.
  • Compute API는 이번 하이퍼 바이저의 IP 주소를 공개하게되었습니다. 관리자는 nova hypervisor-show 명령을 사용하여 IP 주소를 얻을 수 있습니다.

스케줄러

  • 스케줄러는 이번 첫 캐시 스케줄러 드라이버 구현을 포함합니다. 캐시 스케줄러는 스케줄러 필터와 가중치를 적용하는 기존 기능을 사용하지만 사용 가능한 호스트 목록을 캐시합니다. 사용자의 요구가 캐시 스케줄러에 도착하면 캐시 스케줄러는 캐시 된 호스트 목록을 기반으로 일정 실행을 시도하기 때문에 눈에 보이지 스케줄러 성능이 향상됩니다.
  • 새로운 스케줄러 필터 AggregateImagePropertiesIsolation이 도입되었습니다. 이 새로운 필터는 네임 스페이스의 이미지 속성과 호스트 집계 속성의 일치를 기반으로 인스턴스를 호스트에 예약합니다. 모든 호스트 집계에 속하지 않는 호스트는 모든 이미지 기반의 인스턴스에 대한 유효한 스케줄링 대상으로 남아 있습니다. 어떤 이미지 속성을 필터로 계산되는지를 명시하기 위해 새로운 Compute 서비스 설정 키 aggregate_image_properties_isolation_namespace, aggregate_image_properties_isolation_separator가 사용됩니다.
  • OpenStack Compute 체중 평준화 : 다음을 참조하십시오.
    • https://review.openstack.org/ # / c/27160 / 웨이트가 평준화되었습니다. 이렇게하면 값을 계수로 돌릴 필요가 없어졌습니다. 웨이터가 노드에 두는 가중치의 최대 값은 1.0, 최소값은 0.0입니다.
  • 스케줄러는 현재 서버 그룹을 지원합니다. 다음 옵션이 지원됩니다 : anti-affinity, affinity 필터. 이것은 미리 정의 된 정책에 따라 전개 된 서버가 예약됩니다.

다른 기능

  • 알림 (Notification)은 이번 키 쌍의 생성 · 삭제에 있어서도 생성되었습니다.
  • 통지는 이번 Compute 호스트 활성화, 비활성화, 전원 ON, 종료, 다시 시작, 유지 관리 모드 돌입 · 해제시에도 생성되었습니다.
  • Compute 서비스는 이번 서비스 종료를 요청한 때 이미 처리중인 요청이 서비스 중지 전에 완전하게 처리할 수​​ 있도록 새 요청 처리를 비활성화, 그레이스 풀을 종료할 수 있습니다. .
  • Compute 서비스는 이전 deleted로 표시된 인스턴스가 실행중인 것을 발견했을 때 취해야 할 동작을 running_deleted_instance_action 설정 키를 정의 할 수 있습니다. 새로운 shutdown 값이 추가되었습니다. 이 새로운 값은 관리자가 런타임 리소스 해제 중에 진단이 상태에서 발견 된 인스턴스를 선택적으로 유지할 수 있도록합니다.
  • OpenStack Compute에서 파일 포함 기능은 이번 기본적으로 비활성화되었습니다. 시작할 때 게스트 OS를 사용자 지정하기 위해 파일 포함 기능 대신 ConfigDrive 및 메타 데이터 서버 기능의 사용이 추천되고 있습니다. 파일 포함 기능을 활성화하려면 / etc / nova / nova.conf의 inject_key, inject_partition 설정 항목을 수정하고 nova-compute 서비스를 다시 시작하십시오. 파일 포함 기능은 이후 릴리스에서 제거될 수 있습니다.
  • 파일의 모든 설정 그룹이 보시 이름을 제대로 사용하기 위해 / etc / nova / nova.conf 설정 파일의 형식이 많이 변경되었습니다. 다수의 드라이버 고유 플래그 (Libvirt 드라이버 포함)는 고유의 옵션 그룹으로 이동되었습니다.

알려진 문제

  • OpenStack Compute는 다른 프로젝트보다 새로운 API 버전을 사용하는 몇 가지 기능이 있습니다 만, Icehouse에서 테스트 된 API 버전은 다음과 같습니다.
    • Keystone v2
    • Cinder v1
    • Glance v1

업그레이드시주의 사항

  • 스케줄러와 웨이트의 평준화 ( https://review.openstack.org/ # / c/27160 / ) : 이전 릴리스에서는 Compute와 Cells 스케줄러는 원시 비중 (= 웨이터가 반환 값으로 가중치를 처리 프로세스에 의해 사용되는)을 사용했습니다.
    • Compute 대한 여러 웨이터를 사용하는 경우 :
      여러 웨이터를 사용하는 경우 (이전 릴리스에서는 Nova는 compute 용 웨이터를 하나 공개했습니다) 큰 원시 값을 반환 다른 웨이터에 중요한 웨이터를 우선시키기 위해 계수를 인위적으로 늘리는 것이 가능합니다. 웨이터를 확인하고 이번 1 호스트 당 체중의 최대치 · 최소치가 항상 1.0과 0.0가되도록 양을 조절해야합니다.
    • 셀을 사용하는 경우 :
      • nova.cells.weights.mute_child.MuteChild : 웨이터는 잠시 용량을 업데이트하지 않은 자식 셀에 할당 된 웨이트로 mute_weight_value 값을 반환합니다. 이것은 여전히 사용할 수 있지만, (값이 1.0이되므로) 가중치를 취급 과정을 통해 최종 웨이트가 계산 될 때 효과가없는 것입니다. 자식 셀을 비활성화하기 위해 웨이터를 사용하는 경우 mute_weight_multiplier을 조정해야합니다.
      • nova.cells.weights.weight_offset.WeightOffsetWeigher 새로운 설정 옵션 offset_weight_multiplier을 도입했습니다. 이 새 옵션을 조정해야합니다. 이전 릴리스에서는 웨이터는 체중을 취급 과정에서 각 셀에 대해 오프셋을 설정 된 값을 반환했습니다. 이들 중 우승자가 여전히 동일 동안 우승자는 가중치 1.0를 얻습니다. 어떤 다른 웨이터에 대해서도이 우승자를 전진하기 위해이 웨이터를 사용하여이 값을 신용하는 경우,이 계수를 적절하게 조정해야합니다.
  • 초기 Docker Compute 드라이버는 Havana 릴리스에 포함되어있었습니다. 이 드라이버는 Nova에서 자신의 저장소로 옮겨졌습니다. 새로운 위치는http://git.openstack.org/cgit/stackforge/nova-docker 입니다.
  • https://review.openstack.org/50668 - compute_api_class 설정 옵션은 삭제되었습니다.
  • https://review.openstack.org/ # / c/54290 / - 다음의 폐지 예정의 옵션 별칭은 새 이름을 사용하는 방향으로 삭제되었습니다.
    • service_quantum_metadata_proxy
    • quantum_metadata_proxy_shared_secret
    • use_quantum_default_nets
    • quantum_default_tenant_id
    • vpn_instance_type
    • default_instance_type
    • quantum_url
    • quantum_url_timeout
    • quantum_admin_username
    • quantum_admin_password
    • quantum_admin_tenant_name
    • quantum_region_name
    • quantum_admin_auth_url
    • quantum_api_insecure
    • quantum_auth_strategy
    • quantum_ovs_bridge
    • quantum_extension_sync_interval
    • vmwareapi_host_ip
    • vmwareapi_host_username
    • vmwareapi_host_password
    • vmwareapi_cluster_name
    • vmwareapi_task_poll_interval
    • vmwareapi_api_retry_count
    • vnc_port
    • vnc_port_total
    • use_linked_clone
    • vmwareapi_vlan_interface
    • vmwareapi_wsdl_loc
  • PowerVM 드라이버가 삭제되었습니다 : https://review.openstack.org/ # / c/57774 /
  • nova.conf의 keystone_authtoken의 기본값은 변경되었습니다 :https://review.openstack.org/ # / c/62815 /
    libvirt lvm 이름은 instance_name_template에서 인스턴스의 UUID로 변경되었습니다 ( https://review.openstack.org/ # / c/76968). 기본값이 아닌 instance_name_template을 사용하는 경우 설명서의 클린업이 필요할 수 있습니다.
  • rbd 디스크 이름은 instance_name_template에서 인스턴스의 UUID로 변경되었습니다. 변경 후 이전 가상 디스크의 수동 제거가 필요합니다 (TBD 리뷰)
  • Icehouse는 요구 사항에 따라 libguestfs을 도입했습니다. 현재 Havana를 실행중인 시스템에서 Icehouse 설치 의존성은 Havana 노드가 libguestfs 사용의 시작과 그로 인한 예기치 못한 장애의 원인이 될 수 있습니다. Nova의 패키지들을 최신 버전으로 업데이트하면 시스템에서 패키지 업그레이드를 시작하기 전에 Havana 노드에서 libvirt_inject_partition = -2를 설정하는 것을 권장합니다.
  • 개인 플레이버 만들기는 이번 자동 세입자에 대한 액세스를 추가하게되었습니다. 이것은 Havana에서 문서화 된 행동이지만, Havana 이전의 실제 Nova의 구현은 세입자가 자동​​으로 개인 플레이버에 대한 액세스가 추가되지 않았습니다.
  • Nova는 종래 nova.conf.sample를 포함했습니다. 이 파일은 자동으로 생성되어있었습니다 만, 이번에 직접 포함하지 않습니다. Nova를 포장 할 때 샘플 설정 파일을 포함하려면 etc / nova / README.nova.conf을보고 패키지를 만들 때 파일을 생성하는 방법을 확인하십시오.
  • Nova는 현재 libvirt 이용이 시작할 때 Neutron에서 이벤트를 요청하는 것이 기본이되었습니다. Neutron 전에 Nova를 업그레이드하는 경우 vif_plugging_is_fatal = False와 vif_plugging_timeout = 0을 설정하여 Neutron가 그 기능을 지원 때까지 Nova에서 해당 기능을 비활성화해야합니다. 권장 순서는 Nova (이 기능을 비활성화) Neutron (알림 활성화), vif_plugging_timeout 기본값으로 vif_plugging_is_fatal = True를 활성화 순서입니다.
  • Nova는 Icehouse에서 compute 노드의 결정적인 라이브 업그레이드 모델에 대응했습니다. 이렇게하려면 upgrade_levels] / compute = icehouse-compat를 설정하여 우선 제어 기초 (nova-coimpute 아닌 전체) 업그레이드합니다. 이것은 Icehouse 제어 서비스에 Havana의 compute 서비스와 대화 할 수 있도록합니다. 개별 compute 노드 업그레이드이 후 정상적으로 수행 할 수 있습니다. 모든 compute가 업그레이드되면 compute 버전 옵션을 기본값으로 복원하여 제어 서비스를 다시 시작하십시오.
  • 다음의 설정 옵션은 본 릴리스에서 중지 될 예정입니다했습니다. nova.conf.sample를 참조하여 이러한 대체 옵션을 확인하십시오. [GROUP] / option
    • [DEFAULT] / rabbit_durable_queues
    • [rpc_notifier2] / topics
    • [DEFAULT] / log_config
    • [DEFAULT] / logfile
    • [DEFAULT] / logdir
    • [DEFAULT] / base_dir_name
    • [DEFAULT] / instance_type_extra_specs
    • [DEFAULT] / db_backend
    • [DEFAULT] / sql_connection
    • [DATABASE] / sql_connection
    • [sql] / connection
    • [DEFAULT] / sql_idle_timeout
    • [DATABASE] / sql_idle_timeout
    • [sql] / idle_timeout
    • [DEFAULT] / sql_min_pool_size
    • [DATABASE] / sql_min_pool_size
    • [DEFAULT] / sql_max_pool_size
    • [DATABASE] / sql_max_pool_size
    • [DEFAULT] / sql_max_retries
    • [DATABASE] / sql_max_retries
    • [DEFAULT] / sql_retry_interval
    • [DATABASE] / reconnect_interval
    • [DEFAULT] / sql_max_overflow
    • [DATABASE] / sqlalchemy_max_overflow
    • [DEFAULT] / sql_connection_debug
    • [DEFAULT] / sql_connection_trace
    • [DATABASE] / sqlalchemy_pool_timeout
    • [DEFAULT] / memcache_servers
    • [DEFAULT] / libvirt_type
    • [DEFAULT] / libvirt_uri
    • [DEFAULT] / libvirt_inject_password
    • [DEFAULT] / libvirt_inject_key
    • [DEFAULT] / libvirt_inject_partition
    • [DEFAULT] / libvirt_vif_driver
    • [DEFAULT] / libvirt_volume_drivers
    • [DEFAULT] / libvirt_disk_prefix
    • [DEFAULT] / libvirt_wait_soft_reboot_seconds
    • [DEFAULT] / libvirt_cpu_mode
    • [DEFAULT] / libvirt_cpu_model
    • [DEFAULT] / libvirt_snapshots_directory
    • [DEFAULT] / libvirt_images_type
    • [DEFAULT] / libvirt_images_volume_group
    • [DEFAULT] / libvirt_sparse_logical_volumes
    • [DEFAULT] / libvirt_images_rbd_pool
    • [DEFAULT] / libvirt_images_rbd_ceph_conf
    • [DEFAULT] / libvirt_snapshot_compression
    • [DEFAULT] / libvirt_use_virtio_for_bridges
    • [DEFAULT] / libvirt_iscsi_use_multipath
    • [DEFAULT] / libvirt_iser_use_multipath
    • [DEFAULT] / matchmaker_ringfile
    • [DEFAULT] / agent_timeout
    • [DEFAULT] / agent_version_timeout
    • [DEFAULT] / agent_resetnetwork_timeout
    • [DEFAULT] / xenapi_agent_path
    • [DEFAULT] / xenapi_disable_agent
    • [DEFAULT] / xenapi_use_agent_default
    • [DEFAULT] / xenapi_login_timeout
    • [DEFAULT] / xenapi_connection_concurrent
    • [DEFAULT] / xenapi_connection_url
    • [DEFAULT] / xenapi_connection_username
    • [DEFAULT] / xenapi_connection_password
    • [DEFAULT] / xenapi_vhd_coalesce_poll_interval
    • [DEFAULT] / xenapi_check_host
    • [DEFAULT] / xenapi_vhd_coalesce_max_attempts
    • [DEFAULT] / xenapi_sr_base_path
    • [DEFAULT] / target_host
    • [DEFAULT] / target_port
    • [DEFAULT] / iqn_prefix
    • [DEFAULT] / xenapi_remap_vbd_dev
    • [DEFAULT] / xenapi_remap_vbd_dev_prefix
    • [DEFAULT] / xenapi_torrent_base_url
    • [DEFAULT] / xenapi_torrent_seed_chance
    • [DEFAULT] / xenapi_torrent_seed_duration
    • [DEFAULT] / xenapi_torrent_max_last_accessed
    • [DEFAULT] / xenapi_torrent_listen_port_start
    • [DEFAULT] / xenapi_torrent_listen_port_end
    • [DEFAULT] / xenapi_torrent_download_stall_cutoff
    • [DEFAULT] / xenapi_torrent_max_seeder_processes_per_host
    • [DEFAULT] / use_join_force
    • [DEFAULT] / xenapi_ovs_integration_bridge
    • [DEFAULT] / cache_images
    • [DEFAULT] / xenapi_image_compression_level
    • [DEFAULT] / default_os_type
    • [DEFAULT] / block_device_creation_timeout
    • [DEFAULT] / max_kernel_ramdisk_size
    • [DEFAULT] / sr_matching_filter
    • [DEFAULT] / xenapi_sparse_copy
    • [DEFAULT] / xenapi_num_vbd_unplug_retries
    • [DEFAULT] / xenapi_torrent_images
    • [DEFAULT] / xenapi_ipxe_network_name
    • [DEFAULT] / xenapi_ipxe_boot_menu_url
    • [DEFAULT] / xenapi_ipxe_mkisofs_cmd
    • [DEFAULT] / xenapi_running_timeout
    • [DEFAULT] / xenapi_vif_driver
    • [DEFAULT] / xenapi_image_upload_handler

OpenStack Image Service (Glance)

새로운 주요 기능

알려진 문제

  • 없습니다.

업그레이드시 주의 사항

Glance는 oslo.messaging를 사용하여 자신의 포스트 코드를 리플 레이스했습니다. notification_driver + transport_url 조합의 사용이 권장됩니다. 이전 설정 notifier_strategy는 폐지 예정이지만, 아직 작동합니다.

OpenStack Dashboard (Horizon)

새로운 주요 기능

지원 언어

I18nTeam 의 협력에 의해 Horizon는 다음의 언어를 지원했습니다. 힌두어, 독일어, 세르비아어 호주 영어, 영국 영어, 독일어, 프랑스어, 일본어, 한국어, 폴란드어, 포르투갈어, 중국어 간체 및 번체 중국어, 스페인어, 러시아어로 번역 업데이트 되었습니다.

Nova

  • 라이브 마이그레이션 지원
  • HyperV 콘솔 지원
  • 디스크 구성 지원
  • 호스트 어 그리 게이션 및 가용성 영역 관리 지원 개선
  • 플레이버 확장 스펙 설정 지원

cinder

  • Cinder 표시 역할 기반 액세스 지원
  • v2 API 지원
  • 볼륨 확장 지원

Neutron

  • 라우터 규칙 지원 - neutron에서 라우터 규칙을 표시합니다.

Swift

  • 공용 컨테이너를 만들고 그 컨테이너에 대한 링크 제공 지원
  • 의사 디렉토리의 명시적 생성 지원

Heat

  • 기존 스택 업데이트하는 기능
  • 템플릿 검증
  • 환경 파일 추가 지원

Ceilometer

  • 관리자는 전체 서비스 프로젝트 당 일일 사용량 보고서를 볼 수 있습니다.

사용자 경험의 향상

  • 탐색 확장성 강화
    • 대시 보드 및 패널의 기본 탐색이 업데이트 된 탭 네비게이션 대신 아코디언 네비게이션을 구현했습니다. 페이지 탐색 대시 보드 및 패널 그룹의 확장 및 축소 할 수 있습니다. 이렇게 변경하면 더 많은 대시 보드를 추가 할 수 있도록 됐고 대시 보드 패널의 증가에 대응합니다.
  • 마법사
    • Horizo​​n에서는 여러 단계의 상호 의존 작업을 완료하는 마법사 컨트롤이 제공되도록합니다. 이 기능은 네트워크 설정 작업에 이용되고 있습니다.
  • 테이블의 인라인 편집
    • 테이블의 필드의 편집을 지원하도록 테이블을 작성하는 것이 가능 해져, 다른 양식을 열 필요가 감소되었습니다. 관리 대시 보드 프로젝트 패널이 첫 번째 예제입니다.
  • 셀프 서비스 암호 변경
    • Identity API v3 (Keystone)의 확장 기능을 활용하여 사용자는 관리자의 개입없이 자신의 암호를 변경할 수있게했습니다. 이 기능은 이전에 Identity API v2.0에서만 사용할 수 있습니다.
  • 서버 쪽 테이블 필터링
    • 테이블을 쉽게 배선 할 수 단순히 선택 페이지 검색을 실행하는 것이 아니라 사용자가 선택한 조건에 따라 기본이 되는 API 호출에서 결과를 필터링할 수 있습니다.

프레임 워크

  • JavaScript
    • 사용자 환경 개선책으로 AngularJS이 주요 JavaScrip 프레임 워크로 Horizo​​n에 채용되었습니다. JavaScript는 Horizo​​n 인터페이스를 실행하는 브라우저 필요 조건이 되었습니다. Juno보다 더 향상할 수 있습니다.
      • Horizo​​n에서 사용하는 재사용 가능한 차트 추가
      • Jasmine 테스트 라이브러리의 통합
  • Django 1.6을 완벽하게 지원
  • 플러그인 아키텍처
    • Horizo​​n는 대시 보드 패널 그룹 및 패널의 동적 로딩 / 해제를 지원하게되었습니다. 활성화 된 디렉토리에 그냥 파일을 추가하는 것만으로, Horizo​​n에로드되는 항목의 선택을 변경할 수 있습니다. Django 설정 파일을 편집 할 필요가 없어졌습니다.
  • 통합 테스트 프레임 워크
    Horizo​​n은 실행중인 devstack 시스템에 대한 통합 테스트 실행을 지원 되었습니다. 테스트는 제한이 있습니다만, 이것은 매우 중요한 진전입니다.

알려진 문제

  • Identity API v3의 멀티 도메인 지원을 사용하는 경우 사용자는 기본 도메인 이외의 도메인의 자원을 관리 할 수​​ 없습니다.

업그레이드시 주의 사항

  • JavaScript를 지원하는 브라우저의 이용이 전제되었습니다.
“ can_set_password “의 기본값이 False되었습니다. 명시 적으로 True로 설정하지 않으면 인스턴스 시작 화면에서는 인스턴스의 “관리자 암호 (Admin password)”의 설정 항목이 표시되지 않습니다. 모든 하이퍼 바이저가이 기능을 지원하는 것은 아니고, 이것은 사용자에게 혼란 것입니다. 또한 현재는 암호를 가져 오는 더 안전한 방법을 제공합니다 ( LP # 1291006 참조).
“ can_set_mountpoint “의 기본값이 False되었습니다.대시 보드에서 볼륨 탑재 지점의 설정 항목을 추가하려면 구성 파일에서 True로 설정해야합니다. 현재 Xen 하이퍼 바이저 만이 기능을 지원합니다 ( LP # 1255136 참조).

OpenStack Identity (Keystone)

새로운 주요 기능

  • 새로운 v3 API 기능
    • / v3/OS-FEDERATION / 하여 Keystong는 여러 인증 공급자에 Shibboleth 를 통해 협회 인증 할 수있게 연계 특성을 OpenStack 그룹 기반 역할 할당에 매핑할 수 있습니다 ( documentation 참조) .
    • POST / v3/users / {user_id} / password 는 API의 사용자가 자신의 암호를 업데이트 할 수 있습니다 ( documentation 참조).
    • GET v3/auth/token? nocatalog 는 API의 사용자는 온라인 토큰 검증 실행시 서비스 카탈로그 수신 수신 거부를 할 수 있습니다 ( documentation 참조).
    • / v3/regions 여러 지역의 배포 기술에 대한 공용 인터페이스를 제공합니다 ( documentation 참조).
    • / v3/OS-SIMPLECERT / 는 이번 PKI 토큰 검증에 사용되는 인증서를 발급합니다 ( documentation 참조).
    • / v3/OS-TRUST/trusts 는 이번 trusts 의 remaining_uses 특성을 통해 제한된 서비스의 위탁 (delegation)을 제공하게되었습니다.
  • 할당 백엔드 (유효 데이터 소스)은 이번에 신원 백엔드 (인증 데이터 소스)에서 완전히 분리되었습니다.이것은 예를 들면 당신의 전개 신원 데이터를 LDAP에두고 허용 데이터를 SQL에 넣을 수있게 된 것입니다.
  • 토큰 KVS 드라이버는 현재 Redis, Cassandra, MongoDB와 같은 영구 키 값 저장소에 쓰기를 지원했습니다.
  • Keystone 드라이버 인터페이스는 이번 릴리스 간 커스텀 드라이버 구현의 호환성 추적이 쉽게되도록 Abstract Base Classes (ABC)로 구현되었습니다.
  • Keystone의 기본 etc / policy.json 는 읽기 쉬운 형식으로 작성됐다.
  • Notifications 는 이번 역할, 그룹 트러스트의 생성 · 갱신 · 삭제 이벤트의 응답으로 발행되게되었습니다.
  • 사용자 지정 확장 또는 드라이버 구현은 이번 “disable”이벤트 (이것은 “update”이벤트의 일부로 만 외부에 노출되는)을 포함한 내부 전용 이벤트 알림을받을 수있게되었습니다.
  • Keystone은 인증 이벤트의 응답으로 Cloud Audit Data Federation (CADF) 이벤트 통지를 발행하게되었습니다.
  • 추가 플러그인 은 단일 도메인 대 다중 도메인 배포를 존중하고 REMOTE_USER 를 통해 외부의 인증을 다루기 위하여 제공됩니다.
  • policy.json 는 이번 예 % (target. {entity} domain_id) s 를 사용하여 도메인 지향 작업에서 대상 도메인에 적용 할 수있게되었습니다. 아카이먼트 백엔드에 대한 LDAP 드라이버는 현재 그룹 기반 역할 할당 작업에 대응했습니다.
  • Keystone은 이번 토큰 폐지 “목록”대응을 지속적으로 제공하는 것 외에 토큰 폐지 “이벤트”를 발행하게되었습니다. 토큰 폐지 이벤트 (토큰 폐지 목록과 비교하여) 오버 헤드가 최대한 작게되도록 설계되어 있으며, Juno 릴리스 개발 중에 Keystone 토큰 지속성을 제거 할 수 있습니다.
  • 배포자는 이번 API 응답에서 컬렉션의 모든 크기 제한을 정의 할 수 있습니다 (예를 들어, GET / v3/users 10,000 사용자가 아닌 100 사용자 만 응답하도록 설정할 수 있습니다). 클라이언트는 잘림 발생했음을 통지됩니다.
  • 요청 된 Accept-Language 헤더에 따라 응답을 번역하기 위해 지연 번역 할 수있었습니다.
  • Keystone은 이번 국제화 로그 메시지를 게시 할 수있었습니다.
  • 콜렉션들을 필터링하기는 이번 가능한 경우 성능 개선을 위해 드라이버 계층에서 실행되도록합니다.

알려진 문제

  • Bug 1291157 : OS-FEDERATION 확장 사용시 신원 공급자 또는 프로토콜을 삭제해도 이전 발행 된 토큰이 거부되지 않습니다. 이것은 stable / icehouse 지점에서 해결되지 않을 것입니다.
  • Bug 1308218 : GET / v2.0/tenants / {tenant_id} / users 의 응답에 중복 된 사용자 리소스가 반환 될 수 있습니다.

업그레이드시 주의 사항

  • v2 API는 폐지를위한 준비에 들어갔 습니다만, Icehouse 릴리스에서는 안정 버전으로 지원됩니다. Juno 릴리스에서 현재 지원 대기 v3 API 지원이 널리 이뤄지면 v2 API는 공식적으로 폐지 예정 될 수 있습니다.
  • keystone.middleware.auth_token 의 호환성은 삭제되었습니다. auth_token 미들웨어는 향후 Keystone에서 제공되지 않기 때문에 대신 keystoneclient.middleware.auth_token 를 가져와야합니다.
  • s3_token 미들웨어 모듈은 향후 Keystone에서 제공되지 않기 때문에 대신 keystoneclient.middleware.s3_token 를 가져와야합니다. keystone.middleware.s3_token 의 호환성은 Juno에서 제거 될 예정입니다.
  • 기본 토큰 기간은 24 시간에서 1 시간으로 감소되었습니다. 이렇게하면 언제든지 영구적으로 유지해야한다 토큰 수가 효과적으로 감소되며 (PKI 전개는) 토큰 삭제 목록의 오버 헤드가 감소됩니다.
  • keystone.contrib.access.core.AccessLogMiddleware 는 eventlet 디버깅 액세스 로그 또는 Apache httpd 액세스 로그 중 하나를 사용 방향에 폐지 예정되었습니다. K 릴리스 (역주 : Juno의 다음 릴리스)에서 제거 될 수 있습니다.
  • keystone.contrib.stats.core.StatsMiddleware 은 외부 도구를 사용하는 방향으로 폐지 예정되었습니다. K 릴리스에서 제거 될 수 있습니다.
  • keystone.middleware.XmlBodyMiddleware 는 “application / json”만 대응 방향에 폐지 예정되었습니다. K 릴리스에서 제거 될 수 있습니다.
  • v3 API 버전의 EC2 인증 시스템이 구현되었습니다. 이것을 사용하기 위해서는 keystone-paste.ini 에 다음 섹션이 필요합니다.
      [filter : ec2_extension_v3]
      paste.filter_factory = keystone.contrib.ec2 : Ec2ExtensionV3.factory
      ... 
    
  • 또한 ec2_extension_v3 는 keystone-paste.ini 의 [pipeline : api_v3] 섹션 중에 파이프 라인 변수를 추가해야합니다.
  • 샘플 policy.json , policy.v3cloudsample.json 에서 업데이트 된대로 새 v3 EC2 인증 CRUD 규칙을 제공하기 위해, etc / policy.json 이 업데이트되었습니다.
  • 이주 번호 38 ~ 40은 모든 역할 할당 데이터를 롤 참조 용 제 1 급 컬럼을 가진 하나의 통합 된 테이블로 이동합니다.
  • 새로운 설정 옵션 mutable_domain_id 도메인 수준의 관리 범위에 대한 보안을 강화하기 위해 기본적으로 false 로되어 있습니다. 그러면 Havana에서 당신이 사용하는 API 기능이 동작하지 않을지도 모릅니다. 만약 문제가 있다면, 값을 true 로 설정하고 꼭 Keystone 커뮤니티에 당신의 사례를 가르쳐주세요.
  • TODO : 이상적이지 않은 모든 기본값은 향후 변경 될 수 있습니다.
  • Keystone 이벤트 알림 발행 기능 oslo.messaging으로 마이그레이션하면 잠재적으로 Havana 설정 항목과 호환되지 않는 새로운 설정 옵션이 필요합니다.

OpenStack Network Service (Neutron)

새로운 주요 기능

Icehouse는 Neutron의 안정성과 테스트에 주력하고 기존의 많은 플러그인 및 드라이버의 성능이나 안정성 문제가 해결되었습니다.

새 드라이버 및 플러그인

  • IBM SDN-VE
  • Nuage
  • OneConvergence
  • OpenDaylight

새로드 밸런서 용 드라이버

  • Embrane
  • NetScaler
  • Radware

새 VPN 용 드라이버

  • Cisco CSR

알려진 문제

  • Nova의 새로운 콜백 기능을 이용할 때 nova_url URL로 버전을 포함해야합니다.                       (예) “ http://127.0.0.1:8774/v2 “
  • Icehouse 버전 Midonet 플러그인을 외부의 공개 저장소에서 관리되고 있습니다. 플러그인 https://github.com/midokura/neutron 에 있습니다. 자세한 정보는 Midokura에 문의하십시오 (info@midokura.com).
  • Advance Service 플러그인 (역주 : LBaaS, VPNaaS 같은 고급 네트워크 서비스)가 활성화되면 스키마 이주에서 설정에 따라 스키마가 성공적으로 업데이트되지 않을 수 있습니다. 따라서 실제 시스템을 마이그레이션하기 전에 데이터베이스의 복사본을 사용하여 마이그레이션 테스트하십시오. Neutron 팀은 차기 마이너 업데이트에서 본 문제에 구현할 예정입니다.

업그레이드시주의 사항

  • OVS 플러그인 및 Linux Bridge 플러그인은 사용되지 않습니다 때문에 사용하지 마십시오. OVS 및 Linux Bridge 플러그인은 ML2 플러그인에 통합 되었기 때문에, ML2 플러그인 하나로 지원됩니다. Havana보다 ML2 플러그인으로 변환하기위한 마이그레이션 스크립트 가 제공되어 있습니다. 마이그레이션 후 롤백 할 수 없기 때문에 실제 시스템에 수행하기 전에 데이터베이스의 복사본을 사용하여 테스트 할 것을 권장합니다.
  • Neutron 팀은 이전 Quantum 설정 파일 옵션을 다음 릴리스까지 연장 지원하고 있습니다. Icehouse가이 옵션을 지원하는 마지막 릴리스되기 때문에, Neutron 옵션으로 업데이트 할 것을 권장합니다.
  • API와의 상호 작용에 XML은 비추천입니다. 릴리스에서 XML은 폐지되므로 가능한 빨리 JSON으로 상호 작용으로 전환하십시오.

OpenStack Block Storage (Cinder)

새로운 주요 기능

  • 기존 볼륨 유형을 변경 가능 (retype)
  • Cinder 백업 오브젝트의 볼륨 메타 데이터 지원 추가.
  • 여러 API 작업자의 구현.
  • 할당량 삭제가 가능하게.
  • Cinder 백업 가져 오기 수출이 가능.
  • 볼륨 연결 · 분리시 자동 FC 존 지정을 할 Fiber Channel 영역 관리자가 추가되었습니다.
  • 볼륨 유형의 암호화 업데이트가 가능하게.
  • 연결 · 분리시 Ceilometer notifications한다.

새로운 백엔드 드라이버 및 플러그인

  • EMC VMAX / VNX SMI-S FC 드라이버
  • EMC VNX iSCSI 직접 드라이버
  • HP MSA 2040
  • IBM SONAS 및 Storwize V7000 Unified Storage Systems
  • NetApp ESeries

알려진 문제

  • 여러 서버 연결 실패 다시 연결하는 경우 항상 첫 번째 서버에 연결 (Bug : # 1261631)
  • Storwize / SVC 드라이버는 볼륨 복사본의 상태를 확인하면 충돌 (Bug : # 1304115)
  • Glance API v2가 지원되지 않음 (Bug : # 1308594)
  • Cinder v1을 사용하는 것이 권장됩니다. Nova는 아직 v2와 소통 할 수 없습니다.

업그레이드 참고

  • 강제 분리 API는 관리자 만 호출 할 수이 API 정책의 기본도 관리자 및 소유자는 않습니다.
  • Simple / Chance 스케줄러가 삭제되었습니다. 같은 기능을 사용하는 경우에는 대신 Filter 스케줄러를 사용해야, cinder.conf에 scheduler_driver = cinder.scheduler.filter_scheduler.FilterScheduler을 설정합니다.
  • hp3par_domain 옵션 Havana 게시했을 때 비공식적으로 삭제되었습니다. 이것은 아무것도하지 않습니다.

OpenStack Telemetry (Ceilometer)

새로운 주요 기능

  • API 추가
    • 쿼리 제약 조건의 미터, 샘플, 알람 항목의 임의의 복잡한 조합에 대한 대응
    • 스토리지 드라이버 고유의 기능을 찾기위한 능력 API
    • 통계의 선택적인 집계 새 카디널리티 함수와 표준 편차 함수
    • 계량기로부터 독립적 인 샘플에 직접 액세스
    • StackTach 형식의 이벤트 API
  • 알람 기능 개선
    • 시간 제약이있는 알람. 1 일 안에 시간과 요일에 따라 상한과 하한을 설정할 수 있습니다.
    • 샘플 수가 비정상적으로 적은 데이터 제외
    • 임계 값 기반 알람보다 적합한 디스크와 네트워크의 속도 기반 미터
  • 기본 터치 포인트
    • collector를 외부 통지를 발행하는 독립적 인 알림 에이전트에 분할
    • 플러그인 방식의 리소스 검색의 파이프 라인 설정을 재 설계
    • 원시 알림 페이로드 구성 가능한 지속성 ( StackTach 스타일)
  • 스토리지 드라이버
    • HBase, SQLAlchem​​y, DB2 드라이버 간의 기능 호환성을 거의 달성
    • 리소스 쿼리 최적화
    • HBase : 알람 기능 지원
  • 새로운 메트릭 정보원
    • SDN 컨트롤러의 Neutron 노스 바운드 API
    • VMware vCenter Server API
    • 베어 메탈 호스트에서 SNMP 데몬
    • OpenDaylight REST API

알려진 문제

업그레이드시주의 사항

  • 기존 collector 서비스는 업그레이드 후 마찬가지로 시작해야 새 알림 에이전트와 함께 작동하도록 확장되었습니다.
  • MongoDB 스토리지 드라이버는 이제 MongoDB 버전 2.4 이상 설치를 요구합니다 (Havana는 2.2이었습니다). 업그레이드 절차 를 참조하십시오.

OpenStack Orchestration (Heat)

새로운 주요 기능

  • HOT 템플릿 : HOT 템플릿 형식 이 Heat 템플릿을 편집 할 때 권장 형식으로 지원되게되었습니다.
  • OpenStack 리소스 : 다른 템플릿에서 기본 OpenStack 자원 에 이식하는 데 충분한 자원 유형을 사용할 수있게되었습니다.
  • 소프트웨어 구성 : 소프트웨어 구성을 다양한 방법과 도구를 사용하여 실행하기위한 새로운 API와 리소스가 추가되었습니다.
  • 관리자가 아닌 사용자 : 관리자 권한없이 임의의 스택을 시작할 수있게되었습니다. 스택의 도메인 사용자를 설정하여이 기능을 활성화 할 때 업그레이드시주의 사항을 참조하십시오. * 운영자 API : 클라우드 운영자가 전체 스택을 조작하기위한 전용 관리자 API가 제공됩니다.
  • 자원의 오토 스케일링 : OS : Heat :: AutoScalingGroup 및 OS : Heat :: ScalingPolicy 자원의 모든 컬렉션의 오토 스케일링을 가능하게합니다.
  • 알림 (Notifications) : 스택의 상태 변화 나 오토 스케일링 트리거 등의 이벤트가 발생할 때 Heat는 RPC 알림을 보낼 수있었습니다.
  • Heat engine 스케일링 : 오케스트레이션의 부하를 여러 heat-engine 인스턴스에 분산 할 수있게되었습니다. 자물쇠는 플러그인 구조의 분산 잠금 조정됩니다. 기본적으로 SQL 기반의 잠금 플러그인이 사용됩니다.
  • get_file를 이용한 파일 포함 : intrinsic Function get_file는 작성 · 갱신 작업의 스택 파일을 묻을 수 있도록하기 위해 python-heatclient와 Heat 사용합니다. 이것은 파일의 설정이나 분할 한 파일의 중첩 된 스택에 유용합니다.
  • Cloud-init 자원 : OS : Heat :: CloudConfig , OS : Heat :: MultipartMime
  • 스택의 abandon (포기)와 adopt (인수) : 스택의 abandon 수있게되었습니다. adandon는 실제 OpenStack 리소스를 삭제하지 않고 Heat에서 스택을 제거합니다. abandon 된 데이터는 스택의 adopt에서 사용할 수 있습니다. adopt는 이미 OpenStack 리소스를 사용하여 새 스택을 만듭니다. adopt 기능은 Icehouse 릴리스 Heat에서는 실험적인 기능이라고 생각합니다.
  • 스택 미리보기 : 스택 미리보기 작업을 사용하면 지정된 템플릿 스택을 만들면 생성 된 자원의 목록을 얻을 수 있습니다.
  • 새 자원 : 다음 자원이 릴리스에서 새로 구현되었습니다.
    • OS : Heat :: CloudConfig
    • OS : Heat :: MultipartMime
    • OS : Heat :: SoftwareConfig
    • OS : Heat :: SoftwareDeployment
    • OS : Heat :: StructuredConfig
    • OS : Heat :: StructuredDeployment
    • OS : Heat :: RandomString
    • OS : Heat :: ResourceGroup
    • OS : Heat :: AutoScalingGroup
    • OS : Heat :: ScalingPolicy
    • OS : Neutron :: SecurityGroup
    • OS : Neutron :: MeteringLabel
    • OS : Neutron :: MeteringRule
    • OS : Neutron :: ProviderNet
    • OS : Neutron :: NetworkGateway
    • OS : Neutron :: PoolMember
    • OS : Nova :: KeyPair
    • OS : Nova :: FloatingIP
    • OS : Nova :: FloatingIPAssociation
    • OS : Trove :: Instance

알려진 문제

  • stack-update 작업하는 중에 오류 (예 : 클라우드의 일시적인 오류, Heat 버그 사용자 템플릿의 오류로 인한 오류 등)가 발생하면 스택이 복구 불가능한 오류 상태가 될 가능성 수 있습니다. 현재 스택의 업데이트를 시도하는 스택을 삭제하고 다시 만들 오류로부터 복구가 가능한 경우에만 권장됩니다.
  • stack-adopt 작업은 실험적인 기능이라고 생각한다.
  • CFN API는 모든 오류에 대해 HTTP 상태 코드 500을 반환합니다 ( bug 1291079 ).
  • 볼륨 절단 충돌로 인해 볼륨 연결이 포함 된 스택의 삭제를 여러 번 시도해야하는 경우가 있습니다 ( bug 1298350 ).

업그레이드시 주의 사항

Heat 보안 모델 에 대한 일반적인 고려를 읽어보십시오.
아래의 지연 인증 방법 및 스택 도메인 사용자 섹션을 참조하십시오.

비추천된 리소스

다음 리소스는이 릴리스에서 사용되지 않습니다. 장래 삭제 될 수 있습니다.
  • OS : Neutron :: RouterGateway 더 이상 사용해서는 없습니다. 대신 OS : Neutron :: Router의 external_gateway_info 속성을 사용하십시오.

지연 인증 방법

기본 deferred_auth_method 이다 password 는 Icehouse는 비추천입니다. 따라서이 설정은 기본이지만, Heat을 배포하는 경우에는 deferred_auth_method = trusts 을 사용하도록 변경하는 것이 좋습니다. 이 설정이 Juno의 기본이 될 예정입니다. 이 모델은 다음과 같은 장점이 있습니다.
  • Heat의 데이터베이스에 사용자 인증 정보를 유지하는 것을 피할 수 있습니다.
  • 스택 만들 때 암호와 토큰을 지정할 필요가 없습니다.
  • 사용자 대신 Heat 서비스 사용자가 수행 할 수있는 작업을 제한 할 수 있습니다.
  • 지연 작업 trusts을 활성화하려면 Keystone 서비스 Heat가 OS-TRUST extension 을 사용하도록 설정되도록합니다.
  • / etc / heat / heat.conf 에서 deferred_auth_method = trusts 을 설정합니다.
  • (옵션) heat 서비스 사용자에게 위임 할 역할 ( heat.conf 의 trusts_delegated_roles )을 지정합니다 ( trusts_delegated_roles 의 기본값은 heat_stack_owner 에서 다음에서는이 값을 사용합니다. 자신의 사이트의 RBAC 정책에 맞는 역할 목록으로 변경 수 있습니다).
  • 위양하는 역할은 확실히 존재하게합니다. 예를 들어, keystone role-list 를 실행하면 heat_stack_owner 이 표시되는지 확인합니다.
    Heat 스택을 만드는 모든 사용자가 해당 스택을 만드는 프로젝트에서이 역할을 갖게합니다. 스택 소유자 (스택을 만든 사용자)와 heat 서비스 사용자 간의 trust 스택 만들 때 Heat 의해 작성된 스택이 존재하는 동안 계속 heat_stack_user 역할이 heat 서비스 사용자에게 위임됩니다.
    추가 정보는 이 블로그 게시물 을 읽어보십시오.

스택 도메인 사용자

관리자가 아닌 사용자가 특정 리소스를 만들 수 있도록하려면 배포시 수행해야 설정이 있습니다. keystone 도메인 및 도메인 관리자 사용자를 작성해야합니다. 작성하지 않은 경우, Heat는 이전 동작으로 다시 작동하지만이 동작은 Juno은 아니게 될 가능성이 있습니다.
$ OS_TOKEN 토큰을 나타냅니다. 예를 들어, 서비스 관리 토큰과 사용자 또는 도메인을 만들 수있는 역할을 가진 사용자의 유효한 토큰 등입니다. $ KEYSTONE_ENDPOINT_V3는 v3 keystone 끝점을 나타냅니다. 예를 들어, http:// : 5000/v3 (덧붙여 는 keystone 서비스의 IP 주소 또는 확인 가능한 호스트 이름)입니다.

순서 :

  • python-openstackclient를 사용하여 “heat”keystone 도메인을 만듭니다 (keystoneclient CLI 인터페이스는 도메인을 지원하지 않습니다)
      openstack - os-token $ OS_TOKEN - os-url = $ KEYSTONE_ENDPOINT_V3 - os-identity-api-version = 3 domain create heat - description "Owns users and projects created by heat"
    
이 명령은 도메인 ID를 반환합니다. 이 값은 아래에서 $ HEAT_DOMAIN_ID로 이동합니다.
  • “heat”도메인의 도메인 관리자 사용자를 만듭니다.
       openstack - os-token $ OS_TOKEN - os-url = $ KEYSTONE_ENDPOINT_V3 - os-identity-api-version = 3 user create - password $ PASSWORD - domain $ HEAT_DOMAIN_ID heat_domain_admin - description "Manages users and projects created by heat "
    
이 명령은 사용자 ID를 반환합니다.이 값은 아래에서 $ DOMAIN_ADMIN_ID로 이동합니다.
  • 도메인 관리자 역할을 추가하여 만든 사용자를 도메인 관리자에게합니다.
      openstack - os-token $ OS_TOKEN - os-url = $ KS_ENDPOINT_V3 - os-identity-api-version = 3 role add - user $ DOMAIN_ADMIN_ID - domain $ HEAT_DOMAIN_ID admin
    
  • heat.conf 만든 도메인 ID 및 도메인 관리자 사용자 이름 / 암호를 설정합니다.
      stack_domain_admin_password = <password>
      stack_domain_admin = heat_domain_admin
      stack_user_domain = <domain id returned from domain create above>
    
자세한 내용은 이 블로그 게시물 을 읽어보십시오.
link : http://hardysteven.blogspot.co.uk/2014/04/heat-auth-model-updates-part-2-stack.html

OpenStack Database service (Trove)

새로운 주요 기능

  • 사용자 / 스키마 관리
    • 사용자는 MySQL 사용자와 스키마 CRUD 작업을 Trove API를 통해 할 수 있습니다.
  • flavor / Cinder 볼륨 크기 조정
    • Trove 인스턴스를 규정하는 맛의 확장 / 축소가 가능합니다.
    • 데이터 저장소가 더 큰 볼륨이 필요한 경우 Cinder 볼륨 확장이 가능합니다.
  • 여러 데이터 저장소에 대한 대응
    • MySQL과 Percona의 모든 기능을 지원합니다.
    • MongoDB, Redis, Cassandra, Couchbase 실험적인 지원 (모든 기능은 아니다).
  • 설정 그룹
    • 설정 옵션들을 정의하고 새 인스턴스 나 기존 인스턴스에 적용 할 수 있습니다.
  • 백업 및 복원
    • 데이터 저장소에서 제공하는 백업 소프트웨어를 실행하고 출력을 Swift 컨테이너로 보냅니다.
  • 전체 및 차등 백업.
    • Designate에 따르면 DNS 지원 (옵션)
    • 인스턴스의 DNS 설정 여부를 지정하는 플래그가 있습니다.

알려진 문제

이제까지 없습니다.

업그레이드시 주의 사항

  • Trove Conductor 새로운 데몬에서 게스트 데이터 기반 통신을 프록시합니다. 이 서비스를 설치하고 실행해야합니다.
  • 새로운 데이터 저장소 기능을 사용하려면 운영자는 당신의 시스템에서 지원하고자하는 데이터 저장소를 정의하거나 제거해야합니다.
  • 새로운 기능인 설정 그룹으로, 운영자는 특정 데이터 저장소를위한 설정 옵션의 하위 집합을 정의 할 수 있습니다.

OpenStack Documentation

새로운 주요 요소

  • Operation Guide (운영 가이드)에 업그레이드 장 및 네트워크 문제 해결에 관한 절 을 추가했습니다.
  • 새 설명서 : 명령 줄 인터페이스 참조
  • 최종 사용자 가이드 에 Python SDK chapter 가 포함되게되었습니다.
  • 모든 API 참조 가없는 폰 시브 디자인으로 업데이트되었습니다. 참조는 PDF 파일로 다운로드 . 수 있습니다.
  • 4 개의 설치 가이드에서는 아키텍처 예 (OpenStack Networking (Neutron)를 포함하여) 업데이트 된 기본 설정 개선을 도모했습니다.각 배포판에서 테스트가 완전히 바뀌 었습니다.

이 문서에 대하여

이문서는 OpenStack Icehouse 릴리즈 노트를 우리말로 번역한 것입니다.