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

Linux