반응형

🧩 DR 구성 환경에서 발생한 디스크 인식 문제 대응

DR(Disaster Recovery) 구성된 VM위에 Linux 서버에서 DR 스토리지를 Split한 뒤,
간헐적으로 디스크가 인식되지 않는 버그가 발생했다.

이 문제를 해결하기 위해,
DR 복제 중인 디스크를 제거한 후 rescan 명령으로 재인식시키는 자동화 스크립트를 작성하였다.
아래의 쉘 스크립트는 RDM(Raw Device Mapping) 형태로 연결된 IBM 스토리지 디스크를
자동으로 삭제 후 재인식시키는 역할을 수행한다.

 

디스크 재 인식 쉘 

#!/bin/bash

### disk info ###
RDM_LIST="lsscsi | grep IBM"
RDM_DISK='lsscsi | grep IBM | awk '{print $6}' | cut -c 6-8'

#1. List RDM Disk
echo "### 1. RDM Disk List ###"
lsscsi | grep IBM

#2 Delete RDM Disk
echo "###2. Delete RDM Disk info ###"
for RDM_DISK in $RDM_DISK
do
echo "1" > /sys/block/$RDM_DISK/device/delete;
done


#3. After Disk List
echo "### 3. After Delete RDM Disk ###"
lsscsi

#4. Re-attach RDM DISK
echo "### 4. Re-attach RDM DISK ###"

/bin/scsi-rescan -a

#5. Final RDM disk list
echo "### 5. Final RDM DISK info ###"
lsscsi | grep IBM

echo "FINISH!"
반응형
반응형

리눅스 시스템에서 디스크를 추가하고, 논리 볼륨(Logical Volume, LV)을 확장하는 과정입니다. 각각의 단계는 다음과 같습니다

목차

  1. 디스크 인식
  2. 추가된 디스크 확인
  3. 추가된 디스크에서 PV 생성
  4. 추가할 LV 확인
  5. VG에 추가
  6. 용량을 확장할 디바이스 경로 확인
  7. 용량 증설
  8. 파일 시스템 타입 확인
  9. 파일 시스템 크기 조정

1. 디스크 인식

새 디스크를 시스템에서 인식시키려면 아래 명령어를 사용합니다. 디스크가 자동으로 인식되지 않는 경우, 수동으로 인식시킬 수 있습니다:

 echo "- - -" > /sys/class/scsi_host/host0/scan

디스크가 여전히 인식되지 않으면 hostX 값을 0에서 5까지 변경하며 시도합니다:

 echo "- - -" > /sys/class/scsi_host/host1/scan
 echo "- - -" > /sys/class/scsi_host/host2/scan
 echo "- - -" > /sys/class/scsi_host/host3/scan
 echo "- - -" > /sys/class/scsi_host/host4/scan
 echo "- - -" > /sys/class/scsi_host/host5/scan

 

2. 추가된 디스크 확인

다음 명령어를 통해 추가된 디스크를 확인합니다.

 fdisk -l | grep sd

출력 예시는 다음과 같습니다:

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdc: 5368 MB, 5368709120 bytes, 10485760 sectors

3. 추가된 디스크에서 PV 생성

새로 추가된 디스크에서 물리 볼륨(Physical Volume, PV)을 생성합니다.

 pvcreate /dev/sdc

출력 예시

Physical volume "/dev/sdc" successfully created.

4. 추가할 LV 확인

현재 시스템의 논리 볼륨을 확인합니다

lsblk
NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                8:0    0   20G  0 disk 
├─sda1             8:1    0    1G  0 part /boot
└─sda2             8:2    0   19G  0 part 
  ├─centos-root  253:0    0   17G  0 lvm  /
  └─centos-swap  253:1    0    2G  0 lvm  [SWAP]
sdb                8:16   0   10G  0 disk 
├─vgname-lvname  253:2    0    3G  0 lvm  /lvname
├─vgname-lvname2 253:3    0    3G  0 lvm  /lvname2
└─vgname-lvname3 253:4    0    3G  0 lvm  /lvname3
sdc                8:32   0    5G  0 disk 
sr0               11:0    1 1024M  0 rom

5. VG에 추가

새로 생성한 PV를 볼륨 그룹(VG)에 추가합니다.

vgextend vgname /dev/sdc

출력 예시

Volume group "vgname" successfully extended

 

6. 용량을 확장할 디바이스 경로 확인

현재 활성화된 논리 볼륨을 확인합니다.

lvscan

출력 예시

ACTIVE            '/dev/vgname/lvname' [3.00 GiB] inherit
ACTIVE            '/dev/vgname/lvname2' [3.00 GiB] inherit
ACTIVE            '/dev/vgname/lvname3' [3.00 GiB] inherit
ACTIVE            '/dev/centos/root' [<17.00 GiB] inherit
ACTIVE            '/dev/centos/swap' [2.00 GiB] inherit

 

7. 용량 증설

논리 볼륨의 용량을 확장합니다.

 lvextend -l +100%FREE -n /dev/vgname/lvname3

출력 예시

Size of logical volume vgname/lvname3 changed from 3.00 GiB (768 extents) to 8.99 GiB (2302 extents).
Logical volume vgname/lvname3 successfully resized.

8. 파일 시스템 타입 확인

현재 파일 시스템 타입을 확인합니다.

 df -Th

출력 예시

Filesystem                 Type      Size  Used Avail Use% Mounted on
devtmpfs                   devtmpfs  894M     0  894M   0% /dev
tmpfs                      tmpfs     910M     0  910M   0% /dev/shm
tmpfs                      tmpfs     910M   10M  900M   2% /run
tmpfs                      tmpfs     910M     0  910M   0% /sys/fs/cgroup
/dev/mapper/centos-root    xfs        17G  5.3G   12G  31% /
/dev/sda1                  xfs      1014M  233M  782M  23% /boot
/dev/mapper/vgname-lvname3 ext4      2.9G  9.0M  2.8G   1% /lvname3
/dev/mapper/vgname-lvname2 ext4      2.9G  9.0M  2.8G   1% /lvname2
/dev/mapper/vgname-lvname  ext4      2.9G  9.0M  2.8G   1% /lvname
tmpfs                      tmpfs     182M     0  182M   0% /run/user/0

9. 파일 시스템 크기 조정

확장한 논리 볼륨의 파일 시스템을 확장합니다. lvname3이 ext4 파일 시스템을 사용하므로 다음 명령어를 실행합니다:

 resize2fs /dev/vgname/lvname3

출력 예시

resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vgname/lvname3 is mounted on /lvname3; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/vgname/lvname3 is now 2357248 blocks long.

파일 시스템이 xfs인 경우에는 다음 명령어를 사용합니다:

xfs_growfs /dev/vgname/lvname3

이로써 새로운 디스크를 추가하고 논리 볼륨의 크기를 확장하는 작업이 완료되었습니다.

반응형
반응형

Update

 

원하는 버전을 cdrom 마운트 후 local yum 구성

local yum 구성방법 https://frog11.tistory.com/90

 

리눅스 local yum 구성

원하는 버전 Centos, Rhel CD rom 마운트 1. Package를 복사할 디렉토리 생성 [root@localhost /]# mkdir -p /redhat7/Packages/ 2. CD 안의 RPM파일 디렉토리로 copy [root@localhost /]# mount /dev/sr0 /cdrom..

frog11.tistory.com

 

1. 기존버전 7.6 

[root@localhost /]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)

 

2. 업데이트 할 버전 7.9로 업데이트

[root@localhost /]# yum update -y
Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
Excluding 4 updates due to versionlock (use "yum versionlock status" to show them)
Resolving Dependencies
--> Running transaction check
---> Package GeoIP.x86_64 0:1.5.0-13.el7 will be updated
---> Package GeoIP.x86_64 0:1.5.0-14.el7 will be an update

 

** 솔루션 영향도에 따라 update를 하지 말아야할 패키지들이 있을 경우 versionlock 기능이 있다.

[root@localhost Packages]# yum versionlocl java*

명령어가 설치되어 있지 않을 경우 아래 명령어로 설치

[root@localhost /]# yum -y install yum-plugin-versionlock

 

 

Downgrade

1. update 후 버전

[root@localhost /]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

 

2. 이전 버전 7.6로 local repository 구성

https://frog11.tistory.com/90

 

리눅스 local yum 구성

원하는 버전 Centos, Rhel CD rom 마운트 1. Package를 복사할 디렉토리 생성 [root@localhost /]# mkdir -p /redhat7/Packages/ 2. CD 안의 RPM파일 디렉토리로 copy [root@localhost /]# mount /dev/sr0 /cdrom..

frog11.tistory.com

3. yum history로 업데이트 내역 확인

[root@localhost /]# yum history
Loaded plugins: fastestmirror, langpacks, versionlock
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    12 | root <root>              | 2022-03-24 17:18 | I, O, U        |  682 EE

history list

4. yum protect 부분에 systemd가 포함되어있어 파일내용을 백업 후 기존파일 삭제

[root@localhost /]# cd /etc/yum/protected.d/
[root@localhost protected.d]# ls -l
total 8
-rw-r--r--. 1 root root 8 Oct  2  2020 systemd.conf

[root@localhost protected.d]# mv systemd.conf systemd.conf.bak

5. yum history undo [ID]로 downgrade

[root@localhost protected.d]# yum history undo 12
Loaded plugins: fastestmirror, langpacks, versionlock
Undoing transaction 12, from Thu Mar 24 17:18:23 2022
    Updated     GeoIP-1.5.0-13.el7.x86_64                                        @rhel7repository
    Update            1.5.0-14.el7.x86_64                                        @rhel7.9repository
    Updated     LibRaw-0.14.8-5.el7.20120830git98d925.x86_64                     @rhel7repository

 

반응형

'IT > 리눅스' 카테고리의 다른 글

centos 8 이상 버전 local repository  (0) 2023.11.02
vnc server 설정  (0) 2023.05.15
리눅스 local yum 구성  (0) 2022.03.24
nmon 설정  (0) 2021.04.12
Ubuntu Local repository 구성  (0) 2020.11.12
반응형

원하는 버전 Centos, Rhel CD rom 마운트

 

1. Package를 복사할 디렉토리 생성

[root@localhost /]# mkdir -p /redhat7/Packages/

2. CD 안의 RPM파일 디렉토리로 copy

[root@localhost /]# mount /dev/sr0 /cdrom
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost /]# df 
Filesystem              1K-blocks     Used Available Use% Mounted on
/dev/sr0                  4600876  4600876         0 100% /cdrom

[root@localhost /]# cd /cdrom/Packages
[root@localhost /]# cp -a . /redhat7/Packages

3. YUM의 그룹 명령어를 사용하기 위한 comps.xml 파일 copy

[root@localhost /]# cd /cdrom/repodata/
[root@localhost repodata]# cp *comps.xml.gz /redhat7/
[root@localhost repodata]# cd /redhat7/
[root@localhost redhat7]# mv *comps.xml.gz comps.xml.gz
[root@localhost redhat7]# gzip -d comps.xml.gz

4. createrepo 명령어를 사용하기 위한 패키지 설치

[root@localhost redhat7]# cd /redhat7/Packages/
[root@localhost Packages]# rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm python-deltarpm-3.6-3.el7.x86_64.rpm deltarpm-3.6-3.el7.x86_64.rpm
[root@localhost redhat7]# cd /redhat7/
[root@localhost redhat7]# createrepo -g comps.xml /redhat7/

5. yum repository 데몬에 local.repo 신규파일 생성

[root@localhost Packages]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vi local.repo
[rhel7repository]
name=Redhat local repository
baseurl=file:///redhat7/
enabled=1
gpgcheck=0

6. local repository test

[root@localhost / ]# yum list | more

 

반응형

'IT > 리눅스' 카테고리의 다른 글

vnc server 설정  (0) 2023.05.15
Centos Rhel 버전 update 와 downgrade (7.x)  (0) 2022.03.24
nmon 설정  (0) 2021.04.12
Ubuntu Local repository 구성  (0) 2020.11.12
리눅스 스냅샷 파일 삭제 (btrfs 파일시스템)  (0) 2020.11.05

+ Recent posts