리눅스 / RAID / Linear RAID / Linear RAID 만들기

Linear RAID

Linear RAID를 이용하면 여러 개의 하드디스크를 하나의 하드디스크처럼 사용할 수 있습니다. 예를 들어 2TB, 1TB 하드디스크를 Linear RAID로 묶으면 3TB 하드디스크 하나를 사용하는 것처럼 작동합니다.

환경

CentOS 7를 OS로 한 컴퓨터에 2GB, 1GB 하드디스크 두 개를 추가하였습니다. 컴퓨터에 장착된 하드디스크 목록은 ls 명령어로 확인할 수 있습니다.

[root@localhost ~]# ls -l /dev/sd*
brw-rw----. 1 root disk 8,  0 Jun 12 12:21 /dev/sda
brw-rw----. 1 root disk 8,  1 Jun 12 12:21 /dev/sda1
brw-rw----. 1 root disk 8,  2 Jun 12 12:21 /dev/sda2
brw-rw----. 1 root disk 8, 16 Jun 12 12:21 /dev/sdb
brw-rw----. 1 root disk 8, 32 Jun 12 12:21 /dev/sdc

하드디스크에 파티션 만들기

fdisk 명령어로 sdb 하드디스크에 파티션을 만듭니다. 파티션의 Hex code는 fd로 합니다.

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x2baef374.

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-4194303, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303):
Using default value 4194303
Partition 1 of type Linux and of size 2 GiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

sdc 하드디스크도 마찬가지 방식으로 파티션을 만듭니다. 이제 하드디스크 목록은 다음처럼 나옵니다.

[root@localhost ~]# ls -l /dev/sd*
brw-rw----. 1 root disk 8,  0 Jun 12 12:21 /dev/sda
brw-rw----. 1 root disk 8,  1 Jun 12 12:21 /dev/sda1
brw-rw----. 1 root disk 8,  2 Jun 12 12:21 /dev/sda2
brw-rw----. 1 root disk 8, 16 Jun 12 13:01 /dev/sdb
brw-rw----. 1 root disk 8, 17 Jun 12 13:01 /dev/sdb1
brw-rw----. 1 root disk 8, 32 Jun 12 13:03 /dev/sdc
brw-rw----. 1 root disk 8, 33 Jun 12 13:03 /dev/sdc1

fdisk 명령어로 디스크 상태를 다시 확인할 수 있습니다.

[root@localhost ~]# fdisk -l /dev/sdb /dev/sdc

Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x2baef374

Device Boot Start End Blocks Id System
/dev/sdb1 2048 4194303 2096128 fd Linux raid autodetect

Disk /dev/sdc: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x687ea347

Device Boot Start End Blocks Id System
/dev/sdc1 2048 2097151 1047552 fd Linux raid autodetect

mdadm 설치

레이드 구성은 mdadm 명령어로 합니다. CentOS를 Minimal로 설치했다면 mdadm 명령어가 없을 수도 있습니다. 다음과 같이 명령하여 설치합니다.

yum install mdadm

두 개의 하드디스크를 하나로 합치기

다음과 같이 명령하여 두 개의 하드디스크를 하나로 인식하도록 합니다.

  • /dev/md1 : 접근할 수 있는 이름입니다. 이름은 /dev/md9처럼 md 뒤에 숫자를 붙여서 만듭니다.
  • --raid-devices=2 : 두 개의 하드디스크를 합치겠다는 뜻입니다.
[root@localhost ~]# mdadm --create /dev/md1 --level=linear --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

이름은 /dev/md/abc처럼 만들 수 있습니다. 하지만 실제로는 /dev/md127로 만들어집니다. /dev/md/abc는 별칭으로 이해하면 됩니다.

정보는 mdadm 명령어로 확인할 수 있습니다.

[root@localhost ~]# mdadm --detail /dev/md1
/dev/md1:
           Version : 1.2
     Creation Time : Thu Jun 13 08:10:57 2019
        Raid Level : linear
        Array Size : 3139584 (2.99 GiB 3.21 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Thu Jun 13 08:10:57 2019
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

          Rounding : 0K

Consistency Policy : none

              Name : localhost.localdomain:1  (local to host localhost.localdomain)
              UUID : 80f0a9e9:505b6663:69f1703c:0fa1eb23
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1

포맷하고 마운트하기

/dev/md1를 포맷합니다.

[root@localhost ~]# mkfs.ext4 /dev/md1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
196224 inodes, 784896 blocks
39244 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

마운트할 폴더를 만듭니다.

[root@localhost ~]# mkdir /jbRaidLinear

마운트합니다.

[root@localhost ~]# mount /dev/md1 /jbRaidLinear

/jbRaidLinear에 3GB의 공간이 생긴 걸 확인합니다.

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  6.2G  1.2G  5.1G  19% /
devtmpfs                 908M     0  908M   0% /dev
tmpfs                    920M     0  920M   0% /dev/shm
tmpfs                    920M  8.6M  911M   1% /run
tmpfs                    920M     0  920M   0% /sys/fs/cgroup
/dev/sda1               1014M  189M  826M  19% /boot
tmpfs                    184M     0  184M   0% /run/user/0
/dev/md1                 2.9G  9.0M  2.8G   1% /jbRaidLinear

부팅 시 마운트되도록 설정하기

/etc/fstab 파일에...

[root@localhost ~]# vi /etc/fstab

다음을 추가하면 부팅 시 자동으로 마운트됩니다.

/dev/md1 /jbRaidLinear ext4 defaults 0 0

같은 카테고리의 다른 글

리눅스 / rsync - 동기화 프로그램

리눅스 / rsync - 동기화 프로그램

rsync rsync는 동기화 프로그램입니다. 백업할 때 유용하게 사용할 수 있습니다. 사용법 기본 rsync -avz /abc/def /xyz abc 디렉토리 안의 def 디렉토리를 xyz 디렉토리 안에 동기화시키라는 뜻입니다. 처음 실행하는 것이라면 xyz 디렉토리 안에 def 디렉토리가 복사됩니다. 다시 실행시키면 /abc/def 디렉토리의 내용 중 수정되거나 추가된 것만 /xyz/def 디렉토리로 복사됩니다. /abc/def에서 삭제된 내용은 /xyz/def에 반영되지 않습니다. rsync -avz /abc/def/ /xyz def 뒤에 /를 ...

리눅스 / 명령어 / history – 이전에 실행했던 명령어 목록 출력하는 명령어

리눅스 / 명령어 / history – 이전에 실행했던 명령어 목록 출력하는 명령어

history history는 이전에 실행했던 명령어 목록 출력하는 명령어입니다. history 이전에 실행했던 명령어 목록을 일련번호와 함께 출력합니다. history n 최근 n개의 명령어 목록을 출력합니다. history 10 최근 실행한 10개의 명령어를 출력합니다. !! !!를 입력하고 엔터를 누르면 직전에 실행했던 명령어를 다시 실행합니다. !n 일련번호가 n인 명령어를 실행합니다. !202 번호가 202인 명령어를 실행합니다.

리눅스 / 명령어 / useradd - 사용자 추가하는 명령어

리눅스 / 명령어 / useradd - 사용자 추가하는 명령어

useradd useradd는 사용자를 추가하는 명령어입니다. 사용법 jb 사용자를 만듭니다. useradd jb jb 사용자를 만들면 home 디렉토리에 jb 디렉토리가 생성됩니다. 다른 디렉토리에 사용자 홈 디렉토리를 만들고 싶다면 -d 옵션을 사용합니다. useradd jb -d /home/jbdir jb 사용자의 비밀번호를 만듭니다. passwd jb jb 사용자로 로그인한 후 자신의 비밀번호를 변경하고 싶다면 다음과 같이 명령합니다. passwd 참고 사용자 삭제 명령어는 userdel입니다.

Ubuntu 16.04 / logrotate 설치하고 설정하기

Ubuntu 16.04 / logrotate 설치하고 설정하기

로그 파일 우분투(Ubuntu)는 여러 작업의 내용을 로그(Log) 파일로 남깁니다. 예를 들어 웹서버 운영과 관련된 로그는 /var/log/apache2에 있습니다. 로그는 기본적으로 하나의 파일에 계속 추가하는 것이어서, 시간이 지날수록 파일의 크기가 커집니다. 로그 파일의 크기가 너무 커지면, 시스템이 느려지거나 다운되기도 합니다. 이러한 문제를 해결해주는 패키지가 logrotate입니다. 로그 파일이 일정 기준을 충족하면 기존 로그 파일을 다른 이름으로 변경하여 ...

리눅스 / 게이트웨이(gateway) 확인하는 방법

리눅스 / 게이트웨이(gateway) 확인하는 방법

리눅스에서 네트워크 정보는 주로 ifconfig, ip addr 명령어로 확인합니다. 그런데, gateway 정보는 나오지 않습니다. 만약 gateway 정보가 필요하다면 route 명령어를 사용합니다.

Ubuntu 16.04 / root 계정으로 로그인하기, root 계정으로 ssh 접속하기

Ubuntu 16.04 / root 계정으로 로그인하기, root 계정으로 ssh 접속하기

우분투(Ubuntu)는 보안상의 이유로 root 계정으로 로그인하는 것을 막아두었습니다. 만약 root 계정으로 접속하여 관리하고 싶다면 추가적인 작업이 필요합니다. root 계정으로 접속하기 설치할 때 만든 사용자 계정으로 로그인한 후 다음과 같이 명령하여 root 계정의 비밀번호를 생성합니다. sudo passwd root 비밀번호를 만들면 root 계정으로 로그인할 수 있습니다. root 계정으로 ssh 접속하기 root 계정으로 ssh 접속을 하기 위해서는 /etc/ssh/sshd_config 파일을 수정해야 ...

리눅스 / RAID의 뜻과 종류

리눅스 / RAID의 뜻과 종류

RAID Redundant Array of Inexpensive Disk or Redundant Array of Independent Disk 여러 개의 하드디스크를 하나처럼 사용하게 하는 기술. 예를 들어 1TB 하드디스크 두 개를 묶어서 2TB 하드디스크처럼 사용할 수 있다. 크게 하드웨어 RAID와 소프트웨어 RAID로 구분할 수 있다. 하드웨어 RAID는 성능이 좋으나 비싸다. 소프트웨어 RAID는 운영체제에서 지원하는 것으로 OS RAID라도고 한다. Linear RAID 두 개 이상의 ...

Ubuntu 16.04 / Let’s Encrypt 무료 SSL 인증서 발급 받기

Ubuntu 16.04 / Let’s Encrypt 무료 SSL 인증서 발급 받기

우분투(Ubuntu) 16.04에서 Let’s Encrypt 인증서를 발급 받고 관리하는 방법을 정리합니다. 클라이언트 프로그램은 Let’s Encrypt에서 추천하는 Certbot을 사용합니다. 환경 Ubuntu 16.04 Apache Web Server 저장소 추가 add-apt-repository ppa:certbot/certbot 업데이트 apt update 설치 apt install python-certbot-apache 인증서 발급 접속 가능한 도메인이어야 발급 가능합니다. 인증서 발급하고, Apache 설정 파일도 자동으로 만듭니다. abc.com 인증서 발급 certbot --apache -d abc.com abc.com과 www.abc.com 인증서 동시 발급 certbot --apache -d abc.com -d www.abc.com 인증서 갱신 certbot renew 인증서 삭제 abc.com ...

CentOS 7 / rsyslog / 로그 서버 구축하는 방법

CentOS 7 / rsyslog / 로그 서버 구축하는 방법

CentOS 7을 설치하면 로그 기록을 위한 rsyslog 패키지가 설치되고 실행됩니다. 로그는 로컬 컴퓨터에 저장되는데, 관리하는 컴퓨터가 여러 대인 경우 각각의 로그를 따로 모니터링하는 것이 불편할 수 있습니다. 그런 경우 하나의 컴퓨터를 로그를 수집하는 서버로 만들어서 그 서버에 로그가 쌓이게 하면, 좀 더 수월하게 로그를 관리할 수 있습니다. rsyslog는 간단한 설정 변경으로 ...

리눅스 / 명령어 / touch – 빈 파일 만들기, 최종 수정 시간 변경하기

리눅스 / 명령어 / touch – 빈 파일 만들기, 최종 수정 시간 변경하기

touch는 빈 파일 만들거나 파일의 최종 수정 시간을 현재 시간으로 바꾸는 명령어입니다. touch abc.txt abc.txt 파일이 없다면, 내용이 없는 abc.txt 파일을 만듭니다. abc.txt 파일이 있다면, 파일의 최종 수정 시간을 현재로 변경합니다.