본문 바로가기

OS,Network,Container

CentOS7 RAID 5 구성, parted

반응형

CentOS7 RAID 5 구성, parted

 

 

 

[ Parted 란? ]

 

- Master Boot Record ( MBR )은 32bit 파티션 테이블을 사용하며, 이 32bit 파티션 테이블의 최대크기는 2TB로 제한되며 드라이브당 Primary 파티션은 4개만 가질 수 있다.

 

- 기본적으로 Linux의 Partition은 MSDOS Label을 가지고 있다. 이는 2TB 이상을 넘겨서 사용할 수 없는데, 이는 즉 fdisk에서는 2TB 이상의 실린더를 컨트롤 할 수 없다는 뜻이다.

 

- 2TB 이상의 파티션을 설정하거나 생성하기 위해 고안된 것이 parted이다. parted는 설정과 동시에 디스크에 기록된다. 또한, parted는 block 단위가 아닌 MB 단위로 입력한다.

 

- parted는 GPT 파티션을 지원한다.

 


 

[ Parted 사용법 ]

 

 

- mklabel  //  디스크 라벨을 설정 ( 일반적으로 msdos이며, 2TB 이상을 사용하기 위해서 gtp 사용 )

ex ) mklabel gpt

- mkpart  // 파티션을 나눈다.

ex ) mkpart [파일시스템 타입] 시작 끝

- unit // gb로 할건지 tb로 할건지 단위를 정해준다.

- set Number Flag State // 파티션의 flat 상태를 변경한다.

플래그 : boot, root, raid, lvm, ..

- quit

- resize  //  파티션 용량을 늘리고 줄인다. (ext2, fat, fat32 에서만 가능 ;;)

ex) resize 파티션번호 시작 끝

- rm Partition Number

- print  // 파티션 테이블을 display 한다.

- check

 

 

 

 

 

 

[ parted를 통한 partition 생성 ]

 

 

 

 

- fdisk -l

파티션 확인

[root@localhost ~]# fdisk -l
..
..
..

Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 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 /dev/sdg: 21.5 GB, 21474836480 bytes, 41943040 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 /dev/sdh: 21.5 GB, 21474836480 bytes, 41943040 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

 

 

- parted /dev/sdd

- p  //  아무 설정 안하고 p를 눌러보니

Error : /dev/sdd: unrecognized disk label 이란 오류가 뜬다.

- mklabel gpt  //  2TB 이하인 경우 msdos 해줘도 무방하다.

- mkpart primary 0 100%   // 처음부터 100%까지 파티션을 할당해준다.

Warning: The resulting partition is not properly aligned for best performance. 
Ignore/Cancel?  경고가 뜨는 이유에 대해서는 아래에 설명하겠다. ( 근데 크게 상관없음 )

( mkpart primary 2048s 10gb ) 이런 식으로 2048s 라고 써주면 오류가 뜨지 않을 것이다.

- unit gb  // gb 단위

- set 1 raid on  //  raid 로 파티션의 플래그 설정해줌

- print

- quit

- lsblk

 

[root@localhost ~]# parted /dev/sdd
GNU Parted 3.1
Using /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: /dev/sdd: unrecognised disk label
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdd: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted) mklabel gpt
(parted) mkpart primary 0 100%
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
(parted) unit gb
(parted) set 1 raid on
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdd: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  21.5GB  21.5GB               primary

(parted) quit
Information: You may need to update /etc/fstab.

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  500M  0 part  /boot
├─sda2            8:2    0 17.5G  0 part
│ ├─centos-root 253:0    0  7.5G  0 lvm   /
│ └─centos-home 253:1    0   10G  0 lvm   /home
└─sda3            8:3    0    2G  0 part  [SWAP]
sdb               8:16   0   20G  0 disk
└─sdb1            8:17   0   20G  0 part
  └─md1           9:1    0   20G  0 raid1 /mnt/md1
sdc               8:32   0   20G  0 disk
└─sdc1            8:33   0   20G  0 part
  └─md1           9:1    0   20G  0 raid1 /mnt/md1
sdd               8:48   0   20G  0 disk
└─sdd1            8:49   0   20G  0 part
sde               8:64   0   20G  0 disk
sdf               8:80   0   20G  0 disk
sdg               8:96   0   20G  0 disk
sdh               8:112  0   20G  0 disk
sdi               8:128  0   20G  0 disk
sdj               8:144  0   20G  0 disk
sdk               8:160  0   20G  0 disk
sdl               8:176  0   20G  0 disk
sdm               8:192  0   20G  0 disk
sdn               8:208  0   20G  0 disk
sr0              11:0    1 73.7M  0 rom
sr1              11:1    1  942M  0 rom

 

 

※ 첫번째 파티션 영역이 2048s부터 시작하는 이유

현재의 Disk는 LBA(논리 블록 어드레스) 방식으로 접근한다. 이 방식은 Disk의 전체 섹터에 0부터 섹터번호를 붙여 그 번호를 이용하여 섹터에 접근하는 방식이다.

섹터 번호와 물리적 섹터 위치를 짝 짓는 일은 Disk Controller에 내장된 펌웨어가 담당한다. 실제 파티션은 섹터 번호로 구분된 범위인데

1번 파티션은 2048섹터부터 시작한다. 이유는 0번 섹터에는 MBR이 위치하고 1~2047 섹터까지는 Grub의 스테이지가 기록되기 때문이다.

그렇기에 실제적으로 첫번째 파티션의 용량을 parted로 설정할때 시작 위치는 2048s로 시작되어야 한다. 그렇지 않은 경우 아래와 같은 메시지를 띄운다.

 

 

 

 

 

 

- parted /dev/sde

- parted /dev/sdf

- lsblk

 

[root@localhost ~]# parted /dev/sde
GNU Parted 3.1
Using /dev/sde
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart primary 2048s 100%
(parted) set 1 raid on
(parted) unit gb
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sde: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
 1      0.00GB  21.5GB  21.5GB               primary  raid
 
[root@localhost ~]# parted /dev/sdf
GNU Parted 3.1
Using /dev/sdf
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart primary 0 100%
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
(parted) set 1 raid on
(parted) unit gb
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdf: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
 1      0.00GB  21.5GB  21.5GB               primary  raid

(parted) quit
Information: You may need to update /etc/fstab.

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  500M  0 part  /boot
├─sda2            8:2    0 17.5G  0 part
│ ├─centos-root 253:0    0  7.5G  0 lvm   /
│ └─centos-home 253:1    0   10G  0 lvm   /home
└─sda3            8:3    0    2G  0 part  [SWAP]
sdb               8:16   0   20G  0 disk
└─sdb1            8:17   0   20G  0 part
  └─md1           9:1    0   20G  0 raid1 /mnt/md1
sdc               8:32   0   20G  0 disk
└─sdc1            8:33   0   20G  0 part
  └─md1           9:1    0   20G  0 raid1 /mnt/md1
sdd               8:48   0   20G  0 disk
└─sdd1            8:49   0   20G  0 part
sde               8:64   0   20G  0 disk
└─sde1            8:65   0   20G  0 part
sdf               8:80   0   20G  0 disk
└─sdf1            8:81   0   20G  0 part

 

 

 

 

 

[ mdadm 을 통한 RAID 5 생성 ]

 

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

- mdadm --detail /dev/md5

맨 마지막줄에 spare rebuilding 은 무슨뜻인가... 흠

 

 

[root@localhost ~]# mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdd1 /dev/sde1 /dev/sdf1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
[root@localhost ~]# mdadm --detail /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Tue Mar 24 06:32:56 2020
        Raid Level : raid5
        Array Size : 41904128 (39.96 GiB 42.91 GB)
     Used Dev Size : 20952064 (19.98 GiB 21.45 GB)
      Raid Devices : 3
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Tue Mar 24 06:33:09 2020
             State : clean, degraded, recovering
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 13% complete

              Name : localhost.localdomain:5  (local to host localhost.localdomain)
              UUID : 002e77ea:607304ed:9cf09a8a:7452c32b
            Events : 3

    Number   Major   Minor   RaidDevice State
       0       8       49        0      active sync   /dev/sdd1
       1       8       65        1      active sync   /dev/sde1
       3       8       81        2      spare rebuilding   /dev/sdf1

 

 


# mdadm 으로 RAID 5 생성할 때 --force 를 추가해주면

 

spare rebuilding이 안뜬다...고 한다. 그렇다고 한다.

 

 

[root@localhost ~]# mdadm --create /dev/md5 --level=5 --force --raid-devices=3 /dev/sdd1 /dev/sde1 /dev/sdf1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
[root@localhost ~]# mdadm --detail /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Tue Mar 24 07:06:14 2020
        Raid Level : raid5
        Array Size : 41904128 (39.96 GiB 42.91 GB)
     Used Dev Size : 20952064 (19.98 GiB 21.45 GB)
      Raid Devices : 3
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Tue Mar 24 07:06:27 2020
             State : clean, resyncing
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

     Resync Status : 15% complete

              Name : localhost.localdomain:5  (local to host localhost.localdomain)
              UUID : b58414e4:6cbe88d8:c6c7d262:1873a04c
            Events : 2

    Number   Major   Minor   RaidDevice State
       0       8       49        0      active sync   /dev/sdd1
       1       8       65        1      active sync   /dev/sde1
       2       8       81        2      active sync   /dev/sdf1

 

 

[ 파일시스템 포맷 & 마운트 디렉터리 생성 & 마운트 ]

 

- mkfs.ext4 /dev/md5

- mkdir /mnt/raid5

- mount /dev/md5 /mnt/raid5

- df -h

 

 

[root@localhost ~]# mkfs.ext4 /dev/md5
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10476032 blocks
523801 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2157969408
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624

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

[root@localhost ~]# mkdir /mnt/raid5
[root@localhost ~]# rm -rf /mnt/raid6
[root@localhost ~]# mount /dev/md5 /mnt/raid5
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 475M     0  475M   0% /dev
tmpfs                    487M     0  487M   0% /dev/shm
tmpfs                    487M  7.8M  479M   2% /run
tmpfs                    487M     0  487M   0% /sys/fs/cgroup
/dev/mapper/centos-root  7.3G  1.6G  5.4G  23% /
/dev/md1                  20G   45M   19G   1% /mnt/md1
/dev/sda1                477M  136M  312M  31% /boot
/dev/mapper/centos-home  9.8G   37M  9.2G   1% /home
tmpfs                     98M     0   98M   0% /run/user/0
/dev/md5                  40G   49M   38G   1% /mnt/raid5

 

 

 

 

 

[ 재부팅 후에도 자동 마운트 시키기 (auto - mount) ]

 

 

/dev/md5 ~~ 부분 추가해주기

 

 

 

 

 

 

RAID 6 는 fdisk 로 작업을 할 예정이며 가능하다면 하드디스크 고장도 내보겠음!

 

반응형