ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [산대특] 소프트웨어 관리, LVM, RAID 0~10, RPM
    [산대특]클라우드기반 빅데이터 활용 정보 시스템보안과정/Linux 2024. 8. 29. 18:40

    0828

     

      주기적으로 어느 작업을 수행하거나 할 때 cron(d) 를 사용한다. =>주기적 수행 작업

      일시적으로 작업을 수행할 때에는 at(d)를 사용한다. => 일시적 수행 작업

    => 주기적으로 quota 를 점검한다면 crond 를 사용해주면 된다. (실습)



    quota 를 주기적으로 점검하게 실습

    실행파일

    기존의 쿼타를 껐다 키는 실행파일을 만듦

    실행파일 권한 주고

     

    crond 작업 작업

     

    crontab -e

    (vi 모드로 켜진다)

    시간은 매시간 으로 해두고. 매번 점검하게 둔다. 

     

    앞으로 실행할 때 점검하게 될 겁니다. 

     

    부팅 될때마다 쿼타 작업이 되게 한다. 



    ***  HDD에 관련된 RAID, LVM, 그리고 NIC(Network Interface Card) 에 관련된

    Channel Bonding, IP-Binding, Cloud 에서의 Service 기법은

    물리적인 여러 장비를 묶어 논리적인 하나의 가상 장치로 만들고, 이를 통해서 서비스가 이뤄지게하는 기법이다. 

     

    (이유는)이렇게 하면 내부적으로 하나의 물리적인 장치에 문제가 생겨도

    외부의 논리적인 가상장치가 정상이면 서비스는 정상으로/지속적으로 이뤄지게 된다.

    내부적으로 어떤식으로 작동되는지 외부로 알려질 필요가 없을 수 있는데

    이런 개념을 Transparent(투명하다, 사용자로부터 은닉)하다고 한다.

     

      네트워크나 시스템 설계에서는 항상 Fail-Safe/Safe-Failure 를 염두해두어야 하는데 Fault-Tolerance, Round-Robin(Anycast 되는에가 먼저), Load-Balancing(부하균등), 그리고 Redundancy(잉여)가 있어야 한다. 

     

      HDD 관리의 RAID/LVM [인터뷰에서 RAID 도 많이 나온다, RAID 반드시 알고 있어야]

      Redundant Array of Inexpensive(OR Independent) Disks)/(Logical Volume Manager)

     

      RAID 를 사용하는 목적은 적어도 두 개 이상의 디스크를 RAID 로 묶어

    데이터를 저장한 뒤 어느 한 디스크가 고장 나더라도 저장된 데이터가 그대로 존속되게 하는 기법이다.

    서버를 구축하고 모든 중요한 데이터를 하드디스크에 저장했다고 해보자.

    만일 하드디스크 하나를 사용하고 있는데 그 디스크가 고장 나면

    운영에 필요한 시스템 파일 뿐만 아니라 중요한 모든 데이터를 잃고 말게 될 것이다. 

     

      대부분 하드웨어 RAID 에 참여하는 하드디스크는 주로

    같은 브랜드에서 같은 용량을 가진 디스크들이지만

    최근에는 서로 다른 용량의 하드디스크를 모아서 RAID 를 만드는 Linear RAID 도 있다.

    하지만 소프트웨어 RAID 에서는 엄격하지않다. 

     

      RAID 레벨에는 몇가지가 있지만 주로 다음 세 가지를 사용.

    RAID 0
    데이터 복원은 안 되지만 암(arm: 컨트롤러)이 두 개여서 읽기/쓰기 속도가 빠름 => stripe without parity
    RAID 1
    데이터 복원이 되고 두 개의 디스크가 필요한 중소 조직용 => mirroring
    1GB 두 개로 미러링하면 실제 데이터 저장 공간은 1GB 가 된다.
    RAID 1 은 데이터 복원이 가능하고 주로 중소형 조직에서 사용된다고 기억하자. 

    RAID1은 또한 핫 스페어(hot spare)를 지원하는데 어레이를 구성하고 있는 디스크 중
    하나가 실제로 사용되지 않고 스페어로 있다가 미러된 디스크 중 하나가 고장 나서 제거되면
    이 스페어 디스크가 자동으로 미러에 참여하게 되고 또 하나의 정상 디스크로부터 데이터가 복사되어져 클론되게 된다.
    RAID 5
    데이터 복원이 되며 세 개 이상의 디스크가 필요한 대형 조직용이다. =>stripe with parity
      odd(홀수) parity와 even(짝수) parity가 있는데 디폴트는 odd parity이다.
    데이터에서 1의 갯수가 홀수가 되도록 0, 1을 추가해준다.  
    이외에 RAID 6(4 HDD 필요, 2개의 HDD에 문제가 있어도 데이터 복원 가능),
    그리고 RAID 1과 RAID 0을 합친
     RAID 10(4 HDD 필요)등이 있다.

    RAID를 구성했던 HDD를 시스템에서 빼내면 /dev/md1, /dev/md5 등으로
    생성되어져 있던 가상의 RAID 디스크도 자동으로 삭제된다.

     


     

     

    RAID 실습

     

    어제 쿼타 자동마운트 해둔거

    주석 처리하고 

     

    shutdown -h now /init 0 로 끄고 

    물리적인 하드디스크 크기를 만든다. 

    1기가짜리 6개를 만든다. 

    2개를 RAID1 3개를 다른 RAID 로 만들거에요 

     

    킵니다

     

    디스크가 인식이 되어 있다. 

     

    이렇게 하고 

     

    t 를 입력한다. 

     

    그리고 대문자 L 을 치면 파티션 유형이 나온다. 

     

    이래야 하드가 RAID 준비가 된다. 

     

     

    w 하고 저장

     

    n > p > 1 > 엔터 엔터 > t > fd > w

     

    각각 파티션을 RAID 로 해준다. 

     

    어디까지 했는지 기억 안날땐

    요로코롬 확인

     

    마지막으로 확인. 

    sdb1, sdc1 은 RAID 1 로 묶고 

    나머지 3개는 5으로 묶을거다 

     

    mdadm --create /dev/md1 --verbose --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 

    (md1 가상의 레이드1 장치)

    sdb1, sdc1 를 md1 으로 묶을겨 

     

    y 입력 하면 만들어진다. 

     

    상태가 어떻냐? 만들어졌고 크기는 저렇다. 

     

    인제 md1 이 하나의 디스크다. 논리적인 디스크가 되었다. 

     

    안정적인 3 사용

    직접 b1, c1 이 아닌 두개를 합친 md1 사용



    과정을 보여라 verbose 

    설정 파일이 있어야 실행 되니.. 

     

    md1 의 UUID 를 복사해서 자동 마운트 되게 한다. 

     

    init 6 해서 리붓 해준다. 

    그럼 자동으로 마운트 될 것!

    => 원래 마운트 포인트를 만들고 해줘야 하는데, 안했는데 자동으로 만들어졌다!

     

    이제 RAID1 한 md1 에 데이터를 넣고 물리적인 디스크 하나 박살내고

    리붓 한 후 데이터가 살아있는지 볼 것이다. 

     

    파일을 하나 넣어준다. 

     

    init 0 로 끈다. 

    sdb1 디스크를 지운다. 

    Remove

     

    이러면 레이드 안에 두 개 중 하나가 없어짐 

     

    다시 킨다. 

     

     

    디스크가 빠지면 순번이 당겨진다. 

    다시 init 0 으로 끈 뒤 

    복원 하는 법도 배운다. 

     

    다시 하드를 물려 참여시키면 된다. 

    다시 edit 에서 하드를 만든다. (그럼 아까 지웠던 2번이 다시 2번으로 생긴다)

     

    다시 킨다. 

    다시 sdf 가 생겼다. 

     

    fdisk /dev/sdb 를 확인한다. 

    n p 1 엔터엔터 t fd w

     

    참여시키기 위해 포맷 시키기

     

     

    이제 참여 시키기 

     

    자세히 봐보자

    mdadm /dev/md1 --detail 

    잘 참여/추가 했다.




    이제 RAID5 실습을 해보겠다. 

    묶기 준비 

     

    mdadm --verbose --create /dev/md5 --level=5 --raid-devices=3 /dev/sdd1 /dev/sde1 /dev/sdf1

     

     

    마운트 포인트 만들기

     

    UUID 복사하고 

     

    fstab 가서 자동 마운트 설정

    nano /etc/fstab

    하고 저장하고 나온다. 

     

    마운트하고 파일을 집어넣는다. 

     

    reboot 한다 

     

    자동으로 마운트가 되었는지 확인한다. 

    잘 있다. 

     

    이제 다시 꺼서 디스크 하나 주우겨벌여

    Disk 5번을 지운다. 

     

    다시 킨다. 

     

    3개로 물려져있는 RAID5 중 하드가 하나 망가졌다. 

     

    확인해보니. 요로코롬 된것을 확인했고 



     

      RAID 10[one zero] 은 

      RAID 0(데이터 입출입 속도가 빠름) 과 RAID 1(미러링, 데이터 복원) 을 합친 것이다. 

      RAID 0 을 위한 두 개의 HDD 로 /dev/md0 생성, 

      RAID 1을 위한 두 개의 HDD로 /dev/md1 을 생성 한 뒤, 

      RAID 10 을 /dev/md0 과 /dev/md1 을 묶어서 생성(/dev/md10)해주면 된다. 

    => 이들은

    a. 
    먼저 /dev/sdb1과 /dev/sdc1 두 디스크를 RAID1로 구성한다. 
    mdadm --verbose --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
    해주고 생성 확인에서 yes를 입력하면    array /dev/md1 started가 보인다. 

    /dev/ 아래에 RAID1 어레이 md1이 생성되었다. 
    b. 
    이어서 /dev/sdd1과 /dev/sde1 두 디스크를 RAID0으로 구성하는데 
    mdadm --verbose --create /dev/md0 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1
    해주면 /dev/ 아래에 또 하나의 RAID0 어레이 md0이 생성된다. 
    c. 
    이제 /dev/md1과 /dev/md0을 합쳐서 /dev/md10식으로 RAID10을 구성해준다.
    mdadm --verbose --create /dev/md10 --level=10 --raid-devices=2 /dev/md1 /dev/md0
    해주면 md1과 md0을 하나로 묶어서 /dev/ 아래에 RAID10 어레이 md10이 생성된다.
    생성 확인에서 y를 입력한다. array /dev/md10 started라고 보인다.
    d. 
    이어서 mkfs.ext3 /dev/md10
    e. 
    mdadm --detail --scan --verbose > /etc/mdadm.conf 해주면 된다. 
    f. 
    mkdir /RAID10
    g. 
    mount /dev/md10 /RAID10 해주고 
    h. 
    파일 넣어두고
    i. 
    blkid 해서 /dev/md10의 UUID를 확인하고 
    j. 
    /etc/fstab 파일을 열고 설정한 뒤
    k. 
    머신을 끄고, HDD 하나를 빼고
    l. 
    리부팅 한 뒤 데이터 유지 확인

     

     

    **  btrfs 와 xfs 포맷으로도 매우 간단하게 RAID 를 생성할 수 있다. 

     

      XFS로 RAID5 시스템 구축하기

    ① 3개의 1G HDD를 추가한다. 머신을 부팅하고

    ② ls /dev/sd* 해서 /dev/sdb와 /dev/sdc, /dev/sdd를 확인한다.

    ③ 간단한 쉘에서 작업해본다. 스크립트로 만든다면 

    #!/bin/bash 하고 작성해주면 된다.
    ### 먼저 이전에 각 디스크에 정보가 있으면 삭제하는데
    for i in sdb sdc sdd 
    do 
      sudo wipefs -a /dev/$i    #=> wipe 파일 스크립트?
      sudo mdadm --zero-superblock /dev/$i 
    done 해주고 
    b. 이어서 fdisk 대신 간단한 parted 도구로 파티션 해준다.  
    for i in sdb sdc sdd
    do 
      sudo parted --script /dev/$i "mklabel gpt" 
      sudo parted --script /dev/$i "mkpart primary 0% 100%"  #100프로 다 사용
      sudo parted --script /dev/$i "set 1 raid on" 
    done 한 뒤

     lsblk나 ls /dev/sd* 해본다.

    ④ mdadm --create /dev/md5 --level=stripe --raid-devices=3 /dev/sd[b-d]1

    해서 RAID5를 /dev/md5 이름으로 만들고 디스크를 추가한 뒤

    ⑤ mkfs.xfs /dev/md5 해서 포맷한다.

      (요건 나중을 위해 선생님이 필기 따로 주심)


    w.gpt 개인공부

    mdadm --detail --scan --verbose > /etc/mdadm.conf 명령어는 RAID 어레이의 구성 정보를 스캔하고, 이를 /etc/mdadm.conf 파일에 저장하기 위해 사용됩니다. 이 과정은 RAID 어레이를 자동으로 마운트할 수 있도록 시스템에 RAID 구성 정보를 제공하는 중요한 단계입니다.


     LVM(Logical Volume Management)으로 디스크 관리하기

    운영체제를 다시 설치하거나 별도의 작업 없이 /home 파티션의 용량을 크게 확장시켜주는 기법이 바로 LVM이다.

     

    LVM은 파티션된 디스크들의 물리적 여분 공간을 모두 모으거나

    새로 디스크를 추가해서 하나의 논리 공간으로 확장시켜줄 수 있다. 

     

      LVM 생성 순서는 

      PVs(물리적 볼륨) 생성 =>VGs(볼륨 그룹)를 생성 =>LVs(논리적 볼륨)로 만들어서 사용한다. 

     

    *** Partition Magic OR Partition Wizard는 Windows에서 HDD에 관련된 작업을 해주는 도구

     

     

     

     

    LVM 실습

    기존 자동 마운트 주석 처리

    nano /etc/fstab

     

    끄고 하드를 두개만 장착하게 구성한다. 

    이걸로 LVM 을 구축할겨

     

    현재 파티션은 되어 있지 않다. 

     

    fdisk /dev/sdb 

    n p 1 엔터엔터 t 8e w

     

    sdc 도 해준다. 

     

    PV 물리적 볼륨 먼저 생성한다. 

    vgcreate vg-home(붙인 이름) /dev/sdb1

    너를 vg-home 이라는 볼륨 그룹을 생성

     

    내가 만든 vg-home 에 /dev/sdc1 를 추가한다

    vg volume group

     

    ## 만약 세번째 서버도 있다면

    이런식으로 하면 세개가 묶인다. 

     

    혹은 같이 묶는 법도 있다. 

    이렇게 해도 된다. 

     

    vgdisplay 하면 내용이 뵌다.

    PE Size 는 나중에 디지털 포렌식에서 

     

    lv logical volume

    로지컬 볼륨을 만들어라 vg-home 으로 만들어라

    -n 이름

    -L 논리적 크기는 2.5기가다 

     

    나머지 0.5 기가가 남았다. 

     

    꽉 말고 약간 적게 설정. (하드보면 숫자가 딱딱 맞지 않으니까)

     

     

    크기를 보고 싶다. 

     

    포맷해줬다. 

     

    그다음 마운트해서 사용한다. 

     

     

    각각 마운트 시켜준다. 

     

    크기 보기 

     

    1 + 2 하고 2.5 와 0.48 기가로 나눴다. 

     

    이제 469가 작아 디스크를 추가해 늘려줄 것이다. 

     

    각각 디렉터리에 파일을 집어 넣는다. 

     

    둘 다 잘 들어갔다. 

     

    이제 핵심인 공간 늘리기 !

     

    가상머신을 끈다. 

    하드디스크를 추가하고 다시 킨다. 

     

    sdd 가 들어가 있고 파티션이 되어있지 않다. 

     

    파티션 시켜준다. 

    fdisk /dev/sdd

    n p 1 엔터엔터 t 8e w

     

    포맷 하고 

     

    추가한다. 

     

    현재 vg-home 엔 세개의 하드가 들어가 있다. 

    lg bak 을 이제 늘려준다. 

     

    추가니까 + 를 붙였다.

     

    물리적인 오류가 있나 점검 fsck

     

    contiguous 연속 

    non-contiguous 연속적이지 않는 것이 0% == 잘 연결 되었다. == 비 연속적인 부분이 없다. 

    => 물리적인 하드는 다르지만 하나다.

     

    resize2fs /dev/vg-home/lg-bak 

    해서 갱신

     

    마운트한다.

     

    마운트 해야 추가완료

     

    리눅스에서는 파일을 옮기지 않고 파일이 있는 상태에서 디스크를 추가해도 괜찮다. 

     

    자동 마운트 될 수 있게 추가한다 

    nano /etc/fstab

    이렇게 해도 되지만 오류가 뜰 확률이 높다. 

     

    리붓확인 하니

    잘 되었다. 

     

     

    ZFS(Z File System) 파일 시스템

      차세대 포맷 시스템인 ZFS 

    파일 시스템과 각 HDD 가 직접 연결되는 구조가 아니라 Virtual Volume 가 이 HDD들을 묶어서 관리하는 구조이다. 

     

     

    ZFS File System 특징

    - ZFS 파일시스템은 강력하고 확장성이 뛰어나며 관리가 편리하도록 디자인되어 있다.

    - 최소 물리적 디스크 크기는 128MB 필요, 권장 메모리는 최소 768MB이지만 성능상 1G 메모리 이상 필요

    - 미러링을 구현 한다면 다중 컨트롤러(RAID 0) 권장

    - 기본적으로 ZFS 파일시스템을 만들면 EFI Label을 사용하게 된다.

    - HDD 저장 풀(Pool) 가능, Copy-on-Write 기능, Snapshot 기능, 데이터 무결성과 자동 수정 기능,

    RAID 5와 유사한 RAID-Z 구성 가능, 16EB까지 설정 가능,

    그리고 무려 256개의 Quardrillion Zettabytes 저장 가능하다는 특징이 있다.

     

    => Copy-on-Write 기능은

    일반 파일 시스템에서는 데이터가 겹쳐 쓰이면 이전 데이터는 삭제되는데

    ZFS에서는 새로운 데이터를 다른 블록에 써서 일단 쓰기가 끝나면

    파일 시스템의 메타데이터가 업데이트되어 새로운 데이터를 가리키게 되어서

    시스템 크래시에 기존 데이터가 자동으로 보존되게 한다(Linux의 journaling 기능과 유사).

    => 시스템 크래시에도 물리적으로 체크해주는 e2fsck 도구를 사용할 필요 X

     

    RAID는 RAID-Z로 부르고, 

    RAID-Z1(2HDD:data+1HDD:parity <=3HDD)

    RAID-Z2(2HDD:data+2HDD:parity <=4HDD)

    RAID-Z3(2HDD:data+3HDD:parity <=5HDD)이다.

     



    zfs 실습

    우분투로 가봅니다.

    하드 2개 추가

    설치

     

     

    zpool 

    zlspool 이름으로 미러를 구성해주세요 

     

    파티션 하지 않아도 하나 더 생겼어요

    왜 9가 나오냐. 원래 파티션하면 쪼꼼 남는데 그것을 9로 표현해둔 것. thats 쥐꼬리

     

    우분투를 끈다. 

     

    하드 디스크를 추가한다. 

     

    다시키고 

    잘 있고 

     

    zfspool 로 기존 미러에 추가한다

     

    늘어나있다!

     

    자세히 볼 수 있다. 

     

    미러로 묶은 zfspoll 안 에 디렉터리 만드는 것은

     

     

    소유권과 그룹 만들기

     

     

    이 안에다가 몇개의 파일을 만드는데 

     

    1메가짜리 3번이니까 3메가 정도 

    총 이맘큼함

     



     

    삭제할 땐 이렇게 

     

    읎어요




      소프트웨어 관리 에서 파일 압축과 풀기

    Linux 시스템에서의 파일을 압축하거나 압축된 파일을 풀 줄 알아야 한다.

    사용되는 도구는 tar, rpm, yum, apt(-get), zip, bunzip 등

     

    여러 가지가 있는데 주로 시스템이나 사용자의 데이터를 백업하거나

    벤더의 소스 프로그램이나 커널 배포 패키지를 다운받아서 풀고 시스템에 설치할 때 사용된다. 

     

      tar에서 가장 많이 사용하는 명령어는 묶을 때 c, 풀 때 x 옵션을 사용해서 

    ■ ~.tar.gz 포맷으로 압축해서 묶거나(c) 풀 때(x)에는 z를 사용해서 cvfz와 xvfz 하면 되고,

    ■ ~.tar.bz2 포맷으로 압축해서 묶거나(c) 풀 때(x)에는 j를 사용해서 cvfj와 xvfj 하면 된다. 

    ■ ~.tar.xz 포맷으로 압축해서 묶거나(c) 풀 때(x)에는 J를 사용해서 cvfJ와 xvfJ 하면 된다. 

     =>여기서는 ~.tar 파일이 되므로, tar xvf ~.tar 해서 완전히 푼다.

     

    tar로 묶기 tar cvf 결과파일이름.tar 묶일파일/폴더들
    묶여있는 tar에 추가 tar rvf 추가할파일
    특정 파일 빼기 tar --delete --file 
    묶인 파일 보기 tar tvf
    tar 로 풀기 tar xvf 풀tar파일 ‘-C 위치’ (-C 풀릴 위치 지정)
    tar 파일 삭제 rm -rf ~.tar

    tar로 묶고 압축하기

    => tar cvfz 결과파일.tar.gz 묶일_파일/폴더들

    => tar cvfj 결과파일.tar.bz2 묶일_파일/폴더들

     

    tar.xz 확장자로 묶는 방법

    1. ~.tar 파일을 대상으론

    => tar cvf test.tar abc.txt xyz.lst abc xyz (이미 만들어진 파일)

    => xz test.tar 하면 test.tar.xz 확장자

    => unxz test.tar.xz 해주면 test.tar 파일이 됨

     

    2. 처음부터 ~.xz 로 압축

    => tar cvfJ test.tar.xz /home/centos/*

    => tar xvfJ test.tar.xz  (푸는 법)

     

     

     

    tar 실습

    tar cvf test.tar(결과 파일) (묶일애들 촤르를)

     

    묶이는거 

     

    묶일 땐 결과파일이 앞에 

     

    요거는 추가 

     

     

    만약 어떤 것을 뺀다. 

    하면 뺄 수 있다. 

     

    묶여있는 것을 푸는 거 

     

    이렇게 하면 없어진다. 



    실습 cvfz 묶고 압축

     



    실습

     

     

     

    처음부터 묶고 압축

     

     

     

      star(security tar) (카운팅 스탈~)

      tar 파일에서 주의해야 할 것이 하나 있는데

    tar 파일을 복사/이동할 때 보안 콘텍스트가 변경될 수 있다는 것이다.

    이런 현상은 Windows 서버에서 폴더나 파일을 이동/복사할 때에도 마찬가지

     

    같은 디렉터리 내에서 tar 파일을 이동/복사할 때만 원래 속성을 유지하고,

    다른 디렉터리로 이동되면 해당 디렉터리의 속성을 따른다.

    Linux 에서는 이럴 때 star 명령어를 사용해서 속성을 지킬 수 있다.

     

    여기서 콘텍스트(context)라는 용어는 파일/디렉터리의 보안 설정을 말하는데

    ‘ls -dZ 파일_명’식으로 Z를 사용한다. SELinux와 chcon 명령어에서 자주 보게 된다.  

     

      gzip

      파일과 디렉터리를 묶거나 압축할 때 tar를 주로 사용하지만, 파일 압축에 gzip를 사용하기도 한다. 압축하면 파일의 저장 공간을 줄여주고, 파일 전송 시 전송시간을 줄여주지만 여러 파일을 묶어서 하나의 파일로 백업할 때도 사용된다. gzip에서는 별도로 생성되는 파일_명을 지정하지 않으면 '해당_파일_명.gz'로 압축된다. 

     

      gzip/zip으로 파일 압축하기와 풀기 - gzip과 gunzip(=gzip -d) / zip과 unzip

      'gzip 파일_명'하면 '파일_명.gz'라는 압축하는 파일명의 압축파일이 생긴다. 여러 파일을 압축한다면 -r 옵션을 쓰면 된다. 하지만 디렉터리는 압축되지 않는다

      gunzip(OR gzip -d) 파일_명.gz 하면 압축이 풀린다.

     

     

     

    다시 실습!

    아수쿠림 맛있다

     

    파일명을 정해주지 않으면 원래 이름으로 붙는다. 

     



    zip도 비슷 

    묶어져버려서 없어졌데 

     

      bzip2, bunzip2(OR bzip2 -d)

      'gzip 파일_명'하면 '파일_명.bz2'라는 압축하는 파일명의 압축파일이 생긴다.

     

      여러 파일을 압축한다면 -r 옵션을 쓰면 된다. 하지만 디렉터리는 압축되지 않는다. 

      bunzip2(OR bzip2 -d) 파일_명.bz2 하면 압축이 풀린다.

     

      compress/uncompress

      compress 파일_명 하면 '파일_명.Z'가 생기고

      compress -d(OR uncompress) ~.Z 하면 풀린다.

     

     

     

    RPM은 RedHat에서 개발한 오픈소스 패키지 관리시스템으로

    RedHat 계열의 Linux 배포판을 위한 디폴트 패키지 관리도구.

     

    RPM 포맷의 패키지를 얻어서 rpm 명령어(rpm -ivh ~)로 설치하면 해당 소프트웨어를 사용할 수 있다.

     

    RPM 패키지에는

    바로 설치할 수 있는 이진 코드(~.rpm) 와

    소스 코드(~.src.rpm(=srpm))도 들어 있는데,

     

    소스 코드를 배포하는 이유는

    소스를 이해할 수 있는 다른 개발자들은 이 배포 패키지의 소스 코드를 개선해서

    더욱 성능을 높이거나 자신의 조직에 적합한 형태로 변형한 뒤

    rebuild 해서 RPM 이진 파일로 만들어서 설치하거나 재배포할 수 있다. 

     

      현재는 yum ~으로 편리하게 종속적(dependencies)인 파일까지 관리하면서

    소프트웨어를 설치할 수 있지만 RedHat 계열의 소프트웨어는

    rpm 포맷으로 배포하기 때문에 여전히 잘 알아 두어야 한다. 

     

      RPM의 여러 옵션

    i / U i 는 패키지 설치, U는 패키지 업그레이드나 설치
    e 패키지 제거
    v 설치과정 보기 
    h 설치 진행율을 #으로 보임, --percent를 사용하면 설치 진행율을 %로 보임 
    p 어느 패키지에 들어 있는지 보임
    l 패키지에 들어있는 파일을 보임
    q 패키지 설치여부 검색으로 qa, qf, ql, qpl, al과 Va 등이 있음

     

      이외에도

    충돌을 무시하고 설치하는 --force,

    의존성을 무시하고 설치하는 --nodeps,

    기존 패키지에 이상이 있을 때 대체해주는 --replacepkgs,

    기존 패키지와 버전이 다를 때 대체해주는 --replacefiles도 있다.

     

      일반적으로는

    rpm –ivh/-Uvh file_name.rpm식으로 설치한다

    (OR yum file_name.rpm 해도 설치된다).

      rpm -ivh http://~ .rpm 파일 해서 웹상의 rpm 파일을 바로 로컬에서 설치할 수도 있다. 

     

     

     

    srpm 구경

    중앙에 Source RPM 이 있고 얘는 설치하지 못하는 얘 이다. 

    최상단 rpm 다운받으면 설치 가능. srpm은 dlc 같은거 

     

     

    rpm –ivh https://www.rpmfind.net/linux/dag/redhat/el7/en/x86_64/dag/RPMS/rpm forge -release-0.5.3-1.el7.rf.x86_64.rpm

     

    -Uvh 해도된다. (U upgrade)

     

     

      rpm 패키지 서명(signature)

      웹상에서 배포되는 rpm 패키지는 OpenGPG 표준(RFC2440)을 따르는 GPG(Gnu Privacy Guard) 도구로

    DSA 암호화 알고리즘(md5/sha1)을 사용해서 생성한 패키지를

    배포자의 공개키와 패키지에 들어있는 개인키로 상호 서명(signature)할 것을 요구한다. 

     

      A 사용자가 B 패키지를 웹에서 다운받아서 사용한다면 웹상의 B 패키지에는 배포자의 공개키가 들어있고,

    이 패키지를 다운받아서 설치하는 A 사용자(머신)에는 B 패키지의 개인키가 들어 있다.

    A 사용자는 자신의 패키지에 들어있는 개인키와 웹상의 B 패키지의 공개키를 비교해서

    파일의 무결성(Integrity)을 확인 수 있다. 

     

      개인키와 공개키는 동시에 생성되므로(one pair)

    패키지가 상호 동일한 개인키와 공개키로 서명되면

    해당 패키지에 유일한 ID가 부여되어서

    rpm 명령어로 해당 패키지를 설치할 때 이 숫자로 해당 패키지가

    오리지널 소유자로부터 배포되어 이상이 없는 것이 된다.

     

    설치 시 NOKEY라는 단어가 보이면 해당 패키지에 대한 개인키가 설치되는 컴퓨터에 없거나,

    배포자가 이런 공개키를 생성해 두지 않아도 NOKEY로 나온다.

     

      CentOS 설치 DVD에도 RPM-GPG-KEY-CentOS-7가 있는데

    열어보면 public key가 있고, sha1,256,512, md5 해시가 있다.

     

    이 DVD에 있는 4,000여개의 rpm 설치 파일이

    이 키에 의해서 Integrity한 것을 보증하는 것이다.

    private key는 각 RPM 설치파일이 가지고 있게 된다.

     

      CentOS는 이런 키들이 모여있는 곳을 Keyrings라고 하고, /etc/pki/tls/ ~ 아래에 있게 된다. 

     

      자주 나오는 SOURCE, SPEC, RPMBUILD, 그리고 RPM 파일의 관계를 다음 표로 간략히 정리해 두었다.

    명칭 형태 사용처
    SRPM *.src.rpm rpm 패키지를 생성해주는 소스코드 파일 bison-2.3-2.1.src.rpm
    SPEC *.spec  pmbuild 명령어로 rpm 파일을 만드는 파일 rpmbuild -bb bison.spec
    RPM *.rpm 이진코드로써 설치해서 사용할 수 있는 파일 bison-2.3-2.1.i386.rpm

     

    rpmbuild --help 해서 옵션

    bb 스펙 파일로부터 이진 패키지 rpm을 만들 때, 
    bs 스펙 파일로부터 소스 패키지 srpm을 만들 때,
    ba 스펙 파일로부터 소스와 이진 패키지를 만들 때 사용되는 옵션이다. 
    이와 유사하게 
    tb 타볼 소스로부터 이진 패키지를 만들 때, 
    ts 타볼 소스로부터 소스 패키지를 만들 때,
    ta 타볼 소스로부터 소스와 이진 패키지를 만들 때 주로 사용되는 옵션이다.  

     

    nmap 도 rpm으로 다운로드 받을 수 있다.

    요기 키가 보인다. 

     

    패키지 서명

     

    쪼기 private 에 개인키가 들어있다. 

     

     

     

    -qa 물어본다 pubkey 있니

     

    키가 있으면 키를 넣어줄 수 있다. 

    웹상에 떠 있는 rpm 파일 

    => 아까 설치 했다 

     

    wget --no-check https://www.rpmfind.net/linux/dag/redhat/el7/en/x86_64/dag/ RPMS/memtee-0.3-1.el7.rf.x86_64.rpm

     

    => 이 파일에 서명이 있다. 

     

    설치해보겠다. 

     

    센토스에 대한것도 다 들어와있고, 아까 찾던 것도 들어가 있다. 

    ls /etc/pki/rpm-gpg

     

     

    html 빼고 다운받?

     

    RPM 파일 작업을 위한 노동노동…

     

    컴파일러 설치 

    rpmbuild --help

     

    소스 rpm 풀기 > 오류

     

    wget http://www.rpmfind.net/linux/KDE/unstable/server/kolab/kolab-server-1.0/src/bison-1.35-20030604.src.rpm

    지우고 다시

     

     

    워닝은 상관음써!

    암두 날 막을 수 엄써

     

    rpmbuild 가 생김

     

    이 안에 이게 이쒀!

     

    얘는 뭐가 되느냐. 

    오리지널 여기있는 bison의 rpm 을 원하는데, 소스 파일은 중간에 있는애. 왜 애를 만들었냐 소스를 보고 변형하려면 변형해 이다. 

     

    nano /rpmbild/SPECS/bison.spec 에서 할 수 있다 

    열면 rpm -ivh 해서 설치하는거 전이다. 

     

    스펙 파일로부터 이진파일을 만든다 => --bb

     

    이진 rpm 패키지를 생성

    하고 싶어따..

    폴더가 늘어나 있다. 

     

     

     

연의 취업 도전기.