반응형

참고 : https://m.blog.naver.com/PostView.nhn?blogId=idrukawa&logNo=220870293694&proxyReferer=https:%2F%2Fwww.google.co.kr%2F


Yum update errno 14 http error 404: not found


yum 으로 update를 진행하다보면 해당 에러가 발생할 수 있는데 이런 경우에 아래의 경로에 모든 파일을 다른곳으로 이동하고
daum 의 repository 정보로 변경하여 진행하면 됩니다.

root]# cd /etc/yum.repos.d

root]# vi daum.repo


[base]

name=CentOS-$releasever - Base

baseurl=http://ftp.daum.net/centos/7/os/$basearch/

gpgcheck=1

gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7

 

[updates]

name=CentOS-$releasever - Updates

baseurl=http://ftp.daum.net/centos/7/updates/$basearch/

gpgcheck=1

gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7

 

[extras]

name=CentOS-$releasever - Extras

baseurl=http://ftp.daum.net/centos/7/extras/$basearch/

gpgcheck=1

gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7

 

[centosplus]

name=CentOS-$releasever - Plus

baseurl=http://ftp.daum.net/centos/7/centosplus/$basearch/

gpgcheck=1

gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7


// repo clear 후 로딩

// base, centosplus, extras, updates 가 출력되면 정상

// 위 리스트가 출력되지 않으면 daum.repo 만 남겨놓고 다른 repo는 삭제해보길 바람.


root]# yum clean all

...

Cleaning repos: base centosplus extras updates

Cleaning up everything


root]# ]# yum repolist all

반응형
반응형

해당 내역은 차후 지속적으로 추가하기로 한다...

일단 본인이 알아볼 수 있을 정도로 적어놓고 포스팅 내용은 늘리는걸로..


참고 : https://access.redhat.com/documentation/ko-KR/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/lv_extend.html

참고 : http://pinglish.tistory.com/entry/LVM-%EB%85%BC%EB%A6%AC%EB%B3%BC%EB%A5%A8-%ED%99%95%EC%9E%A5



1. PV

1) pvdisplay -> 현재 디스크 용량 및 종류 확인.

-> 새로운 디크크가 추가되었을 때 확인. 


pvcreate /dev/sdb1 등으로 새로운 디스크를 물리 볼륨에 추가한다.

-> 가상머신의 경우 각 툴에 맞는 Disk Extend를 진행하여 디스크 크기 확장.



2. VG - GParted를 사용

1) vgdisplay -v 

현재 GParted를 사용하여 해당 볼륨 그룹의 크기에 대해 간단하게 확장 진행.

GParted로 볼륨그룹 크기 늘린후 FREE PE / SIZE 확인.



3. LV

1) lvdisplay

-> 현재 논리 볼륨 확인.


논리 뷸륨의 크기를 확장하려면 lvextend 명령을 사용.

lvextend -l 인수를 사용하여 논리 볼륨 크기를 확장할 익스텐드 수를 지정.

불륨 그릅의 퍼센트나 블륨 그룹에 남아 있는 여유 공간의 퍼센트도 지정할 수 있음.


ex) lvextend -l +100%FREE /dev/vg_9rh656/lv_root


4. 논리 볼륨 확장 후 해당 파일 시스템의 크기를 확장

ex) resize2fs /dev/vg_9rh656/lv_root


4-1. lvm 파일 시스템(/etc/fstab에서 확인할 시 xfs)의 경우 resize2fs 가 아닌 xfs_growfs 를 사용하도록 한다.



5. 이후 df -h 등으로 용량 변화된것 확인.











반응형
반응형

 

출처 : http://bwhite.tistory.com/entry/Linux-%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4-%EC%A0%95%EB%B3%B4-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0-dmidecode-lshw

 

 

 

 

1. lshw 를 사용하여 하드웨어 상세 정보 확인(링크 참조)

- lshw 는 rpm 패키지를 별도로 설치해야됨

참고글 : http://jonnychoe.egloos.com/5549359

2. dmidecode 
- 설치할 필요없음
- dmidecode 명령은 서버 하드웨어, 바이오스 정보를 system DMI 테이블에서 읽어온다.
시스템의 현재 configuration 상태뿐만 아니라 최대 지원가능한 설정 정보까지도 불러온다.
예를 들어, 시스템의 현재 RAM 정보와 최대 확장가능한 RAM 정보까지도 확인할 수 있다.

dmidecode 의 output 형태는 다음과 같다.
Record Header: Handle {record id}, DMI type {dmi type id}, {record size} bytes
Record Value: {multi line record value}
  • record id: Unique identifier for every record in the DMI table.
  • dmi type id: Type of the record. i.e BIOS, Memory etc.,
  • record size: Size of the record in the DMI table.
  • multi line record values: Multi line record value for that specific DMI type.

dmidecode 명령의 output 예 :

# dmidecode | head -15

# dmidecode 2.9
SMBIOS 2.3 present.
56 structures occupying 1977 bytes.
Table at 0x000FB320.

Handle 0xDA00, DMI type 218, 11 bytes
OEM-specific Type
        Header and Data:
                DA 0B 00 DA B0 00 17 03 08 28 00

Handle 0x0000, DMI type 0, 20 bytes
BIOS Information
        Vendor: Dell Computer Corporation
        Version: A07
        Release Date: 01/13/2004

DMI 테이블의 레코드 갯수를 보기위해서는 

# dmidecode | grep ^Handle | wc -l
56

(or)

# dmidecode | grep structures
56 structures occupying 1977 bytes.

DMI Types

시스템의 CPU 정보를 보기위해서는 type id 4 옵션을 dmidecode 명령과 함께 준다.

# dmidecode -t 4
# dmidecode 2.9
SMBIOS 2.3 present.

Handle 0x0400, DMI type 4, 35 bytes
Processor Information
        Socket Designation: Processor 1
        Type: Central Processor
        Family: Xeon
        Manufacturer: Intel
        ID: 29 0F 00 00 FF FB EB BF
        Signature: Type 0, Family 15, Model 2, Stepping 9
        Flags:
                FPU (Floating-point unit on-chip)
                VME (Virtual mode extension)
                DE (Debugging extension)
                PSE (Page size extension)
                TSC (Time stamp counter)
                MSR (Model specific registers)

DMI type 은 아래와 같다.

Type   Information
       ----------------------------------------
          0   BIOS
          1   System
          2   Base Board
          3   Chassis
          4   Processor
          5   Memory Controller
          6   Memory Module
          7   Cache
          8   Port Connector
          9   System Slots
         10   On Board Devices
         11   OEM Strings
         12   System Configuration Options
         13   BIOS Language
         14   Group Associations
         15   System Event Log
         16   Physical Memory Array
         17   Memory Device
         18   32-bit Memory Error
         19   Memory Array Mapped Address
         20   Memory Device Mapped Address
         21   Built-in Pointing Device
         22   Portable Battery
         23   System Reset
         24   Hardware Security
         25   System Power Controls
         26   Voltage Probe
         27   Cooling Device
         28   Temperature Probe
         29   Electrical Current Probe
         30   Out-of-band Remote Access
         31   Boot Integrity Services
         32   System Boot
         33   64-bit Memory Error
         34   Management Device
         35   Management Device Component
         36   Management Device Threshold Data
         37   Memory Channel
         38   IPMI Device
         39   Power Supply

또한, type id 를 입력하는 대신에 키워드를 사용할 수도 있다.

다음은 사용가능한 키워드이다.

       Keyword     Types
       ------------------------------
       bios        0, 13
       system      1, 12, 15, 23, 32
       baseboard   2, 10
       chassis     3
       processor   4
       memory      5, 6, 16, 17
       cache       7
       connector   8
       slot        9

type id 2 와 10 에 대한 정보를 보기 위해 키워드 baseboard 를 사용한 예

# dmidecode -t baseboard
# dmidecode 2.9
SMBIOS 2.3 present.

Handle 0x0200, DMI type 2, 9 bytes
Base Board Information
        Manufacturer: Dell Computer Corporation
        Product Name: 123456
        Version: A05
        Serial Number: ..CN123456789098.

Handle 0x0A00, DMI type 10, 14 bytes
On Board Device 1 Information
        Type: SCSI Controller
        Status: Enabled
        Description: LSI Logic 53C1030 Ultra 320 SCSI
On Board Device 2 Information
        Type: SCSI Controller
        Status: Enabled
        Description: LSI Logic 53C1030 Ultra 320 SCSI
On Board Device 3 Information
        Type: Video
        Status: Enabled
        Description: ATI Rage XL PCI Video
On Board Device 4 Information
        Type: Ethernet
        Status: Enabled
        Description: Broadcom Gigabit Ethernet 1
On Board Device 5 Information
        Type: Ethernet
        Status: Enabled
        Description: Broadcom Gigabit Ethernet 2


dmicode 를 사용하여 RAM(Physical Memory) 에 대한 정보 확인하기

시스템에서 지원가능한 최대 RAM 크기는 얼마인가? 
아래 예는 최대 RAM 크기가 8GB 임을 보여준다.

# dmidecode -t 16
# dmidecode 2.9
SMBIOS 2.3 present.

Handle 0x1000, DMI type 16, 15 bytes
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: Multi-bit ECC
        Maximum Capacity: 8 GB
        Error Information Handle: Not Provided
        Number Of Devices: 4

메모리를 얼마나 확장할 수 있는지 를 확인하기 위해 /proc/meminfo 명령을 사용하여 현재 메모리 총량을 확인할 수 있다.

# grep MemTotal /proc/meminfo
MemTotal:      1034644 kB

위 예는 현재 시스템이 1 GB 메모리를 가지고 있음을 확인할 수 있지만, 이것이 1GB 1개인지, 512MB 2개인지, 256MB 4개인지는 알 수가 없다.

dmidecode 명령을 사용하여 memory 슬롯에서 각각 사용되고 있는 RAM  크기를 알 수 있다.

아래 예는 memory slot  이 4개이며, 현재 슬롯 1,2 에 512 MB RAM 이 각각 장착되어 있음을 확인할 수 있다.

# dmidecode -t 17
# dmidecode 2.9
SMBIOS 2.3 present.

Handle 0x1100, DMI type 17, 23 bytes
Memory Device
        Array Handle: 0x1000
        Error Information Handle: Not Provided
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 512 MB  [Note: Slot1 has 512 MB RAM]
        Form Factor: DIMM
        Set: 1
        Locator: DIMM_1A
        Bank Locator: Not Specified
        Type: DDR
        Type Detail: Synchronous
        Speed: 266 MHz (3.8 ns)

Handle 0x1101, DMI type 17, 23 bytes
Memory Device
        Array Handle: 0x1000
        Error Information Handle: Not Provided
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 512 MB [Note: Slot2 has 512 MB RAM]
        Form Factor: DIMM
        Set: 1
        Locator: DIMM_1B
        Bank Locator: Not Specified
        Type: DDR
        Type Detail: Synchronous
        Speed: 266 MHz (3.8 ns)

Handle 0x1102, DMI type 17, 23 bytes
Memory Device
        Array Handle: 0x1000
        Error Information Handle: Not Provided
        Total Width: 72 bits
        Data Width: 64 bits
        Size: No Module Installed [Note: Slot3 is empty]
        Form Factor: DIMM
        Set: 2
        Locator: DIMM_2A
        Bank Locator: Not Specified
        Type: DDR
        Type Detail: Synchronous
        Speed: 266 MHz (3.8 ns)

Handle 0x1103, DMI type 17, 23 bytes
Memory Device
        Array Handle: 0x1000

        Error Information Handle: Not Provided
        Total Width: 72 bits
        Data Width: 64 bits
        Size: No Module Installed [Note: Slot4 is empty]
        Form Factor: DIMM
        Set: 2
        Locator: DIMM_2B
        Bank Locator: Not Specified
        Type: DDR
        Type Detail: Synchronous
        Speed: 266 MHz (3.8 ns)


BIOS information 확인하기

# dmidecode -t bios
# dmidecode 2.9
SMBIOS 2.3 present.

Handle 0x0000, DMI type 0, 20 bytes
BIOS Information
        Vendor: Dell Computer Corporation
        Version: A07
        Release Date: 01/13/2004
        Address: 0xF0000
        Runtime Size: 64 kB
        ROM Size: 4096 kB
        Characteristics:
                ISA is supported
                PCI is supported
                PNP is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                ESCD support is available
                Boot from CD is supported
                Selectable boot is supported
                EDD is supported
                Japanese floppy for Toshiba 1.2 MB is supported (int 13h)
                5.25"/360 KB floppy services are supported (int 13h)
                5.25"/1.2 MB floppy services are supported (int 13h)
                3.5"/720 KB floppy services are supported (int 13h)
                8042 keyboard services are supported (int 9h)
                Serial services are supported (int 14h)
                CGA/mono video services are supported (int 10h)
                ACPI is supported
                USB legacy is supported
                LS-120 boot is supported
                BIOS boot specification is supported
                Function key-initiated network boot is supported

Handle 0x0D00, DMI type 13, 22 bytes
BIOS Language Information
        Installable Languages: 1
                en|US|iso8859-1
        Currently Installed Language: en|US|iso8859-1


장비의 Manufacturer, Model 과 Serial number 확인하기

# dmidecode -t system
# dmidecode 2.9
SMBIOS 2.3 present.

Handle 0x0100, DMI type 1, 25 bytes
System Information
        Manufacturer: Dell Computer Corporation
        Product Name: PowerEdge 1750
        Version: Not Specified
        Serial Number: 1234567
        UUID: 4123454C-4123-1123-8123-12345603431
        Wake-up Type: Power Switch

Handle 0x0C00, DMI type 12, 5 bytes
System Configuration Options
        Option 1: NVRAM_CLR:  Clear user settable NVRAM areas and set defaults
        Option 2: PASSWD:  Close to enable password

Handle 0x2000, DMI type 32, 11 bytes
System Boot Information
        Status: No errors detected

 

반응형
반응형

출처 : http://faq.hostway.co.kr/Linux_ETC/4258




프로세스의 PID를 확인 후

# cat /proc/PID/status | grep VmSize

VmSize:     7224 kB

 

/proc/PID/status 만 입력 시 항목 설명

 

VmSize: 전체 할당된 가상 메모리의 크기
VmRSS:
실제 물리적 메모리가 할당된 크기
VmLck:
스왑아웃 될수 없는 메모리의 크기

VmData: Heap 영역
VmStk: Stack
영역
VmExe:
실행코드 영역 (전역변수 및 실행코드)
VmLib:
동적으로 연결된 라이브러리 영역

반응형
반응형

출처 : http://blog.daum.net/99lib/9

가져온 곳 : 
블로그 >System engineer
|
글쓴이 : bonnie_clyde| 원글보기




파일시스템 개념을 잡고 가야할듯..

ext4 가 확장성이 있고 ext3는 확장성이 없다는데, 내 기억으로는 LVM을 확장해줬던 기억이 있어서 갑자기 혼란스러웠다.

파일시스템 자체를 확장하는 것이 아니라 논리볼륨을 더 확장한 것 뿐이라서 결국엔 아닌 것이었으나 내가 본론적으로 잘 이해를 못하고 있음을 깨달아

다시 정리하고자 한다.

 

* 보통은 ~~

디스크를 붙이고 -> 파티션을 생성하고 -> 해당 파티션을 포맷하고(파일시스템을 만들고) -> 마운트

* 요기선~

디스크를 붙이고 -> 파티션을 LVM타입으로 생성하고 -> 물리볼륨을 만들고 -> 볼륨그룹을 만들고 -> 볼륨그룹에서 논리볼륨을 만들고 -> 포맷 -> 마운트

 

우선 LVM을 만드는 순서부터 살펴보자면,

 

 

 

 

  1. 하드디스크를 LVM을 만들 수 있게 파티션 생성
  2. 물리볼륨 생성 (pvcreate)
  3. 위 물리볼륨들을 볼륨그룹을 생성하여 묶는다. (vgcreate)
  4. 위 볼륨그룹을 원하는 크기대로 나눠 논리볼륨 생성 (lvcreate)
  5. 파일시스템으로 포맷

 

 

1. 하드디스크를 LVM 타입으로 파티션 생성 .. (이라는데 굳이 그럴 필욘 없는듯..) 

1)  fdisk -l 하여 LVM 설정할 하드드라이브 (디스크)의 디바이스명을 확인

(fdisk -l /dev/sda 이런 식으로 하면 /dev/sda 의 파티션 내용을 확인하는 것이고, 생략하면 모든 하드드라이브의 파티션을 보여준다.)

ex) fdisk -l 실행화면

 

이런 식으로, fdisk -l /dev/sda 를 하면 sda 하드 드라이브의 논리적 파티션들의 정보가 보여진다.

df -h 를 하게 되면 , /dev/sda 인 하드드라이브가 보이는 것이 아니라 sda1, sda2... 이런 파티션들의 정보가 보여진다. sda는 안 보인다.

2)  fdisk를 사용하여 LVM 타입으로 파티션을 생성한다.

# fdisk /dev/hdb

n 엔터 (새 파티션 추가)

-> p 엔터 (primary partition (1-4)) ; 주파티션이면 p, 확장파티션이면 e

-> 1 엔터 (파티션 넘버 입력)

-> 엔터 (First cylinder 1-1792, default 1:)

-> 엔터 (last cylinder)

-> t 엔터 (change a partition's system id)

-> l 엔터 (type L to list codes)

-> 8e (linux LVM이 8e다)

-> w 엔터 (write table to disk and exit)

# fdisk /dev/hdc , hdd 위와 동일하게 설정

3)  fdisk -l 하여 LVM 타입으로 파티션이 설정되었음을 확인

 

2. 물리볼륨 생성

1) pvcreate 로 물리볼륨을 생성

 

[root@localhost ~]# pvcreate /dev/hdb1

Physical volume "/dev/hdb1" successfully created

 

(윗단계에서 fdisk /dev/hdb 했으니깐... 이 디스크가 hdb1, hdb2 ... 이런 식으로 쪼개졌을 거란 말이지. 근데 위에선 그냥 한 디스크를 통으로 한 파티션으로 생성..한듯.)

 

[root@localhost ~]# pvcreate /dev/hdc1

[root@localhost ~]# pvcreate /dev/hdd1

 

2) pvdisplay하여 물리볼륨 확인

 

 

3. 볼륨그룹 설정

1) vgcreate 하여 볼륨그룹 설정 (위에서 생성했던 물리볼륨들을)

[root@localhost ~]# vgcreate myvg /dev/hdb1 /dev/hdc1 /dev/hdd1

               Volume group "myvg" successfully created

2) vgdisplay 하여 볼륨그룹을 확인

 

4. 논리볼륨 생성

1) lvcreate 하여 논리볼륨을 두 개 (하나는 7GB , 하나는 나머지 공간) 생성

  (여기서 소문자 l을 쓰면 pe 의 개수로 용량을 지정하게 된다. 상세  LVM 내용은 다음 포스트 참조.)

 

[root@localhost ~]# lvcreate -n dtlv -L 7GB myvg

Logical volume "dtlv" created

[root@localhost ~]# lvcreate -n bklv -l 100%FREE myvg

Logical volume "bklv" created

 

2) lvdisplay 하여 논리볼륨 확인

 

 

 

 

5. 파일시스템 포맷 및 마운트

 

이제서야 포맷을 하게 된다~!

 

1) 위에서 생성한 논리볼륨을 파일시스템 포맷

 

[root@localhost ~]# mkfs.ext3 /dev/myvg/dtlv

....

[root@localhost ~]# mkfs.ext3 /dev/myvg/bklv

 

2) 마운트

 

[root@localhost ~]# mkdir /mnt/data

[root@localhost ~]# mkdir /mnt/back

[root@localhost ~]# mount -t ext3 /dev/myvg/dtlv /mnt/data

[root@localhost ~]# mount -t ext3 /dev/myvg/bklv /mnt/back

 

3) df -l 하여 마운트 확인

 

4) 부팅 시 자동으로 디스크를 읽어줄 수 있게 fstab 설정

#vi /etc/fstab

/dev/myvg/dtlv         /mnt/data         ext3      defaults     0    0

 

 

fdisk 해서 나중에 -l 치면 나오는 애들은.... list known partition types 이다. 파일시스템 리스트가 아니라 파티션 타입~!

/proc/filesystems는 파일시스템 타입이고..

 

즉, 처음에 내가 가졌던 의문,

기본적으로 fdisk해서 만들었던 파티션들이 df -T 하면 나오는 파일시스템 타입에는 왜 ext3가 있느냐,

fdisk 해서 l로 치면 나오는 타입에는 ext3가 없는데?

라는 우문에는, 파티션 타입이라 다른거고..

기본적으로 fdisk로 해서 만든 파티션을 만든 후 반드시 포맷하고 마운트를 시켜야 한다.

나는 fdisk하면 바로 포맷이 되서 쓸 수 있는 건줄 착각하고 있었다....ㅋㅋ

 

 

+) 그런데 굳이 물리볼륨을 만들 필요 없이 바로 파티션을 볼륨그룹으로 묶을 순 없는건가?

왜 굳이 물리볼륨을 중간에 추가적으로 만들어서 (그냥 파티션을 그것도) 작업을 한번 더하는거지?..

 

 

+) dmc-emass 이관 작업시, cx4-80 스토리지의 디스크를 추가로 할당하여 붙여줄 ?,

스토리지 엔지니어가 미리 파티션까지 다 할당해놓았었다...

나는 이 때 파티션을 LVM  타입으로 만들어야 했는데 엔지니어가 말도 없이 그냥 리눅스 타입으로 해서 당황스러웠었다 ㅋㅋㅋ

LVM이 잘 생성되긴 했었는데...

그런데 fdisk -l 하면 파티션 테이블이 존재하지 않는다는 메시지가 뜬다.

나는 여튼 이미 엔지니어가 파티션까지 다 만들어버렸으니 바로 물리볼륨그룹 작업으로 들어갔었는데...



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

출처 : http://attiadmin.guyweb.co.kr/linux/lvm.html



1. LVM이란?
 (1) 개요: 리눅스 설치시나 하드디스크 추가시에 파티션이라는 것을 나누고 공간을 할당한다. 이 
          때 한번 설정한 공간을 고정이 되어 변경이나 추가가 불가능하다. LVM(Logical Volume 
          Manager)은 파티션을 원하는 대로 추가하거나 제거하고 그 크기도 조절할 수 있도록 
          해주는 방법이다.
 (2) 관련용어
   1) 물리적 볼륨(PV:Physical Volume): 실제로 나눈 파티션을 말한다. 즉 /dev/hda8, /dev/hdb1 등
                                      을 말한다. LVM에서는 이러한 물리적 볼륨을 하나의 구성원
                                      으로 받아 들이는 형식이다.
   2) 물리적 확장(PE:Physical Extents): 일종의 블럭같은 것으로 실제 데이터가 저장되는 공간을 
                                       말한다. 보통 1PE가 약 4MB정도 차지한다.
   3) 볼륨그룹(VG:Volume Group): 물리적 볼륨이 모여서 하나의 VG를 이룬다. 이것은 더 크게 말하
                                면 지정한 크기의 PE가 모여 생성되는 하나의 큰 덩어리라고 할 수
                                있다.
   4) 논리적볼륨(LV:Logical Volume): 이 논리적 볼륨이 우리가 흔히 쓰는 정규파티션과 같다. 실제
                                    만들어서 사용하는 것이 바로 이 LV이다.

2. LVM 설정하기
 (1) 설명: /dev/hda8(약 800MB)과 /dev/hda9(약 800MB)을 lvm이라는 볼륨그룹으로 생성하고 1.2GB는
          /data라는 디렉토리로 400MB는 /backup으로 구성해보자. 여기서 /data는 처음에 1GB로 
          할당하고 추가로 영역을 200MB 확장하는 형태로 구성한다.
 (2) 설정1 : 1000MB의 /data 로 구성
   1) fdisk를 이용하여 파티션 속성을 변경: fdisk /dev/hda 실행후에 t, 해당 파티션 선택, 8e, w 
                                          을 누르고 재부팅한다.
   2) 디스크에 있는 볼륨그룹을 검색하고 /etc/lvmtab 파일 생성
     [root@www root]# vgscan
   3) 물리적 볼륨(PV:Physical Volume) 생성
     [root@www root]# pvcreate /dev/hda8
     pvcreate -- physical volume "/dev/hda5" successfully created

     [root@www root]# pvcreate /dev/hda9
     pvcreate -- physical volume "/dev/hda8" successfully created
   4) 생성된 PV를 특정한 볼륨그룹(lvm)에 추가시킨다.
     [root@www root]# vgcreate lvm /dev/hda8 /dev/hda9
     vgcreate -- INFO: using default physical extent size 4 MB
     vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
     vgcreate -- doing automatic backup of volume group "lvm"
     vgcreate -- volume group "lvm" successfully created and activated
   5) 생성된 볼륨그룹 검사한다.
     [root@www root]# vgdisplay -v lvm
     --- Volume group ---
     VG Name               lvm
     VG Access             read/write
     VG Status             available/resizable
     VG #                  0
     MAX LV                256
     Cur LV                0
     Open LV               0
     MAX LV Size           255.99 GB
     Max PV                256
     Cur PV                2
     Act PV                2
     VG Size               1.66 GB
     PE Size               4 MB
     Total PE              424
     Alloc PE / Size       0 / 0
     Free  PE / Size       424 / 1.66 GB
     VG UUID               RBimFr-2W6o-O6Wr-E4Ox-egs1-z87V-cha1DA

     --- No logical volumes defined in "lvm" ---


     --- Physical volumes ---
     PV Name (#)           /dev/hda8 (1)
     PV Status             available / allocatable
     Total PE / Free PE    212 / 212

     PV Name (#)           /dev/hda9 (2)
     PV Status             available / allocatable
     Total PE / Free PE    212 / 212
   6) 논리적 볼륨(LV:Logical Volume) 생성
     [root@www root]# lvcreate -L 1000M -n data lvm
     lvcreate -- doing automatic backup of "data"
     lvcreate -- logical volume "/dev/lvm/data" successfully created
   7) LV생성확인
     [root@www root]# lvscan
     lvscan -- ACTIVE            "/dev/lvm/data" [1000 MB]
     lvscan -- 1 logical volumes with 1000 MB total in 1 volume group
     lvscan -- 1 active logical volumes
   8) VG 확인
     [root@www root]# vgdisplay -v lvm
     --- Volume group ---
     VG Name               lvm
     VG Access             read/write
     VG Status             available/resizable
     VG #                  0
     MAX LV                256
     Cur LV                1
     Open LV               0
     MAX LV Size           255.99 GB
     Max PV                256
     Cur PV                2
     Act PV                2
     VG Size               1.66 GB
     PE Size               4 MB
     Total PE              424
     Alloc PE / Size       250 / 1000 MB
     Free  PE / Size       174 / 696 MB
     VG UUID               RBimFr-2W6o-O6Wr-E4Ox-egs1-z87V-cha1DA

     --- Logical volume ---
     LV Name                /dev/lvm/data
     VG Name                data
     LV Write Access        read/write
     LV Status              available
     LV #                   1
     # open                 0
     LV Size                1000 MB
     Current LE             250
     Allocated LE           250
     Allocation             next free
     Read ahead sectors     1024
     Block device           58:0
     

     --- Physical volumes ---
     PV Name (#)           /dev/hda8 (1)
     PV Status             available / allocatable
     Total PE / Free PE    212 / 0

     PV Name (#)           /dev/hda9 (2)
     PV Status             available / allocatable
     Total PE / Free PE    212 / 174
      => 논리적 볼륨부분이 나타나고 물리적 볼륨에서 /dev/hda8은 모두 사용중인 것으로 나타난다.
   9) 파일시스템 생성
     [root@www root]# mkfs -t ext3 /dev/lvm/data
   10) 마운트하여 사용한다.
      [root@www root]# mount -t ext3 /dev/lvm/data /data
 (3) 참고
   1) 설명: LVM을 시스템 재부팅후에도 사용하려면 /etc/fstab파일에 등록하면 된다.
   2) 예
     /dev/lvm/data              /data                ext3    defaults        0 0
 (4) 설정2: /data 디렉토리 200MB 추가하기
   1) 설명: lvextend 명령을 이용하여 공간을 늘리고 lvscan명령으로 확인하도록 한다.
   2) 방법
    ㄱ. [root@www root]# lvextend -L +200M /dev/lvm/data
          => 기존의 용량에 추가로 200MB를 할당한다.
    ㄴ. [root@www root]# lvscan
 (5) 설정2: 남은 공간(약 400MB)를 /backup 디렉토리로 사용하기
   1) 설명: 남은 공간을 확인하려면 vgdisplay -v 명령을 내려서 Free PE값을 확인하고 해당 PE값을
           할당하는 것이 좋다. lvcreate 로 남은 PE값을 지정하고 Logical Volume을 생성한다.
   2) 방법
    ㄱ. [root@www root]# lvcreate -l 124 -n backup lvm
         => lvm이라는 볼륨그룹에 backup 이라는 Logical Volume을 생성하고 크기는 약 124PE
          (약 496MB)를 할당한다.
    ㄴ. [root@www root]# mkfs -t ext3 /dev/lvm/backup
         => 파일시스템을 생성한다.
    ㄷ. [root@www root]# mount -t ext3 /dev/lvm/backup /backup
         => 마운트하여 사용한다.

3. LVM 관련명령어
 (1) vgscan
   1) 설명: 디스크에 있는 볼륨그룹(VG:Volume Group)를 검색하여 /etc/lvmtab 파일을 생성한다. 
           fdisk를 이용하여 파티션을 속성을 LVM으로 지정한 후에 이 명령을 사용한다.
   2) 사용법
     vgscan
 (2) pvcreate
   1) 설명: 물리적 볼륨(PV:Physical Volume)을 생성하는 명령어이다. fdisk를 이용하여 파티션을 
           분할하고 LVM 속성으로 지정한 뒤에 해당 파티션을 PV로 만들 때 사용하는 명령이다.
   2) 사용법
     pvcreate 디바이스명
   3) 사용예
     pvcreate /dev/hdb1
 (3) vgcreate
   1) 설명: 볼륨그룹을 생성하는 명령어로 생성된 PV를 지정한 볼륨그룹에 포함시키면서 생성한다.
   2) 사용법
     vgcreate 볼륨그룹명 디바이스명 디바이스명
   3) 사용예
     vgcreate lvm /dev/hda7 /dev/hdb1
      => lvm 이라는 볼륨그룹을 생성하고 /dev/hda7, /dev/hdb1 이라는 PV를 포함시킨다.
 (4) vgdisplay
   1) 설명: 볼륨그룹의 속성과 정보를 보여주는 명령어이다.
   2) 사용법
     vgdisplay [option] [볼륨그룹명]
   3) option
     -v: 좀 더 자세히 보여주는 옵션으로 Volume Group이외에 gical Volume과 Physical Volume도
        같이 보여준다.
   4) 사용예
    ㄱ. [root@www root]# vgdisplay
         => Volume Group의 내용을 보여준다. 
    ㄴ. [root@www root]# vgdisplay -v lvm
         => lvm이라는 볼륨그룹의 내용을 자세히 보여준다.
 (5) lvcreate
   1) 설명: 볼륨그룹안에 LV(Logical Volume)을 생성하는 명령이다.
   2) 사용법
     lvcreate 옵션 볼륨그룹명
   3) option
     -L: LV의 사이즈를 지정하는 옵션으로 K(kilobytes), M(megabytes), G(gigabytes), T(terabyt
        es) 단위를 붙여 지정가능하다.
     -l: LV의 사이즈를 지정하는 옵션으로 pe의 개수로 용량을 지정한다. 참고로 보통 1pe당 4MB
        이다.
     -n: LV의 이름을 지정하는 옵션이다. 
   4) 사용예
    ㄱ. [root@www root]# lvcreate -L 2000M -n backup lvm
         => lvm이라는 볼륨그룹에 backup라는 이름으로 2Gigabytes 용량으로 LV을 생성한다.
    ㄴ. [root@www root]# lvcreate -l 250 -n data lvm
         => lvm이라는 볼륨그룹에 data라는 이름으로 250pe(약 1GB)용량으로 LV을 생성한다.
 (6) lvscan
   1) 설명: 디스크에 있는 Logical Volume을 찾아준다.
   2) 사용법
     lvscan [option]
   3) option
     -v: 정보를 자세히 보여준다.
   4) 사용예
     lvscan
 (7) lvdisplay
   1) 설명: Logical Volume의 정보를 보여준다.
   2) 사용법
     lvdisplay [option] LV명
   3) option
     -v: 정보를 자세히 보여준다.
   4) 사용예
     [root@www root]# lvdisplay -v /dev/lvm/data
       => /dev/lvm/data라는 LV의 정보를 자세히 보여준다.
 (8) vgextend
   1) 설명: 미리 생성된 Volume Group에 추가로 Phycical Volume을 추가할 때 사용한다.
   2) 사용법
     vgextend 볼륨그룹명 새PV명
   3) 사용예
     [root@www root]# vgextend lvm /dev/hdc1
       => lvm이라는 볼륨그룹에 /dev/hdc1을 추가한다.
 (9) vgreduce
   1) 설명: 볼륨그룹에 있는 Physical Volume을 삭제하는 명령이다.
   2) 사용법
     vgreduce 볼륨그룹명 PV명
   3) 사용예
     [root@www root]# vgreduce lvm /dev/hdc1
       => lvm이라는 볼륨그룹에서 /dev/hdc1을 삭제한다.
 (10) lvextend
   1) 설명: Logical Volume의 용량을 확장하는 명령이다.
   2) 사용법
     lvextend 옵션 [볼륨그룹명] LV명
   3) option
     -l +사이즈: 지정한 PE수만큼 용량을 늘린다.
     -L +사이즈[kmgt]: 지정한 사이즈만큼 용량을 늘린다. 단위를 표시하지 않으면 기본 Megabytes
                      단위이다.
   4) 사용예
     [root@www root]# lvextend -L +200M /dev/lvm/data
       => 기존의 용량에 추가로 200MB를 할당한다.
 (11) lvreduce
   1) 설명: Logical Volume의 용량을 줄이는 명령이다.
   2) 사용법
    lvreduce 옵션 [볼륨그룹병] LV명
   3) option
     -l -사이즈: 지정한 PE수만큼 용량을 줄인다.
     -L -사이즈: 지정한 사이즈만큼 용량을 줄인다. 단위를 표시하지 않으면 기본 단위는 Megabytes
                이다.
   4) 사용예
     [root@www root]# lvreduce -L -500 /dev/lvm/data
      => /dev/lvm/data의 용량을 500MB 줄인다.
 (12) vgchange
   1) 설명: 볼륨그룹을 속성을 변경하는 명령으로 볼륨그룹을 사용가능여부, 최대 LV 갯수등을 변경
           할 수 있다.
   2) 사용법
     vgchange 옵션 볼륨그룹명
   3) option
     -a y|n : 볼륨그룹의 사용여부를 지정한다.
     -l 갯수: 해당 볼륨그룹에 생성할 수 있는 최대 Logical Volume수를 지정한다.
   4) 사용예
    ㄱ. [root@www root]# vgchange -a y lvm
         => lvm이라는 볼륨그룹을 활성화시킨다.
    ㄴ. [root@www root]# vgchange -a n lvm
         => lvm이라는 볼륨그룹을 비활성화시킨다.
    ㄷ. [root@www root]# vgchange -l 100 lvm
         => lvm이라는 볼륨그룹을 최대 Logical Volume수를 100개로 지정한다.
 (13) vgremove 
   1) 설명: 볼륨그룹을 제거하는 명령이다.
   2) 사용법
     vgremove 볼륨그룹명
   3) 사용예
     [root@www root]# vgremove lvm
      => lvm이라는 볼륨그룹을 삭제한다.

- rename


To rename an existing logical volume, use the lvrename command.

Either of the following commands renames logical volume lvold in volume group vg02 to lvnew.

lvrename /dev/vg02/lvold /dev/vg02/lvnew
lvrename vg02 lvold lvnew

 

반응형
반응형

1. 출처 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/System_management/ZFS

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


1 ZFS

유닉스의 파일 시스템을 대체하기 위해서 SUN에서 개발한 파일 시스템으로 Solaris 10에 소개된다. 기능을 보면 알겠지만 단순한 파일 시스템으로 보기는 힘들다. 모든 잡다한 관리기능까지를 포함한 볼륨메니저로 봐야 한다. 예컨데 파일 시스템과 Logical Volume manager, snapshots, copy-on-write clones, continuous integrity checking, automatic repaire, 등 무슨 기능일지도 모를 것 같은 다양한 기능들을 가지고 있는 확장된 파일 시스템이다. ZFS를 써본 사람들은 지상 최대의 파일 시스템이라는 찬사를 보낸다. 정말 그러하다.

나는 Cloud 환경에서 신뢰성과 확장성, 성능과 관리성까지 두루 갖춘 만능 File System을 찾아보자라는 목적으로 살펴보게 됐다.

ZFS의 기능을 정리했다.
  1. Data Integrigy 다른 파일 시스템과 구분되는 가장 큰 특징이다. 디스크 상의 유저 데이터를 보호준다. bit rot, cosmic radiation, current spikes, bugs in disk firmware, ghost writes 등으로 부터 데이터를 보호해 준다. 물론 Ext, XFS, JFS, ReiserFS, NTFS 등도 유저 데이터를 보호하기 위한 기능을 가지고 있기는 하지만, ZFS는 이들 보다 탁월한 성능을 보여준다.
  2. Storage Pool LVM과 마찬가지로 하나 이상의 장치를 통합해서 관리할 수 있다. 이 논리적인 Storage Pool을 zpools라고 하며, block device 처럼 작동한다. 블럭 장치들은 다양한 레벨로 조합할 수 있습니다. non-redundantly (RAID 0과 비슷), mirror ( RAID 1과 비슷 ), RAID-Z (RAID-5와 비슷), RAID-Z2 (RAID-6와 비슷) 등등이다.
  3. Capacity : ZFS는 128-bit 파일 시스템으로 용량에는 제약기 없다고 보면 되겠다. 페타바이트급 파일시스템이라고 하는 이유가 있다.
    • 2^48 개의 독립된 디렉토리를 다룰 수 있다.
    • 파일의 최대크기는 16 exabytes ( 16 X 10^18)
    • zpool의 최대 크기는 256 zettabytes (2^78)
    • 시스템에서 zpools의 갯수는 2^64
    • zpools에서 파일 시스템의 갯수 2^64

2 Linux와 ZFS

Linux에 ZFS를 이식하기 위한 노력이 진행 중이다. 이식은 두 가지 방향으로 이루어지고 있다.
  1. native ZFS
    리눅스 커널이 ZFS를 지원하도록 하는 프로젝트
  2. zfs-fuse
    fuse를 이용해서 ZFS를 지원하도록 하는 프로젝트
아직까지는 Linux에서 마음놓고 사용할 만한 수준이 아닌 것 간다. zfs-fuse 같은 경우에는 성능에 문제가 상당히 있어서 zfs란 이런 거구나를 체험하기 위한 수준 정도에서나 사용할 수 있을 것 같다. . Native ZFS는 눈여겨 볼만하다. 꾸준히 개발하고 있는 것 같기는 한데, 언제쯤 1.0이 되서 믿고 쓸만한 날이 올지 모르겠다. 1년전에 0.6.x 버전이었는데, 지금(2013년 9월)도 0.6.x 버전이다.

2.1 zfs-fuse

  1. apt-get install zfs-fuse
  2. zpoll create mypool /dev/sdb /dev/sdc /dev/sdd /dev/sde
  3. zpool status mypool
  4. zfs create mypool/testzfs
  5. FS 성능 측정 : Bonnie++

3 Solaris와 ZFS

3.1 opensolaris 설치

솔라리스는 ZFS를 기본 파일 시스템으로 하고 있다. 이렇게 된거 x86기반의 opensolaris를 설치해서 ZFS를 경험해 보기로 했다. VirtualBox를 이용 해서 가상으로 올렸다.
  • hypervisor : VirtualBox VirtualBox 와 opensolaris 모두 Oracle에서 개발하고 있으니, 궁합이 잘 맞을 거란 생각이 든다.
  • OpenSolaris
설치는 윈도우보다 간단하다. 설치 과정은 생략.

솔라리스를 마지막으로 써본게 아마 9년전 쯤인것 같다. 2002년이던가 ? 당시만 해도 상당히 투박한(하지만 왠지 멋져 보이긴 했음) CDE 화면이었는데, 지금은 gnome이 뜬다. 예쁘다.

보낸 사람 Linux

3.2 zpool

논리적 볼륨 관리자의 핵심은 장치를 아우르는 하나의 pool을 만드는 거다. 이 pool을 zpool이라고 부른다.

테스트를 위해서 SATA 2G x 2 장치를 준비했다. 리눅스에서 하던 것처럼 fdisk -l로 장치를 확인하려고 했더니, 내가 원하는 그 fdisk가 아니다. format으로 장치를 확인할 수 있다.
# format
AVAILABLE DISK SELECTIONS:
       0. c7d0 <DEFAULT cyl 2085 alt 2 hd 255 sec 63>
          /pci@0,0/pci-ide@1,1/ide@0/cmdk@0,0
       1. c9t0d0 <ATA-VBOX HARDDISK-1.0-2.00GB>
          /pci@0,0/pci8086,2829@d/disk@0,0
       2. c9t1d0 <ATA-VBOX HARDDISK-1.0-2.00GB>
          /pci@0,0/pci8086,2829@d/disk@1,0

c9t0d0, c9t1d0을 tank라는 이름의 zpool로 묶기로 했다.
# zpool create tank c9t0d0 c9t1d0

제대로 만들어 졌는지 확인.
# zpool list
NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
rpool  15.9G  3.80G  12.1G    23%  ONLINE  -
tank   3.97G   232K  3.97G     0%  ONLINE  -

zfs로 파일 시스템에 대한 상세 정보를 확인.
# zfs list
NAME                         USED  AVAIL  REFER  MOUNTPOINT
rpool                       4.16G  11.5G  77.5K  /rpool
rpool/ROOT                  3.16G  11.5G    19K  legacy
rpool/ROOT/opensolaris      3.16G  11.5G  3.02G  /
rpool/dump                   511M  11.5G   511M  -
rpool/export                5.04M  11.5G    21K  /export
rpool/export/home           5.02M  11.5G    21K  /export/home
rpool/export/home/yundream     5M  11.5G     5M  /export/home/yundream
rpool/swap                   512M  11.8G   137M  -
tank                        74.5K  3.91G    19K  /tank

zfs는 디렉토리 형태로 pool을 관리할 수 있다. tank 밑에 music, movie, source 3개의 파일 시스템을 만들어 봤다.
# zfs create tank/music
# zfs create tank/movie
# zfs create tank/source
# zfs list
NAME                         USED  AVAIL  REFER  MOUNTPOINT
...
tank                         154K  3.91G    23K  /tank
tank/movie                    19K  3.91G    19K  /tank/movie
tank/music                    19K  3.91G    19K  /tank/music
tank/source                   19K  3.91G    19K  /tank/source
3개의 파일 시스템이 추가로 만들어지긴 했지만 volume을 모두 공유해서 사용하고 있다. 내 목적은 각 파일 시스템 별로 쿼터를 정하는 거다. /tank/movie를 1G를 사용하도록 쿼터를 할당했다.
# zfs set quota=1g tank/movie
# zfs list | grep tank
tank                         154K  3.91G    23K  /tank
tank/movie                    19K  1024M    19K  /tank/movie
tank/music                    19K  3.91G    19K  /tank/music
tank/source                   19K  3.91G    19K  /tank/source

# df -h /tank/movie
Filesystem            Size  Used Avail Use% Mounted on
tank/movie            1.0G   19K  1.0G   1% /tank/movie

3.3 mirror, RAIDZ, RAIDZ2

ZFS는 mirror와 RAIDZ, RAIDZ2 3가지 RAID 레벨을 지원한다. 10G SATA Disk 6개를 추가해서 각 모드별로 테스트를 진행했다.

RAIDZ와 RAIDZ2는 각각 RAID 5와 RAID 6와 매우 유사하다. 즉
  • RAIDZ : RAID 5 처럼 블럭 기반 striped 와 하나의 분산 parity 블럭을 가진다.
  • RAIDZ2 : RAID 6 처럼 블럭 기반 striped 와 두개의 분산 parity 블럭을 가진다.


4 Native ZFS on Linux

  • Native ZFS on Linux : 앞으로 오픈 솔라리스 대신 리눅스를 이용해서 zfs를 테스트할 계획이다.

5 Nexenta

Nexenta는 opensolaris 기반의 NAS/SAN어플라이언스 제품이다. 기업환경에서 ZFS를 이용해서 안정적으로 스토리지 시스템을 구성할 수 있도록 HA(High Availability cluster), Namespace Cluster, CLI및 GUI(웹 기반의) 인터페이스를 제공한다.

6 History

  1. 작성일 : 2011년 9월 6일
  2. 수정이력
    1. 작성 : 2011/9/6
    2. 2013-08-31 : 문장을 다듬었음. 링크 추가


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


zfs 파일 시스템의 관련 블로그들의 대부분은 

spl-0.6.0-rc6.tar.gz, zfs-0.6.0-rc6.tar.gz를 가이드했지만 내가 이 블로그를 쓰는 시점은 0.6.3을 받았다. 버전별로 리눅스 커널 지원이 다르다.

관련 패키지 정보는 ZFS 관련 공식 사이트인 아래 링크에 들어가서 받도록 하자.


http://zfsonlinux.org/


 


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

2. 출처 : http://blog.lovetonight.net/m/post/164


ZFS on Centos6

마성민 | 2013/04/19 11:37 | Linux 앱으로 보기

약 30TB 정도의 데이터 백업을 위해 백업 서버를 한대 구성하고 XFS로 포맷하고 데이터를 저장..

파일 개수가 약 1억개 정도 되다보니.. 데이터를 백업 하는 과정에서 계속 XFS 파티션이 깨지는 현상이 발생..

거기다 설상가상으로 서버이전이다 뭐다 해서 용량이 갑자기 10TB가 추가되어버린..

ㅠ_ㅠ 아.. 서버 재구성해야 하나.. 했는데..

 

이번기회에 ZFS로 가보자 하고 결정..

아래 내용은 Onenote에 정리해둔 내용을 옮겨적음..

 

[기본환경]

  • OS : CentOS release 6.3 (Final) 64Bit
  • Kernel : 2.6.32-279.19.1.el6.x86_64

 

[설치]

  • Linux 시스템에서 ZFS 사용하기 위해서는 Native ZFS 이용하는 방법과 ZFS-FUSE 이용하는 방법이 있으며, 각각의 방법에 따라 ZFS 버전이 달라질 있습니다.

 

  1. 먼저 ZFS 구성을 위해 기본적으로 필요한 항목들을 설치 합니다.

Shell > yum install kernel-devel zlib-devel libuuid-devel libblkid-devel libselinux-devel parted lsscsi

Native ZFS Kernel 모듈 방식으로 동작 하기 때문에 위와 같이 kernel-devel 반드시 설치해 주어야 합니다.

 

  1. ZFS패키지인 SPL ZFS 패키지를 다운로드 합니다.

다운로드는 http://www.zfsonlinux.org 에서 받을 있습니다.

 

  1. 다운로드한 패키지의 압축을 해제 설치를 진행 합니다.

# spl install

Shell > tar xvfz spl-0.6.0-rc13.tar.gz

Shell > cd spl-0.6.0-rc13

Shell > ./configure && make rpm

Shell > rpm -Uvh *.x86_64.rpm

Shell > cd ..

 

# zfs install

Shell > tar xvfz zfs-0.6.0-rc13.tar.gz

Shell > cd zfs-0.6.0-rc13

Shell > ./configure && make rpm

Shell> rpm -Uvh *.x86_64.rpm

Shell > cd ..

 

  1. 설치된 zfs 커널 모듈을 인식시켜 줍니다.

Shell > modprobe zfs

Shell > lsmod | grep -i zfs

 

  1. ZFS Spool 생성 합니다.

여기서 ZFS Spool 만들때 단일 디스크를 사용할 것인지 아니면 여러 개의 단일 디스크를 소프트웨어 레이드 방식으로 구성 것인지를 결정 있습니다. ZFS Spool 생성할 때에는 zpool 명령어를 사용하며, 해당 명령어에는 다양한 기능들이 포함되어 있으므로 자세한 내용은 공식 Document 참조하시기 바랍니다.

아래에서는 단일 디스크와 2 디스크를 미러링 하는 방법, 그리고 4 이상의 디스크를 Raid5 구성하는 방법을 설명 하겠습니다.

# EX : zpool [명령어] [옵션] spool

# CREATE EX : zpool create [-f|-n] [-o property=value] [-m mountpoint] pool vdev

 

# /dev/sdb 디스크를 backup 스풀로 생성하며, compress option 기본설정 하도록 한다.

Shell > zpool create -o compress=on backup disk /dev/sdb

 

# /dev/sdb 디스크와 /dev/sdc 디스크를 Backup 스풀로 생성하며, Raid1 구성 Compress option 설정 하도록 한다.

Shell > zpool create -o compress=on backup mirror /dev/sdb /dev/sdc

 

# /dev/sd[b-f] 디스크( 5) 4개를 Raid5 (Parity Disk 1)구성하고 나머지 1개의 디스크는 Hot Spare 구성을 Backup 스풀을 구성하고 /backup_spool 이라는 디렉토리에 마운트 되도록 한다.

Shell > zpool create -m /backup_spool backup raidz1 /dev/sdb /dev/sdc /dev/sdd /dev/sde spare /dev/sdf

 

  1. ZFS Spool ZFS 파일 시스템을 생성 합니다.

ZFS Spool 공간을 이용하여 파일시스템을 생성할 있으며, 각각의 파일시스템은 Spool 적용된 property Option 상속하게 됩니다.

# EX : zfs [명령어] [옵션]

# CREATE EX : zfs create [-p] [-o] filesystem

 

# backup 스풀의 공간을 이용하여 maildata 라는 파일시스템을 생성하고 자동 압축되지 않도록 구성 한다.

Shell > zfs create -o compress=off backup/maildata

 

# Backup 스풀의 공간을 이용하여 mysql 라는 파일시스템을 생성하고 자동압축되지 않으며, /data/mysql 마운트 되도록 한다.

Shell > zfs create -o compress=off -o mountpoint=/data/mysql backup/mysql

 

# Backup 스풀의 공간을 이용하여 user 라는 파일시스템을 생성하고 자동압축되며, 500GB 쿼터를 설정하고 /home/user 디렉토리에 마운트 되도록 한다.

Shell > zfs create -o compress=on -o mountpoint=/home/user -o quota=500GB backup/user

 

ZFS로 구성한 후 Compression 옵션 덕분에 실제 8TB 정도 되는 데이터는 5.6TB 정도로 압축되어 저장되었다는 후문이...

 

ZFS 사랑해요~!


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






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

출처 : https://github.com/zfsonlinux/pkg-zfs/wiki/HOWTO-install-Ubuntu-to-a-Native-ZFS-Root-Filesystem


HOWTO install Ubuntu to a Native ZFS Root Filesystem


Note: These instructions were originally created for older version of Ubuntu (12.04). Some required resource (e.g. grub ppa) is not available on newer versions, thus can lead to errors. If you use Ubuntu 14.04 or newer, see this page instead, which also allows things like raidz root, boot from snapshot, zfs-only setup (no need for separate /boot/grub), and lz4 compression.


These instructions are for Ubuntu. The procedure for Debian, Mint, or other distributions in the DEB family is similar but not identical.

System Requirements

  • 64-bit Ubuntu Live CD. (Not the alternate installer, and not the 32-bit installer!)
  • AMD64 or EM64T compatible computer. (ie: x86-64)
  • 8GB disk storage available.
  • 2GB memory minimum.

Computers that have less than 2GB of memory run ZFS slowly. 4GB of memory is recommended for normal performance in basic workloads. 16GB of memory is the recommended minimum for deduplication. Enabling deduplication is a permanent change that cannot be easily reverted.

Recommended Version

  • Ubuntu 12.04 Precise Pangolin
  • spl-0.6.3
  • zfs-0.6.3

Step 1: Prepare The Install Environment

1.1 Start the Ubuntu LiveCD and open a terminal at the desktop.

1.2 Input these commands at the terminal prompt:

$ sudo -i
# apt-add-repository --yes ppa:zfs-native/stable
# apt-get update
# apt-get install debootstrap spl-dkms zfs-dkms ubuntu-zfs

1.3 Check that the ZFS filesystem is installed and available:

# modprobe zfs
# dmesg | grep ZFS:
ZFS: Loaded module v0.6.3-2~trusty, ZFS pool version 5000, ZFS filesystem version 5

Step 2: Disk Partitioning

This tutorial intentionally recommends MBR partitioning. GPT can be used instead, but beware of UEFI firmware bugs.

2.1 Run your favorite disk partitioner, like parted or cfdisk, on the primary storage device. /dev/disk/by-id/scsi-SATA_disk1 is the example device used in this document.

2.2 Create a small MBR primary partition of at least 8 megabytes. 256mb may be more realistic, unless space is tight. /dev/disk/by-id/scsi-SATA_disk1-part1 is the example boot partition used in this document.

2.3 On this first small partition, set type=BE and enable the bootable flag.

2.4 Create a large partition of at least 4 gigabytes. /dev/disk/by-id/scsi-SATA_disk1-part2 is the example system partition used in this document.

2.5 On this second large partition, set type=BF and disable the bootable flag.

The partition table should look like this:

# fdisk -l /dev/disk/by-id/scsi-SATA_disk1

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device    Boot      Start         End      Blocks   Id  System
/dev/sda1    *          1           1        8001   be  Solaris boot
/dev/sda2               2        1305    10474380   bf  Solaris

Remember: Substitute scsi-SATA_disk1-part1 and scsi-SATA_disk1-part2 appropriately below.

Hints:

  • Are you doing this in a virtual machine? Is something in /dev/disk/by-id missing? Go read the troubleshooting section.
  • Recent GRUB releases assume that the /boot/grub/grubenv file is writable by the stage2 module. Until GRUB gets a ZFS write enhancement, the GRUB modules should be installed to a separate filesystem in a separate partition that is grub-writable.
  • If /boot/grub is in the ZFS filesystem, then GRUB will fail to boot with this message: error: sparse file not allowed. If you absolutely want only one filesystem, then remove the call to recordfail() in each grub.cfg menu stanza, and edit the /etc/grub.d/10_linux file to make the change permanent.
  • Alternatively, if /boot/grub is in the ZFS filesystem you can comment each line with the text save_env in the file /etc/grub.d/00_header and run update-grub.

Step 3: Disk Formatting

3.1 Format the small boot partition created by Step 2.2 as a filesystem that has stage1 GRUB support like this:

# mke2fs -m 0 -L /boot/grub -j /dev/disk/by-id/scsi-SATA_disk1-part1

3.2 Create the root pool on the larger partition:

# zpool create -o ashift=9 rpool /dev/disk/by-id/scsi-SATA_disk1-part2

Always use the long /dev/disk/by-id/* aliases with ZFS. Using the /dev/sd* device nodes directly can cause sporadic import failures, especially on systems that have more than one storage pool.

Warning: The grub2-1.99 package currently published in the PPA for Precise does not reliably handle a 4k block size, which is ashift=12.

Hints:

  • # ls -la /dev/disk/by-id will list the aliases.
  • The root pool can be a mirror. For example, zpool create -o ashift=9 rpool mirror /dev/disk/by-id/scsi-SATA_disk1-part2 /dev/disk/by-id/scsi-SATA_disk2-part2. Remember that the version and ashift matter for any pool that GRUB must read, and that these things are difficult to change after pool creation.
  • If you are using a mirror with a separate boot partition as described above, don't forget to edit the grub.cfg file on the second HD partition so that the "root=" partition refers to that partition on the second HD also; otherwise, if you lose the first disk, you won't be able to boot from the second because the kernel will keep trying to mount the root partition from the first disk.
  • The pool name is arbitrary. On systems that can automatically install to ZFS, the root pool is named "rpool" by default. Note that system recovery is easier if you choose a unique name instead of "rpool". Anything except "rpool" or "tank", like the hostname, would be a good choice.
  • If you want to create a mirror but only have one disk available now you can create the mirror using a sparse file as the second member then immediately off-line it so the mirror is in degraded mode. Later you can add another drive to the spool and ZFS will automatically sync them. The sparse file won't take up more than a few KB so it can be bigger than your running system. Just make sure to off-line the sparse file before writing to the pool.

3.2.1 Create a sparse file at least as big as the larger partition on your HDD:

# truncate -s 11g /tmp/sparsefile

3.2.2 Instead of the command in section 3.2 use this to create the mirror:

# zpool create -o ashift=9 rpool mirror /dev/disk/by-id/scsi-SATA_disk1-part2 /tmp/sparsefile

3.2.3 Offline the sparse file. You can delete it after this if you want.

# zpool offline rpool /tmp/sparsefile

3.2.4 Verify that the pool was created and is now degraded.

# zpool list
NAME       SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
rpool     10.5G   188K  10.5G     0%  1.00x  DEGRADED  -

3.3 Create a "ROOT" filesystem in the root pool:

# zfs create rpool/ROOT

3.4 Create a descendant filesystem for the Ubuntu system:

# zfs create rpool/ROOT/ubuntu-1

On Solaris systems, the root filesystem is cloned and the suffix is incremented for major system changes through pkg image-update or beadm. Similar functionality for APT is possible but currently unimplemented.

3.5 Dismount all ZFS filesystems.

# zfs umount -a

3.6 Set the mountpoint property on the root filesystem:

# zfs set mountpoint=/ rpool/ROOT/ubuntu-1

3.7 Set the bootfs property on the root pool.

# zpool set bootfs=rpool/ROOT/ubuntu-1 rpool

The boot loader uses these two properties to find and start the operating system. These property names are not arbitrary.

Hint: Putting rpool=MyPool or bootfs=MyPool/ROOT/system-1 on the kernel command line overrides the ZFS properties.

3.9 Export the pool:

# zpool export rpool

Don't skip this step. The system is put into an inconsistent state if this command fails or if you reboot at this point.

Step 4: System Installation

Remember: Substitute "rpool" for the name chosen in Step 3.2.

4.1 Import the pool:

# zpool import -d /dev/disk/by-id -R /mnt rpool

If this fails with "cannot import 'rpool': no such pool available", you can try import the pool without the device name eg:

    # zpool import -R /mnt rpool

4.2 Mount the small boot filesystem for GRUB that was created in step 3.1:

# mkdir -p /mnt/boot/grub
# mount /dev/disk/by-id/scsi-SATA_disk1-part1 /mnt/boot/grub

4.4 Install the minimal system:

# debootstrap trusty /mnt

The debootstrap command leaves the new system in an unconfigured state. In Step 5, we will only do the minimum amount of configuration necessary to make the new system runnable.

Step 5: System Configuration

5.1 Copy these files from the LiveCD environment to the new system:

# cp /etc/hostname /mnt/etc/
# cp /etc/hosts /mnt/etc/

5.2 The /mnt/etc/fstab file should be empty except for a comment. Add this line to the /mnt/etc/fstab file:

/dev/disk/by-id/scsi-SATA_disk1-part1  /boot/grub  auto  defaults  0  1

The regular Ubuntu desktop installer may add dev, proc, sys, or tmp lines to the /etc/fstab file, but such entries are redundant on a system that has a /lib/init/fstab file. Add them now if you want them.

5.3 Edit the /mnt/etc/network/interfaces file so that it contains something like this:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Customize this file if the new system is not a DHCP client on the LAN.

5.4 Make virtual filesystems in the LiveCD environment visible to the new system and chroot into it:

# mount --bind /dev  /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys  /mnt/sys
# chroot /mnt /bin/bash --login

5.5 Install PPA support in the chroot environment like this:

# locale-gen en_US.UTF-8
# apt-get update
# apt-get install ubuntu-minimal software-properties-common

Even if you prefer a non-English system language, always ensure that en_US.UTF-8 is available. The ubuntu-minimal package is required to use ZoL as packaged in the PPA.

5.6 Install ZFS in the chroot environment for the new system:

# apt-add-repository --yes ppa:zfs-native/stable
# apt-add-repository --yes ppa:zfs-native/grub
# apt-get update
# apt-get install --no-install-recommends linux-image-generic linux-headers-generic
# apt-get install ubuntu-zfs
# apt-get install grub2-common grub-pc
# apt-get install zfs-initramfs
# apt-get dist-upgrade

Warning: This is the second time that you must wait for the SPL and ZFS modules to compile. Do not try to skip this step by copying anything from the host environment into the chroot environment.

Note: This should install a kernel package and its headers, a patched mountall and dkms packages. Double-check that you are getting these packages from the PPA if you are deviating from these instructions in any way.

Choose /dev/disk/by-id/scsi-SATA_disk1 if prompted to install the MBR loader.

Ignore warnings that are caused by the chroot environment like:

  • Can not write log, openpty() failed (/dev/pts not mounted?)
  • df: Warning: cannot read table of mounted file systems
  • mtab is not present at /etc/mtab.

5.7 Set a root password on the new system:

# passwd root

Hint: If you want the ubuntu-desktop package, then install it after the first reboot. If you install it now, then it will start several process that must be manually stopped before dismount.

Step 6: GRUB Installation

Remember: All of Step 6 depends on Step 5.4 and must happen inside the chroot environment.

6.1 Verify that the ZFS root filesystem is recognized by GRUB:

# grub-probe /
zfs

And that the ZFS modules for GRUB are installed:

# ls /boot/grub/zfs*
/boot/grub/zfs.mod  /boot/grub/zfsinfo.mod

Note that after Ubuntu 13, these are now in /boot/grub/i386/pc/zfs*

# ls /boot/grub/i386-pc/zfs*
/boot/grub/i386-pc/zfs.mod  /boot/grub/i386-pc/zfsinfo.mod

Otherwise, check the troubleshooting notes for GRUB below.

6.2 Refresh the initrd files:

# update-initramfs -c -k all
update-initramfs: Generating /boot/initrd.img-3.2.0-40-generic

6.3 Update the boot configuration file:

# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-40-generic
Found initrd image: /boot/initrd.img-3.2.0-40-generic
done

Verify that boot=zfs appears in the boot configuration file:

# grep boot=zfs /boot/grub/grub.cfg
linux /ROOT/ubuntu-1/@/boot/vmlinuz-3.2.0-40-generic root=/dev/sda2 ro boot=zfs $bootfs quiet splash $vt_handoff
linux /ROOT/ubuntu-1/@/boot/vmlinuz-3.2.0-40-generic root=/dev/sda2 ro single nomodeset boot=zfs $bootfs

6.4 Install the boot loader to the MBR like this:

# grub-install $(readlink -f /dev/disk/by-id/scsi-SATA_disk1)
Installation finished. No error reported.

Do not reboot the computer until you get exactly that result message. Note that you are installing the loader to the whole disk, not a partition.

Note: The readlink is required because recent GRUB releases do not dereference symlinks.

Step 7: Cleanup and First Reboot

7.1 Exit from the chroot environment back to the LiveCD environment:

# exit

7.2 Run these commands in the LiveCD environment to dismount all filesystems:

# umount /mnt/boot/grub
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# zfs umount -a
# zpool export rpool

The zpool export command must succeed without being forced or the new system will fail to start.

7.3 We're done!

# reboot

Caveats and Known Problems

This is an experimental system configuration.

This document was first published in 2010 to demonstrate that the lzfs implementation made ZoL 0.5 feature complete. Upstream integration efforts began in 2012, and it will be at least a few more years before this kind of configuration is even minimally supported.

Gentoo, and its derivatives, are the only Linux distributions that are currently mainlining support for a ZoL root filesystem.

zpool.cache inconsistencies cause random pool import failures.

The /etc/zfs/zpool.cache file embedded in the initrd for each kernel image must be the same as the /etc/zfs/zpool.cache file in the regular system. Run update-initramfs -c -k all after any /sbin/zpool command changes the /etc/zfs/zpool.cache file.

Pools do not show up in /etc/zfs/zpool.cache when imported with the -R flag.

This will be a recurring problem until issue zfsonlinux/zfs#330 is resolved.

Every upgrade can break the system.

Ubuntu systems remove old dkms modules before installing new dkms modules. If the system crashes or restarts during a ZoL module upgrade, which is a failure window of several minutes, then the system becomes unbootable and must be rescued.

This will be a recurring problem until issue zfsonlinux/pkg-zfs#12 is resolved.

When doing an upgrade remotely an extra precaution would be to use screen, this way if you get disconnected your installation will not get interrupted.

Troubleshooting

(i) MPT2SAS

Most problem reports for this tutorial involve mpt2sas hardware that does slow asynchronous drive initialization, like some IBM M1015 or OEM-branded cards that have been flashed to the reference LSI firmware.

The basic problem is that disks on these controllers are not visible to the Linux kernel until after the regular system is started, and ZoL does not hotplug pool members. See https://github.com/zfsonlinux/zfs/issues/330.

Most LSI cards are perfectly compatible with ZoL, but there is no known fix if your card has this glitch. Please use different equipment until the mpt2sas incompatibility is diagnosed and fixed, or donate an affected part if you want solution sooner.

(ii) Areca

Systems that require the arcsas blob driver should add it to the /etc/initramfs-tools/modules file and run update-initramfs -c -k all.

Upgrade or downgrade the Areca driver if something like RIP: 0010:[<ffffffff8101b316>] [<ffffffff8101b316>] native_read_tsc+0x6/0x20 appears anywhere in kernel log. ZoL is unstable on systems that emit this error message.

(iii) GRUB Installation

Verify that the PPA for the ZFS enhanced GRUB is installed:

# apt-add-repository ppa:zfs-native/grub
# apt-get update

Reinstall the zfs-grub package, which is an alias for a patched grub-common package:

# apt-get install --reinstall zfs-grub

Afterwards, this should happen:

# apt-cache search zfs-grub
grub-common - GRand Unified Bootloader (common files)

# apt-cache show zfs-grub
N: Can't select versions from package 'zfs-grub' as it is purely virtual
N: No packages found

# apt-cache policy grub-common zfs-grub
grub-common:
 Installed: 1.99-21ubuntu3.9+zfs1~precise1
 Candidate: 1.99-21ubuntu3.9+zfs1~precise1
 Version table:
*** 1.99-21ubuntu3.9+zfs1~precise1 0
      1001 http://ppa.launchpad.net/zfs-native/grub/ubuntu/precise/main amd64 Packages
       100 /var/lib/dpkg/status
    1.99-21ubuntu3 0
      1001 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
zfs-grub:
 Installed: (none)
 Candidate: (none)
 Version table:

For safety, grub modules are never updated by the packaging system after initial installation. Manually refresh them by doing this:

# cp /usr/lib/grub/i386-pc/*.mod /boot/grub/

If the problem persists, then open a bug report and attach the entire output of those apt-get commands.

Packages in the GRUB PPA are compiled against the stable PPA. Systems that run the daily PPA may experience failures if the ZoL library interface changes.

Note that GRUB does not currently dereference symbolic links in a ZFS filesystem, so you cannot use the /vmlinux or /initrd.img symlinks as GRUB command arguments.

(iv) GRUB does not support ZFS Compression

If the /boot hierarchy is in ZFS, then that pool should not be compressed. The grub packages for Ubuntu are usually incapable of loading a kernel image or initrd from a compressed dataset.

(v) VMware

  • Set disk.EnableUUID = "TRUE" in the vmx file or vsphere configuration. Doing this ensures that /dev/disk aliases are created in the guest.

(vi) QEMU/KVM/XEN

  • In the /etc/default/grub file, enable the GRUB_TERMINAL=console line and remove the splash option from the GRUB_CMDLINE_LINUX_DEFAULT line. Plymouth can cause boot errors in these virtual environments that are difficult to diagnose.

  • Set a unique serial number on each virtual disk. (eg: -drive if=none,id=disk1,file=disk1.qcow2,serial=1234567890)

(vii) Kernel Parameters

The zfs-initramfs package requires that boot=zfs always be on the kernel command line. If the boot=zfs parameter is not set, then the init process skips the ZFS routine entirely. This behavior is for safety; it makes the casual installation of the zfs-initramfs package unlikely to break a working system.

ZFS properties can be overridden on the the kernel command line with rpool and bootfs arguments. For example, at the GRUB prompt:

linux /ROOT/ubuntu-1/@/boot/vmlinuz-3.0.0-15-generic boot=zfs rpool=AltPool bootfs=AltPool/ROOT/foobar-3

(viii) System Recovery

If the system randomly fails to import the root filesystem pool, then do this at the initramfs recovery prompt:

# zpool export rpool
: now export all other pools too
# zpool import -d /dev/disk/by-id -f -N rpool
: now import all other pools too
# mount -t zfs -o zfsutil rpool/ROOT/ubuntu-1 /root
: do not mount any other filesystem
# cp /etc/zfs/zpool.cache /root/etc/zfs/zpool.cache
# exit

This refreshes the /etc/zfs/zpool.cache file. The zpool command emits spurious error messages regarding missing or corrupt vdevs if the zpool.cache file is stale or otherwise incorrect.



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

출처 : http://www.oracle.com/technetwork/articles/servers-storage-admin/howto-build-openstack-zfs-2248817.html



About OpenStack in Oracle Solaris 11

Want to comment on this article? Post the link on Facebook's OTN Garage page.  Have a similar article to share? Bring it up on Facebook or Twitter and let's discuss.

OpenStack, a popular open source project that provides cloud management infrastructure, is integrated into Oracle Solaris 11.2. OpenStack storage features include Cinder for block storage access (see Figure 1) and Swift for object storage that also provides redundancy and replication.

ZFS, a file system that integrates volume management features, provides a simple interface for managing large amounts data. It has a robust set of data services and also supports a variety of storage protocols.

Cinder provisions a ZFS block device or a volume for your project (or tenant) instances. An Oracle Solaris Kernel Zone or a non-global zone is created and deployed for each project instance. After you create a deployable image of the zone and launch an instance of the zone image, Cinder allocates a ZFS volume to contain the instance's image as the guest's root device.

Oracle Solaris 11.2 provides additional Cinder drivers to provision the following devices:

  • iSCSI targets from a pool on a Cinder volume node
  • FC LUNs as block devices
  • iSCSI targets from an Oracle ZFS Storage Appliance

However, using these features is beyond the scope of this article.

A good way to get started with OpenStack is to run a small, all-in-one configuration where all OpenStack services are enabled, along with the Cinder volume service on the same system node, and to use ZFS as the back-end storage.

ZFS provides robust redundancy and doesn't need any special software or hardware arrays to provide data redundancy. ZFS is simple to configure and manage.

This article describes cloud storage practices for deploying a cloud infrastructure environment on Oracle Solaris and using Cinder to provide block storage devices as ZFS volumes on the same system.

This article does not describe how to set up OpenStack. For information on setting up OpenStack, see "Getting Started with OpenStack on Oracle Solaris 11.2."

Figure 1. Diagram of OpenStack Cinder Block Storage Service

Figure 1. Diagram of OpenStack Cinder Block Storage Service

OpenStack Block Storage Prerequisites and Deployment Process

The prerequisites require that Oracle Solaris 11.2 OpenStack already be running on a single SPARC or x86 system as the compute node that runs the primary OpenStack services and has multiple local or SAN-based devices.

The components of the configuration include the following:

  • Compute node (Nova): The system node where zones for tenant or project instances are managed, but zones are not installed as part of the process described in this article. The Cinder volume service runs on this node as well.
  • Volume service (Cinder): The location where the Cinder volume service allocates ZFS volumes for tenant or project instances, which is customized in this article.
  • User authorization (Keystone): Both admin and tenant user names and passwords must already have been created and can be provided to Keystone, the authentication service.

The following general steps describe how to customize a single system that runs OpenStack services and runs the Cinder volume service to deploy ZFS volumes. Data redundancy is configured and ZFS compression and encryption can also be added in this configuration.

The remaining sections of this article describe these steps in detail.

Create the ZFS Components

Oracle Solaris runs on a ZFS storage pool that is typically called rpool. This usually small pool is not an ideal environment for hosting a cloud infrastructure, because it contains the Oracle Solaris components that run the system.

A general recommendation is to keep your root pool (rpool) small and host your application, user, and cloud data in a separate pool. Mirrored pool configurations perform best for most workloads.

The following steps describe how to configure the components shown in Figure 2: a mirrored ZFS storage pool (tank), the primary file system (cinder), and the ZFS volumes that will contain the tenant (or project) cloud instances.

Figure 2. A Mirrored ZFS Storage Pool with File System Components

Figure 2. A Mirrored ZFS Storage Pool with File System Components

  1. Create a separate, mirrored ZFS storage pool that provides data redundancy and also configures two spares.

    The following example creates a mirrored storage pool called tank that contains two pairs of mirrored disks and two spare disks:

    # zpool create tank mirror c0t5000C500335F4C7Fd0 \
    c0t5000C500335F7DABd0 mirror c0t5000C500335FC6F3d0 \
    c0t5000C500336084C3d0 spare c0t5000C500335E2F03d0 \
    c0t50015179594B6F52d0
    

    Size the mirrored storage pool according to your estimated cloud data needs. You can always add another mirrored pair of devices to your mirrored ZFS storage pool if you need more space.

    For more information about ZFS administration syntax, see Managing ZFS File Systems in Oracle Solaris 11.2.

    Review your pool's current status:

    # zpool status tank
    

    Identify the pool's raw available space:

    # zpool list tank
    
  2. Create a ZFS file system:

    Note: If you want to use encryption to secure your cloud data, encryption must be enabled (as described below) when the ZFS file system is created. For more information about ZFS encryption and other encryption key methods besides being prompted for a passphrase, see see Managing ZFS File Systems in Oracle Solaris 11.2.

    # zfs create tank/cinder
    

    Review the actual available space that is available to your file system:

    # zfs list -r tank/cinder
    

    Frequently review the space available for your ZFS volumes by monitoring the USED space and the AVAIL space.

    If you want to conserve disk space, enable compression on the tank/cinder file system. ZFS volumes that are allocated for project instances are automatically compressed.

    # zfs set compression=on tank/cinder
    

    If you want to secure your cloud data, consider enabling encryption.

    # zfs create -o encryption=on tank/cinder
    Enter passphrase for 'tank/cinder': xxxxxxxx
    Enter again: xxxxxxxx
    

Customize the Cinder Storage Location

  1. Modify the zfs_volume_base parameter in /etc/cinder/cinder.conf to identify an alternate pool/file-system.

    For example, change this line:

    # zfs_volume_base = rpool/cinder 
    

    To this:

    # zfs_volume_base = tank/cinder
    
  2. Refresh the Cinder volume services:

    # svcadm restart svc:/application/openstack/cinder/cinder-volume:setup
    # svcadm restart svc:/application/openstack/cinder/cinder-volume:default
    

Test Your Cinder Configuration

  1. Set the authentication environment variables:

    Cinder expects the following Keystone authorization parameters to be presented as options on the command line, or you can set them as environment variables.

    # export OS_AUTH_URL=http://localhost:5000/v2.0 
    # export OS_USERNAME=admin-user-name 
    # export OS_PASSWORD=password 
    # export OS_TENANT_NAME=tenant-user-name 
    
  2. Create a 1-GB test volume:

    # cinder create --display_name test 1
    +---------------------+--------------------------------------+
    |       Property      |                Value                 |
    +---------------------+--------------------------------------+
    |     attachments     |                  []                  |
    |  availability_zone  |                 nova                 |
    |       bootable      |                false                 |
    |      created_at     |      2014-07-17T20:19:33.423744      |
    | display_description |                 None                 |
    |     display_name    |                 test                 |
    |          id         | 258d80e9-2ef3-eab8-fbea-96a4d176360d |
    |       metadata      |                  {}                  |
    |         size        |                  1                   |
    |     snapshot_id     |                 None                 |
    |     source_volid    |                 None                 |
    |        status       |               creating               |
    |     volume_type     |                 None                 |
    +---------------------+--------------------------------------+
    
  3. After you create a Cinder volume, confirm that it is created and the space is consumed:

    # zfs list -r tank/cinder
    NAME                             USED  AVAIL REFER MOUNTPOINT
    tank/cinder                      1.03G 547G  31K  /tank/cinder
    tank/cinder/volume-258d80e9-...  1.03G  546G 16K  -
    

    You can also confirm that the volume is visible from OpenStack's Horizon interface. When you launch a project instance through Horizon, a new Cinder volume is created automatically, so you can remove the test volume from the Horizon->volume menu by using the Delete Volume feature.

(Optional) Perform Additional Cinder Configuration Customization

The following are additional customizations you can do:

  • Monitor your ZFS pool for disk failures by setting up smtp-notify alert notifications.
  • Use ZFS snapshots to replicate ZFS volumes.
  • Create a separate archive pool with ZFS compression enabled to reduce the storage footprint when archiving tenant data.

For more information, see Managing ZFS File Systems in Oracle Solaris 11.2.

Summary

A redundant ZFS storage pool that is serving Cinder volumes for OpenStack can be hosted on any local or SAN storage to provide cloud data protection. You can also apply robust data services, such as encryption for data security or compression for data reduction, to your cloud storage.

See Also

The ZFS blog.



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




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

출처 : https://wiki.archlinux.org/index.php/Installing_Arch_Linux_on_ZFS


Installing ZFS on a CentOS 6 Linux server

As most of my long term readers know I am a huge Solaris fan. How can’t you love an Operating System that comes with ZFS, DTrace, Zones, FMA and Network Virtualization amongst other things? I use Linux during my day job, and I’ve been hoping for quite some time that Oracle would port one or more of these technologies to Linux. Well the first salvo has been fired, though it wasn’t from Oracle. It comes by way of the ZFS on Linux project, which is an in-kernel implementation of ZFS (this project is different from the FUSE ZFS port).

I had some free time this weekend to play around with ZFS on Linux, and my initial impressions are quite positive. The port on Linux is based on the latest version of ZFS that is part of OpenSolaris (version 28), so things like snapshots, de-duplication, improved performance and ZFS send and recv are available out of the box. There are a few missing items, but from what I can tell from the documentation there is plenty more coming.

The ZFS file system for Linux comes as source code, which you build into loadable kernel modules (this is how they get around the license incompatibilities). The implementation also contains the userland utilities (zfs, zpool, etc.) most Solaris admins are used to, and they act just like their Solaris counterparts! Nice!

My testing occurred on a CentOS 6 machine, specifically 6.2:

$ cat /etc/redhat-release
CentOS release 6.2 (Final)

The build process is quite easy. Prior to compiling source code you will need to install a few dependencies:

$ yum install kernel-devel zlib-devel libuuid-devel libblkid-devel libselinux-devel parted lsscsi

Once these are installed you can retrieve and build spl and zfs packages:

$ wget http://github.com/downloads/zfsonlinux/spl/spl-0.6.0-rc6.tar.gz

$ tar xfvz spl-0.6.0-rc6.tar.gz && cd spl*6

$ ./configure && make rpm

$ rpm -Uvh *.x86_64.rpm

Preparing...                ########################################### [100%]
   1:spl-modules-devel      ########################################### [ 33%]
   2:spl-modules            ########################################### [ 67%]
   3:spl                    ########################################### [100%]

$ wget http://github.com/downloads/zfsonlinux/zfs/zfs-0.6.0-rc6.tar.gz

$ tar xfvz zfs-0.6.0-rc6.tar.gz && cd zfs*6

$ ./configure && make rpm

$ rpm -Uvh *.x86_64.rpm

Preparing...                ########################################### [100%]
   1:zfs-test               ########################################### [ 17%]
   2:zfs-modules-devel      ########################################### [ 33%]
   3:zfs-modules            ########################################### [ 50%]
   4:zfs-dracut             ########################################### [ 67%]
   5:zfs-devel              ########################################### [ 83%]
   6:zfs                    ########################################### [100%]

If everything went as planned you now have the ZFS kernel modules and userland utilities installed! To begin using ZFS you will first need to load the kernel modules with modprobe:

$ modprobe zfs

To verify the module loaded you can tail /var/log/messages:

Feb 12 17:54:27 centos6 kernel: SPL: Loaded module v0.6.0, using hostid 0x00000000
Feb 12 17:54:27 centos6 kernel: zunicode: module license 'CDDL' taints kernel.
Feb 12 17:54:27 centos6 kernel: Disabling lock debugging due to kernel taint
Feb 12 17:54:27 centos6 kernel: ZFS: Loaded module v0.6.0, ZFS pool version 28, ZFS filesystem version 5

And run lsmod to verify they are there:

$ lsmod | grep -i zfs

zfs                  1038053  0 
zcommon                42478  1 zfs
znvpair                47487  2 zfs,zcommon
zavl                    6925  1 zfs
zunicode              323120  1 zfs
spl                   210887  5 zfs,zcommon,znvpair,zavl,zunicode

To create our first pool we can use the zpool utilities create option:

$ zpool create mysqlpool mirror sdb sdc

The example above created a mirrored pool out of the sdb and sdc block devices. We can see this layout in the output of `zpool status`:

$ zpool status -v

  pool: mysqlpool
 state: ONLINE
 scan: none requested
config:

	NAME        STATE     READ WRITE CKSUM
	mysqlpool   ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    sdb     ONLINE       0     0     0
	    sdc     ONLINE       0     0     0

errors: No known data errors

Awesome! Since we are at pool version 28 lets disable atime updates and enable compression and deduplication:

$ zfs set compression=on mysqlpool

$ zfs set dedup=on mysqlpool

$ zfs set atime=off mysqlpool

For a somewhat real world test, I stopped one of my MySQL slaves, mounted the pool on /var/lib/mysql, synchronized the previous data over to the ZFS file system and then started MySQL. No errors to report, and MySQL is working just fine. Next up, I trash one side of the mirror and verified that resilvering works:

$ dd if=/dev/zero of=/dev/sdb

$ zpool scrub mysqlpool

I let this run for a few minutes then ran `zpool status` to verify the scrub fixed everything:

$ zpool status -v

  pool: mysqlpool
 state: ONLINE
status: One or more devices has experienced an unrecoverable error.  An
	attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
	using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-9P
 scan: scrub repaired 966K in 0h0m with 0 errors on Sun Feb 12 18:54:51 2012
config:

	NAME        STATE     READ WRITE CKSUM
	mysqlpool   ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    sdb     ONLINE       0     0   175
	    sdc     ONLINE       0     0     0

I beat on the pool pretty good and didn’t encounter any hangs or kernel oopses. The file systems port is still in its infancy, so I won’t be trusting it with production data quite yet. Hopefully it will mature in the coming months, and if we’re lucky maybe one of the major distributions will begin including it! That would be killer!!



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


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

출처 : http://prefetch.net/blog/index.php/2012/02/13/installing-zfs-on-a-centos-6-linux-server/



Installing Arch Linux on ZFS


This article details the steps required to install Arch Linux onto a root ZFS filesystem. This article supplements the Beginners' guide.

Installation

See ZFS#Installation for installing the ZFS packages. If installing Arch Linux onto ZFS from the archiso, it would be easier to use the demz-repo-archiso repository.

Embedding archzfs into archiso

See ZFS article.

Partition the destination drive

Review Beginners' guide#Prepare_the_storage_drive for information on determining the partition table type to use for ZFS. ZFS supports GPT and MBR partition tables.

ZFS manages its own partitions, so only a basic partition table scheme is required. The partition that will contain the ZFS filesystem should be of the type bf00, or "Solaris Root".

Partition scheme

Here is an example, using MBR, of a basic partition scheme that could be employed for your ZFS root setup:

Part     Size   Type
----     ----   -------------------------
   1     512M   Ext boot partition (8300)
   2     XXXG   Solaris Root (bf00)

Here is an example using GPT. The BIOS boot partition contains the bootloader.

Part     Size   Type
----     ----   -------------------------
   1       2M   BIOS boot partition (ef02)
   1     512M   Ext boot partition (8300)
   2     XXXG   Solaris Root (bf00)

An additional partition may be required depending on your hardware and chosen bootloader. Consult Beginners' guide#Install_and_configure_a_bootloader for more info.

Tip: Bootloaders with support for ZFS are described in #Install and configure the bootloader.
Warning: Several GRUB bugs (bug #42861, zfsonlinux/grub/issues/5) prevent or complicate installing it on ZFS partitions, use of a separate boot partition is recommended

Format the destination disk

Format the boot partition as well as any other system partitions. Do not do anything to the Solaris partition nor to the BIOS boot partition. ZFS will manage the first, and your bootloader the second.

Setup the ZFS filesystem

First, make sure the ZFS modules are loaded,

# modprobe zfs

Create the root zpool

# zpool create zroot /dev/disk/by-id/id-to-partition
Warning: Always use id names when working with ZFS, otherwise import errors will occur.

Create necessary filesystems

If so desired, sub-filesystem mount points such as /home and /root can be created with the following commands:

# zfs create zroot/home -o mountpoint=/home
# zfs create zroot/root -o mountpoint=/root

Note that if you want to use other datasets for system directories (/var or /etc included) your system will not boot unless they are listed in /etc/fstab! We will address that at the appropriate time in this tutorial.

Swap partition

See ZFS#Swap volume.

Configure the root filesystem

First, set the mount point of the root filesystem:

# zfs set mountpoint=/ zroot

and optionally, any sub-filesystems:

# zfs set mountpoint=/home zroot/home
# zfs set mountpoint=/root zroot/root

and if you have seperate datasets for system directories (ie /var or /usr)

# zfs set mountpoint=legacy zroot/usr
# zfs set mountpoint=legacy zroot/var

and put them in /etc/fstab

/etc/fstab
# <file system>        <dir>         <type>    <options>             <dump> <pass>
zroot/usr              /usr          zfs       defaults,noatime      0      0
zroot/var              /var          zfs       defaults,noatime      0      0

Set the bootfs property on the descendant root filesystem so the boot loader knows where to find the operating system.

# zpool set bootfs=zroot zroot

Export the pool,

# zpool export zroot
Warning: Do not skip this, otherwise you will be required to use -f when importing your pools. This unloads the imported pool.
Note: This might fail if you added a swap partition above. Need to turn it off with the swapoff command.

Finally, re-import the pool,

# zpool import -d /dev/disk/by-id -R /mnt zroot
Note: -d is not the actual device id, but the /dev/by-id directory containing the symbolic links.

If there is an error in this step, you can export the pool to redo the command. The ZFS filesystem is now ready to use.

Be sure to bring the zpool.cache file into your new system. This is required later for the ZFS daemon to start.

# cp /etc/zfs/zpool.cache /mnt/etc/zfs/zpool.cache

if you don't have /etc/zfs/zpool.cache, create it:

# zpool set cachefile=/etc/zfs/zpool.cache zroot

Install and configure Arch Linux

Follow the following steps using the Beginners' guide. It will be noted where special consideration must be taken for ZFSonLinux.

  • First mount any boot or system partitions using the mount command.
  • Install the base system.
  • The procedure described in Beginners' guide#Generate an fstab is usually overkill for ZFS. ZFS usually auto mounts its own partitions, so we do not need ZFS partitions in fstab file, unless the user made datasets of system directories. To generate the fstab for filesystems, use:
# genfstab -U -p /mnt | grep boot >> /mnt/etc/fstab
  • Edit the /etc/fstab:
Note:
  • If you chose to create datasets for system directories, keep them in this fstab! Comment out the lines for the '/, /root, and /home mountpoints, rather than deleting them. You may need those UUIDs later if something goes wrong.
  • Anyone who just stuck with the guide's directions can delete everything except for the swap file and the boot/EFI partition. It seems convention to replace the swap's uuid with /dev/zvol/zroot/swap.
  • When creating the initial ramdisk, first edit /etc/mkinitcpio.conf and add zfs before filesystems. Also, move keyboard hook before zfs so you can type in console if something goes wrong. You may also remove fsck (if you are not using Ext3 or Ext4). Your HOOKS line should look something like this:
HOOKS="base udev autodetect modconf block keyboard zfs filesystems"
  • Regenerate the initramfs with the command:
# mkinitcpio -p linux

Install and configure the bootloader

For BIOS motherboards

Follow GRUB#BIOS_systems_2 to install GRUB onto your disk. grub-mkconfig does not properly detect the ZFS filesystem, so it is necessary to edit grub.cfg manually:

/boot/grub/grub.cfg
set timeout=2
set default=0

# (0) Arch Linux
menuentry "Arch Linux" {
    set root=(hd0,msdos1)
    linux /vmlinuz-linux zfs=zroot rw
    initrd /initramfs-linux.img
}

if you did not create a separate /boot participation, kernel and initrd paths have to be in the following format:

 /dataset/@/actual/path  

Example:

   linux /@/boot/vmlinuz-linux zfs=zroot rw
   initrd /@/boot/initramfs-linux.img

For UEFI motherboards

Use EFISTUB and rEFInd for the UEFI boot loader. See Beginners' guide#For UEFI motherboards. The kernel parameters in refind_linux.conf for ZFS should include zfs=bootfs or zfs=zroot so the system can boot from ZFS. The root and rootfstype parameters are not needed.

Unmount and restart

We are almost done!

# exit
# umount /mnt/boot
# zfs umount -a
# zpool export zroot

Now reboot.

Warning: If you do not properly export the zpool, the pool will refuse to import in the ramdisk environment and you will be stuck at the busybox terminal.

After the first boot

If everything went fine up to this point, your system will boot. Once. For your system to be able to reboot without issues, you need to enable the zfs.target to auto mount the pools and set the hostid.

For each pool you want automatically mounted execute:

# zpool set cachefile=/etc/zfs/zpool.cache <pool>

Enable the target with systemd:

# systemctl enable zfs.target

When running ZFS on root, the machine's hostid will not be available at the time of mounting the root filesystem. There are two solutions to this. You can either place your spl hostid in the kernel parameters in your boot loader. For example, adding spl.spl_hostid=0x00bab10c, to get your number use the hostid command.

The other, and suggested, solution is to make sure that there is a hostid in /etc/hostid, and then regenerate the initramfs image. Which will copy the hostid into the initramfs image. To do write the hostid file safely you need to use a small C program:

#include <stdio.h>
#include <errno.h>
#include <unistd.h>

int main() {
    int res;
    res = sethostid(gethostid());
    if (res != 0) {
        switch (errno) {
            case EACCES:
            fprintf(stderr, "Error! No permission to write the"
                         " file used to store the host ID.\n"
                         "Are you root?\n");
            break;
            case EPERM:
            fprintf(stderr, "Error! The calling process's effective"
                            " user or group ID is not the same as"
                            " its corresponding real ID.\n");
            break;
            default:
            fprintf(stderr, "Unknown error.\n");
        }
        return 1;
    }
    return 0;
}

Copy it, save it as writehostid.c and compile it with gcc -o writehostid writehostid.c, finally execute it and regenerate the initramfs image:

# ./writehostid
# mkinitcpio -p linux

You can now delete the two files writehostid.c and writehostid. Your system should work and reboot properly now. 


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





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

출처 : http://blog.boxcorea.com/wp/archives/129



오랫동안 사용하던 E450이 문제가 있어서 수리를 하면서, 그동안 사용하던 solaris9를 solaris10으로 다시 설치했다. disksuit로 구성을 하려다가 오래전에 본 비디오가 생각나서 zfs로 구성을 해 보기로 했다.

개념은 굉장히 간단하며, 사용방법 또한 metadb를 구성하는 것보다 간단하다. 하지만, 아직 확실한 개념 정립이 되지 않아서…

사용하는 디스크는 모두 6개로, 9GB 3개와 18GB 3개다. 9GB 1개는 OS를 설치했고, 나머지는 모두 사용하지 않는 상태다. 디스크는 아래와 같다

bash-3.00# format
Searching for disks…done
AVAILABLE DISK SELECTIONS:
0. c0t0d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>
/pci@1f,4000/scsi@3/sd@0,0
1. c0t1d0 <FUJITSU-MAE3091L SUN9.0G-0706-8.43GB>
/pci@1f,4000/scsi@3/sd@1,0
2. c0t2d0 <IBM-DDRS39130SUN9.0G-S98E-8.43GB>
/pci@1f,4000/scsi@3/sd@2,0
3. c2t0d0 <FUJITSU-MAG3182L SUN18G-1111-16.87GB>
/pci@1f,4000/scsi@4/sd@0,0
4. c3t2d0 <SEAGATE-ST318203LSUN18G-034A-16.87GB>
/pci@1f,4000/scsi@4,1/sd@2,0
5. c3t3d0 <SEAGATE-ST318203LC-0002-16.96GB>
/pci@1f,4000/scsi@4,1/sd@3,0
Specify disk (enter its number):

먼저, zpool을 사용하여 디스크 풀(이름은 fox_pool로 했다)을 만든다. (18GB 짜리 3개)

#zpool create fox_pool c2t0d0 c3t2d0 c3t3d0

#zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
fox_pool               58.8G    102K   58.7G     0%  ONLINE     -

9GB 디스크를 하나 더 추가했다.

 #zpool add -f fox_pool c0t2d0

예전의 disk suit이 디스크 size에 민감했던 반면에, zfs는 디스크 size가 달라도 잘 추가가 된다.  상태를 확인해보면,

# zpool status
pool: fox_pool
state: ONLINE
scrub: none requested
config:

NAME        STATE     READ WRITE CKSUM
fox_pool    ONLINE       0     0     0
c2t0d0    ONLINE       0     0     0
c3t2d0    ONLINE       0     0     0
c3t3d0    ONLINE       0     0     0
c0t2d0    ONLINE       0     0     0

errors: No known data errors

이렇게  pool을 생성하면 /에 pool이름이 자동으로 마운트되어 사용가능한 상태가 된다. 이게 영 맘에 안들어서 zpool destroy로 만든 pool을 삭제하고 다시 생성했다(마운트하는 방법을 몰라서… ;ㅡㅡ)

#zpool create -f -m /export/home fox_pool c2t0d0 c3t2d0 c3t3d0 c0t2d0

그런데, 이것이 굳이 이럴 필요가 있는것인지 알 수가 없다. 왜냐하면, zfs 로  /export/home 에 zfs를 마운트할 수 있기 때문이다. 즉, 하나의 디스크 풀을 각기 다른 디렉토리에 마운트 할 수 있는것 같다. 그래서 oracle 프로그램용으로 zfs를 생성해서 마운트 해보았다.

 #zfs create fox_pool/oracle mount /oracle  —> error

#zfs create fox_pool/oracle

# zfs list
NAME              USED  AVAIL  REFER  MOUNTPOINT
fox_pool          130K  57.8G    31K  /export/home
fox_pool/oracle  24.5K  57.8G  24.5K  /export/home/oracle

생성은 잘 되었지만, 문제가 있다. 나는 oracle을 /에 마운트 하고 싶은 것이다.

# zfs destroy fox_pool/oracle
# zfs list
NAME       USED  AVAIL  REFER  MOUNTPOINT
fox_pool  99.5K  57.8G    30K  /export/home

그래서 삭제를 해 버렸다.

여기서 어떻게 해야할지 모르겠다……   자, 답을 알아냈다

#zfs create fox_pool/oracle
#zfs set mountpoint=/oracle   fox_pool/oracle

마운트 포인트를 변경하니 해결이 된다.

자, 여기서, 일부러 에러를 유발하여 복구시켜보았다.

#dd if=/dev/urandom of=/dev/c3t3d0s0 bs=1024 count=10000

s0는 디스크들의 정보가 기록되는 슬라이스로 보이는데, 이곳을 쓰레기 값으로 채워넣은 것이다.

#zpool scrub fox_pool

이 에러는 복구가 되지 않았다. 사실 내가 원하는것은 이것이 아니었다. 그 후 여러번의 시행 착오를 거쳐서 알아낸 것은, zpool 생성시 어떤 옵션도 주지 않으면 디스크들이 stripe 로 묶이는 것이며, mirror 옵션을 주던가 아니면 가장 중요한, raidz 옵션을 주는 것이다.  사실 내가 원하던 것은 Raid5 였다.  mirror도 좋지만, 디스크 두개중 한개밖에 사용할 수 없으니까.

아무튼, Raid-Z 로 디스크를 구성했다. Raid5와 다른점은 디스크 두개로도 구성이 가능하다는 점이다. 사실 이 경우는 mirror와 별 차이가 없는것 같다.

# zpool create fox_pool raidz c2t0d0 c3t2d0
# zpool status
pool: fox_pool
state: ONLINE
scrub: none requested
config:

NAME        STATE     READ WRITE CKSUM
fox_pool    ONLINE       0     0     0
raidz1    ONLINE       0     0     0
c2t0d0  ONLINE       0     0     0
c3t2d0  ONLINE       0     0     0

errors: No known data errors
# df -h

fox_pool                16G    24K    16G     1%    /fox_pool

# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
fox_pool               33.5G    178K   33.5G     0%  ONLINE     -

두 개의 디스크에 다시 에러를 유발시킨다. 여기서는 두번째 디스크 c3t2d0s0에 쓰레기값을 넣었다.

# zpool scrub fox_pool
# zpool status
pool: fox_pool
state: ONLINE
status: One or more devices has experienced an unrecoverable error.  An
attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using ‘zpool clear’ or replace the device with ‘zpool replace’.
see: http://www.sun.com/msg/ZFS-8000-9P
scrub: scrub completed with 0 errors on Tue May 27 22:00:49 2008
config:

NAME        STATE     READ WRITE CKSUM
fox_pool    ONLINE       0     0     0
raidz1    ONLINE       0     0     0
c2t0d0  ONLINE       0     0     0
c3t2d0  ONLINE       0     0    27

errors: No known data errors

에러를 수정하는 방법에는 두가지가 있다. clear나 replace하는 방법이다. 나는 디스크가 하나 더 있기때문에, replace했다.

#zpool replace fox_pool c3t2d0 c3t3d0
# zpool status
pool: fox_pool
state: ONLINE
scrub: resilver completed with 0 errors on Tue May 27 22:02:22 2008
config:

NAME           STATE     READ WRITE CKSUM
fox_pool       ONLINE       0     0     0
raidz1       ONLINE       0     0     0
c2t0d0     ONLINE       0     0     0
replacing  ONLINE       0     0     0
c3t2d0   ONLINE       0     0    27
c3t3d0   ONLINE       0     0     0

errors: No known data errors

잠시후 확인해보면 디스크가 바뀌어 있는것을 확인 할 수 있다.

 zpool status
pool: fox_pool
state: ONLINE
scrub: scrub completed with 0 errors on Tue May 27 22:09:20 2008
config:

NAME        STATE     READ WRITE CKSUM
fox_pool    ONLINE       0     0     0
raidz1    ONLINE       0     0     0
c2t0d0  ONLINE       0     0     0
c3t3d0  ONLINE       0     0     0

errors: No known data errors

 

fox_pool에 남은 c3t2d0를 추가하기 위하여 zpool add명령을 사용했다.

결과는 별로다. 디스크가 raidz로 추가되는 것이 아니라, 기존의 raidz1과 stripe로 묶여버린 것이다. 물론, raidz 옵션을 추가할때 넣어봤지만, 이경우역시 작동되지 않았다.

# zpool status
pool: fox_pool
state: ONLINE
scrub: none requested
config:

NAME        STATE     READ WRITE CKSUM
fox_pool    ONLINE       0     0     0
raidz1    ONLINE       0     0     0
c2t0d0  ONLINE       0     0     0
c3t3d0  ONLINE       0     0     0
c3t2d0    ONLINE       0     0     0

errors: No known data errors

그래서 다시 디스크 세개로 fox_pool을 생성하였으며, 역시 에러를 유발한 후 테스트 하였다.

# zpool scrub fox_pool
# zpool status
pool: fox_pool
state: ONLINE
status: One or more devices has experienced an unrecoverable error.  An
attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using ‘zpool clear’ or replace the device with ‘zpool replace’.
see: http://www.sun.com/msg/ZFS-8000-9P
scrub: scrub completed with 0 errors on Tue May 27 21:44:42 2008
config:

NAME        STATE     READ WRITE CKSUM
fox_pool    ONLINE       0     0     0
raidz1    ONLINE       0     0     0
c2t0d0  ONLINE       0     0     0
c3t2d0  ONLINE       0     0     0
c3t3d0  ONLINE       0     0    38

errors: No known data errors

같은방식으로 에러를 유발했다. c3t3d0의 체크섬이 38이다. 이것은 아래 명령으로 수정가능하다.

bash-3.00# zpool clear fox_pool c3t3d0
bash-3.00# zpool status
pool: fox_pool
state: ONLINE
scrub: scrub completed with 0 errors on Tue May 27 21:44:42 2008
config:

NAME        STATE     READ WRITE CKSUM
fox_pool    ONLINE       0     0     0
raidz1    ONLINE       0     0     0
c2t0d0  ONLINE       0     0     0
c3t2d0  ONLINE       0     0     0
c3t3d0  ONLINE       0     0     0

errors: No known data errors

다음은 snapshot을 만들어 보았다. snapshot은 만드는 시점의 데이타를 한번만 반영하는것 같다. 말 그대로 스냅샷을 수행하던 시점의 백업을 만드는 것 같다.

fox_pool에 zfs로 화일시스템을 만들고 세개의 화일(test.txt, last.txt, words)을 생성했다.  그리고 스냅샷을 만들었다.

# ls -al
total 576
drwxr-xr-x   2 root     sys            5 May 27 22:26 .
drwxr-xr-x   3 root     sys            3 May 27 22:25 ..
-rw-r–r–   1 root     root        7105 May 27 22:26 last.txt
-rw-r–r–   1 root     root       16566 May 27 22:26 test.txt
-r–r–r–   1 root     root      206663 May 27 22:26 words

# zfs snapshot fox_pool/home@snap1
bash-3.00# zfs list
NAME                  USED  AVAIL  REFER  MOUNTPOINT
fox_pool              424K  33.1G  35.3K  /fox_pool
fox_pool/home         316K  33.1G   316K  /fox_pool/home
fox_pool/home@snap1      0      –   316K  –

# rm words
# ls -al
total 58
drwxr-xr-x   2 root     sys            4 May 27 22:37 .
drwxr-xr-x   3 root     sys            3 May 27 22:25 ..
-rw-r–r–   1 root     root        7105 May 27 22:26 last.txt
-rw-r–r–   1 root     root       16566 May 27 22:26 test.txt
bash-3.00# zfs snapshot fox_pool/home@snap2
bash-3.00# zfs list
NAME                  USED  AVAIL  REFER  MOUNTPOINT
fox_pool              467K  33.1G  35.3K  /fox_pool
fox_pool/home         348K  33.1G  57.9K  /fox_pool/home
fox_pool/home@snap1   290K      –   316K  –
fox_pool/home@snap2      0      –  57.9K  -

스냅샷은 /fox_pool/home/.zfs/snapshot/snap1 과, /fox_pool/home/.zfs/snapshot/snap2에 각각 저장되어 있다.

# pwd
/fox_pool/home/.zfs/snapshot/snap2
# ls
last.txt  test.txt
# cd ../snap2
# ls
last.txt  test.txt

snap1로 롤백을 해보았다.

# zfs rollback fox_pool/home@snap1
cannot rollback to ‘fox_pool/home@snap1′: more recent snapshots exist
use ‘-r’ to force deletion of the following snapshots:
fox_pool/home@snap2
# zfs rollback -r fox_pool/home@snap1
cannot unmount ‘/fox_pool/home': Device busy
bash-3.00# pwd
/fox_pool/home
# ls
# cd ..
# zfs rollback -r fox_pool/home@snap1
# cd home
# ls
last.txt  test.txt  words

이때, 나중에 만든 snap2는 snap1이 만들어지던 시점에는 존재하지않았기때문에, 지워져 버렸다.. :-( 그래서 경고메시지가 나왔었군…

암튼, 스냅샷은 디스크를 차지하고 있으므로, 필요가 없으면 제거해준다.

#zfs  destroy fox_pool/home@snap1

스냅샷이 저장되는 디렉토리 .zfs 는 ls -al로는 확인이 되지 않았지만, 그 이후는 확인이 가능했다. 아울러, 필요한 화일을 직접 복사하는것도 가능했다.

여기까지 사용해본 소감은, 참 편리하다는거. newfs도 필요없고, 마운트도 필요없고. 생성속도 또한 빠르다. disksuit을 사용해야할 이유를 더 이상 찾을 수가 없다.(물론, solaris10이 아니라면 선택의 여지가 없겠지만…)

마지막으로 참고사이트 : http://docs.sun.com/app/docs/doc/819-5461?l=en  너무 늦게 발견 ;ㅡㅡ




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



반응형

'OS > LINUX Common' 카테고리의 다른 글

리눅스 프로세스별 메모리 사용량 확인  (0) 2015.09.02
리눅스 LVM 생성  (0) 2015.08.20
tmpfs 설정하는 방법  (0) 2014.04.16
GNU tar의 특이성 , 체크섬 오류  (0) 2013.07.09
리눅스 vsftpd 설치 / 설정.  (0) 2011.10.14
반응형

출처 : http://forum.falinux.com/zbxe/index.php?document_srl=560877&mid=lecture_tip




에프에이리눅스에서 판매하는 보드에서 루트파일 시스템을 yaffs 파일 시스템으로 설정하고, /tmp 를 tmpfs 로 설정하기 위해서는
다음과 같은 방법으로 설정하면 됩니다.

 

tmpfs는 램의 공간을 사용하기 때문에 전원이 OFF되면 저장된 데이터가 모두 삭제되는 휘발성 공간입니다.

 

1. tmpfs 파일 시스템이 존재하는지를 확인 합니다.

 

   [root@falinux ~]$ cat /proc/filesystems 
   nodev sysfs
   nodev rootfs
   nodev bdev
   nodev proc
   nodev binfmt_misc
   nodev debugfs
   nodev sockfs
   nodev usbfs
   nodev pipefs
   nodev anon_inodefs
   nodev tmpfs
   nodev devpts
   ext3
   ext2
   nodev ramfs
   vfat
   msdos
   nodev nfs
   nodev nfs4
   nodev nfsd
   nodev autofs
   yaffs
   yaffs2
   nodev mqueue
   nodev rpc_pipefs

 

 여기서 tmpfs 파일 시스템이 존재하지 않으면 커널에서 다음 옵션을 활성화 시켜야 합니다.
   
   File systems  ---> 
        Pseudo filesystems  --->
         [*] Virtual memory file system support (former shm fs)
         [*]   Tmpfs POSIX Access Control Lists 
           
    

2. mount 옵션을 사용하여 tmpfs를 사용하는 방법

 

   [root@falinux /]$ mount -t tmpfs -o size=20M tmpfs /tmp

   [root@falinux /]$ df
   Filesystem 1K-blocks Used Available Use% Mounted on
   /dev/root 506880 19836 487044 4% /
   tmpfs 20480 1164 19316 6% /tmp

   [root@falinux /]$ mount
   rootfs on / type rootfs (rw)
   /dev/root on / type yaffs2 (rw)
   /proc on /proc type proc (rw)
   /sys on /sys type sysfs (rw)
   none on /dev/pts type devpts (rw,gid=5,mode=620,ptmxmode=000)
   usbfs on /proc/bus/usb type usbfs (rw)
   tmpfs on /tmp type tmpfs (rw,size=20480k)

 

 

3. yaffs 루트파일 시스템에서 부팅시 tmpfs를 마운트하는 방법

 

   에프에이리눅스에서 제공하는 램디스크는 /etc/fstab 파일을 사용하지 않습니다. 
   따라서 /etc/rc.d/rc.sysinit 에서 마운트를 해 주어야 합니다.

  

   [root@falinux /]$ vi /etc/rc.d/rc.sysinit

    26      # mount sysfs, devpts filesystem
    27      mount -n -t sysfs /sys /sys
    28      mount /dev/pts
    29 
    30      # moout tmpfs filesystem 20Mbyte
    31      mount -t tmpfs -o size=20M tmpfs /tmp

   [root@falinux /]$ reboot -f

   [root@falinux /]$ df
   Filesystem 1K-blocks Used Available Use% Mounted on
   /dev/root 506880 19836 487044 4% /
   tmpfs 20480 1164 19316 6% /tmp

 

반응형

'OS > LINUX Common' 카테고리의 다른 글

리눅스 LVM 생성  (0) 2015.08.20
Linux에서 ZFS 파일 시스템 구축.  (0) 2015.03.25
GNU tar의 특이성 , 체크섬 오류  (0) 2013.07.09
리눅스 vsftpd 설치 / 설정.  (0) 2011.10.14
리눅스 계정관리 ----LINUX  (0) 2011.08.21
반응형

 

솔라리스나 기타 유닉스에서 tar로 압축해제시 압축이 정상적으로 풀리지 않고

체크섬 오류가 날 경우가 있다.

 

이 경우는 여러가지 이유가 있는데 내가 경험해 본 바로는 아래와 같은 경우가 있다.

 

1. ASCII 모드 tar를 BINARY 모드로 ftp 전송해서 체크섬 오류 발생

2. BINARY 모드 tar를 ASCII 모드로 ftp 전송해서 체크섬 오류 발생

3. GNU tar를 이용해서 압축한 파일을 솔라리스(or 각 유닉스 시스템) 기본 tar를 이용해서 압축해제 하는 경우 체크섬 오류 발생

 

1, 2번의 경우는 처음 압축 해제시 부터 체크섬 오류가 발생하므로 간단히 디텍트 할 수 있지만

3번의 경우는 압축이 해제되다가 중간부터 갑자기 체크섬 오류가 발생하므로 간단히 디텍트 할 수 없다.

 

이럴 경우 각 로컬 시스템에 있는 tar를 이용해서 압축을 한 뒤 이종 시스템의 tar를 이용해서 압축해제시 발생할 수 있는데

가장 흔하게 발생하는 경우가 GNU tar 관련 문제이다.

 

나의 경우는 GNU tar로 압축된 것을 솔라리스에서 압축해제할 때 발생했었는데

한참을 해메다가 GNU tar를 설치 한 뒤 해당 문제를 해결 할 수 있었다.

 

GNU tar 설치 후 library 종속성 문제가 발생할 수 있는데 해당 라이브러리는 적당히 찾아서 설치 해서 해결해주자.

반응형

'OS > LINUX Common' 카테고리의 다른 글

Linux에서 ZFS 파일 시스템 구축.  (0) 2015.03.25
tmpfs 설정하는 방법  (0) 2014.04.16
리눅스 vsftpd 설치 / 설정.  (0) 2011.10.14
리눅스 계정관리 ----LINUX  (0) 2011.08.21
Linux에서 JDK 설치  (1) 2011.08.21
반응형


참고 : http://uyeong.tistory.com/entry/%ED%8E%98%EB%8F%84%EB%9D%BC%EB%A6%AC%EB%88%85%EC%8A%A4-vsftpd-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0


먼저 rpm 패키지 설치 여부를 확인 한다.
#rpm -qa | grep vsftp

없다면 이곳에서 vsftpd 를 검색하여 해당 원하는 최신 버젼을 다운 받아서 해보자.
현재 2.3.4 정도가 나온 것 같다.
http://rpm.pbone.net/

다운 받았다면 rpm을 이용하여 다운 받은 곳으로 이동하여 설치!

rpm -ivh [파일경로]

설치가 완료되면 service vsftpd start로 시작시킬 수 있다.
설정은 /etc/vsftpd/vsftpd.conf에 있다. (root로 가능)

이후 iptables를 열어 수정한 뒤 21번 포트를 정상적으로 열어준다.
services iptables restart

netstat -na | grep tcp로 21번 포트가 정상적으로 열렸는지 확인한 다음 ftp를 이용해 주면 되겠다!


반응형

'OS > LINUX Common' 카테고리의 다른 글

tmpfs 설정하는 방법  (0) 2014.04.16
GNU tar의 특이성 , 체크섬 오류  (0) 2013.07.09
리눅스 계정관리 ----LINUX  (0) 2011.08.21
Linux에서 JDK 설치  (1) 2011.08.21
리눅스명령어 43개  (0) 2011.08.21
반응형

사용자 생성 계정 관리

리눅스 내부 명령어 : 셀에 내장되어 있는 명령어로 셀이 명령어를 이해한다.

리눅스 외부 명령어 : /bin 안에 파일의 형태로 존재

차이점 : 내부 명령어의 실행 시 별도의 프로세서를 시작시키지 않지만, 외부 명령어의 실행 시 새로운 서브 프로세서를 fork하고 실행

검색 경로 지정

리눅스에서 명령어는 셀이 특정 검색 경로를 찾아 실행하게 되어 있다.

검색경로가 지정되어 있는 파일 : .bash_profile

PATH = _______: _______:

path에 지정된 경로에 자주 사용하는 명령어의 결로를 앞쪽에 두는 것이 좋다. path에 설정된 경로를 찾을 때까지 앞에서 뒤쪽으로 차례대로 검색

/etc/default/useradd : 사용자의 기본적인 셀 환경을 설정할 수 있음.

계정 조회

users

현재 시스템에 로그인된 사용자 계정을 조회 / 사용자 계정에 대한 정보를 확인

cat n /etc/passwd

root : x : o : o : root : /root : /bin/bash

1 2 3 4 5 6 7

1 : 사용자명

2 : 패스워드 (/etc/shadow 파일에 암호화되어 있음)

3 : 사용자 계정 uid

4 : 사용자 계정 gid

5 : 사용자 계정 이름 정보

6 : 사용자 계정 홈 디렉토리

7 : 사용자 계정 로그인 셀

cat n /etc/shadow

root : #$%!234^x13 : 11535 : o : 99999 : 7 : : : :

1 2 3 4 5 6 7 8 9

1 : 사용자명

2 : 패스워드

3 : 패스워드 파일 최종 수정일

4 : 패스워드 변경 최소일

5 : 패스워드 변경 최대일

6 : 패스워드 만료 경고 기간

7 : 패스워드 파기 기간 (패스워드 파기 후 계정 비활성 기간)

8 : 계정 만료 기간

9 : 예약 필드

계정 생성 기본 설정 파일

/etc/default/useradd : 사용자의 기본적인 그룹, 홈디렉토리, 만기일, 셀 지정

/etc/login.defs (쉐도우 패스워드 사용 시) : 사용자의 각종 환경변수 지정

user D : 기본 설정 사항 확인

계정 생성 암호 설정

useradd 생성할 계정명

passwd 생성한 계정명

useradd [옵션] 로그인 계정

-c comment : 사용자 이름 또는 정보

-d home_directory : 사용자 계정 홈 디렉토리

-e expire_date : 사용자 계정 유효 기간

-f inactive_time : 비활성 기간

-g initial_group : 기본 그룹

-G grout : 다음 그룹

-s shell : 기본 로그인 셀

-u uid : 사용자 계정 uid

계정 변경

usermod [옵션] 로그인 계정

-c comment : 사용자 이름 또는 정보

-d home_directory : 사용자 계정 홈 디렉토리

-e expire_date : 사용자 계정 유효 기간

-f inactive_time : 비활성 기간

-g initial_group : 기본 그룹

-G grout : 다음 그룹

-s shell : 기본 로그인 셀

-u uid : 사용자 계정 uid

usermod d /home/user m user

usermod e 2003-04-05 user

usermod f 3 user

usermod g users user

계정 삭제

userdel r 계정 (-r : 해당 계정자의 홈디렉토리까지 한 번에 삭제)

그룹조회

cat n /etc/group

그룹생성

groupadd [-g GID [-o]] 그룹 id (-o : GID 499이하 값으로 지정)

[-r] 그룹 id 499이하 값으로 자동 지정

[-f] 강제로 생성

groupadd g 900 toheart (900 groupid / toheart 그룹명)

그룹변경

groupmod [-g gid [-o]] gid변경

[-n] 새로운 그룹명으로 변경

groupmod g 700 toheart

groupmod n kkum toheart

그룹삭제

groupdel group group 제거

반응형

'OS > LINUX Common' 카테고리의 다른 글

tmpfs 설정하는 방법  (0) 2014.04.16
GNU tar의 특이성 , 체크섬 오류  (0) 2013.07.09
리눅스 vsftpd 설치 / 설정.  (0) 2011.10.14
Linux에서 JDK 설치  (1) 2011.08.21
리눅스명령어 43개  (0) 2011.08.21
반응형


출처 : http://ybhsos.tistory.com/25

1. http://java.sun.com/products/archive/index.html 에 접속

2. Linux JDK를 다운받는다.

3. 다운로드 디렉토리로 이동 및 파일 속성확인
[root@centOs-IA32 ~]# cd
[root@centOs-IA32 ~]# cd Desktop
[root@centOs-IA32 Desktop]# ls -l jdk-1_5_0_13-linux-i586-rpm.bin
-rw-r--r-- 1 ~~~~~~~~~~

4. 파일 퍼미션 변경 - 실행 권한을 주기위해 실행
[root@centOs-IA32 Desktop]# chmod u+x jdk-1_5_0_13-linux-i586-rpm.bin

5. 권한 추가후에 파일 실행

[root@centOs-IA32 Desktop]# ./jdk-1_5_0_13-linux-i586-rpm.bin

6. 라이센스 동의
YES/NO 선택 설치를 하기위해서는 YES 선택

7. rpm 파일이 생성되었는지 확인
[root@centOs-IA32 Desktop]# ls jdk-1_5_0_13-linux-i586.rpm

8. 프로그램 설치
[root@centOs-IA32 Desktop]# rpm -ivh jdk-1_5_0_13-linux-i586.rpm

9. PATH 설정 (경로 확인)
[root@centOs-IA32 Desktop]# ls/usr/java/jdk1.5.0_13

10. 환경변수 추가
[root@centOs-IA32 Desktop]# vi /etc/profile
/etc/profile 파일을 찾아서 열고
#java_environment
JAVA_HOME =/usr/java/jdk1.5.0_13
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME

11. 시스템 적용시키기
[root@centOs-IA32 Desktop]# source /etc/profile

12. 시스템 확인
[root@centOs-IA32 Desktop]# java
[root@centOs-IA32 Desktop]# java -version

반응형

'OS > LINUX Common' 카테고리의 다른 글

tmpfs 설정하는 방법  (0) 2014.04.16
GNU tar의 특이성 , 체크섬 오류  (0) 2013.07.09
리눅스 vsftpd 설치 / 설정.  (0) 2011.10.14
리눅스 계정관리 ----LINUX  (0) 2011.08.21
리눅스명령어 43개  (0) 2011.08.21
반응형

출처 : http://blog.naver.com/zzini0472?Redirect=Log&logNo=60056153395

1.adduser


adduser ID 옵션 경로
이것은 슈퍼 유저만이 사용할 수 있다.
명령을 입력하면 로그온 이름 등을 차례로 물어오며,
그에따라서 알맞게 입력해 나가면 된다.
ex) adduser aaa /home/aaa
adduser aaa - /home/hakwon/aaa /home/hakwon/aaa
adduser aaa -s /bin/false add user aaa -s /usr/bin/passwd -s 옵션은 계정을
발급할때 로그인을 허락하지 않고 일반 메일계정으로만 사용할수 있다.
텔넷이나 FTP로 로그인 할 수 없는 계정이 만들어집니다

2. alias

alias 또는 alias 명령='바꿀이름' 명령어 이름이 길거나 할때 별명을 만들어서 간단히 사용할 때 쓴다..

[linux22@ns linux22]$ alias
alias cp='cp -i'
alias l='ls -l'
alias l.-='ls .[a-zA-Z]* --color-tty'
alias ll='ls -al'
alias ls='ls -F --show-control-chars --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias tarc='tar cvvzf'
alias tart='tar xvvzf'
alias tarx='tar xvvzf'
alias which='type -path'

3.ami, ami_applet

내가 누구인지를 나타내 준다.


4. arch

현재 사용하고 있는 cpu의 모델을 출력(i686- 인텔 펜티엄),기계 아키텍쳐를 출력한다. arch 는 uname -m 과 같다.
현재 리눅스 시스템에서, arch 는 "i386", "i486", "i586","alpha", "sparc", "arm", "m68k","mips", "ppc"과 같은 것을 출력한다.

5. cat

텍스트 파일의 내용을 화면에 출력한다. DOS의 'type' 명령과 유사하다.
ex] cat [options] <file1> <file2> . <fileN>
-n : 행번호를 붙여서 출력시킨다.
cat에서 내용을 입력 후 저장하고 나올때는 ctrl+d, 그냥 무시할때는 ctrl+c
cat a > b (a에 내용을 b에 입력)
cat a >> b (a에 내용을 b에 추가)
cat -b : 공백라인 외의 글자가 있는 모든 행의 맨앞에 행번호를 추가
cat -n : 공백라인을 포함한 모든 행의 맨앞에 행번호를 추가
cat -s : 중복된 공백라인은 하나의 공백라인으로 처리

6. chkconfig

특정 실행 레벨에서 서비스를 실행/중지 시키기 위해 필요한 다양한 심볼릭 링크를 관리하는 데 사용되며, /etc/rc.d/init.d 디렉토리에 있는 모든 스크립트에 대한
실행 레벨 설정을 관리한다. 다음과 같이 하면 무엇이 실행레벨에 있는지 알수 있다.
[root@sulinux htdocs]# chkconfig --list
gpm 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔
crond 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔
mysql 0:끔 1:끔 2:끔 3:켬 4:켬 5:끔 6:끔
keytable 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔
syslog 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔
netfs 0:끔 1:끔 2:끔 3:켬 4:켬 5:켬 6:끔
network 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔
numlock 0:끔 1:끔 2:끔 3:켬 4:켬 5:켬 6:끔
--list다음에 서비스 항목 데몬을 적어주면 서비스에 대한 실행레벨 설정을 볼수 있다.
새로운 실행레벨을 추가 하려면 다음과 같이 하면 된다.
chkconfig --add service_name [--level runlevel]
예를 들어 다음과 같이 하면 된다.
chkconfig --add httpd
서비스를 제거하려면 --add 대신 --del을 적어주면 된다.

7. df

디스크의 용량을 확인할 수 있는 명령어입니다..
-a 전체를 나누어서 각 디렉토리와 파일의 크기를 보여준다.
-s 총 사용량을 출력해 준다.
-k kb단위로 출력해 준다.
df [-aikPv] [-t fstype] [-x fstype] [--all] [--inodes] [--type=fstype] [--exclude-type=fstype] [--kilobytes][--portability] [--print-type] [--help] [--version] [filename...]

ex)[root@ns /test]# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda6 1517920 48244 1392568 3% /
/dev/hda1 23302 2551 19548 12% /boot
/dev/hda5 2419256 1118368 1177996 49% /home
/dev/hda10 497829 32423 439704 7% /tmp
/dev/hda7 1517920 837292 603520 58% /usr
/dev/hda9 497829 5405 466722 1% /var
/dev/hda8 1517920 10192 1430620 1% /var/lib


8. Du

디렉터리의 사용량을 보여주는 명령어. 옵션은 -s, -a, -m

du -b : 파일의 내용을 바이트 단위로 표시(가장 흔히 사용하는 명령어)
du : 킬로바이트 단위로 내용을 보여줌
[pump@sulinux pump]$ du
28 ./.e-conf
4 ./.enlightenment/backgrounds
328 ./.enlightenment/gnome_icons
20 ./.enlightenment/menus_gnome/Settings
60 ./.enlightenment/menus_gnome
24 ./.enlightenment/menus_kde/Settings
60 ./.enlightenment/menus_kde
4 ./.enlightenment/themes
496 ./.enlightenment
8 ./.gnome/accels

9. dnslookup

DNS를 조회하는 명령어이다.

[root@sulinux pump]# nslookup
*** Can't find server name for address 211.60.198.62: Non-existent host/domain
Default Server: ns.dacom.co.kr
Address: 164.124.101.2
> yahoo,co,kr
Unrecognized command: yahoo,co,kr
> empas.com
Server: ns.dacom.co.kr
Address: 164.124.101.2
Non-authoritative answer:
Name: empas.com
Address: 211.115.211.8

10. eject

마운트된 시디롬을 뺄때 유용하다.

11. fdformat

디스켓을 퍼멧 할때 사용한다. 단 마운트 시킬 필요는 없다.
fdformat [ -n ] 장치이름
ex)fdformat /dev/fd0H1440 <--첫번째 플로피 디스크를 1.44MB 퍼맷하는 명령어

12. file

파일이 어떠한 형태의 파일인지 알아낸다.
file [-czL ][ -fm 파일명 ] 파일명(들)
-c : 매직 파일의 파싱된 형태를 보여준다.
-z : 압축되어 있는 파일의 형태를 검사한다.
-L : 뒤따르는 심볼릭 링크를 야기시킨다.
-f 파일명 : 검사한 파일에 대해 리포트를 만들 파일의 이름을 지정한다.
-m 파일명 : 파일의 형태를 결정하는 데에 사용되는 매직 파일을 정한다.
ex)[root@ns /test]# ll
합계 28
drwxr-xr-x 4 root root 4096 3월 28 16:36 ./
drwxr-xr-x 21 root root 4096 3월 28 16:18 ../
drwxr-xr-x 2 root root 4096 3월 28 16:21 aaa/
-rw-r--r-- 1 root root 27 3월 28 16:31 file
-rw-r--r-- 1 root root 27 3월 28 16:36 file1
-rw-r--r-- 1 root root 12 3월 28 16:32 file2
drwx------ 2 tomato root 4096 3월 28 16:20 melon/
[root@ns /test]# file file2
file2: International language text

13. free

현재 메모리 사용량을 보여줍니다. 옵션은 -k, -t 등이 있습니다
ex)[root@ns /test]# free
total used free shared buffers cached
Mem: 127796 75736 52060 52468 23908 28444
-/+ buffers/cache:23384 104412
Swap: 48152 0 48152

14. fsck

파일 시스템의 상태가 올바른지 검사하고, 잘못된 것이 있으면 바로 잡는다.
-a : 검사 도중 발견된 에러를 자동적으로 복구한다.
-r : 검사 도중 에러가 발견되면 복구 여부를 물어본다(사실 사용되지 않는다)
-s : 순차적인 방법으로 검색한다.
-V : 검색 중 각종 정보를 자세하게 보여준다.
-N : 실제로 검사 작업을 하지는 않도록 한다.

15. grep

지정한 패턴을 하나나 그 이상의 파일들에서 찾고 그 결과를 표준 출력 장치로 출력하는데 쓰이는 명령어
-b : 찾은 각 줄의 앞에 블록번호를 표시
-c : 찾은 줄들의 내용은 표시하지 않고 그 수만 세서 표시
-E : grep를 egrep처럼 동작하도록 지시
-F : grep를 fgrep처럼 동작하도록 지시
-f : 지정한 파일의 내용과 일치하는 부분들을 찾음
-h : 여러개의 파일에서 찾을 때 결과에 파일의 이름은 포함하지 않은
-i : 대소문자 구분 없이 찾음 grep -l : 결과를 출력 할 때 지정한 패턴이 있는 파일의 이름만 출력
-n : 출력할 때 찾은 각 줄의 앞에 파일 내에서 행 번호를 붙임
-q : 출력을 하지않음
-s : 에러가 발생하면 에러메세지 출력
-v : 지정한 패턴이 없는 행들만 출력
-w : 지정한 패턴을 하나의 단어로 보고 검색
-x : 한 줄의 전체 내용이 패턴과 같은 줄만을 찾음

16. gunzip

zip로 된 압축을 푸는 명령어입니다..

gunzip -c 파일명.zip


17. gzip

zip보다 더 압축을 하고자 할때 사용하는 명령어입니다.


gzip 압축명.tar.gz 대상파일명
-c, --stdout : 표준 출력 이용
-d, --decompress : 복구/풀기
-f, --force : 링크화일도 압축
-h, --help : 도움말
-r, --recurse : 디렉토리 내의 화일들도 모두 처리
-t, --test : 압축파일의 완전성 검사
-v, --verbose : 파일 이름과 압축률 출력
-V, --version : 버젼과 편집 사항 출력
-#, --fast, --best : 압축 시간의 지정
-1, --fast는 가장빨리 압축하나 압축률은 떨어지고 -9, --best는 가장느리나 압축률은 가장 좋다. 지정하지 않으면 -5가 사용된다.

18. Halt

시스템을 끌때사용. = shutdown

19. Head

파일의 앞부분만 보기 아무 옵션이 없으면 10줄을 나타내 준다. head -n 20 파일이름 ---> 20줄을 나타내준다.


head [-count | -n number] filename
ex)[root@ns /test]# ll
합계 28
drwxr-xr-x 4 root root 4096 3월 28 16:36 ./
drwxr-xr-x 21 root root 4096 3월 28 16:18 ../
drwxr-xr-x 2 root root 4096 3월 28 16:21 aaa/
-rw-r--r-- 1 root root 27 3월 28 16:31 file
-rw-r--r-- 1 root root 27 3월 28 16:36 file1
-rw-r--r-- 1 root root 12 3월 28 16:32 file2
drwx------ 2 tomato root 4096 3월 28 16:20 melon/
[root@ns /test]# head file
hello welcome to my server

20. hostname

컴퓨터 이름을 확인하는 명령어입니다..

예]

[linux22@ns linux22]$ hostname
ms.pubnet.ne.kr
[linux22@ns linux22]$


21. netstat : 로컬 시스템의 네트워크 연결상태를 보여주는 프로그램이다.

22. jobs

현 터미널에서 수행된 작업들을 간략하게 나열해준다

23. last

/var/log/wtmp가 만들어진 후 사용자가 로그인한 목록을 출력한다. 예를 들어
last pump라 하면 pump가 몇번 로그인 했는지 출력한다.
last [-number][username][reboot]
[root@ns /test]# last -5
linux13 pts/0 211.57.165.71 Wed Mar 28 18:25 still logged in
linux22 pts/1 211.57.165.61 Wed Mar 28 18:10 - 18:15 (00:04)
linux13 pts/0 211.57.165.71 Wed Mar 28 18:00 - 18:23 (00:22)
linux13 pts/0 211.57.165.71 Wed Mar 28 17:46 - 17:56 (00:10)
linux13 pts/0 211.57.165.71 Wed Mar 28 16:08 - 17:37 (01:29)
wtmp begins Sat Feb 24 14:05:58 2001
-num : num 만큼의 줄만 보여준다.
-n num : 윗 기능과 같음.
-R : hostname 필드를 보여주지 않음.
-a: hostname 필드를 마지막에 보여줌.이 옵션은 다음 옵션과 함께 요용하게 쓰임.
-d : 다른 호스트에서 접속한 것만 보여줌.
-x : shutdown이 일어난 상태나, run level이 바뀐 상태도 보여줌.

24. ln

링크파일을 만드는 명령어입니다..

ln -s 원본파일 링크될파일명 : 소프트 링크입니다.
ln : 하드링크입니다. 하드 링크는 생성된 후에는 일반파일과 동일하게 보여진다 (완전하게 똑 같은 파일이다.)
ln pathname... directory원본 파일에 대한 하드/심볼릭 링크화일을 만든다.
-f : 디렉토리에 대한 하드링크 생성(수퍼유저만 가능)
-s : 심볼릭 링크 생성
in [-s] soucefile target
ex)[root@ns /test]# ll
합계 28
drwxr-xr-x 4 root root 4096 3월 28 16:36 ./
drwxr-xr-x 21 root root 4096 3월 28 16:18 ../
drwxr-xr-x 2 root root 4096 3월 28 16:21 aaa/
-rw-r--r-- 1 root root 27 3월 28 16:31 file
-rw-r--r-- 1 root root 27 3월 28 16:36 file1
-rw-r--r-- 1 root root 12 3월 28 16:32 file2
drwx------ 2 tomato root 4096 3월 28 16:20 melon/
[root@ns /test]# ln file file3
[root@ns /test]# ll
합계 32
drwxr-xr-x 4 root root 4096 3월 28 16:48 ./
drwxr-xr-x 21 root root 4096 3월 28 16:18 ../
drwxr-xr-x 2 root root 4096 3월 28 16:21 aaa/
-rw-r--r-- 2 root root 27 3월 28 16:31 file
-rw-r--r-- 1 root root 27 3월 28 16:36 file1
-rw-r--r-- 1 root root 12 3월 28 16:32 file2
-rw-r--r-- 2 root root 27 3월 28 16:31 file3
drwx------ 2 tomato root 4096 3월 28 16:20 melon/

25. logname

로그인해 있는 사용자의 이름을 출력한다.

26. lpq

프린터의 상태를 알려주는 명령어이다.


27. lpr

파일을 프린터 스풀로 보내는 명령어이다.

28. lprm

인쇄 대기열에서 특정 작업을 삭제하라는 명령어이다.

29. mouseconfig

마우스 설정 프로그램이다.

30. printerconfig

프린터 설정 프로그램이다.

31. ps

프로세서를 확인하는 명령어입니다.
-l : 자세한 형태의 정보를 출력한다.
-u : 각 프로세스의 사용자 이름과 시작 시간을 보여준다.
-j : 작업 중심 형태로 출력한다.
-s : 시그널 중심 형태로 출력한다.
-v : 가상 메모리 중심 형태로 출력한다.
-m: 메모리 정보를 출력한다.
-a : 다른 사용자들의 프로세스도 보여준다.
-x : 로그인 상태에 있는 동안 완료되지 않은 프로세스들을 보여준다. 유닉스 시스템은 사용자가 로그아웃하고 난 후에도 임의의 프로세스가 계속 동작하게 할 수 있다. 그러면 그 프로세스는 자신을 실행시킨 쉘이 없이도 계속 자신의 일을 수행한다. 이러한 프로세스는 일반적인 ps 명령으로 확인할 수 없다. 이때 -x 옵션을 사용하면 자신의 터미널이 없는 프로세스들을 확인할 수 있다.
-S: 챠일드(child) CPU 시간과 메모리 페이지 결함(fault) 정보를 추가한다.
-c: 커널 task_structure 로부터 명령 이름을 보여준다.
-e: 환경을 보여준다.
-w: 긴(wide) 형태로 출력한다. 한 행 안에 출력이 잘리지 않는다.
-h: 헤더를 출력하지 않는다.
-r: 현재 실행중인 프로세스를 보여준다.
-n: USER와 WCHAIN을 위해 수치 출력을 지원한다.
ps -aux (메모리에 로드중인 프로세서들을 출력합니다.)
ps -aux | grep 프로세서 (해당 프로세서만 출력합니다.)

32.rcp

컴퓨터 사이에서 파일을 복사할 때 사용된다. "remote cp"에서 이름이 유래한다.
rcp [ -rpkx ] 파일명1 파일명2
rcp [ -rpkx ] 파일명들 디렉토리
-r : 하위 디렉토리까지 재귀적으로 모두 복사한다.
-p : 파일의 시간과 모드를 보존한다.
-k : kerberos ticktets을 요구한다.
-x : 복사되는 모든 데이터에 암호화 과정을 거친다.

33. rlogin

rlogin(remote login)은 telnet과 마찬가지로 원격 시스템에 로긴할 때 사용하는 명령어로telnet과 사용법이 거의 동일하지만, 다른점은 rlogin의 경우, 자기가 해당 시스템에 id를 가지고 있고, 시스템에 로긴할 때마다 패스워드를 치기가 싫을 경우 자신의 홈 디렉토리 아래에 rhosts라는 파일에 자신의 계정 id와 로긴할 호스트이름을 넣어두면 로긴시에 패스워드를 넣지 않고도 $rlogin -l blueksy target_host 형식으로 로긴이 가능하다. 만약 ~/.rhosts에 "+ +"의 내용이 들어있다면 누구라도 패스워드 없이 접속할 수가 있게되어 예전에 유행했던 해킹방법이 되기도 했으나 지금은 시스템들의 보안강화로 이게 통하는 시스템은 거의 없다..


34. rpm

레드햇패키지 메니저로 패키지를 관리하는 프로그램입니다.
rpm -Uvh 해당패키지 (업그레이드)
rpm -ivh 해당패키지 (설치)
rpm -e 해당패키지 (삭제)
rpm -Uvh --nodeps --force 해당패키지 (파일대치 패키지대치로 설치)

35. shutdown

시스템을 종료할 때 일반적으로 사용되는 명령어이다.
shutdown -t n : 옵션 t 뒤에 n 초만큼 후에 경고 메시지 후에 kill 신호를 보낸다.
shutdown -h(halt) : 완전히 닫는다.
shutdown -r(reboot) : 종료 후 재부팅을 한다.
shutdown -f(fast) : 빠른 리부팅을 한다 (파일 시스템 검사 생략)
shutdown -c(cancel) : 예약되어 있는 종료 취소
shutdown -k(kidding) : 모든 것이 정상이지만, 종료 시간이 되면 모든 프로그램이 멈춘다.

36. sort

파일을 소팅할때 사용합니다.
-c : 파일이 정렬되었는지 검사한다. 그렇다면 아무런 출력도 하지 않는다.
-m : 특정한 파일을 병합한다. 파일은 이미 정렬되었다고 가정한다.

-u : 고유한 행만이 출력된다.
-o 파일명: 출력 파일 이름을 지정한다. 이름은 입력 파일 이름과 같을 수 있다.
-d : 사전(dictionary)과 같은 순서대로 정렬한다. 단어 정렬 순서에는 문자, 숫자,공백 문자만이 사용된다.
-f : 대문자와 소문자를 구별하지 않는다.
-i : 정렬에 사용되는 문자 중 프린트될 수 없는 문자는 사용하지 않는다.
-M : 단어를 정렬할 때 달을 의미하는 문자를 취급한다. FEB는 JAN보다 뒤에 정렬 된다.
-n : 숫자를 같은 문자가 아닌 정말로 숫자로 취급해서 수의 크기대로 정렬한다.
-r : 역순으로 정렬한다.
-t 문자 : 단어 등 필드를 구분하는 문자를 지정한다. 탭(tab)이나 공백 문자 이외의 문자를 구분 문자로 취급하도록 한다.
-b : 단어의 뒤에 오는 공백 문자는 정렬 키(key) 값으로 무시하도록 한다.

37. sndconfig

사운드카드를 설정해 주는 프로그램이다.

38. stat

파일이나 디렉토리엥 관한 다양한 통계 자료를 보여주는 프로그램이다.
stat file
ex)[root@ns /test]# ll
drwxr-xr-x 4 root root 4096 3월 28 17:55 ./
drwxr-xr-x 21 root root 4096 3월 28 17:50 ../
drwxr-xr-x 2 root root 4096 3월 28 16:21 aaa/
-rw-r--r-- 1 root root 27 3월 28 16:36 file1
[root@ns /test]# stat file1
File: "file1"
Size: 27 Filetype: Regular File
Mode: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Device: 3,6 Inode: 16348 Links: 1
Access: Wed Mar 28 16:36:11 2001(00000.01:24:55)
Modify: Wed Mar 28 16:36:11 2001(00000.01:24:55)
Change: Wed Mar 28 16:36:11 2001(00000.01:24:55)

39.sync


현재 시스템 디스크의 IO 버퍼에 있는 디스크 이미지를 하드 디스크로 기록한다.
sync

40. test

파일의 각종 상태를 검사하여 결과를 알려준다. 이것은 셸 스크립트 상에서 if 문이나 while 문 등과 함께 사용되는 것이 보통이다.
test 표현식
-r 파일명 : 파일이 읽기 권한이 있으면 참
-w 파일명 : 파일이 쓰기 권한이 있으면 참
-x 파일명 : 파일이 실행하기 권한이 있으면 참
-f 파일명 : 파일이 일반(regular) 파일이면 참
-d 파일명 : 파일이 디렉토리이면 참
-b 파일명 : 파일이 존재하고 블록 장치 파일이면 참
-c 파일명 : 파일이 문자 전용 파일(character special file)이면 참
-u 파일명 : 파일이 set-user-ID 플래그가 세트되어 있으면 참
-g 파일명 : 파일이 set-group-ID 플래그가 세트되어 있으면 참
-k 파일명 : 파일이 sticky 비트가 세트되어 있으면 참
-s 파일명 : 파일의 크기가 0보다 크면 참
-t 파일 디스크립터 : 파일 디스크립터에 해당하는 파일이 열려 있고, 터미널 장치로부터 사용되고 있으면 참, 기본 디스크립터 값은 1이다.
-z 문자열 : 문자열의 길이가 0이면 참
-n 문자열 : 문자열의 길이가 t 이상이면 참

41. top

cpu와 메모리를 사용하는 작업들에 대한 시스템 정보를 출력한다. 원래 화면으로 되돌아가려면 q를 입력한다.

42. tty

현재 사용하고 있는 단말기 장치의 경로명과 파일명을 보여줌

43. uname

사용중인 운영체제에 대한 정보를 출력한다.
-a : 현재 사용중인 운영체제와 커널의 컴파일 정보 등을 출력한다.-snrvm 과 같다.
-s : 시스템 이름을 알려준다.
-n : 시스템의 노드(node) 이름을 알려준다.
-r : 오퍼레이팅 시스템의 증명번호를 알려준다.
-v : 오퍼레이팅 시스템의 버전(version) 번호를 알려준다.
-m : 하드웨어의 이름을 알려준다.
[root@ns /test]# uname -a
Linux ns.pubnet.ne.kr 2.2.16-3kr2 #1 Thu Aug 10 16:33:55 KST 2000 i686 unknown

반응형

'OS > LINUX Common' 카테고리의 다른 글

tmpfs 설정하는 방법  (0) 2014.04.16
GNU tar의 특이성 , 체크섬 오류  (0) 2013.07.09
리눅스 vsftpd 설치 / 설정.  (0) 2011.10.14
리눅스 계정관리 ----LINUX  (0) 2011.08.21
Linux에서 JDK 설치  (1) 2011.08.21

+ Recent posts