계속 헷갈려서.. 한번 써봐야겠음




# 스토리지의 문제점 2가지

1. CPU나 Memory 속도를 따라가지 못해 병목현상 유발

2. 드라이브 고장 시 데이터 날림

=> "Fault Tolerance"를 높이고자 함


=> RAID로 해결

- Redundant Array of Inexpensive Disks

     or

- Redundant Array of Independent Disks (최근)



# DIsk Array 

: 여러 하드웨어 디스크를 배열로 하나 혹은 하나이상의 논리 드라이브로 구성


# RAID 구성 방법

- 하드웨어적 구성 : 레이드 구성을 위해서는 레이드 컨트롤러가 필요하고 레이드를 구성할 시 데이터 처리에 있어 부하가 걸리므로

                         별도의 어댑터 형태의 컨트롤러를 사용. 이런 레이드 컨트롤러에는 프로세서 및 메모리가 따로 있으며 가격이 비쌈.

                         어댑터 형태의 컨트롤러 외에도 메인보드에 내장되어 나오기도 하는데(SATA), 지원여부에 대한 사전확인이 필요.


- 소프트웨어적 구성 : 별도의 레이드 컨트롤러없이 소프트웨어적으로 레이드를 처리하여 안정성이 하드웨어적인 레이드 구성보다는 떨어짐

                             





# RAID 0

Striping, 데이터를 배열 드라이브에 분산시켜 저장

- 단순 round-robin 방식을 사용 (with out Fault Tolerance)

- 단순히 하나의 디스크로 보여지도록 만들어 줌


그림. 위키

- 최소 2개의 드라이브가 있어야지 적용이 가능

- 같은 모델, 같은 용량의 디스크 준수

- 데이터 분산방식으로 배열드라이브의 전체 용량이 하나로 통합

- 입출력 병렬처리로 인하여 속도 향상(RAID 구성 중 가장 빠른 속도)

- parity데이터를 저장하거나 미러링하지 않음. 즉 하나의 디스크에 문제가 발생하면 나머지 디스크에 저장된 데이터를 쓸 수 없음(복구 불가능)




# RAID 1

Mirroring&Duplexing, 한 디스크 드라이브에 저장된 데이터를 다른 배열 드라이브로 복제

- disk mirroring을 사용하여 데이터 데스크에 저장된 모든 데이터들을 pair를 이루고 있는, 반사 디스크 같은 위치에 복사

- 거의 완변한 Fault Tolerance를 제공하지만 가격이 높음

- 신뢰도가 높은 시스템에서 사용


그림. 위키

- 2n개씩 구성

- 두개의 디스크에 똑같은 데이터를 저장

- 일정한 수준의 데이터 중복을 허용

- 하나의 디스크 고장시 복제된 데이터로 복구가 가능

- 일반적으로 입출력 성능이 저하됨. 

- HDD 사용시, 데이터에 더 가까운 배열 드라이브 헤더가 더 빨리 데이터에 액세스하므로 탐색 및 회전대기 시간이 줄어듬

- 구성한 디스크 용량은 하나의 디스크 용량과 동일(중복이므로)




# RAID 2

: Each bit of data word is written to a data disk drive


- 비트단위 인터리빙 방식을 사용 : 데이터를 각 디스크에 비트 단위로 분산 저장

- Hamming code를 이용한 오류 검출 및 정정 방식을 사용

단점! 필요한 검사 디스크들의 수가 많아서 가격이 비쌈

주요 용도! 오류가 많이 발생하는 환경에서 사용


=> 현재 거의 사용하지 않음




# RAID 5

: Parity, Striping, 배열 드라이브에 패리티 데이터 저장하여 데이터의 손실여부를 점검 할 수 있도록하며 RAID 0처럼 Striping 지원

- RAID 4의 문제점을 보완하기 위해 패리티 블록을 라운드-로빈 방슥으로 분산 저장

=> 병목현상을 해소하고, 쓰기 동작들의 병렬수행이 가능

- but, small write problem : 어느 한 블록만 갱신하는 small write의 경우 네번의 디스크 액세스가 필요하기 때문에 성능 저하가 발생


그림. 위키

- 최소 3개의 드라이브 필요

- striping 기능으로 성능을 향상하며, 패리티데이터를 저장하여 RAID 1처럼 일정수준의 중복을 제공

- ahems eltmzmdp voflxl wjdqh wjwkd

- 디스크가 고장이나도 데이터 손실은 없음

- 다시 복구하는데 오래걸림. 일반적으로 작은 용량에 추천

- 3개의 1짜리 드리이브를 RAID 5로 구성시. 2만큼의 용량을 제공

- 가장 널리 사용됨


* RAID 1과 RAID 5의 비교

- RAID 1 : 읽기와 작은 쓰기가 많은 환경에 적합하고 데이터를 완벽하게 보관할 수 있음

- RAID 5 : 용량과 비용면에서 보다 우수하고, 응용이나 큰 쓰기가 필요한 시스템에 적합함(가격대비성능 굳)




# RAID 6

: 패리티데이터를 모든 디스크에 저장하며 2차 패리티데이터도 저장

- 두개의 패리티를 따로 다른 디스크에 저장

- 데이터를 디스크에 나누어 저장

- N개의 데이터 디스크와 2개의 패리티 디스크가 필요


- 데이터 가용성이 높음

: 데이터가 손실되려면 3개의 디스크가 동시에 불량이 있어야 함

: 쓰기 문제가 심각해 짐


- 2개의 디스크가 고장이나더라도 복구가 가능

- 성능이슈 및 사용가능한 디스크 공간이 그만큼 줄어듬




# RAID 3, 4

Parity, 패리티 데이터를 별도의 디스크에 따로 저장

 (하나의 데이터를 디스크 수대로 나누어 여러개의 디스크에 저장)

- 패리티비트 p = b1 XOR b2 XOR b3 XOR b4 (보통 짝수 패리티 사용)


- 최소 3개의 드라이브 필요

- RAID 3 : Byte 단위

- RAID 4 : Block 단위 (속도 장점)

- Parity Disk에 고장나면 복구가 불가능

- Disk 1,2,3 / Disk 4의 속도차이로 병목현상 발생의 가능성이 있음


=> 장점 : 병렬 데이터 read/write가 가능하여 디스크 액세스 속도 향상

단점 : write 동작 때마다 패리티 비트를 갱신할 필요가 있음

별도의 패리티 정보가 저장되어있는 패리티 디스크를 읽어야 하므로 여러번 액세스를 해야함

(원래 데이터 읽기, 원래 패리티 읽기, 새로운 데이터 쓰기, 새로운 패리티 쓰기) 

=> 디스크 수에 상관없이 한 블럭 갱신 시 네번의 디스크 액세스가 필요




# RAID DP(Double Parity)

: 1차, 2차 패리티데이터를 여러 드라이브에 분산으로 저장하지 않고, 2개의 드라이브에 패리티데이터를 저장



# RAID 10

: RAID 0, RAID 1 각각의 장점만 가지고 결합

- 4개의 드라이브 필요

- 2개씩 RAID 1로 구성(총 2개), mirroring이 되어 복구가 가능

- 2개의 RAID 1을 RAID 0으로 구성, RAID 1에 비하여 용량이 2배

- 용량 추가시에는 RAID 1을 더 추가

- RAID 1로 구성된 디스크가 고장나도 정상동작이 가능

- 용량은 줄지만 가용성이 높음




# RAID 0+1

: RAID 10과 반대, RAID 0으로 먼저 구성한 후 구성된 묶음들을 RAID 1 방식으로 mirroring 시킴

- Striping, Mirroring을 동시에 사용

- 속도와 안정성 

- mirroring의 이유로 RAID 10이 더 많이 쓰임





# 현재 테스트로 사용중이던 intel 서버에서 보드에서 RAID를 지원하지만 리눅스용 드라이버를 제공하지 않음.

그래서 BIOS에서 보드에서 지원하는 RAID 기능 부분을 disable 시키고 설치시 파티션 부분에서 software raid 0로 설정









'System > Etc.' 카테고리의 다른 글

[OS기초] CPU Scheduling  (0) 2015.09.22
[OS기초] Process & Thread  (0) 2015.09.21
[OS기초] 개요  (0) 2015.09.17
KVM/KSM  (0) 2015.08.13
마이크로커널운영체제  (0) 2015.06.25

[마이크로 커널 운영체제]


1. 마이크로커널 운영체제란?


# 마이크로프로세스의 수행모드

kernel mode <-> user mode

- kernel mode : OS의 모든 기능을 수행할 수 있음

- user mode : 대부분의 사용자 프로그램을 실행


멀티 프로세스를 지원하기 위함


# 운영체제의 2가지 종류

- 모노리틱 운영체제 : 모든 프로그램이 OS의 커널모드에서 수행되는 방식

os/360, Unix, VMS, MS-DOS, Linux, ...


- 마이크로커널 운영체제 : 운영체제의 최소 기능만 OS의 커널모드에서 수행되고 대부분의 기능이 user mode에서 수행되는 방식

Mach, Chorus, L4, Minix, ...


# Mechanism과 Policy의 분리

- Mechanism : 마이크로커널(커널모드)

  a. Thread Manager, 스레드 생성/종료

  b. IPC Manager ,  inter-process communication 여러 스레드, 프로세스 간 메시지 전달

  c. address space Manager : 주소공간을 생성 및 페이지 할당 등

  d. interrupt Manager : device는 policy를 사용하므로 micro kernel에 있지않고 user mode 쪽으로 존재. 이 드라이브를 micro kernel에 등록/호출 


- Policy : 서버프로그램들(유저모드)

  a. pager : 페이지폴트 처리

  b. device driver


그림 



b. 마이크로커널 운영체제의 변천사


- 1세대 : CMU에서 Mach OS 개발

개념이 너무 좋아서 많은 사람들이 굉장하였지만, 성능이 좋지않아 실망함 (사람들의 인식=>마이크로커널운영체제는 개념은 좋지만 성능은 별로)

- 2세대 : GMD의 Liedtke가 효율적인 IPC 구현 기술을 개발. 1세대 마이크로운영체제보다 수십배 빠른 마이크로운영체제를 만듬

굉장한 많은 복합적인 컴퓨터과학부분의 방법들을 적용을하여 Optimization 시킴

=> 성능향상 (개발자 왈 : 마크는 원래 개념도 좋고 성능도 좋다. 본디 최적회가 안되었을뿐)

- 3세대 :  수학의 logic과 프로그래밍언어의 sementics를 사용하여 formal verification 기술을 개발. (테스트가아닌 "증명"을 수행하여 신뢰할 수 있는 마이크로 커널을 만들게 됨)

=> 고 신뢰성을 보장. security, availability, reliability ...



2. 기본적인 특징 

: flexibility, safety, modularity


a. flexibility

: mechanism과 policy를 분리하여 유연한 운영체제를 구현. 모노리틱커널운영체제보다는 훨씬 쉽게 구현가능

- 하나의 microkernel 상에서 다수의 운영체제를 동시에 수행시킬 수 있음.

   ex. linux OS, windows OS

- 하나의 microkenel 상에서 다수의 정책을 쉽게 구현이 가능 ( 하나의 프로세스에 다수의 policy를 구현 )

   ex. 일반 paging, 멀티미디어용 paging을 동시에 적용 할 수 있음

- 어떤 file system 위에 다른 file system을 쉽게 구현 할 수 있음

   ex. stacked file system


b. safety 안전성

: microkernel과 server program이 분리되면서 microkernel 모듈이 굉장히 줄어들어 커널 자체가 가지는 안전성이 굉장히 높아짐.

: 대부분의 프로그램들이 server program에서 user mode로 수행이 되므로, OS의 한 부분에 문제가 생겨도 kernel이나 다른 서버에 문제가 생길 소지가 적어지게 됨(fault isolation)


c. modularity 모듈성

: 전체 OS가 작은 마이크로커널 + 다수의 서버프로그램으로 모듈화됨

:- os를 개발할 때 하나의 모듈을 개발 할 때 개발비용이 적어짐

- 모노리틱 커널에 비해 테스트가 용이

- 유지비수 비용이 낮아짐

- 운영체제를 재부팅하지 않고 file system 등 크리티컬한 프로그램도 쉽게 업데이트할 수 있음


3. 내부구조


# 마이크로커널 부분

a. thread manager

- thread_create, thread_exit

- thread scheduler : priority 기반의 round robin(scheduler는 policy가 있으므로 서버프로그램으로 구현하여야 하지만 성능의 문제로 아직은 micro kernel 내에 구현)

- data structure

: TCB(Thread Control Block), thread_id, thread_state, thread_quota, address_space(memory), kernel_stack(system call이 아예없지는 않기떄문인듯)


b. IPC(inter-process communication) Manager

: 시스템호출만 제공하여 두 스레드사이에 데이터를 주고받음


- synchronous IPC  : ipc_send, ip_resceive

- asynchronous notification: 데이터를 전달하는 개념보다는 어떤 이벤트가 발생했을 때, asynchronous하게 이벤트를 알려줌

  ipc_notify, ipc_getnotify, ipc_event 필요, 


* synchronous IPC + asynchronous notification

* 현재 microkernel에서는 synchronous IPC를 사용

why? microkernel 운영체제는 IPC 성능이 매우 중요

synchronous IPC를 제공하면서 많은 optimization을 적용할 수 있게됨

(synchronous IPC는 이미 많은 기술들이 발전했으므로 적용가능한 optimiza)


* asynchronous notification을 병행하는 이뉴? 마이크로커널의 성능을 높이기위해 

thread프로그래밍을 할 때 synchronous만 있는 경우는 너무 불편하므로 섞음


c. address space manager

- 모노리티커널의 메모리 관리자와는 완전 다름

- 최소한의 메커니즘만 제공

- as_create(address space create) : address space 생성

- as_map : 하나의 page 할당

- as_unmap : 할당받은 page 반환

- 사용하는 자료구조 

: AS, Address Space 구조제. AS구조체 내에 as_id와 page_table(물리주소) 필드를 사용

(* 실제 페이지를 바꾸는 처리나 page fault exception의 처리는 microkernel이 수행하지는 않고 "페이저"라는 서버프로그램이 담당)


d. interrupt manager


- system call : intr_register 새로운 디바이스 드라이버 등록, intr_unregister 등록된 디바이스 드라이버 해제

(device가 user mode에서 실행되는 서버프로그램이므로 인터럽트가 들어오면 어느 프로그램인지 알기위해 정보를 관리해야함)


- kernel interrupt handler : 인터럽트가 발생하면 실제 처리는 하지 않지만, 기본적으로 kernel로 올라오므로 등록된 디바이스 드라이버를 IPC로 호충

- 사용하는 자료구조

: IH, interrupt Handler 구조체. kernel_thread_id, device_driver_thread_id 등등

: Interrupt manager는 실제 처리는 안하고 인터럽트 종류와 처리할 프로세스간의 매핑 정보만 저장. 

ex) 인터럽트 5번은 인터럽트 스레드 50번에서 처리해

(-> Interrupt manager는 각 interrupt의 semantics를 알 지 못함, policy를 알지 않는다는 뜻)



# 서버프로그램부분

a. pager : page fault exception을 처리


- user_thread()에서 page fault가 발생하면, ipc_send(pager, faddr) 시스템 콜로 마이크로커널을 통해 pager_thread()에게 전달만 하게함

- pager_thread()에서 ip_receive(user, faddr)로 정보를 전달받음

- pager_thread()에서 kernel에게 as_map(faddr)시스템 콜을 통해 커널이 페이지매핑 요청만 하게함

- 다시 ipc_send(user, _)와 ipc_receive(pager, _)를 사용하여 마무리


b. device driver


- 인터럽이 발생하면 policy를 갖지않는 커널의 인터럽트 핸들러가 호출되어 인터럽트 처리는 하지 않고, irq 커널스레드를 통해서 처리해주는 thread와 맵핑. 실제 ipc 번호를 식별하여 인터럽트 처리 프로그램이 동작하게 됨.


# 결국, 마이크로커널운영체제에서는 모노리틱커널운영체제보다 ipc가 훨씬 많이 사용하게 된다.



4. 성능향상 기술


# 마이크로커널 운영체제에서 IPC

- 모노리틱커널운영체제 : function call

- 마이크로커널 운영체제 : IPC(IPC는 마이크로커널 운영체제에서 성능과 가장 많은 연관성을 가지고있음)

* 1세대의 microkernel은 IPC 성능을 향상시키지 못해 성능이 떨어졌다.

2세대의 microkernel은 IPC성능을 향상시키기위해 다양한 방법이 적용되었다.

현재의 microkernel은 모노리틱 커널과 거의 유사한 성능을 날 수 있음.


# IPC 성능향상 기술

a. Message Direct Transfer

: thread A에서 thread B로 IPC를 전달할 때, 주소공간이 다르므로 중간에 커널주소공간을 거쳐서 message가 복사된다. (2 copies)

-> 1 copy로 전환. Synchronous IPC와 temporary mapping을 사용. 


: 커널은 메시지 복사 전에 thread A의 주소공간 중 메시지가 있는 page를 thread B의 주소 공간에 임시매핑


- thread A의 message를 복사할 때,

- thread A의 message가 있는 page를 Thread B의 특별한 부분에 잠시 임시로 맵핑. 

- 커널이 그 사이 message를 copy

- 임시 매핑 해제


b. Short Message 사용

: 발생하는 수많은 IPC 중 50%-80%가 8bytes 이하의 짧은 메시지

: message를 메모리가아닌 register를 사용하여 zero message 기법으로 메시지 전달을 수행

(register는 어디에서나 접근이 가능하니까..)


c. Direct Process Switching

: thread A에서 thread B로 message전달 시, kernel의 스레드 스케줄러라는 또 다른 thread C가 수행되어 thread를 전환한 후 thread B가 수행됨

(thread A  ->  thread C(kernel의 스레드 스케줄러)  -> thread B)

=> 메시지 send/receive에서 성능저하가 나타남


: thread A에서 메시지 복사 후 스케줄러를 수행하지 않고(스케줄러를 무시하기), thread A의 남은 "time slice" 동안 IPC가 thread B로 컨트롤을 넘겨 thread B를 수행 후 다시 thread B가 thread A에게 메시지를 전달

(thread A  ->  thread B  -> thread A)



5. 마무리


최근에들어 보안의 중요성을 절실히 필요로하는 고신뢰성을 가지는 시스템을 구현하기에 마이크로 운영체제는 최적화되어있으며, 

many core(core가 1000~2000개) 시대가 도래할 것으로 예측되며, 이런 환경에서는 마이크로커널운영체제가 급 부상 할 수 있음




'System > Etc.' 카테고리의 다른 글

[OS기초] CPU Scheduling  (0) 2015.09.22
[OS기초] Process & Thread  (0) 2015.09.21
[OS기초] 개요  (0) 2015.09.17
KVM/KSM  (0) 2015.08.13
RAID  (0) 2015.08.12

tmpdump ipv4만 보이게 꼼수


[참고]

http://www.tcpdump.org/tcpdump_man.html

http://iat.chonnam.ac.kr/lecture/2003_Fall/Doc/TCPDUMP%20User%20Guide.htm


sysctl.conf에서 커널단에서 ipv6기능을 disabled

GRUB 설정 바꾸기 --> https://github.com/mininet/mininet/blob/master/util/install.sh








'System > Linux OS ' 카테고리의 다른 글

Btrfs/트리  (0) 2015.08.13
Linux LVM  (0) 2015.08.12
[Linux] 리눅스 모니터링  (0) 2015.04.22
[ubuntu] 디스크 늘리기(ESXi기반의 VM)  (0) 2015.04.21
[Linux]라우팅 테이블  (0) 2015.04.21

(참고 http://www.turby.net/42)




모니터링

1. CPU

2. Memory

3. Disk I/O

4. Network

 


# top

: CPU 점유 프로세스들을 실시간으로 조회


(1) 첫번쨰 줄 : 시스템의 전반적 상태. 가동시간, 평균사용량 등

(2) 두번째 줄 : 프로세스들의 상황

(3) 세번째 줄 : CPU 상황

(4) 네번째 줄 : Memory 상황

(5) 다섯번째 줄 : swap 메모리 상황

(6) ~ : 

 PID

USER

PR 

NI 

VIRT 

SHR 

%CPU 

%MEM 

TIME+ 

COMMAND 

 프로세스 ID

사용자 

priority 

NICE 값 

가상메모리 사용량 

(SWAP+RES)

 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합

 CPU 사용률

 메모리 사용률

 CPU TIME

 실행된 명령어


: 옵션

 키

설명 

 t

 요약 정보 표시

 m

 메모리 정보 표시

 A

 시스템 자원을 많이 소모하는 프로세스 정렬

 f

 top의 설정화면 표시

 o

 정렬 순서 정하기

 r

 renice 명령어 실행

 k

 kill 명령어 실행 

 z

 color/mono를 전환




# htop

: top보다 사용자 위주의 모니터링 도구


$ apt-get -y install htop

$ htop




# vmstat 

: 시스템 작업, 하드웨어 및 시스템 정보. 시스템의 리소스 상황(cpu, I/O, memory) 모니터링

procs

memory 

swap 

io

system 

cpu 

 

 r

 b

 swpd

 free

 buff 

 chache 

 si 

 so 

 bi 

 bo 

 in 

 cs 

 us 

 sy 

 id 

 wa  

 st  

 실행중인 프로세스 수(cpu 접근 대기 중인 프로세스 포함)

 인터럽트가 불가능한 sleep 상태에 있는 프로세스의 수

 사용하고 있는 swap 메모리 양

사용가능한 양 

버퍼로 사용되고있는 메모리량 

캐시로 사용되고 있는 메모리양 

swap in (디스크로 스왑되어 나간 메모리 용량) 

swap  out(디스크로 스왑되어 나간 메모리 용량)

 블럭디바이스로 보내는 초당 블럭 수

 블럭디바이스에서 나오는 초당 블럭 수

 초당 인터럽트되는 양
(이더넷패킷도 포함)

 초당 context switch되는 양

process가 cpu를 사용하는 사용하는 시간 - 유저프로세스

process가 cpu를 사용하는 사용하는 시간 - 시스템프로세스

CPU idle한 

 입출력대기 


$ vmstat

$ vmstat 3 

$ vmstat 3 2

$ vmstat -m

$ vmstat -a




# iostat

: 평균 CPU 부하 및 디스크 활동

$ apt-get install -y sysstat

$ iostat




# free



# w -

: 시스템에 로그인한 사용자와 프로세스 출력



# ps










'System > Linux OS ' 카테고리의 다른 글

Linux LVM  (0) 2015.08.12
[tip] tmpdump ipv4 ipv6 모드변경  (0) 2015.05.01
[ubuntu] 디스크 늘리기(ESXi기반의 VM)  (0) 2015.04.21
[Linux]라우팅 테이블  (0) 2015.04.21
[Linux] TUN/TAP  (0) 2015.04.21

2015. 04. 21 김영욱 에반젤리스트 한국마이크로소프트


[Windows 10 preview]



# 라즈베리2지원

# 1년동안 윈7이상인 경우 무상 업뎃가능(개인용만)


# windows 10

- Operating System보다는 platform!

- One Architecture : 바이너리단의 통합

- multi platform 지원

- 반응형 중시

- 유니버셜 지향





.... 졸았다...


# new API

# new Control

1. map

- 지도를 불러올 수 있음

- 업데이트 됨


2. Relative Panel

- 철저하게 상대좌표로 사용할 수 있음


3. App Services? 

: 두개의 앱이 통신하려면 백그라운드에서 서비스를 호출해서 앱사이를 연결하는 무언가가 생김

클라우드 단이 아닌 윈도 내부적으로 생김 

엔터프라이즈에서 사용할 만한 기능

"Think 'Web Services on device'"

- 시나리오 : 바코드를 스캔한다. 바코드 컨트롤이 데이터를 읽고 백그라운드에서 바코드를 디코딩하는 앱서비스를 만들어 동작하고 앱은 가볍게 동작!

- 엔터프라이즈 시나리오 : ERP솔루션의 경우 하나의 프로그램안에 모든기능이 많아,, 굉장히 무거워. 
        필요한 기능을 하나씩 떼어놓는게 필요. 이 과정중에 중복된 기능들이 많이 생기게됨. 이때 앱서비스로 만들고 앱서비스를 호출하여 사용하도록             구조를 바꾸어 사용한다.









- 앱서비스를 디버깅시에는 프로젝트 속성에서 반드시 해당내용과 관련된 체크박스를 확인해야한다!


# Ap Service Lifetime

: 지속적으로 늘어나는 앱서비스를 관리하기위해 lifetime 개념을 도입

: 평소에는 올라오지 않고 대기모드로 suspend되어있다가, 호출할 때만 올라옴.

   계속안쓰면 terminate됨


# Protocol

: Rest 기반의 웹기반 프로토콜을 사용


# Action Center & Quick actions

: 유니버셜앱이기때문데 어디서나 동일한 방법으로 앱을 사용할 수 있도록 지원

: 액션센터경우, 최장7일 앱당 20개의 notifications.


# XAML Transform3d

: 2d인데 3d처럼 보여준다. UX, UI 적용 가능함

좌표계가 (x,y,z)가 있어서 마치 3d인것처럼 계산한다.

이럴 때, 연산이 굉장히 많이 생기므로 내부적으로 gpu를 사용하도록 되어있다.

depth(z좌표)이용, 6번그림



--------------------------------------------------------------------


[브라우저]


# 기존의 브라우저에서는 많은 기능들이 들어있었다.

# 스파르탄은 다 빼서 엄청 가볍다.

# 유니버셜 앱. 어느 기기에서든 다 돌아간다. 기존앱에서의 호환성에대한 고민은?


사용자입장이 아닌 개발자입장에서의 스파르탄이 의미?

- 최신브라우저로의 업데이트에 포인트가 맞춰지고, 표준화를 지향한다.


# new feature

# Hosted Web Apps

- 하이브리드웹








---------------------------------------------------------------------


차주를 더 기대해주세요.

4/29~5/1 www.buildwindows.com에서 라이브이벤트








'System > Windows' 카테고리의 다른 글

[WINDOWS] 설치 시, 설치 파티션 이슈  (0) 2015.04.21

[Trouble shooting] ubuntu 디스크 늘리기(ESXi기반의 VM)

디스크를 새로추가하지 않고 기존의 디스크의 용량을 늘린다.
(주의)스냅샷이 있는 경우에는 늘려지지 않음

1. 디스크용량 확인
$ df -h

2. VM 종료 후 설정에서 DISK 추가

3. gparted
$ apt-get install gparted
$ sudo gparted
- 증설된 공간에 disk 추가하기
- gparted 닫기



4. lvm 추가
$ vgdisplay
$ fdisk /dev/sda
> p (확인,  *controller-vg)
> q (종료)
$ pvcreate /dev/sda4 (논리볼륨을 추가하기위해 pvcreate)
$ pvdisplay


$ vgextend controller-vg /dev/sda4 (controller-vg 확장)
$ lvextend /dev/controller-vg/root -l +100%FREE(논리볼륨확장)
$ resize2fs /dev/controller-vg/root (파일시스템을 파티션 크기에 맞추기)
$ df -h (확인)


참고.
http://lovevirus133.tistory.com/65


'System > Linux OS ' 카테고리의 다른 글

Linux LVM  (0) 2015.08.12
[tip] tmpdump ipv4 ipv6 모드변경  (0) 2015.05.01
[Linux] 리눅스 모니터링  (0) 2015.04.22
[Linux]라우팅 테이블  (0) 2015.04.21
[Linux] TUN/TAP  (0) 2015.04.21
1. 수동 라우팅 테이블 추가

- 수동으로 라우팅 테이블을 추가할 경우는 시스템을 리부팅할 때 재 설정해야 한다

route add {-host|-net} Target[/prefix] [gw Gw] [dev]
route del {-host|-net} Target[/prefix] [gw Gw] [dev]
[root@localhost ~]# route add -net 192.168.10.0/24 gw 192.168.0.1 dev eth1
[root@localhost ~]# route add -host 192.168.20.100 gw 192.168.0.1 dev eth1


2. 부팅시 자동 활성화 되도록 라우팅 테이블 추가

- 아래와 같이 두가지 형식으로 설정파일에 추가 할 수 있다

[root@localhost ~]# cat /etc/sysconfig/network-scripts/route-eth1
192.168.10.0/24 via 192.168.0.1
192.168.20.100 via 192.168.0.1

[root@localhost ~]# cat /etc/sysconfig/network-scripts/route-eth1
ADDRESS0=192.168.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.1
ADDRESS1=192.168.20.100
NETMASK1=255.255.255.255
GATEWAY1=192.168.0.1


3. Routing table 적용

- 수동으로 라우팅 테이블을 추가한 경우는 route 명령으로 바로 확인이 가능하다
설정파일에 추가한 경우는 network 데몬을 리스타트 하거나 /etc/sysconfig/network-scripts 디렉토리안에 있는 ifup-routes 명령을 사용한다.

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ./ifup-routes eth1


4. Routing table 확인

- route 명령 또는 route -n 으로 확인

[root@localhost ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
192.168.10.0 192.168.0.1 255.255.255.0 U 0 0 0 eth1
192.168.20.100 192.168.0.1 255.255.255.255 U 0 0 0 eth1
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.32.2 0.0.0.0 UG 0 0 0 eth0



==============================================================
추가 : route add -net xxx.xx.0.. netmask 255.255.255.0 dev eth0
삭제 : route del -net xxx.xxx.xxx.xxx netmask 255.255.255.0


'System > Linux OS ' 카테고리의 다른 글

Linux LVM  (0) 2015.08.12
[tip] tmpdump ipv4 ipv6 모드변경  (0) 2015.05.01
[Linux] 리눅스 모니터링  (0) 2015.04.22
[ubuntu] 디스크 늘리기(ESXi기반의 VM)  (0) 2015.04.21
[Linux] TUN/TAP  (0) 2015.04.21
# TUN/TAP 
커널에서 제공하는 NIC를 직접제어하지 않고 소프트웨어적으로 구현된 가상 네트워크 장치를 제어하는 가상 네트워크 드라이버

- VPN 솔루션에서 사용
- 가상네트워크 드라이버를 만들고 가상 사설망 구현
    장점 : 완전한 서브 네트워크 환경을 구성
    단점 : 별도의 클라이언트 프로그램이 필요. root 권한 필요

- TAP : OSI 2계층 시뮬레이션
- TUN : OSI 3계층 시뮬레이션


가상 디바이스 드라이버를 사용한 VPN은 완전한 서브 네트워크 환경을 구성해 준다는 장점이 있다. 이는 모든 애플리케이션을 사용할 수 있음을 의미한다. 하지만 별도의 클라이언트 프로그램이 준비되어야 한다는 단점이 있다. 특히 루트 권한을 가지고 있어야 하는데, 운영체제에 따라서 이동성에 제약을 가져다 줄 수 있다.


# OpenVPN 설치
- TAP : ethernet tunnel
- TUN: routed tunnel


추가
ip tuntap add mode tap eth2
ip link set eth2 up

# 제거
ip link set eth2 down
ip tuntap del dev eth2 mode tap

# 확인
ifconfig


'System > Linux OS ' 카테고리의 다른 글

Linux LVM  (0) 2015.08.12
[tip] tmpdump ipv4 ipv6 모드변경  (0) 2015.05.01
[Linux] 리눅스 모니터링  (0) 2015.04.22
[ubuntu] 디스크 늘리기(ESXi기반의 VM)  (0) 2015.04.21
[Linux]라우팅 테이블  (0) 2015.04.21

펌 : http://www.jbchurch.kr/bbs/board.php?bo_table=sub_3030&wr_id=188

GPT를 NTFS파티션으로 바꿀때, win8 - win7로 다운 

윈도우8은 GPT파티션을 쓰기 때문에 윈도우7을 설치 할 수 없습니다 

이러할 경우  GPT를 NTFS로 포멧을 해야되는데 
아래와 같이 하면 됩니다 

윈도우7 설치 GPT파티션 오류 해결법 

우선 윈도우7 설치 cd나 USB윈도우7을 넣습니다. 
그 다음에 설치를 누릅니다 
쉬프트+F10을 누름 
cmd - diskpart 
쉬프트+F10을 누름 
DISKPART> list disk 
DISKPART> select disk 0 
DISKPART> clean 
DISKPART> exit 


많은분이 이 오류를 고치지 못하시는거 같아서 이렇게 게시글로 
써봅니다. 

이 두가지 방법 모드 하드디스크가 포맷되니, usb나 외장하드 등에 백업을 해놓으시는것을 추천드립니다. 

이 오류는 윈도우8에서 7으로 다운그레이드 한 후 나타나는 오류 같습니다. 

==== 1.  우선 윈도우7 설치 cd를 넣습니다. 

그 다음에 설치를 누릅니다. 

사용자 지정을 누른 뒤 

파티션을 전부 삭제합니다. 

그 뒤에 새로만들기를 하여 파티션을 새로 만들면 됩니다만 

이 방법대로 해도 안되는 경우가 있습니다. 

이 경우에는 저를 따라해주시면 되곘습니다. 

==== 2. 윈도우7 설치CD를 넣은뒤 
              쉬프트+F10을 누릅니다. 

cmd창이 나오면 

diskpart를 입력하고 엔터를 누릅니다. 

그러면 

Microsoft DiskPart 버전 6.1.7601 

Copyright <C> 1999-2008 Microsoft Corporation. 

컴퓨터: ***** 

가 도스창에 나온 뒤 기다리시면 

DISKPART>로 바뀝니다. 

DISKPART> 상태에서 

=====    list disk를 입력하여 디스크 번호를 봅니다. 

여기서 디스크 크기를 본 뒤 어떤것이 윈도우를 설치할 하드인지를 아셔야 합니다. 

저는 여기서 0번을 골랐습니다. 

0번을 고르신다면 diskpart 상태에서 select disk 0을 입력합니다. 


==== 3.  diskpart 상태에서 clean  을 입력합니다. 
                이때 하드디스크가 포맷됩니다. 

그 뒤 완료되었다는 메세지가 나옵니다. 

===== 4.  다음 exit을 입력하시고 원래 설치하는 방법대로 설치하면 GPT파티션 오류가 발생하지 않습니다. 


이렇게 하면 윈도우7  잘 설치됩니다 
한참 고생했네요


참고 :
http://cappleblog.co.kr/158

http://cappleblog.co.kr/154

'System > Windows' 카테고리의 다른 글

[Windows] MS Tech days, Windows 10  (0) 2015.04.21

+ Recent posts