SSH를 이용한 파일 복사는 scp 명령어를 통해서 이루어 진다.
# scp {계정}@{파일복사해올 컴퓨터ip주소}:{파일위치} {내컴퓨터저장위치}

예) # scp root@172.17.46.137:/root/rpm/* /opt
이는 172.17.46.137의 컴퓨터에 root의 권한으로 접근 /root/rpm/ 밑의 모든 파일들을 내컴퓨터의 /opt 폴더로 복사하는 것입니다

Posted by cyj4369
,

[RAID]

Embedded Lab/linux, x86 2012. 11. 21. 20:11

RAID : Redundant Array of Indexpensive Disk

 ● 1988년 미국 버클리대 컴퓨터 공학과에서 “A Case for Redundant Arrays of Inexpensive Disks  ”
   로 발표된 기술로, 여러개의 Disk에 일부 중복된 데이터를 나주어 저장하는 기술과  Disk용량 증가를 위한
  기술, 그리고 read/write 속도를 증가시키기나 데이터를 안전하게 백업하는데 사용하기도 하며, 
   RAID의 종류는 방법에 따라 여러개의 Level로 나눈다.

 ● 특징
    - 장애 발생요인을 최대로 제거한 고성능 무정지 저장장치
    - 여러개의 Disk를 하나의 가상 Disk로 구성, 대용량 저장 장치 구축 가능
    - 다수의 Disk에 Data를 분할, 병렬 전송함으로써 Data 전송속도 향상
    - System 가동 중 Disk Fault시에도 시스템 정지 없이 새로운 Disk로 교체하면서 Data 자동복구

1. RAID에 사용되는 기술

 1) Striping (스트라이핑)
  하나의 Disk에 모두 기록할 수 없는 Data를 여러개의 Disk에 분배 기록할 수 있는 기술로 
  큰 용량을 만들어 사용하는데 사용된다.

 2) Mirroring (미러링)
  '거울' 처럼 하나의 Disk를 또다른 Disk에 동시에 기록하는 기술로
  하나의 disk가 Fault 되어도 미러된 disk로 data를 안전하게 관리할 수 있다.
  
 3) Parity (패리티)
  Data의 오류검출 확인에 사용되는 기술


2. RAID의 종류

  1) RAID 0
    여러개의 Disk를 하나의 Disk처럼 사용
   

사용자 삽입 이미지


    장점 : I/O를 분산하고 Disk의 사용 용량을 증대할 수 있어 고용량 저장이 용이
             하며, RAID구성중 속도가 가장빠름.

    단점 : 스트라이핑 된 Disk중 한개의 Disk라도 손상되었을 경우 Data가 보장되지 않아
             Data의 안전성이 떨어짐


 2) RAID 1
   두개의 Disk에 중복하여 Data를 기록하여 DAta의 안정성 확보
 
사용자 삽입 이미지

    장점 : 각 Disk를 동시에 읽을 수 있어 읽기능력을 향상(두배), Data를 두개의 Disk에 기록 할 수 
            있어 하느의 Disk가 손상되어도 나머지 하나의 Disk에 Data가 남아있어 Data의 안전성 확보 가능.
             Multi user사용 적합

    단점 : 저장용량당 단가가 비싸 비용이 높고 쓰기능력은 향상되지 않음.


 3)  RAID 2
    error검출 능력이 없는 Disk를 위해 Hamming 오류정정코드를 사용
   모든 SCSI Disk가 ECC(에러검출기능)를 탑재하고 있기때문에 사용되지 않음
   
사용자 삽입 이미지


4) RAID 3 (Single Check Disk per Group RAID)
   Data 저장을 위한 Disk외에 하나의 Disk에 에러검출을 위한 패러티 정보를 저장하고,
   Disk에 장애가 발생하였을 경우 남아있는 Disk 들을 Exclusive OR (XOR)연산을 통해 복구
사용자 삽입 이미지

  장점 : 큰 용량의 Data를 안정적으로 기록시킬 때 용이 
          Single user, Single tasking 환경에 적합

  단점 : 적은양에  Data에는 비 효율적


5) RAID 4 (Independent Disk Array)
   하나의 Disk에 패러티 정보를 저장하고, 나머지 Disk들에게 Data를 저장
   어느 한 disk가 손상되어도 패러티 정보가 있는 Disk로 복구 가능
사용자 삽입 이미지

   장점 : 큰 Data의 전송시간을 줄일 수 있음
 
   단점 : 모든 Disk에서 I/O발생 병목현상 발생(패러티 정보갱신), 패러티 Disk도 같이 손상시 복구 어려움


6) RAID 5 (Rotating Independent Disk Array)
   하나의 Disk에 패러티 정보를 모두 저장하지 않고, 
   모든 Disk에 패러티 정보를 분산 기록하여 패러티를 담당하는 Disk에 병목현상을 해결
사용자 삽입 이미지

   장점 : 멀티프로세서 시스템과 같이 Data가 작은 기록이 잦을 경우 용이 (Hot Plug 가능)

   단점 : Data를 Read만 할 경우 속도가 느림, 3개 이상의 Disk 필요
             두개이상의 Disk가 Fault될 경우 Data의 안전성을 보장할 수 없음.


7) RAID 0+1 (Stripe then Mirror - High Data Transfer Performance)
   네개 이상의 Disk를 2개씩 RAID 0(스트라이핑)구성하고 다시 RAID 1(미러링)으로 구성
     Disk1
               > RAID 0 (스트라이핑)
    Disk2
                                            > RAID 1 (미러링)
    Disk3
                > RAID 0 (스트라이핑)
    Disk4

    장점 : RAID 0 와 RAID 1의 장점만을 수용하여 구성, 안정성과 속도증대를 동시에 만족.
             공통 O/S 실행과 같은 시스템에 적합

    단점 : 디스크 저장 효율성이 떨어지고 비용이 바싸짐.
             한그룹에 RAID 0(스트라이핑)된 디스크가 두개가  Fault 될 경우 Data의 보장 어려움


8) RAID 1+0 (Mirror then Stripe - High Data Transfer Performance)
  RAID 0+1의 단점인 Data의 안정성 미흡(두개이상 Disk가 Fault될 경우 전체 구성이 깨지는 문제)를
  보안한 기술.
 네개 이상의 Disk를 2개씩 RAID 1(미러링)구성하고 다시 RAID 0(스트라이핑)으로 구성  
사용자 삽입 이미지



  9) RAID 6 (InIndependent Data disks with two independent distributed parity schemes)

사용자 삽입 이미지


RAID 5 
방식는 하나의 패리티를 사용하지만 RAID 6 방식은 두개의 패리티를 사용하므로 두개의 드라이브 장애 시에도 데이터의 복구가 가능하다.
  읽기에서는 RAID 5 방식과 큰 차이는 없으나 쓰기 작업의 구현이 아주 복잡하다.



  10) RAID 7 
        (
Optimized Asynchrony for High I/O Rates as well as High Data Transfer Rates )


사용자 삽입 이미지


  11) RAID 10 (Very High Reliability combined with High Performance)

사용자 삽입 이미지


  12) RAID 53 (High I/O Rates and Data Transfer Performance )

사용자 삽입 이미지


3. RAID TYPE Level Safe & Speed
   
   1) RAID TYPE 
    
사용자 삽입 이미지

  2) Safe : RAID 1 > RAID 5 > RAID 1+0 > RAID 0+1 > RAID 0

  3) Speed : RAID 0 > RAID 0+1 / 1+0 > RAID 5 > RAID 1

'Embedded Lab > linux, x86' 카테고리의 다른 글

[리눅스 namespace]  (0) 2012.12.02
[SSH를 이용한 파일 복사]  (0) 2012.11.21
[우분투에서 NTFS로 빠른포맷하기]  (0) 2012.11.18
[우분투에서 NTFS 포맷하기]  (0) 2012.11.18
[디바이스 파일이란?]  (0) 2012.11.07
Posted by cyj4369
,
[2012-11-17 12:13:50]root@ubuntu:/media# mkfs.ntfs -c /dev/VG_16_8_4/LV_16_8_4
Cannot understand the cluster size '/dev/VG_16_8_4/LV_16_8_4'.

Usage: mkntfs [options] device [number-of-sectors]

Basic options:
    -f, --fast                      Perform a quick format
    -Q, --quick                     Perform a quick format
    -L, --label STRING              Set the volume label
    -C, --enable-compression        Enable compression on the volume
    -I, --no-indexing               Disable indexing on the volume
    -n, --no-action                 Do not write to disk

Advanced options:
    -c, --cluster-size BYTES        Specify the cluster size for the volume
    -s, --sector-size BYTES         Specify the sector size for the device
    -p, --partition-start SECTOR    Specify the partition start sector
    -H, --heads NUM                 Specify the number of heads
    -S, --sectors-per-track NUM     Specify the number of sectors per track
    -z, --mft-zone-multiplier NUM   Set the MFT zone multiplier
    -T, --zero-time                 Fake the time to be 00:00 UTC, Jan 1, 1970
    -F, --force                     Force execution despite errors

Output options:
    -q, --quiet                     Quiet execution
    -v, --verbose                   Verbose execution
        --debug                     Very verbose execution

Help options:
    -V, --version                   Display version
    -l, --license                   Display licensing information
    -h, --help                      Display this help

Developers' email address: linux-ntfs-dev@lists.sf.net
Linux NTFS homepage: http://www.linux-ntfs.org

[2012-11-17 12:14:51]root@ubuntu:/media# mkfs.ntfs -f /dev/VG_16_8_4/LV_16_8_4
Cluster size has been automatically set to 4096 bytes.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.


'Embedded Lab > linux, x86' 카테고리의 다른 글

[SSH를 이용한 파일 복사]  (0) 2012.11.21
[RAID]  (0) 2012.11.21
[우분투에서 NTFS 포맷하기]  (0) 2012.11.18
[디바이스 파일이란?]  (0) 2012.11.07
[인텔 architecture 에서 microblaze용 gcc 설치]  (0) 2012.11.06
Posted by cyj4369
,

우분투에서 NTFS 포맷하기

apt-get install ntfsprogs

'Embedded Lab > linux, x86' 카테고리의 다른 글

[RAID]  (0) 2012.11.21
[우분투에서 NTFS로 빠른포맷하기]  (0) 2012.11.18
[디바이스 파일이란?]  (0) 2012.11.07
[인텔 architecture 에서 microblaze용 gcc 설치]  (0) 2012.11.06
[LVM(Logical Volume Manager)]  (0) 2012.11.01
Posted by cyj4369
,

한마디로...


엔드유저가 기술적인 부분을 모르더라도 하드웨어 디바이스에 접근할 수 있도록 돕는 것

다시 말해, 파일이 보통 파일로 보이기 위한 일을 하는 디바이스 드라이버를 위한 인터페이스. 디바이스 파일은 일반 프로그램이 스탠다드 아이오 시스템콜을 이용해 디바이스 드라이버와 소통할 수 있도록 도와준다.

버투얼 터미널, 터미널, 시리얼 모뎀 등의 캐릭터 단위로 소통하는 캐릭터 디바이스와 하드디스크, 씨디롬과 같이 블록 단위ㅣ 소통하는 블록 디바이스로 나뉜다.

모든 디바이스 파일은 /dev에 있다.


Posted by cyj4369
,

Microblaze GNU Tools 

The MicroBlaze toolchain contains all of the compiler and support libraries you need to build executables and libraries for a MicroBlaze architecture. 

인텔 cpu를 사용했기 때문에 여기에서 나는 little endian으로 적용한다.

Little Endian Tools And Ramdisk Image

Getting The Little Endian Tools And Ramdisk Image

bash> git clone git://git.xilinx.com/xldk/microblaze_v1.0_le.git


Configuration Of The Little Endian Tools

tar xvzf microblazeel-unknown-linux-gnu.tar.gz


Set the path to access the tools and setup the environment variable for the Linux kernel build process with the following commands.

환경변수를 설정해준다. make 때리면 mb-gcc로 하게 되어있는데 이걸 microblazeel-unknown-linux-gnu-gcc바꿔준다.

export PATH=<dir where tools are untarred>/microblazeel-unknown-linux-gnu/bin:$PATH

export CROSS_COMPILE=microblazeel-unknown-linux-gnu-


===========================================================


Cloning The U-boot Tree

The following command will clone the u-boot-xlnx repository.

bash> git clone git://git.xilinx.com/u-boot-xlnx.git

bash> cd u-boot-xlnx


The following command will switch to the Microblaze branch.

bash> git checkout -b microblaze origin/microblaze


Building U-boot

Assuming the tools are setup correctly with CROSS_COMPILE as specified at MicroBlaze GNU Tools.

In the u-boot directory, the following commands will build it for the SP605 board. The xparameters.h in the microblaze-generic board are setup for the SP605 board with the Xilinx reference design.

bash> make microblaze-generic_config

bash> make


Posted by cyj4369
,



LVM(Logical Volume Manager) on Linux

필자 : 서기현(nefsall@kldp.org)
데비안-kr 개발자

 

     

    Linux의 쓰임새가 점차 대형화, 고속화를 요구하게 되면서, 많은 부분이 그에 맞추어 향상되고 있다. 64 Bit 프로세서, 기가바이트(Giga Byte : 2^30 Byte)대의 메모리, 기가비트급 네트웍, 테라바이트(Tera Byte : 2^40 Byte) 심지어 페라바이트(Pera Byte : 2^50 Byte) 규모의 파일시스템... 이루 말할 수 없는 변화가 시시각각 일어나고 있다.

    올해 초, Linux Kernel 2.4 가 발표되면서 많은 기능 향상과 추가가 이루어졌다. 위에 언급한 기업수준의 규모를 어느 정도 만족시킬 수 있게 되었다. 그중에 눈에 띄는 것이 바로 LVM를 기본으로 지원한다는 것이다.

 

1. LVM 이란?

    LVM 은 Logical Volume Manager 의 약자로서, 저장장치들을 좀더 효율적이고 유연하게 관리할 수 있는 커널의 부분과 프로그램을 말한다. 처음에는 IBM에서 개발되었는데, 그후에 OSF(현재는 OpenGroup http://www.opengroup.org)에서 차용을 하여 OSF/1 operating system 에서 쓰였다. 지금은 HP-UX, Digital Unix operating system, AIX 등의 상용 유닉스에서 쓰고 있다. 리눅스 버전은 현재 HP-UX의 것을 모델로 하여 Sistina Software 사(http://www.sistina.com)에서 open source로 개발하고 있다.

    LVM 을 이해하려면 먼저 Software RAID (Redundant Array of Inexpensive Drives)를 언급해야 하는데, 이 둘은 비슷하면서도 큰 차이가 있다. 
    비슷한 점은 여러 물리적인 디스크들을 하나의 논리적인 디스크처럼 다룰 수 있게 함으로서 조합방법에 따라 고용량, 고속, 데이터의 무결성을 실현하는 점이다. 
    하지만 분명하게 다른 점이 있는데. lvm은 raid보다 관리 및 확장이 비교적 쉬운 반면, raid에는 lvm에는 없는 disk mirroring(RAID level 1), Parity Stripe (RAID level 4,5) 등의 방식이 있어서 속도 또는 데이터의 무결성을 보장 받을 수 있다.

    그러나 이런 차이점에도 불구하고 lvm가 주목을 받는 이유는 다음과 같다.

    ·쉬운 관리. 
    ·서로 다른 많은 디바이스 조합 지원. 
    ·직관적인 저장 장치로의 접근. 
    ·뛰어난 확장성.
    ·믿을만한 안전성과 효율. 
    ·스냅샷 기능 지원.  

    이와 같은 특징들로 인해 사용자들이 얻는 이득은 많다.

    우선, pc 급 시스템 사용자들의 가장 큰 고민 중의 하나가 시스템을 처음 설치할 때에 파티션의 구성을 어떻게 할 것인가 일 것이다. 파티션은 한번 구성해 놓으면 바꾸기가 쉽지 않기 때문이다. 또 파티션이 가득 차기라도 하면 어렵게 백업을 하거나 눈물을 머금고(?) 자료를 지워야 할 경우도 심심치 않게 생기기 마련이다. 하지만 LVM를 쓰면 간단하게 저장공간을 확장, 축소 할 수 있기 때문에 그런 고민을 덜 수 있다.

    다른 예로, 중소형 서버에서는 비교적 적은 비용으로 대용량 저장 장치를 구현하는 것이 가능해진다. 그리고, 백업 없이 기존의 환경을 유지한 채 확장이 가능하기 때문에 (물론 백업은 *언제나* 중요하다.) 유지보수면에서 상당한 이득이 있을 것이다.

 

2. 기본 지식

    일반적으로 유닉스 시스템에서 저장 장치를 쓰는 방법은 그 장치의 블록 디바이스(Block Device)에 파일 시스템 (File System)을 만들어서 (다른 표현으로는 포맷(Format)한다라고 하지만 유닉스의 세계에서는 잘 쓰지 않는다.) 디렉토리에 마운트 시키는 것이다. 예를 들어, 두번째 버스의 프라이머리 ide 디스크의 첫번째 파티션에 reiserfs 파일 시스템을 만든 후, /debian/ftp 라는 디렉토리에 마운트를 시킨다면 다음과 같은 절차를 밟을 것이다.

    # mkfs -t reiserfs /dev/hdc1 
    # 화면에 나오는 질문에 y 라고 답변
    # mount -t reiserfs /dev/hdc1 /debian/ftp

    lvm을 써도 마찬가지 절차를 밟는다. 단지, 실제 블록 디바이스가 아닌 가상의 블록 디바이스를 쓴다는 점이 틀리다.








    < 그림 1 >
    실제적으로 lvm은 커널에서 파일 시스템과 블록 디바이스 사이에 위치하여 동작한다. 일반적인 방식과 lvm에 의해 동작하는 방식의 차이는 <그림1>에 잘 나타나 있다.

    lvm의 동작 방식의 이해와 활용을 위해서는 몇 가지 용어에 대한 사전지식이 필요하다.

    1)  VG, PV, LV

    VG(Volume Group)은 LVM의 가장 기본적인 요소이다. 쉽게 말하자면 가상 디스크라고 할 수 있는데, 하나 이상의 실제 물리적으로 존재하는 블록 디바이스가 모여서 VG를 이루게 된다.

    그 물리적인 블록 디바이스를 PV(Physical Volume)라고 하는데, 거의 대부분의 장치를 PV로 쓸 수 있다. 하드디스크 및 그 파티션, 소프트웨어/하드웨어 RAID 장치, 심지어 Loopback 블록 디바이스(파일 시스템상의 파일을 블록 디바이스처럼 쓸 수 있게 해준다)까지도 말이다.

    PV와 대비되는 것이 LV(Logical Volume)이다. 이것은 가상 파티션이라고도 할 수 있는데, VG를 적당히 나누어 할당한 것이 LV이다. 사용자는 LV를 일반 디스크나 파티션처럼 쓰면 된다.

    정리하자면, <그림2>를 보면 알 수 있듯이, 하나 이상의 PV가 모여 VG를 이루고, VG를 가상적으로 나누어 할당하면 LV이 된다.

    < 그림 2 >
    참고적으로, 한 시스템에서 VG는 최대 99개까지 만들 수 있고, 하나의 VG에는 PV, LV 모두 최대 256개까지 할당할 수 있다.

    2)  PE와 LE

    PE(Physical Extent)와 LE(Logical Extent)는 각각 물리적 할당단위와 논리적 할당단위를 뜻한다. 이 둘은 물리적인 위치나 크기는 같다. 
    그러므로 PE가 LV에 할당되면 LE가 된다라고 볼 수 있다.

    <그림3>를 보면 PE, LE의 관계가 잘 설명되어 있다.

    < 그림 3 >

    VG를 나누어 LV로 할당할 때 LVM은 하드디스크의 섹터처럼 작은 단위로 하지 않고 적당한 크기의 PE로 하게 된다. 그 이유는 할당단위가 극히 작으면, 할당정보가 엄청나게 커지고, 그에따라 시스템의 성능도 느려질 것이다. 또한 할당할 수 있는 크기에도 한계가 생길 것이다. PE의 크기는 VG를 만들 때에 정해지는데, 그에 따라서 VG의 최대 크기가 정해진다. 하나의 VG에는 65536개까지 PE를 할당할 수 있고, PE의 크기는 최소 8KB에서 2배씩 늘어나 최대 512MB까지이다. 그러므로 VG의 최대 크기의 범위는 최소 512MB(8KB x 65536)에서 최대 32TB(512MB x 65536)일 것이다.

    3)  VGDA

    PV의 앞 부분에는 VGDA(Volume Group Descriptor Area)라는 부분이 있어서 VG의 모든 정보가 기록된다. 같은 VG에 속해 있는 PV들은 VGDA의 내용이 같다.

    그 내용은, VG의 이름, 상태, 속해있는 PV, LV들, PE, LE들의 할당 상태 등이다. LVM은 이 VGDA 를 참조하고, 갱신하면서 모든 일을 수행한다.

    4)  Linear Mapping LV 와 Striped Mapping LV

    앞서 언급한 대로 LVM은 소프트웨어 RAID를 어느 정도는 대체할 수 있다. lvm에서는 두 가지 방식으로 LV를 만들 수 있는데, Linear RAID 와 대응되는 Linear Mapping 방식과 RAID Level 0 과 대응되는 Striped Mapping 방식이 그것이다.  

    두 방식의 차이점은 두개 이상의 비어있는 PV를 가지고 있는 VG에 LV를 할당할 때에, PE를 어떻게 배치시키는가 이다.

    Linear Mapping 방식은 일반적인 것으로써, PE를 순차적으로 할당시킨다. 예를 들어 <그림4>의 왼쪽 그림을 보면, 각각 3개의 PE가 있는 PV1, PV2으로 이루어진 VG1에 4개의 LE를 가진 LV1을 할당한다고 할 때에, LVM은 먼저 PV1에 3개의 PE를 순차적으로 할당하고 나머지 1개의 PE는 PV2에 할당한다.

    반면, Striped Mapping 방식은 <그림4>의 오른쪽 그림에 나타나 있듯이, 위에서와 같은 환경으로 할당한다고 할 때에, PE는 적당한 크기의 조각들(stripes?)로 나누어진다. LVM는 그것을 두 PV에 분산하여 할당하게 된다. 그러므로 두 PV들에 할당된 PE의 갯수는 같다.

    Striped Mapping 방식의 목적은 두개 이상의 PV를 동시에 읽고 씀으로서, 속도 향상을 바랄 수가 있다는 것이다. 물론, PV들이 서로 독립적인 장치이어야지, 같은 장치 내의 파티션들이라면 오히려 역효과가 날 것이다.

    5)  Snapshots  

    규모가 큰 시스템에서 서비스의 중지없이 백업을 할 때에 가장 큰 문제점이 백업도중에 데이터가 변경되는 것이다. 그러면 백업 자체가 무용지물이 될 수도 있기 때문이다.

    그런 문제를 해결하려면 어느 시점에 데이터가 변경되지 못하게 고정시키는 것인데, 그런 기능을 구현한 것이 Snapshot LV이다.

    Snapshot LV는 기존의 LV를 복사하며 별도의 읽기 전용의 LV를 만드는 것이기 때문에, 데이터 변경을 걱정하지 않고 백업을 마칠 수 있을 것이다.  

     

3. 준비사항

    1)  Kernel  

    커널 2.4 대에는 기본적으로 LVM이 들어가 있어서 동작이 가능하게 커널 설정을 하고 다시 컴파일 해주면 된다. 커널 성정은 “Multi-device support (RAID and LVM)”에 있으므로 커널 안에 넣도록할 수도 있고, 모듈로 뺄 수도 있다. 참고적으로 모듈 이름은 ‘lvm-mod.o’이다. 커널 2.2 대에서도 패치를 적용하면 사용이 가능한데, 필자는 시험하지 못했다. LVM Tools tarball의 PATCHES 라는 데렉토리에 있는 README를 읽고 시도해보기 바란다. 또 lvm 패치 이외에 raw-io 패치가 필요한 데, 다음의 사이트에서 각 커널에 맞는 패치를 구할 수 있다.  

    http://www.kernel.org/pub/linux/kernel/people/sct/raw-io

    새로운 커널로 부팅 한 후에 lvm을 사용할 수 있는지 확인을 하려편 /proc/lvm 이라는 디렉토리가 있는지 확인하면 된다.

    2)  Tools

    LVM가 동작하려면 커널의 지원 이외에 프로그램이 필요하다. 다음의 사이트에서 구할 수 있다.

    ftp://ftp.sistina.com/pub/LVM

    설치는 너무도 간단하다. tarball을 푼 후에, 만들어진 디렉토리에 들어가서 다음의 명령을 입력하라.

    # ./configure && make && make install

    혹시라도 프로그램을 지우고 싶다면.

    # make remove  

    Debian의 경우에는 Main FTP에 패키지가 있으므로 다음과 같은 명령으로 설치할 수 있다.

    # apt-get install lvm  

    3)  초기화 스크립트

    커널과 프로그램이 준비되었다면 이제 부팅시나 셧다운시에 자동으로 lvm을 활성화, 비 활성화 시킬 수 있게 고쳐줘야 한다. 각 배포판 마다 초기화 스크립트가 다르지만 들어가야 할 명령은 모두 같다.

    LVM을 활성화 시키려면,

    # vgscan
    # vgchange -a y

    비활성화 시키려면,

    # vgchange -a n

    * Debian : 패키지로 설치했다면 이 과정은 필요하지 않다. 하지만 소스로 직접 설치했다면 아래의 절차를 따라야 한다.

    먼저 다음과 같은 내용으로 /etc/init.d/lvm를 작성한다.

    --
    #!/bin/sh

    case "$1" in
      start)
            /sbin/vgscan
            /sbin/vgchange -ay
            ;;
      stop)
            /sbin/vgchange -an
            ;;
      restart|force-reload)
            ;;
    esac

    exit 0
    --

    그리고 다음의 명령을 실행해준다.

    # chmod 0755 /etc/init.d/lvm
    # update-rc.d lvm start 26 S . stop 82 1 .

    * Redhat : /etc/rc.d/rc.sysinit에서 ‘Mount all other filesystems’라는 문구의 바로 전에
       활성화시키는 명령을 넣는다.

    또 /etc/rc.d/init.d/halt에 비활성화시키는 명령을 넣는다.

    * Slackware  : /etc/rc.d/rc.S를 다음과 같이 고친다. 아래의 내용 이후에,

    # Remount the root filesystem in read-write mod
    eecho “Remounting root device with read-write enabled.”
    /sbin/mount -w -v -n -o remount /

    다음과 같은 내용을 추가한다.

    # This was an addition, limits vgscan to /proc thus
    # speeding up the scan immensely.
    /sbin/mount /proc

    # Initialize Logical Volume Manager
    /sbin/vgscan
    /sbin/vgchange -ay

    그리고 ‘/sbin/mount -a’를 다음과 같이 고친다.

    # mount file systems in fstab 
    (and create an entry for /)
    # but not NFS because TCP/IP is not yet configured
    /sbin/mount -a -v -t nonfs,proc  

 

4. 실제적인 작업

    이제 본격적으로 LVM를 다루어 보도록 하자.

    1)  PV 초기화

    먼저 제일 처음에 해야 할 작업이 블록 디바이스를 PV로 초기화하는 것이다. PV이 될 수 있는 장치로는, 하드 디스크 (/dev/hda, /dev/sda, ...), 하드디스크의 파티션 (/dev/hda1, /dev/sda1, ...), 소프트웨어 RAID 디바이스 (/dev/md0, ...), Loopback 디바이스 (/dev/loop0, ...) 등이 있다.  

    그러나 하드디스크의 경우 사전 작업을 해야 한다. 만약 파티션을 PV으로 만들 경우 그 파티션의 System ID가 0x8e 이어야 한다. 간단히 fdisk를 사용해서 /dev/hda2를 바꾼다면 다음과 같을 것이다.

    # fdisk /dev/hda
    Command (m for help): t
    Partition number (1-6): 2
    Hex code (type L to list codes): 8e
    Changed system type of partition 2 to 8e (Linux LVM)

    Command (m for help): w

    그리고, 파티션을 나누지 않고 하드디스크 전체를 PV로 만들려고 할 때에, 파티션 정보가 기록되어 있다면 PV로 만들어지지 않을 것이다. 파티션을 fdisk등으로 전부 지워도 마찬가지인데 해결 방법은 dd등의 명령으로 파티션 정보를 깨끗히 지워주면 된다. 예를 들면 다음과 같다.

    # dd if=/dev/zero of=/dev/sda bs=512 count=1

    (**주의** 위의 명령은 한순간에 파티션 정보를 날리는 방법이다. 사용상의 특별한 주의가 필요하다.)

    PV 를 만드는 명령은 pvcreate인데 사용법은 간단하다. 아래는 그 사용의 예이다.

    # pvcreate /dev/hda2
    pvcreate -- physical volume “/dev/hda2”
    successfully created

    추가적으로, 권장하는 것은 특별한 이유가 없으면 하나의 하드디스크에는 두개 이상의 PV를 만들지 않는 것이 좋다. 관리적인 면이나 효율적인 면에서 이득이 많기 때문이다.

    2)  VG 만들기, 이름 바꾸기, 지우기

    만들어진 PV들을 합쳐서 하나의 VG로 만드는 명령은 vgcreate이다. 
    아래는 그 예이다.

    # vgcreate -s 16m new_vg /dev/sda /dev/sdb /dev/sdc

    위의 명령은 세개의 SCSI 디스크를 합쳐서 new_vg라는 VG를 만든다는 것이다. 
    옵션 ‘-s 16m’은 PE의 크기를 16MB로 정하는 것인데, 만약 옵션 ‘-s’가 생략되면 기본적으로 PE의 크기는 4MB가 된다.  

    VG가 만들어지면 /dev/VolumeGroupName라는 형식으로 디렉토리가 생기게 된다. 위의 예에서는 /dev/new_vg 가 될 것이다.

    VG의 이름을 바꾸려면 vgrename 이라는 명령을 아래와 같이 쓰면 된다.

    # vgrename new_vg vg00

    VG에 LV가 남아있지 않고 비활성화되어 있으면 vgremove로 지울 수 있다. 비활성화시키는 방법은,

    # vgchange -a n vg00

    이고, 다음의 명령으로 지워진다.

    # vgremove vg00

    3)  VG 확장시키기, 축소시키기

    VG의 확장과 촉소는 PV의 추가, 제거로 이루어진다.

    VG에 PV를 추가하는 명령은 vgextend인데, vg00이라는 VG에 PV인 /dev/hda2를 추가하려면 다음과 같이 실행해야 한다.

    # vgextend vg00 /dev/hda2

    PV를 VG에서 제거하는 명령은 vgreduce이다. 그러나 PV에 PE가 할당되어 있으면 제거되지 않는다. 그 할당된 PE를 다른 PV로 옮겨야 제거될 것이다. 빈 PV인 /dev/hda2를 vg00에서 제거하려면,

    # vgreduce vg00 /dev/hda2

    4)  LV 만들기, 이름 바꾸기, 지우기

    VG에 LV를 만들면 /dev/VolumeGroupName/LogicalVolumeName의 형식으로 블록 디바이스가 만들어진다. 이것은 일반 블록 디바이스와 다를 바 없는 용도로 쓸 수 있다.

    LV 를 만드는 명령은 lvcreate인데 일반적인 예는 다음과 같다.

    # lvcreate -L 4g -n data vg00

    위의 명령은 4GB 크기로 vg00이라는 VG에 data라는 새로운 LV를 만드는 것이다. 옵션 ‘-L’은 LV의 크기를 지정하는 것인데, 숫자 뒤의 접미사에 따라 숫자의 단위가 달라진다. k는 KB, m은 MB, g는 GB, t는 TB를 뜻한다. 만약, 접미사가 안 붙어있으면 숫자의 단위는 MB가 된다. ‘-L’ 대신 ‘-l’를 쓸 수도 있는데, ‘-l’ 뒤에는 LE의 갯수를 쓰면 된다.

    LV의 이름을 바꾸는 것은 아래의 명령처럼 간단하고,

    # lvrename /dev/vg00/data /dev/vg00/db

    지우는 것 또한 간단하다.

    # lcremove /dev/vg00/db

    5)  LV 확장시키기

    LV를 확장시키는 명령은 lvextend 인데, 다음은 그 예이다.

    # lvextend -L +2g /dev/vg00/db

    위의 명령은 /dev/vg00/db의 크기를 2GB 만큼 늘린다. 기존의 크기가 4GB 였다면, 옵션 ‘-L 6g’를 줬어도 같은 결과를 보일 것이다. 역시 여기에서도 옵션 ‘-l’를 쓰면 LE 단위로 늘릴 수 있다.

    LV의 크기가 커졌어도 파일 시스템에는 영향을 주지 않으므로 파일 시스템 고유의 툴을 이용하여 확장 해주어야 한다. 
    한 가지 주의해야 할 것은 이렇게 크기를 늘릴 때 순서를 뒤바꾸면 절대 안 된다는 것이다. LV 확장 다음에 파일 시스템의 확장이다.

    다음은 파일 시스템 별 확장 방법이다.

    * ext2 : ext2 파일 시스템의 크기를 바꿀 수 있는 명령으로는 resize2fs이 있는데, e2fsprogs 1.19버전 이상에는 기본적으로 포함되어 있다. 그 이하의 버전을 쓴다면 ext2resize라는 프로그램을 다음의 사이트에서 구할 수 있다.

    http;//ext2resize.sourceforge.org

    다음은 일반적인 ext2 의 확장 절차이다.

    # umount /var/lib/mysql
    # lvextend -L +10g /dev/databases/mysql
    # resize2fs /dev/databases/mysql
    # mount /dev/databases/mysql /var/lib/mysql

    LVM tool에 포함되어있는 e2fsadm을 쓰면 LV 확장과 파일 시스템의 확장을 동시에 할 수 있다. 다음의 명령은,

    # e2fsadm?L +10g /dev/databases/mysql

    다음의 두 명령과 같다.

    # lvextend -L +10g /dev/databases/mysql
    # resize2fs /dev/databases/mysql

    * reiserfs : reiserfs는 resize_reiserfs 라는 명령으로 크기를 바꿀 수 있다.

    마운트된 상태에서도 크기를 늘릴 수 있는데, 그 예는 다음과 같다.

    # lvextend -L +5g /dev/devel/cvs
    # resize_reiserfs -f /dev/devel/cvs

    언마운트해서 늘리려면 다음 같이 한다.

    # umount /var/cvs 
    # lvextend -L +5g /dev/devel/cvs
    # resize_reiserfs -f /dev/devel/cvs
    # mount /dev/devel/cvs /var/cvs

    6)  LV 축소시키기

    lvreduce는 LV의 크기를 줄이는데, 늘릴 때와 마찬가지로 파일 시스템과 별개로 이루어지므로 데이터를 잃어버릴 수 있으니 상당히 조심해야 한다.

    작업의 순서는 확장할 때와는 반대로, 파일 시스템의 축소 다음에 LV의 축소이다.

    각 파일 시스템 별 축소 방법이다.

    * ext2 : e2fsadm 을 쓰는 것이 간단하다.

    # umount /home
    # e2fsadm -L -2g /dev/vg00/home
    # mount /dev/vg00/home /home

    * reiserfs : 크기를 늘릴 때와는 달리 마운트 된 상태에서는 줄일 수 없다.

    # umount /usr
    # resize_reiserfs -s -1g /dev/vg00/usr
    # lvreduce -L -1g /dev/vg00/usr
    # mount /dev/vg00/usr /usr

    7)  설정의 백업과 복구  

    LVM Tool들은 기본적으로 몇몇을 제외하고 동작 전의 설정상태를 자동으로 백업해둔다.(절대 데이터의 백업이 아니다!) 그 백업파일들은 /etc/lvmconf 라는 디렉토리에 VolumeGroupName.conf{,.[0-9].old}라는 이름으로 만들어진다. 뒤에 번호가 붙어있지 않은 것은 현재의 설정 내용이고, 그 번호가 클수록 오래된 내용이다. 그러므로 바로 전의 설정 내용을 담고 있는 파일에는 이름 뒤에는 .1.old가 붙어있다.

    먼저 설정 백업 파일의 내용을 보려면 다음과 같이 한다.

    # vgcfgrestore -f /etc/lvmconf/vg00.conf.1.old -ll -n vg00

    이 파일을 이용해 설정을 복구하려면 다음과 같이 한다.

    # vgchange -a n vg00
    # vgcfgrestore -f /etc/lvmconf/vg00.conf.1.old -n vg00 
    # vgchange -a y vg00

 

5. 활용

    몇 가지 유용한 활용 예를 보이겠다.

    1)  두개의 ide disk를 하나의 striped mapping LV로 묶기

    80GB 짜리(실제는 약 76.1GB) IDE 하드디스크 두 개를 striped mapping LV 로 묶는 과정이다.

    먼저 블록 디바이스 이름이 /dev/hde, /dev/hdf 인 디스크들을 PV로 만든다.

    # pvcreate /dev/hde /dev/hdf

    그렇게 만든 PV들을 합쳐서 VG를 만든다.

    # vgcreate vg00 /dev/hde /dev/hdf  

    이제 VG에 LV를 만든다.

    # lvcreate -i 2 -I 4 -L 152g -n striped_lv vg00

    위의 명령으로 152GB 짜리 striped mapping LV가 만들어진 것이다. 옵션을 설명하면 ‘-i 2’는 두개의 PV를 striped 하는데 쓰고, ‘-I 4’는 PE를 4KB로 쪼개서 PV들에게 저장한다는 것이다. ‘-I’ 옵션에는 2^n (0 <= n <= 7), 즉 1, 2, 4, 8, 16, 32, 64, 128 의 숫자를 쓸 수 있다.
    파일 시스템을 만들고, 마운트를 해서,

    # mkreiserfs /dev/vg00/striped_lv
    # mount /dev/vg00/striped_lv /mnt

    bonnie++ 등의 벤치마킹 프로그랭으로 시험해본 결과, linear mapping LV보다 약 1.5배에서 1.8배까지 속도의 차이가 있었다. 물론 억세스가 많아지면 어떻게 되는지는 필자도 시험을 못했다.

    2)  세로운 디스크로 PV 교체하기

    하드디스크를 확장하면서 기존에 있는 하드디스크를 제거해야 할 때는 다음과 같은 과정을 거치면 된다.

    환경은 /dev/hdd, /dev/sda, /dev/sdb가 vg01에 속해있는데, 그중에서 /dev/hdd를 빼고 /dev/sdc를 더하는 과정이다.

    먼저 /dev/sdc 를 PV 로 만들고,

    # pvcreate /dev/sdc

    /dev/sdc를 vg01에 추가한 후에,

    # vgextend vg01 /dev/sdc

    /dev/hdd의 PE 들을 /dev/sdc로 옮긴다.

    # pvmove /dev/hdd /dev/sdc

    성공적으로 옮겨졌으면 vg01에서 /dev/hdd를 제거한다.

    # vgreduce vg01 /dev/hdd

    3)  snapshot LV를 만들어서 안전한 백업하기

    데이터의 변동이 많은 /var등의 디렉토리는 백업 도중에 데이터가 엉키는 수가 있다. 그것을 방지하기 위해서, snapshot LV를 만들어 데이터를 고정시킨 후 백업을 하면 된다.

    일단 snapshot LV 를 만든다.(한 줄로)

    # lvcreate -s -L 5g -n mysqlbackup /dev/vg01/mysql

    위의 명령은 /dev/vg01/mysql에 대한 snapshot LV인 /dev/vg01/mysqlbackup를 만든다. 옵션 ‘-s’는 만들어질 LV가 snapshot 형식임을 정해주고 있다. 옵션 ‘-L’ 는 LV 의 최대 크기를 정해준다. 대게 원본 LV와 크기를 같게 하는 것이 좋다. 사실 snapshot LV는 원본이 갱신되는 부분만 고정시키려고 데이터를 가져와 LE에 할당하기 때문에 많은 LE가 필요하지 않다.

    이제 만든 LV 를 마운트 시킨 후

    # mount /dev/vg01/mysqlbackup /mnt

    백업을 하면 된다.

    # tar cf /dev/rmt0 /mnt

    백업을 마쳤으면 언마운트시킨 후에 snapshot LV 을 지운다.

    # mount /mnt# lvremove /dev/vg01/mysqlbackup

    끝까지 읽어주신 독자들에게 감사드린다. 아무쪼록 필자의 두서없는 글이 많은 도움이 되었으면 한다. 기회가 되면 지면을 통해서 여러분을 다시 뵐  수 있을 것이다.




▲ top

home으로...

Posted by cyj4369
,

Ubuntu 에서 환경 변수를 계속 적용되도록 설정하기 위해서는 


> vi /etc/bash.bashrc
제일 아래로 이동
환경 변수 추가 
예:) > export PATH=$PATH:/root/perforce/bin

이후에는 terminal만 열었다 닫아도, (즉 bash shell만 실행 되어도 ) 환경 변수가 지정되어 있다. 

Posted by cyj4369
,

시장조사전문업체 가트너가 2013년 주목할 만한 기술로 꼽은 10대 전략기술은 크게 ‘모바일, 빅데이터, 클라우드’ 3가지 열쇳말로 압축된다.

데이브 시어리 가트너 수석부사장 겸 가트너 펠로우는 “이제 PC가 아닌 모바일에 주목할 때”라며 “모바일에서 발생한 데이터를 저장하는 공간으로 퍼스널 클라우드가, 모바일 기기에서발생한 데이터를 분석하기 위해선 빅데이터 분석이 중요해졌다”라고 설명했다.

올해 가트너가 꼽은 2013년 전략기술은 ▲모바일대전 ▲모바일 앱 & HTML5 ▲퍼스널 클라우드 ▲만물인터넷 ▲하이브리드IT&클라우드 컴퓨팅 ▲전략적 빅데이터 ▲실용분석 ▲인메모리 컴퓨팅 ▲통합 생태계 ▲엔터프라이즈 앱스토어 등이다.



‘모바일, 빅데이터, 소셜’을 강조했던 2012년과 크게 다르지 않아 보인다. 저전력서버가 빠지고 빅데이터에 ‘전략적’이라는 키워드가 추가됐으며, 클라우드 컴퓨팅 분야가 퍼스널 클라우드와 하이브리드 등으로 다양하게 바뀌었을 뿐이다. 그외 키워드는 순위에도 별반 변동이 없을 정도로 매우 흡사하다. 올해 가트너는 10대 전략 기술로 새로운 전략 기술을 제시하기보다는 2012년에 꼽은 전략기술을 좀 더 구체적으로 발전시키는 데 집중했다.

<2010년부터 2013년까지 가트너가 선정한 10대 전략기술>

2010년2011년2012년2013년
1.클라우드 컴퓨팅클라우드 컴퓨팅미디어 태블릿 그 이후모바일 대전
2.진보적 분석모바일 앱과 미디어 태블릿모바일 중심
애플리케이션과
인터페이스
모바일 앱&HTML5
3.클라이언트 컴퓨팅소셜 커뮤니케이션 및 협업상황인식과 소셜이 결합된
사용자 경험
퍼스널클라우드
4.그린을 위한 IT비디오사물 인터넷사물 인터넷
5.데이터센터 재설계차세대 분석앱스토어와 마켓 플레이스하이브리드IT&
클라우드 컴퓨팅
6.소셜 소프트웨어&소셜 컴퓨팅소셜 분석차세대 분석전략적 빅데이터
7.사용자 액티비티 모니터링(보안)상황인식 컴퓨팅빅데이터실용분석
8.플래시 메모리스토리지급 메모리인메모리 컴퓨팅인메모리 컴퓨팅
9.가용성을 위한 가상화유비쿼터스 컴퓨팅저전력 서버통합 생태계
10.모바일 애플리케이션패브릭 기반 컴퓨팅
및 인프라스트럭처
클라우드 컴퓨팅엔터프라이즈 앱스토어

가트너는 매년 10월, 향후 기업들이 비즈니스를 하는데 있어 중요한 영향을 끼칠지 모르는 잠재력을 가진 ‘전략기술’ 10가지를 소개한다. 올해도 어김없이 10월 23일(현지기준) 올랜도에서 진행된 ‘가트너 심포지엄/IT 엑스포 2012′ 행사를 통해 향후 미래를 밝힐 기술에 대해 발표했다.

모바일 대전

2013년은 윈도우8 운영체제가 발표되면서 iOS, 안드로이드, 윈도우8 간 모바일 운영체제 경쟁도 심화될 것으로 보인다고 가트너는 전했다. 2013년에 출고될 태블릿 증 50%가 윈도우8 운영체제를 탑재하고 나올 것이며, 이는 기업 시장에 큰 영향을 미칠것으로 보인다고 내다봤다.

데스크톱 운영체제로 윈도우가 앞서나가고 있는 가운데, 윈도우8이 장찬된 스마트폰, 태블릿 그리고 데스크톱으로 이어진 삼각편대가 완성될 것이란 전망이다.

모바일 운영체제 경쟁 심화 외에도 가트너는 모바일 사용자가 점점 증가하면서 사람들이 직접 제품 생산에 영향을 미치는 소비자화가 진행되고 있다고 내다봤다. 가트너 분석에 따르면 많은 사람들이 스마트폰을 이용해 웹브라우저에 접근할 것이며, 2015년이 되면 전체 모바일 기기 시장에서 80%는 스마트폰이 차지할 것으로 보았다.

모바일 응용 프로그램 및 HTML 5

가트너는 웹애플리케이션 제작 도구로 HTML5를 주목했다. 2014 년까지 자바스크립트 중심의 애플리케이션 개발 환경이 중심이 되면서 HTML5가 더욱 인기를 끌 것이란 분석이다.

퍼스널 클라우드

가트너는 구글 드라이브, 드롭박스 등 다수의 사용자가 자신의 모바일 기기에 정보를 저장하지 않고 퍼스널 클라우드에 정보를 저장하기 시작하면서, 모바일 기기가 PC를 대체할 수 있게 됐다고 보았다.

퍼스널 클라우드는 웹에 위치한 한 곳에 정보가 몰리면서 다양한 곳에서, 다양한 기기로 접근해 자료를 공유할 수 있다는 장점을 갖고 있다. 가트너는 앞으로 개인용 클라우드에 기반한 웹서비스가 인기를 끌 것으로 보인다고 분석했다.

사물인터넷

이미 사물인터넷은 곳곳에 퍼져 있다. LTE, 근거리무선통신(NFC)  등이 퍼지면서 사물 정보를 실은 데이터가 사방에 널려 있다. 가트너는 2011년 150억개에 달하는 사물이 웹과 연결해 정보를 전달했으며, 2020년이 되면 2천억개가 넘는 기기가 웹과 연결해 정보를 보낼 것으로 보인다고 전망했다.

하이브리드IT와 클라우드 컴퓨팅

지난해 클라우드 컴퓨팅이 단일 목록으로 존재했다면, 올해는 퍼스널 클라우드와 하이브리드 클라우드로 나뉘어 소개됐다. 그만큼 가트너는 클라우드를 중요한 전략기술로 바라봤다.

가트너는 지난 세월 기업들이 자사 정보를 어떻게 하면 클라우르도 옮길 수 있을까를 고민했다면, 이제는 얼마나 효율적으로 클라우드 환경을 구축해 정보를 관리할 수 있을지를 고민하고 있다고 설명했다. 그 결과 보안이 중요한 데이터는 자체 데이터센터를 구축해 관리하고, 웹서비스 데이터는 퍼스널 클라우드를 통해 서비스하는 경우가 늘어나고 있다고 전했다.

전략적 빅데이터

2012년 빅데이터가 얘기가 빠지지 않았다. 2013년도 마찬가지다. 다른점이 있다면 단순히 소셜 데이터를 긁어모아 고객데이터와 결합해 결과를 바라보기보다는 하둡과 같은 NoSQL을 통해 비정형 데이터 그 자체를 분석하는 게 중요해졌다.

가트너는 기업의 데이터웨어하우스(DW)는 죽었다며, 새로운 데이터 분석 기술을 결합해 빅데이터 시대를 맞이할 필요가 있다고 주장했다.

실용분석

그 연장선상에서 이뤄진 게 실용분석이다. 가트너는 기존에 수집은 했으나 활용하지 못한 웹로그, 사내 잡다한 트랜잭션 데이터를 분석해 기업 전략에 도움되는 방향으로 사용할 것을 권고했다.

인메모리 컴퓨팅

빅데이터를 처리하려면 빠른 메모리도 필수다. 가트너는 성능과 응답시간을 향싱시킬 수 있다는 이유로 이번에도 인메모리 기술을 주목했다.

통합 생태계

이번에 처음 등장한 개념이다. 가트너는 어플라이언스 같은 소프트웨어와 하드웨어가 결합된 IT 환경이 인기를 끌 것이라고 내다봤다. 소프트웨어와 하드웨어 따로 애플리케이션 워크로드를 처리하는 시대는 지났다면서 말이다. 가트너는 적어도 향후 5년간은 어플라이언스가 인기를 끌것이라고 전망했다.

엔터프라이즈 앱스토어

지난 2012년 가트너가 모바일 앱스토어가 주목 받았다면, 올핸 엔터프라이즈 앱스토어의 등장을 눈여겨 봤다. 스마트위킹과 BYOD 근무 환경이 도입되면서 점차 기업이 사내 직원들이 사용할 응용프로그램(앱)을 제작하기 시작했고, 그 결과 2013년엔 엔터프라이즈 앱스토어 시장이 활성화 될 것이라면서 말이다. 가트너는 2014년이 되면 상당수 직장인들이 엔터프라이즈 앱 마켓에서 앱을 내려받아 사용하고 있을 것이라고 내다봤다.

Posted by cyj4369
,

1. 이 기능의 필요성

물론 마우스로 선택한 후 복사나 붙여넣기를 해도 되지만..
이렇게 하면 vim이 아니라 시스템에서 처리하는 것이므로, 줄번호 까지 붙여 넣어집니다.
또, 마우스로 선택하는 것 보다는 키보드가 편할 뿐 더러, 마우스로 선택하면 자동으로 스크롤이 안됩니다.

2. 사전지식
v : 컬럼단위 비주얼모드
Shift+v : 줄단위 비주얼모드
Ctrl+v : 블럭 비주얼모드

v 키를 다시 누르면 정상모드로 복귀합니다.

비주얼모드에서 화살표로 이동한 후 y로 vim내의 클립보드로 복사할 수 있습니다.
블럭단위가 아닐경우 Y키를 누르면 줄단위로 vim내의 클립보드로 복사 됩니다.
그리고 난 후 p키로 뒤에, P키로 앞에 붙여넣을 수 있습니다.

vmap, vnoremap 명령은 키매핑을 비주얼모드에서만 동작하게 합니다.
편집모드에서 Ctrl+v키는 특수문자 입력키이므로, v[nore]map으로 매핑하면
편집모드에서는 특수문자 입력키로 사용됩니다.

3. 준비작업
시스템 클립보드와 연동하기 위해선 클립보드에서 얻기및 붙여넣기를 할 수 있는 프로그램이 필요합니다.

Code:
sudo apt-get install xclip

4. vim에 기능 추가

#~/.vimrc의 내용
Code:
"붙여넣기시 자동들여쓰기를 하지 않게함
set paste
"붙여넣기 모드 선택키
set pastetoggle <Ins>

"yank후에 마크위치로 이동하기에, 다시 커서를 이동시킴
vnoremap y y`>
"라인단위 yank후에 마크위치로 이동하기에, 다시 커서를 이동시킴
vnoremap Y Y`>
"붙여넣기 후 붙여넣기된 끝으로 커서이동
noremap p p`]

"비주얼블럭의 내용을 클립보드로 붙여넣기
vmap <C-c> y:call system("xclip -i -selection clipboard", getreg("\""))<CR>

"Control+v키가 비주얼 블럭모드 키라서 Control+w로 대체 (에디트플러스의 Alt+w에서 착상)
noremap <C-w> <C-v>

"클립보드의 내용을 vim으로 붙여넣기
map <C-v> :call setreg("\"",system("xclip -o -selection clipboard"))<CR>p

'Embedded Lab > linux, x86' 카테고리의 다른 글

[LVM(Logical Volume Manager)]  (0) 2012.11.01
[우분투에서 환경변수 설정하기]  (0) 2012.10.30
[우분투 클립보드 프로그램]  (0) 2012.10.26
[diff 사용법]  (0) 2012.10.26
[find]  (0) 2012.10.18
Posted by cyj4369
,