리눅스 / 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

같은 카테고리의 다른 글

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

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

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

리눅스 / 명령어 / mkdir - 디렉토리 만드는 명령어

리눅스 / 명령어 / mkdir - 디렉토리 만드는 명령어

mkdir은 make directory의 약자로, 디렉토리를 만드는 명령어입니다. abc 디렉토리를 만듭니다. mkdir abc abc 디렉토리 아래에 def 디렉토리를 만듭니다. 만약 abc 디렉토리가 없다면 def 디렉토리를 만들 수 없다는 메시지가 나옵니다. mkdir abc/def p 옵션을 붙이면 abc 디렉토리가 없어도 abc 디렉토리를 만든 후에 def 디렉토리를 만듭니다. mkdir -p abc/def

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

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

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

리눅스 / 로그아웃 명령어, 재부팅 명령어, 종료 명령어

리눅스 / 로그아웃 명령어, 재부팅 명령어, 종료 명령어

로그아웃 명령어 logout exit 재부팅 명령어 즉시 재부팅 reboot shutdown -r now init 6 일정 시간 또는 일정 시간 후 재부팅 10분 후 재부팅 shutdown -r 10 12시에 재부팅 shutdown -r 12:00 취소 shutdown -c 종료 명령어 즉시 종료 poweroff shutdown -h now shutdown -P now halt -p init 0 일정 시간 또는 일정 시간 후에 종료 10분 후에 종료 shutdown -P 10 13시에 종료 shutdown -P 13:00 취소 shutdown -c 기타 10분 후에 종료할 거라는 메시지를 사용자에게 보내지만, 종료하지는 ...

리눅스 / 명령어 / ls - 디렉토리와 파일 목록 출력하는 명령어

리눅스 / 명령어 / ls - 디렉토리와 파일 목록 출력하는 명령어

ls ls는 list의 약어로, 디렉토리와 파일 목록 출력하는 명령어입니다. ls 디렉토리명 디렉토리에 속한 디렉토리와 파일 목록을 출력합니다. 숨김 파일은 나오지 않습니다. 디렉토리명을 생략하면 현재 디렉토리에 속한 디렉토리와 파일 목록을 출력합니다. 다음과 같이 명령하면 /var 디렉토리에 속한 디렉토리와 파일 목록을 출력합니다. ls /var ls -a, ls -l -a 옵션을 붙이면 숨김 파일도 출력합니다. -l 옵션을 붙이면 소유자, 파일 크기 등 자세한 ...

리눅스 / 그룹 / 그룹 조회, 그룹 추가, 그룹 삭제, 그룹 수정

리눅스 / 그룹 / 그룹 조회, 그룹 추가, 그룹 삭제, 그룹 수정

그룹 조회 그룹 목록은 /et/group 파일에 있습니다. cat 명령어로 전체를 조회하거나... cat /etc/group tail 명령어로 마지막 부분을 조회할 수 있습니다. # tail -n 5 /etc/group avahi:x:70: slocate:x:21: rngd:x:974: tcpdump:x:72: vboxsf:x:973: X:Y:Z 형식으로 나오는데, X는 그룹 이름, Y는 그룹 비밀번호, Z는 그룹 ID입니다. 그룹 추가 groupadd 명령으로 그룹을 추가합니다. # groupadd group-1 # tail -n 5 /etc/group slocate:x:21: rngd:x:974: tcpdump:x:72: vboxsf:x:973: group-1:x:1000: 그룹 삭제 groupdel 명령으로 그룹을 삭제합니다. # ...

리눅스 / RAID의 뜻과 종류

리눅스 / RAID의 뜻과 종류

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

리눅스 / chown, chmod / 파일 또는 디렉토리 소유자, 소유그룹, 권한 설정

리눅스 / chown, chmod / 파일 또는 디렉토리 소유자, 소유그룹, 권한 설정

ls -l ls 명령어에 -l 옵션을 붙여서 파일 또는 디렉토리의 권한과 소유자(그룹)을 확인할 수 있습니다. 제일 앞에 있는 문자는 디렉토리인지 파일인지는 나타냅니다. d는 디렉토리라는 뜻이고, -는 파일이라는 뜻입니다. 그 다음 3개의 문자열은 소유자의 권한을, 그 다음 3개의 문자열은 소유그룹의 권한을, 그 다음 3개의 문자열은 소유자(그룹) 이외의 권한을 나타냅니다. 처음 나오는 jb는 소유자, 그 다음 ...

리눅스 / 명령어 / which, whereis, locate - 명령어 위치 찾기

리눅스 / 명령어 / which, whereis, locate - 명령어 위치 찾기

명령어의 위치를 찾을 때 사용할 수 있는 명령어에는 which, whereis, locate가 있습니다. 명령어의 위치만 찾을 때는 which를 사용하고, 관련된 파일들의 위치까지 찾을 때는 whereis나 locate를 사용합니다. 각 명령어로 find 명령어를 찾아보겠습니다. # which find /usr/bin/find # whereis find find: /usr/bin/find /usr/share/man/man1/find.1.gz # locate find /usr/bin/find /usr/bin/find2perl /usr/bin/findmnt /usr/bin/nl-link-ifindex2name /usr/bin/nl-link-name2ifindex /usr/bin/oldfind /usr/lib64/python2.7/modulefinder.py /usr/lib64/python2.7/modulefinder.pyc /usr/lib64/python2.7/modulefinder.pyo /usr/sbin/btrfs-find-root /usr/sbin/findfs /usr/share/bash-completion/completions/findmnt /usr/share/doc/findutils-4.5.11 /usr/share/doc/findutils-4.5.11/AUTHORS /usr/share/doc/findutils-4.5.11/COPYING /usr/share/doc/findutils-4.5.11/ChangeLog /usr/share/doc/findutils-4.5.11/NEWS /usr/share/doc/findutils-4.5.11/README /usr/share/doc/findutils-4.5.11/THANKS /usr/share/doc/findutils-4.5.11/TODO /usr/share/doc/wpa_supplicant-2.6/examples/p2p/p2p_find.py /usr/share/doc/wpa_supplicant-2.6/examples/p2p/p2p_stop_find.py /usr/share/info/find-maint.info.gz /usr/share/info/find.info.gz /usr/share/locale/be/LC_MESSAGES/findutils.mo /usr/share/locale/bg/LC_MESSAGES/findutils.mo /usr/share/locale/ca/LC_MESSAGES/findutils.mo /usr/share/locale/cs/LC_MESSAGES/findutils.mo /usr/share/locale/da/LC_MESSAGES/findutils.mo /usr/share/locale/de/LC_MESSAGES/findutils.mo /usr/share/locale/el/LC_MESSAGES/findutils.mo /usr/share/locale/eo/LC_MESSAGES/findutils.mo /usr/share/locale/es/LC_MESSAGES/findutils.mo /usr/share/locale/et/LC_MESSAGES/findutils.mo /usr/share/locale/fi/LC_MESSAGES/findutils.mo /usr/share/locale/fr/LC_MESSAGES/findutils.mo /usr/share/locale/ga/LC_MESSAGES/findutils.mo /usr/share/locale/gl/LC_MESSAGES/findutils.mo /usr/share/locale/hr/LC_MESSAGES/findutils.mo /usr/share/locale/hu/LC_MESSAGES/findutils.mo /usr/share/locale/id/LC_MESSAGES/findutils.mo /usr/share/locale/it/LC_MESSAGES/findutils.mo /usr/share/locale/ja/LC_MESSAGES/findutils.mo /usr/share/locale/ko/LC_MESSAGES/findutils.mo /usr/share/locale/lg/LC_MESSAGES/findutils.mo /usr/share/locale/lt/LC_MESSAGES/findutils.mo /usr/share/locale/ms/LC_MESSAGES/findutils.mo /usr/share/locale/nl/LC_MESSAGES/findutils.mo /usr/share/locale/pl/LC_MESSAGES/findutils.mo /usr/share/locale/pt/LC_MESSAGES/findutils.mo /usr/share/locale/pt_BR/LC_MESSAGES/findutils.mo /usr/share/locale/ro/LC_MESSAGES/findutils.mo /usr/share/locale/ru/LC_MESSAGES/findutils.mo /usr/share/locale/rw/LC_MESSAGES/findutils.mo /usr/share/locale/sk/LC_MESSAGES/findutils.mo /usr/share/locale/sl/LC_MESSAGES/findutils.mo /usr/share/locale/sr/LC_MESSAGES/findutils.mo /usr/share/locale/sv/LC_MESSAGES/findutils.mo /usr/share/locale/tr/LC_MESSAGES/findutils.mo /usr/share/locale/uk/LC_MESSAGES/findutils.mo /usr/share/locale/vi/LC_MESSAGES/findutils.mo /usr/share/locale/zh_CN/LC_MESSAGES/findutils.mo /usr/share/locale/zh_TW/LC_MESSAGES/findutils.mo /usr/share/man/man1/find.1.gz /usr/share/man/man1/find2perl.1.gz /usr/share/man/man1/oldfind.1.gz /usr/share/man/man8/btrfs-find-root.8.gz /usr/share/man/man8/findfs.8.gz /usr/share/man/man8/findmnt.8.gz locate 명령어는 -n 옵션으로 출력 개수를 정할 수 있습니다. # locate ...

리눅스 / 명령어 / systemctl

리눅스 / 명령어 / systemctl

서비스 관리 service_name은 서비스 이름으로 바꾸어 사용합니다. 예를 들어 Apache라면 httpd, MariaDB라면 matiadb. 서비스 상태 확인 systemctl status service_name.service 서비스 시작 systemctl start service_name.service 서비스 재시작 systemctl restart service_name.service 서비스 중지 systemctl stop service_name.service 부팅 시 서비스 자동 시작 systemctl enable service_name.service 부팅 시 서비스 자동 시작 해제 systemctl disable service_name.service 서비스 목록 보기 systemctl list-units --type=service