Disk 개념 for Storage Space(5)

2015.02.24 11:22 | Posted by 로멘틱가이

오늘은 Storage Space에서 사용하는 LRC(Local Reconstruction Code)에 대해 알아보겠습니다.

 

일반적으로 Raid 6는 2개의 Parity를 가지고 있습니다.

일반적으로 Raid 구성 시 사용하는 Reed-Solomon(RS) Algorithm의 경우 2개의 Data영역 Failure가 발생해도 안전한 구성입니다.

물론 Parity가 두 개라는건 한 개의 Parity에 비해 Write 시 I/O 비용이 증가합니다.

(두 개의 Parity 영역까지 계산해야하기 때문이죠)~

 

JBOD 시나리오에서는 2개의 Disk Failure까지 커버할 수 있습니다.

심지어 JBOD 2개 Failure까지 커버할 수 있습니다.

일반적으로 Disk Fault가 1개가 발생하기 때문에 과도한 리소스 사용일 수 있습니다.

 

이런 점을 개선하기 위해 LRC 알고리즘이 Storage Space에서는 사용되었습니다.

 

그럼 LRC는 무엇이냐?

Local Parity와 Global Parity라는 개념을 두어 안정성과 성능 두가지를 잡기 위한 알고리즘 입니다.

우선 안정성 측면에서 살펴보겠습니다.

위와 같이 RAID 5와 같이 Local Parity가 사용되어집니다.

단, RAID 5와 다른 점은 Global Parity가 존재합니다.

 

일반적인 Data Disk Fault의 경우 Local Parity를 사용하여 Data를 복원합니다.

예를 들어 다음과 같이 Data가 구성되어 있다고 가정하겠습니다.

 Disk 명

 Data 

 D11 

 1 

 D12

 2 

 D13 

 3 

 D14 

 4 

Local Parity P1 = 10

 

만약 D11이 Fault가 난 경우 다음과 같이 Data가 복구되어 집니다.

10 - (2 + 3 + 4) = 1

 

일반적인 RAID 5와 동일하다고 보시면 됩니다.

 

그럼 Global Parity의 용도는 무엇일까요?

위와 같이 JBOD Enclosure가 4개로 분할되어 있는 경우를 예로 들업보겠습니다.

여기서 1번 Enclosure가 H/W 장애로 죽게되면 Local Parity를 사용하여 복원이 가능합니다.

 

만약 1번 Enclosure가 장애가 나고 D12 Disk가 Fault 가 나면!!!?

RAID5로는 복구가 불가능하게 됩니다.

(이럴때 RAID6로 할걸이란 후회를 하게 되겠죠;;)

 

하지만 LRC 알고리즘에는 Global Parity가 존재합니다.

D23, D24, P2, G1을 사용하여 복구가 가능하게 됩니다.

 

LRC 알고리즘은 결국 RAID6의 안정성과 RAID5의 성능을 혼합하여 만든 알고리즘이라는 것을 알 수 있습니다.

 

다음으로 성능 측면으로 알아보도록 하겠습니다.

위와 같이 12 + 3 + 1 구성인 경우 RAID6는 Storage 용량이 18개가 필요합니다.

LRC의 경우 16개가 필요하죠

즉 2개의 용량을 절약할 수가 있습니다.

(간단하게 갯수로 알아보아 2개뿐이네 라고 생각할 수 있지만 LUN의 단위가 100GB라고 하면 200GB를 절약할 수 있기 때문에 적은 용량은 아닙니다.)

 

Parity 연산에 사용하는 비용은 동일하다고 봐도 될거 같습니다.

(Local Parity 연산 + Global Parity 연산)

 

단 Disk Fault 시는 위에 설명한 대로 Reconstruction I/O는 줄어들며 Enclosure + Disk 장애 or Disk 2개 이상 장애 시는 Reconstruction I/O도 동일하다고 보면 됩니다.

 

2 개 이상의 Disk가 동시에 Fault 날 확률이 적다고 가정 했을때 일반적인 Disk Fault 시에도 성능에 우위를 가져 올 수 있습니다.

 

이렇게 Storage Space에서는 LRC라는 Algorithm을 도입하여 Storage 용량과 성능을 최적화하기 위해 노력하였다는 것을 알 수 있습니다.

Disk 개념 for Storage Space(4)

2015.02.22 21:52 | Posted by 로멘틱가이

간단하게 Storage Space에 대한 개념 정리 내용입니다.

 

(1) Enclosure Awareness Feature

- SCSI Enclosure Service(SES)가 지원되어야 함

- Two-way Mirror의 경우 3개의 Enclosure가 필요함

- Three-way Mirror의 경우 5개의 Enclosure가 필요함

- New-VirtualDisk로 생성 시 IsEnclosureAware 옵션을 True로 설정해야함(생성 후 변경 불가)

 

(2) Shared Storage and Failover Cluster

- Physical Disk가 SCSI-PR을 지원해야 Clustering을 지원함

- Cluster 시나리오에서는 Mirror Space를 권장함

- Clustered Storage Space에서는 Fixed Provisioning만 지원함

 

(3) Hot Spare and Fast Rebuild

1) Hot Spare

- Hot Spare Disk를 두고 Disk 오류 시 Hot Spare Disk로 Change함

2) Fast Rebuild

- Disk 오류 시 기존 Disk의 Free Disk에 Fault Disk의 Data를 Parallel Regenerate 함

- Parallel Regenerate 시 Resource를 기존 Disk I/O에 맞출 것인지 Regenerate에 맞출 것인지를 설정할 수 잇음

  Set-StoragePool -RepairPolicy Parallel | Sequential

- Windows 2012 R2에서는 Fast Rebuild를 권장함

(4) Automated Tiered Storage Space

- Tiering은 Mirror와 Simple에서만 안정적으로 작동함, Parity는 권장하지 않음

- Column Count는 SSD와 HDD Tier 별로 필요하다.

(4 Column, 2 way Mirror로 구성된 경우 8개의 SSD와 8개의 HDD가 필요하다.)

- Tiering은 Fixed Provisioning만 지원한다.

(5) Write Back Cache

- Cache를 두어 Random Write에 대한 Latency를 줄여준다.

- SSD가 있는 경우 Default로 1GB로 설정된다.

- WBC의 Size를 변경하는 것은 권장하지 않는다.

- 만일 충분한 사용 가능한 Disk가 없는 경우 WBC Size는 0으로 설정되어 진다.

 

Dell 자료에서 추출하였습니다.

(원본 : http://i.dell.com/sites/doccontent/shared-content/data-sheets/en/Documents/Deploying_Storage_Spaces_on_PowerVault_MD12XX-v1.pdf)

Disk 개념 for Storage Space(3)

2015.02.22 03:50 | Posted by 로멘틱가이

이번에 알아볼 개념은 Physical Disk, Raid Disk, File System 간 연관 관계에 대해 알아보도록 하겠습니다.

 

먼저 Raid에 대해 알아보아야 하지만 Raid 개념은 다음 시간에 알아보도록 하겟습니다.

 

서버에서 Disk를 사용하기 위해서 다음과 같은 단계가 필요합니다.

1) Disk 장착

2) Raid 구성(일반 PC의 경우 Raid 구성을 하지 않습니다.)

3) NTFS 형식으로 Format

 

위의 단계를 보면 다음과 같이 구분하여 생각할 수 있습니다.

Disk 자체를 Raid 구성을 통해 논리적으로 묶고 묶은 Data를 NTFS 형식으로 Format함으로써 3단계를 거치는 것을 알 수 있습니다.

이를 그림으로 표현하면 다음과 같습니다.

 

Physical Disk : Sector

Raid 구성 : Stripe or Chunk

NTFS Format : Block(Cluster, 기본 할당 단위)

 

위의 그림과 같이 Physical Disk는 Sector로 구분되어 있습니다.

해당 Sector들을 묶어 Stripe or Chunk로 구성하게 됩니다.

(보통 OS는 128KB, Data는 256KB를 많이 사용합니다.)

해당 Stripe를 쪼개어 Block or Cluster로 구성되게 됩니다.

Disk 개념 for Storage Space(2)

2015.02.22 03:39 | Posted by 로멘틱가이

지난 시간에는 Disk의 기본 개념에 대해 알아보았습니다.

오늘은 Disk 성능 측정에 가장 많이 사용되는 IOPS에 대해 알아보겠습니다.

 

(1) IOPS란 무엇인가?

- Input / Output Per Second(초당 입력/출력 횟수)

 

(2) IOPS 계산 방법

- IOPS = 1000 / (평균 Read Seek Time + 평균 Rotational Latency)

* 한 개의 Sector를 찾기 위해 걸리는 시간의 합을 구한 후 횟수를 계산하기 위해 1초에서 나누면 1초간 총 횟수가 나오게 됩니다.

- 평균 Rotational Latency = 최대 Rotational Latency / 2

- 최대 Rotational Latency = 60000 / RPM

* RPM은 분당 회전 수 이기 때문에 7200RPM의 경우 1바퀴를 도는데 걸리는 시간을 측정하기 위해서는 60000(ms) / 7200으로 계산하면 됩니다.

 RPM(Rotational Speed)

최대 Rotational Latency 

5400 

11.1 

7200 

8.3 

10000 

6.0 

15000 

4.0 

- MBps : 초당 전송 되는 Data

* 만약 4K write speed를 가진 20,000 IOPS의 Disk가 있다고 할경우 MBps는 다음과 같이 계산합니다.

 MBps = (IOPS * KB Per IO) / 1024

 즉 특정 IO발생 시 4K를 쓰는 Test를 하는 경우 초당 20,000의 Read/Write가 가능하기 때문에 1초당 80,000KB의 IO가 발생하게 됩니다. 해당 값은 KB이기 때문에 해당 값을 MB로 변경 하면 MBps로 계산할 수 있습니다.

 

(3) I/O 종류

- IOPS Test를 하는 경우 두 가지 Type의 I/O를 바탕으로 Test를 진행합니다.

1) Random I/O

- 디스크의 임의의 위치에 Data를 가진 Sector가 존재하기 때문에 임의로 헤드가 이동하여 Data를 읽거나 쓰게 됩니다.

- Random으로 Data Sector가 존재하기 때문에 성능이 감소하게 됩니다.

2) Sequencial I/O

- 인접한 데이터를  읽어 오기 때문에 Random I/O보다 더 많은 양을 처리할 수 있습니다.

Disk 개념 for Storage Space(1)

2015.02.22 03:20 | Posted by 로멘틱가이

Windows 2012가 세상에 나오면서 Storage Space라는 기능이 추가되었습니다.

Disk Controller를 OS의 기능으로 사용하는 개념입니다.

(Cloud 개념을 OS에 담기 위해 Windows 2012부터 Network의 Teaming과 Disk의 Storage Space가 추가되었습니다.)

 

Storage Space를 공부하기 전 Disk 의 기본 개념에 대해 공부해보도록 하겠습니다.

 

일반적인 Disk는 다음과 같이 구성되어 있습니다.

 

일반적으로 Disk는 Platter라는 판이 여러개 겹쳐 있는 구조 입니다.

특정 파일을 찾기 위해 Read/Write Head가 파일을 가지고 있는 Sector를 찾기 위해 Moving하여 파일 정보를 가지고 있는 Sector를 찾아가는 방식입니다.

 

해당 Sector를 찾기 위해 Head가 해당 피을을 가지고 있는 Track까지 Moving하는 시간이 필요합니다. 일반적으로 이 시간을 탐색 시간(Seek Time)이라고 합니다.

 

해당 Track을 찾으면 Track에서 Sector를 가지고 있는 위치까지 Platter가 돌아야 하는데 Platter가 돌아 헤더가 있는 위치까지 오는 시간을 회전 대기 시간(rotational time)라고 합니다.

 

일반적으로 특정 파일을 찾기 위해 걸리는 시간은 탐색 시간(Seek Time) + 회전 대기 시간(rotational time)

 

일반적인 하드 디스크를 보면 rpm(분당 회전 수)를 통해 Disk의 성능을 유추합니다.

예를 들어 7200rpm인 하드 디스크는 1초당 120회를 회전하게 되어 있습니다.

(7200 / 60)

5400rpm인 하드 디스크는 1초당 90회를 회전하기 때문에 7200rpm인 디스크보다 회전 대기 시간이 늘어나게 되어 특정 파일을 찾는데 시간을 오래 소요하게 되는 것입니다.

 

이런 기본적으로 하드 디스크를 작동하는 방법에 대해 알아보았습니다.

다음에는 디스크 성능을 측정할 때 가장 많이 사용하는 IOPS에 대해 알아보도록 하겠습니다.

 

요약

Disk는 여러개의 Platter로 구성되어 있음

Read/Write Head가 해당 파일이 저장되어 있는 Sector를 찾음

Seek Time : Head가 Sector가 가지고 있는 Track까지 이동하는 시간

Rotational Time : Platter가 회전하여 File 정보를 가지고 있는 Sector 위치에 Head를 놓을때까지 걸리는 시간

RPM : 분당 회전 수

Windows Security Log List

2015.02.14 01:05 | Posted by 로멘틱가이

[Logon Type]

Logon type 2 Interactive: A user logged on to this computer.

Logon type 3 Network: A user or computer logged on to this computer from the network.

Logon type 4 Batch: Batch logon type is used by batch servers, where processes may be executing on behalf of a user without their direct intervention.

Logon type 5 Service: A service was started by the Service Control Manager.

Logon type 7 Unlock: This workstation was unlocked.

Logon type 8 NetworkCleartext: A user logged on to this computer from the network. The user's password was passed to the authentication package in its unhashed form. The built-in authentication packages all hash credentials before sending them across the network. The credentials do not traverse the network in plaintext (also called cleartext).

Logon type 9 NewCredentials: A caller cloned its current token and specified new credentials for outbound connections. The new logon session has the same local identity, but uses different credentials for other network connections.

Logon type 10 RemoteInteractive: A user logged on to this computer remotely using Terminal Services or Remote Desktop.

Logon type 11 CachedInteractive: A user logged on to this computer with network credentials that were stored locally on the computer. The domain controller was not contacted to verify the credentials.

 

Event ID 528 entries list the:

  • user name
  • domain
  • logon id
  • logon type
  • logon process
  • authenication package
  • workstation name

The types of successful logon types:

  • Type 2 : Console logon - interactive from the computer console
  • Type 3 : Network logon - network mapping (net use/net view)
  • Type 4 : Batch logon - scheduler
  • Type 5 : Service logon - service uses an account
  • Type 7 : Unlock Workstation

 Type 0 & 1 are not used and Type 6 is listed as a proxy logon but I don't know what that is. The Logon Type 3 events indicate a network logon event. A successful Net Use or File Manager connection or a successful Net View to a share generates Event ID 528. An event is generated by the initial connection from a particular user. Later Net Uses or Net Views by that a user from the same computer do not generate additional events unless the user has been disconnected. Auditing User Authentication gives additional information.

The unsuccessful logon events are:

  • Event ID 529 : Unknown user name or bad password
  • Event ID 530 : Logon time restriction violation
  • Event ID 531 : Account disabled
  • Event ID 532 : Account expired
  • Event ID 533 : Workstation restriction - not allowed to logon at this computer
  • Event ID 534 : Inadequate rights - as in user account attempting console login to server
  • Event ID 535 : Password expired
  • Event ID 536 : NetLogon service down
  • Event ID 537 : unexpected error - the who knows ??? factor
  • Event ID 539 : Logon Failure: Account locked out
  • Event ID 627 : NT AUTHORITY\ANONYMOUS is trying to change a password
  • Event ID 644 : User account Locked out

 Event ID 538 is not an unsuccessful event but rather a successful logoff. Event ID 540 is not an unsuccessful event but rather a successful network logon as in mapping a network drive. Some Windows 2000 only events are:

  • Event ID 541 : IPSec security association established
  • Event ID 542 : IPSec security association ended (mode data protection)
  • Event ID 543 : IPSec security association ended (key exchange)
  • Event ID 544 : IPSec security association establishment failed because peer could not authenicate
  • Event ID 545 : IPSec peer authenication failed
  • Event ID 546 : IPSec security association establishment failed because peer sent invalid proposal
  • Event ID 547 : IPSec secuirty association negotiation failed
  • Event ID 672 : Authenication Ticket Granted
  • Event ID 673 : Service Ticket Granted
  • Event ID 674 : Ticket Granted Renewed
  • Event ID 675 : Pre-authenication failed
  • Event ID 676 : Authenication Ticket Request Failed
  • Event ID 677 : Service Ticket Request failed
  • Event ID 678 : Account mapped for logon
  • Event ID 679 : Account could not be mapped for logon
  • Event ID 680 : Account used for logon
  • Event ID 681 : Logon failed. There error code was:
  • Event ID 682 : Session reconnected to winstation
  • Event ID 683 : Session disconnected from winstation

 

Ubuntu KVM 설치

2015.02.01 04:50 | Posted by 로멘틱가이

오늘은 Ubuntu에 KVM을 설치하는 방법에 대해 알아보겠습니다.

 

1. 가상화 지원 여부 확인

Ubuntu에 KVM을 설치하기 위해서는 CPU에서 가상화 관련 기능이 지원되야 합니다.

(Intel - VT-x, AMD - AMD-v)

 #egrep -c '(vmx|svm)' /proc/cpuinfo 

 

 

해당 결과가 0인 경우 해당 머신의 CPU는 가상화를 지원하지 않으며 1 이상인 경우 가상화를 지원합니다.

 

가상화를 지원하지 않는 경우 반가상화(하드웨어를 에뮬레이터 하는 방식)로 지원하는 QEMU를 사용하게 되며 가상화를 지원하는 경우 전가상화(하드웨어를 hypervisor를 통해 사용)를 지원하는 KVM을 사용합니다.

 

2. KVM 구성

KVM 관련 패키지를 설치합니다.

 # sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

qemu-kvm : http://packages.ubuntu.com/lucid/qemu-kvm

 

해당 패키지 설치 후 KVM 그룹에 사용자를 넣어줍니다.

 # sudo adduser [사용자 ID] libvirtd

 # sudo adduser [사용자 ID] kvm

 

그룹에 user 추가 후 적용을 위해 logout이 필요합니다.

로그인 후 다음과 같이 결과가 나오면 정상

 # virsh -c qemu:///system list

 

Id Name                 State
---------------------------------------------

만약 에러가 발생하는 경우 아래 Site를 참고하시기 바랍니다.

(관련 사이트 : http://wiki.libvirt.org/page/Failed_to_connect_to_the_hypervisor)

 

Gui에서 확인을 위해 ubuntu-desktop과 virt-manager를 추가로 설치합니다. 

 # apt-get install virt-manager

 

3. virt-manager 실행

메뉴 실행 후 search에virt라고 치면 virtual machine manager가 조회되어 집니다.

 

Virt-manager에서 Hypervisor 부분을 보면 qemu로 되어 있습니다.

당연히 처음에 CPU가 가상화를 지원하기 때문에 전가상화인 KVM으로 보일 줄 알았는데 아니더군요;;

(한참을 헤맷어요 이거 땜시 ㅎㅎ)

 

KVM은 기본적으로 반가상화인 QEMU를 기반으로 돌아갑니다.

HW Accel이 추가로 지원되어 전가상화가 되는거죠

 

VM의 Overview를 보면 Hypervisor가 kvm으로 되어 있는 것을 확인할 수 있습니다.

 

ps-ef 를 통해 보면 accel 부분에 kvm으로 인식되어 있는 것을 확인할 수 있습니다.

(참고 사이트 : http://www.innervoice.in/blogs/2014/03/10/kvm-and-qemu/)

apt-get 설정 및 Ubuntu Server GUI 설정

2015.01.25 22:36 | Posted by 로멘틱가이

Ubuntu Server 설치 시 GUI가 설치되어 있지 않습니다.

GUI 모드를 사용하기 위해서는 다음과 같은 설치 과정이 필요합니다.

- Ubuntu Server Update and Upgrade

- Install Full Ubuntu Desktop

- Update and Upgrade Ubuntu Desktop

 

설치를 진행해 보도록 하겠습니다.

Redhat 계열이 Software 및 Patch 설치를 위해 자동 RPM 설치 프로그램인 yum을 사용하는 것과 같이 Debian 계열인 Ubuntu는 apt-get 명령어를 사용합니다.

Repository 설정 파일에 해당 파일들을 받아오는 경로가 기입되어 있습니다.

해당 경로를 수정하기 위해 다음과 같이 진행합니다.

1) apt-get repository config file 확인

apt-get repository config file은 다음 파일입니다.

- /etc/apt/sources.list

해당 파일 변경을 위해 backup 후 sed를 사용하여 ftp.daum.net으로 변경합니다.

(default로 미국 주소인 us.archive.ubuntu.com, security.ubuntu.com으로 설정되어 있지만 한국에서 가장 빠르게 받을 수 있는 ftp.daum.net으로 설정을 바꿉니다.)

 

2) apt-get update 및 upgrade

 

 

위와 같이 apt-get 설정 완료 후 GUI 설정을 위해 ubuntu desktop을 설치 합니다.

ubuntu desktop 설치 명령어는 다음과 같습니다.

- apt-get install ubuntu-desktop

 

설치 후 rebooting을 하면 다음과 같이 gui 화면으로 로그인 됩니다. 

 

Ubuntu Root 암호 설정

2015.01.25 21:05 | Posted by 로멘틱가이

오늘은 Ubuntu Server 설치 후 root password를 설정하는 방법에 대해 알아보겠습니다.

 

처음 Ubuntu Server를 설치하면 설치 시 생성한 User로만 로그인 할 수 있습니다.

(설치 시 root 비밀 번호를 묻는 화면이 없습니다.)

 

설치 완료 후 로그인 창에서 생성한 User로 로그인 후 다음과 같이 입력해야 root 암호를 설정할 수 있습니다.

 

> sudo passwd root

> 일반 유저 암호 입력

> root 암호 입력

 

여기서 passwd는 입력할 passwd가 아닌 고유 명사 입니다.

 

위와 같이 생성 후 su 명령어를 입력하여 root로 전환하면 root 권한으로 모든 것을 설정할 수 있습니다.

MOF File

2014.12.15 10:30 | Posted by 로멘틱가이

MOF 파일은 WMI를 사용하는 경우 WMI Data(namespace, classes, instances, providers의 정의)를 포함하고 있는 File

 

(참고사이트 : http://technet.microsoft.com/en-us/library/cc180827.aspx)

TAG MoF, WMI