카테고리 보관물: linux

The end of Kubernetes version 1.23 – Ubuntu kubernetes apt install error

2024년 3월 초, docker가 익숙해서 끝까지 버티고 있던 kubernetes v1.23.x 개발 환경 설치에 돌연 문제가 생겼다. Ubuntu에서 kubeadm, kubelet, kubectl 등을 apt로 설치할 수 없게 된 것이다. 원인과 해결 방법에 대해 알아보자.

Kubernetes apt install 에러 현상과 원인

K8s 설치 시 어떤 현상이 발생하는가?

2024년 3월 초부터 ubuntu에 apt install 명령어를 통해 kubeadm, kubelet, kubectl이 설치되지 않는다. 기존 사용하던 개발 환경은 다음과 같다.

OS: jharoian3/ubuntu-22.04-arm64
Kubernetes: 1.23.6-00
Docker: 5:24.0.6-1~ubuntu.22.04~jammy

설치를 위한 명령어는 다음과 같이 사용하고 있었다.

curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt -y install kubelet="$KUBERNETES_VERSION" kubectl="$KUBERNETES_VERSION" kubeadm="$KUBERNETES_VERSION"

위 명령어를 통해 kubernetes 설치를 진행하면, 다음과 같은 에러 메시지를 확인할 수 있다.

master: deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main
master: Hit:1 https://download.docker.com/linux/ubuntu jammy InRelease
master: Hit:3 http://ports.ubuntu.com/ubuntu-ports jammy InRelease
master: Ign:2 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
master: Hit:4 http://ports.ubuntu.com/ubuntu-ports jammy-updates InRelease
master: Err:5 https://packages.cloud.google.com/apt kubernetes-xenial Release
master:   404  Not Found [IP: 142.250.76.142 443]
master: Hit:6 http://ports.ubuntu.com/ubuntu-ports jammy-backports InRelease
master: Get:7 http://ports.ubuntu.com/ubuntu-ports jammy-security InRelease [110 kB]
master: Reading package lists...
master: E: The repository 'https://apt.kubernetes.io kubernetes-xenial Release' does not have a Release file.
master: 
master: WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
master: 
master: Reading package lists...
master: Building dependency tree...
master: Reading state information...
master: E: Unable to locate package kubelet
master: E: Unable to locate package kubectl
master: E: Unable to locate package kubeadm

원인은 package repository에 있다!

위의 에러 메시지를 살펴보면, kubernetes 관련 package 목록을 가져오기 위해 package repository에 접속을 하는데, 404 에러가 발생하고 있음을 알 수 있다. 최근까지 잘 되던 것이 갑자기 되지 않으니까 당황스럽다. 원인은 외부에 있음을 직감하고, kubernetes 공식 문서들을 샅샅이 뒤져보았다.

아니나 다를까, package repository가 대체된다는 안내사항이 있었다. 해당 글에서는 다음과 같이 안내하고 있다.

On behalf of Kubernetes SIG Release, I am very excited to introduce the Kubernetes community-owned software repositories for Debian and RPM packages: pkgs.k8s.io! The new package repositories are replacement for the Google-hosted package repositories (apt.kubernetes.io and yum.kubernetes.io) that we’ve been using since Kubernetes v1.5.

ℹ️ Update (January 12, 2024): the legacy Google-hosted repositories are going away in January 2024. Check out the deprecation announcement for more details about this change.

기존 사용하던 package repository가 2024년 1월부터 아예 사라질 것이라고 되어 있는데, 3월까지 잘 사용한 것도 기적이었던 것이다. 평소 부지런하게 follow up하지 않았던 스스로를 반성하게 된다.

Package repository 관련 문제 해결 방법

Package repository deprecation에 대응하기

안내사항에 따르면, 다음과 같이 package repository를 변경한 후 apt install을 진행하면 된다.

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.23/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.23/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update

그런데, 이렇게 변경 후 테스트해도 여전히 다음과 같은 에러가 발생한다.

master: Reading package lists...
master: E: Failed to fetch https://pkgs.k8s.io/core:/stable:/v1.23/deb/InRelease  403  Forbidden [IP: 54.192.175.103 443]
master: E: The repository 'https://pkgs.k8s.io/core:/stable:/v1.23/deb  InRelease' is not signed.

한 걸음 나아가긴 했다. 404 Not Found 에러 대신 403 Forbidden 에러가 발생하는 것으로 보아, 적어도 새로운 package repository는 서비스를 하고 있긴 하다는 것을 확인할 수 있다. 그렇다면, 왜 이런 현상이 발생하는 것일까? 이 문제에 대한 원인도 앞서 언급한 안내 글에서 찾을 수 있었다.

The new Kubernetes package repositories contain packages beginning with those Kubernetes versions that were still under support when the community took over the package builds. This means that the new package repositories have Linux packages for all Kubernetes releases starting with v1.24.0.

새로운 package repository는 v1.24.0 이상의 kubernetes만 제공한다는 것이다. 결국, kubernetes의 버전을 올려야 한다.

Docker를 버린 kubernetes v1.24로의 여정

Kubernetes v1.23.x와 v1.24.x 사이에는 큰 차이점이 존재한다. Kubernetes v1.24.0부터는 docker를 버렸다는 것이다. 공식 문서의 내용을 간단히 요약하면 다음과 같다.

  • 1.24 버전 이전에는 docker라는 specific한 CRI를 사용하고 있었다.
  • Kubernetes에서 docker 외에도 다양한 CRI를 지원하기 위해, CRI standard라는 것을 만들었다.
  • Docker는 CRI standard를 따르지 않고 있다.
  • Kubernetes는 docker 지원을 위해 dockershim이라는 코드를 만들어서 제공했다.
  • Kubernetes 개발 참여자들이 docker라는 특수 CRI를 위해 별도로 시간을 할애하는 것이 부담스럽다.
  • Kubernetes v1.24부터 dockershim 지원 안하기로 했다.

실제로, kubernetes v1.24 버전을 설치할 때 docker를 사용하려고 하면, 다음과 같은 에러를 만날 수 있다.

master:     [WARNING SystemVerification]: missing optional cgroups: blkio
master: error execution phase preflight: [preflight] Some fatal errors occurred:
master:     [ERROR CRI]: container runtime is not running: output: time="2024-03-05T00:42:52-08:00" level=fatal msg="validate service connection: CRI v1 runtime API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService"
master: , error: exit status 1
master: [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
master: To see the stack trace of this error execute with --v=5 or higher
master: failed to load admin kubeconfig: open /root/.kube/config: no such file or directory
master: To see the stack trace of this error execute with --v=5 or higher

눈물과 함께 kubernetes v1.23과 docker와 작별할 시간이다. 앞서 살펴본 package repository 설정 부분에서 버전을 지정해주는 문자열을 변경하자.

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.24/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.24/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update

이후 apt-cache policy kubeadm 명령어를 통해 설치 가능한 버전을 조회해보고 apt install을 통해 설치를 진행하면 된다. 이때 주의할 점은, docker가 아니라 containerd를 사용할 것이기 때문에 설치하려는 kubernetes 버전과 호환되는 containerd 버전을 알아보고 미리 설치해두어야 한다는 것이다. Containerd와 kubernetes 버전 호환 관계는 이 문서를 확인하면 된다.

최종적으로 정상화한 개발 환경은 다음과 같다.

OS: jharoian3/ubuntu-22.04-arm64
Kubernetes: 1.24.17-1.1
Containerd: 1.7.0

간단하게 요약하면?

요약 정리

  • 현상: ubuntu에 apt install로 kubernetes를 설치할 때, package list를 불러오는 과정에서 에러 발생
  • 원인: 2024년 초부터 버려진 legacy package repository를 참조하고 있을 가능성 있음
  • 해결책: 새로운 package repository로 변경하면 됨

주의사항

  • 새로운 package repository는 kubernetes v1.24.0 이상만 제공
  • Docker를 쓰고 있었다면, containerd같은 다른 CRI로 변경 필요

ALFA – AWUS036ACS driver install of Kali Linux (v2024.2)

KALI LINUX에서 ALFA – AWUS036ACS 드라이버 설치하는 방법

현재 Kali Linux 최신 버전 2024.2를 사용 중입니다.

  1. 먼저, 클래식 업데이트와 업그레이드부터 시작.
sudo apt update && sudo apt upgrade -y

2. 헤더를 로드하고 다양한 새로운 설정을 구성할 수 있도록 재부팅해 보겠습니다.

reboot

3. 헤더와 드라이버에 필요한 패키지를 설치.

sudo apt install bc mokutil build-essential libelf-dev linux-headers-[uname -r]

4. realtek-rtl88xxau-dkms

sudo apt install realtek-rtl88xxau-dkms

5. 이제 github aircrack-ng에서 필요한 일부 파일을 추출해야 합니다.

(메인 디렉토리에 src와 같은 디렉토리를 생성하여 추가하는 것이 좋습니다.)

mkdir src && cd src

git clone -b v5.6.4.2 https://github.com/aircrack-ng/rtl8812au.git

6. rtl8812au 디렉토리로 cd.

cd rtl*
make
sudo make install

7. 다른 필요한 github 파일을 복제해서 설치.

git clone https://github.com/morrownr/8821au-20210708.git
cd 8821*
sudo ./install-driver.sh

재부팅하면 끝납니다 🙂

/lib/modules/[uname -r]/ -name "88XXau.ko" 를 확인할 수 있습니다.

가상 머신을 사용하는 경우 다음 작업을 잊지 마세요.

(virtualbox의 경우)

  1. VirtualBox 확장팩 설치됨
  2. VirtualBox USB 설정 USB 무선 동글 추가
  3. VirtualBox 네트워크 설정: 브리지 어댑터 > RTL88.. > 모두 허용

How to disable packages from automatically updating in Ubuntu

apt-mark 명령어는 패키지의 속성을 변경하는 데 사용됩니다. 주로 패키지를 hold 상태로 설정하거나 해당 설정을 해제하는 데에 사용됩니다.

1. Hold 설정

지정된 패키지를 현재 설치된 버전으로 고정시키고 업그레이드를 방지합니다

sudo apt-mark hold nginx
$ sudo apt-mark hold nginx
nginx set on hold.

2. Hold 상태 확인

Hold로 설정된 패키지 목록을 확인합니다.

sudo apt-mark showhold
$ sudo apt-mark showhold
nginx

3. Hold 해제

Hold 설정을 해제하여 패키지가 다시 업그레이드될 수 있도록 합니다.

sudo apt-mark unhold nginx
$ sudo apt-mark unhold nginx
Canceled hold on nginx.

4. 자동 설치 설정

패키지를 자동 설치로 표시합니다. 이렇게 하면 해당 패키지는 다른 패키지가 삭제될 때 자동으로 제거되지 않습니다.

sudo apt-mark auto nginx
$ sudo apt-mark auto nginx
nginx set to automatically installed.

5. 자동 설치 해제

패키지를 수동 설치로 표시합니다. 이렇게 하면 해당 패키지는 다른 패키지가 삭제될 때 자동으로 제거되지 않습니다.

sudo apt-mark manual nginx
$ sudo apt-mark manual nginx
nginx set to manually installed.

6. 수동 설치 확인

수동 설치된 패키지 목록을 표시합니다.(특정 패키지가 Hold로 설정되어 있는지 확인합니다.)

apt-mark showmanual
$ sudo apt-mark showmanual
nginx
php8.1
php8.1-cli
php8.1-common
php8.1-fpm
php8.1-gd
php8.1-imagick
php8.1-intl
php8.1-mbstring
php8.1-mongodb
php8.1-mysql
php8.1-rdkafka
php8.1-readline
php8.1-redis
php8.1-xml
php8.1-zip
software-properties-common
sudo apt-mark showmanual | grep nginx
$ sudo apt-mark showmanual | grep nginx
nginx
sudo apt-mark showhold | grep nginx
$ sudo apt-mark showhold | grep nginx

7. 자동 설치 확인

자동 설치된 패키지 목록을 표시합니다.

sudo apt-mark showauto
$ sudo apt-mark showauto
adduser
apache2
apache2-bin
apache2-data
apache2-utils
apt
apt-utils
bzip2
ca-certificates
coreutils
dbus
...
util-linux
uuid-runtime
xdg-user-dirs
xz-utils
zlib1g

8. 도움말 표시

apt-mark 명령어의 도움말을 표시합니다.

sudo apt-mark --help
$ sudo apt-mark --help
apt 2.4.11 (amd64)
Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]

apt-mark is a simple command line interface for marking packages
as manually or automatically installed. It can also be used to
manipulate the dpkg(1) selection states of packages, and to list
all packages with or without a certain marking.

Most used commands:
  auto - Mark the given packages as automatically installed
  manual - Mark the given packages as manually installed
  minimize-manual - Mark all dependencies of meta packages as automatically installed.
  hold - Mark a package as held back
  unhold - Unset a package set as held back
  showauto - Print the list of automatically installed packages
  showmanual - Print the list of manually installed packages
  showhold - Print the list of packages on hold

See apt-mark(8) for more information about the available commands.
Configuration options and syntax is detailed in apt.conf(5).
Information about how to configure sources can be found in sources.list(5).
Package and version choices can be expressed via apt_preferences(5).
Security details are available in apt-secure(8).

Automatically deleting logs after a certain period of time in Linux

로그 삭제 스크립트 만들기

vi deleteLog.sh

#!/bin/sh

#생성 된지 7일이 지난 로그를 삭제하는 Script
/usr/bin/find /log/ -type f -mtime +7 -exec rm {} +

:wq!

chmod 744 deleteLog.sh

 

type -f 는 파일만 찾는 Option입니다. 디렉토리를 찾기 위해서는 -d 옵션으로 변경해 주시면 됩니다.

-mtime 옵션은 수정된 날짜 시간 기록을 찾는 옵션입니다.

-ctime 옵션은 생성된 날짜 시간 기록을 찾는 옵션입니다.

-atime 옵션은 읽히거나 실행 됐을때의 기록을 찾는 옵션입니다.

날짜 기준 + 를 – 로 바꾸면 현재 날짜 기준 수정된지 7일 이내 파일들을 찾게됩니다.

 

Crontab에 해당 로그 등록하기 

crontab -e

00 00 * * * /install/cron/deleteLog.sh

:wq!

* 매일 정각에 해당 스크립트가 실행 될 수 있도록 Crontab에 등록 해줍니다.

Synology RAID Volume 단일 Volume으로 변경하기

시놀로지는 볼륨 관리를 위해 md라고 불리는 software raid를 사용합니다.
raid를 관리하기 위해 사용하는 명령어가 mdadm 입니다.

보통은, /dev/md0가 OS 파티션, /dev/md1이 swap 파티션, 그리고 사용자가 사용하는 첫번째 볼륨 파티션이 /dev/md2로 생성되는데요..

“cat /proc/mdstat” 명령을 치시면 현재 사용하고 있는 md raid 정보가 출력됩니다.

?? ??2.png

이중 md 구성 별 blocks 수를 대략 비교 해보며 Disk Size 별로 어떤 Volume 인지 확인합니다.

mdadm –grow –raid-devices=1 –force /dev/[md2] <— 분리 하고자 하는 md 번호

상기 명령을 통해 원하는 Volume Raid를 분리 할 수 있습니다.

[Tomcat] 리눅스의 톰캣 로그에서 한글깨지는 문제 해결방법

리눅스의 톰캣 로그에서 한글이 깨져나오네요.

톰캣의 인코딩에 문제가 생겨서 그러겠죠?

[톰캣설치 폴더 > bin] 디렉토리로 가면 catalina.sh 파일이 있습니다.

그 파일을 편집기로 여시구요.

-Djava.io.tmpdir=”$CATALINA_TMPDIR” \
이 부분 찾아서 그 아래에 아래 소스를 모두 추가합니다.

-Djava.io.tmpdir=”$CATALINA_TMPDIR” \
-Dfile.encoding=”utf-8″\

수정한 파일을 저장하고, 톰캣을 재시작하면 아래처럼 로그에 한글이 잘 나옵니다.

Installing Helm on Ubuntu for Kubernetes

Ubuntu에 Helm을 설치하려면:

1. 다음 명령을 사용하여 최신 버전의 Helm을 다운로드합니다.

wget https://get.helm.sh/helm-v3.4.1-linux-amd64.tar.gz

다운로드가 완료되면 단말기에서 확인 메시지를 출력합니다.

터미널에서 Helm을 다운로드합니다.

2. 다음으로 Linux tar 명령 을 사용하여 Helm 파일의 압축을 풉니다 .

tar xvf helm-v3.4.1-linux-amd64.tar.gz

출력에는 압축이 풀린 4개의 파일이 표시됩니다.

3. linux-amd64/helm파일을 /usr/local/bin디렉터리로 이동합니다.

sudo mv linux-amd64/helm /usr/local/bin

명령이 올바르게 실행된 경우 출력이 없습니다.

투구 풀기.

4. 다음 명령을 사용하여 다운로드한 파일을 제거합니다.

rm helm-v3.4.1-linux-amd64.tar.gz

5. linux-amd64다음을 실행하여 공간을 정리할 디렉터리를 제거합니다.

rm -rf linux-amd64

프로세스가 성공적으로 완료되면 출력이 없습니다.

필요하지 않은 파일을 제거합니다.

6. 마지막으로 소프트웨어 버전을 확인하여 Helm을 성공적으로 설치했는지 확인합니다.

helm version

터미널은 소프트웨어의 버전 번호와 GitCommit, GitTreeState 및 GoVersion의 릴리스 번호를 인쇄합니다.

Helm 설치 완료를 확인합니다.

 

수동으로 최신 버젼의 chart 정보를 레파지토리에 갱신 할 수 있습니다.

$ helm repo add stable https://charts.helm.sh/stable
$ helm repo update  

linux LVM(PV, VG, LV) (Create, delete, query, add) method

Linux에서 파티션 중 우리가 가장 흔히 사용하는 것이 바로 File System이다. File System에 워낙 익숙
해지기도 했고 디스크 추가 후 사용이 간편하여 가장 널리사용한다는게 필자 생각이다.
Linux File System은 흔히 우리가 알고 있는 ext1부터시작하여 현재 ext4까지 사용중이며 그 기능과
성능이 버전이 업그레이드되면서 함께 발전해왔다.
하지만 이런 ext file system을 사용할 경우 공간이 꽉 찼을 경우 더 큰 file system으로 교체하거나 심
지어는 새로운 파티션 조정을 위한 Linux 재설치까지 가는 경우가 있을 수 있다.
LVM 이런 수고를 덜 수 있는 강력한 기능을 덜 수 있는 녀석이다. 즉, LVM을 사용하면 유동적인 공간
할당을 통하여 Mount Point 관리를 더 효율적으로 할 수 있다고 하겠다.
 Oracle에서 ASM Disk를 생성할 때에도 이 LVM을 사용하여 Disk를 던져줄 수 있다. 오늘은 LVM 관리
방법에 대하여 이야기해본다.
 Step 1. LVM에 사용될 Disk 추가
일단 이번 테스트에 사용될 디스크는
20G * 2 = 40G
40G * 1 = 40G
총 80G Disk를 사용할 예정이다.
 Step 2. Disk Format & PV / VG / LV 생성
[root@localhost ~]# fdisk -l

추가된 3개의 Disk를 확인할 수 있다. 위에 언급한데로 20G * 2, 40G 하나를 추가하여 총 80G 용량의 하디드스크를 추가하였다. fdisk 명령을 통해 확인이 가능하다.

[root@localhost ~]# fdisk /dev/sdb       // sdc, sdd 까지 진행
 

여기서 주의 할 것은 Hex code는 Linux에서 사용되는 Linux LVM file system으로 사용하기 위한 코드명은 8e가 된다.

[root@localhost ~]# fdisk -l /dev/sdb     // sdc, sdd도 확인가능

위와 같이 사용 가능한 포멧으로 생성됐읗며 System이 Linux LVM인 것을 확인할 수 있다.

 

* LVM을 통한 Disk 생성
 – PV(Physical Volume)을 생성한다.
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1
  Physical volume “/dev/sdb1” successfully created.
  Physical volume “/dev/sdc1” successfully created.
  Physical volume “/dev/sdd1” successfully created.
 – VG(Volume Group)을 생성한다.
[root@localhost ~]# vgcreate ASMDISK /dev/sdb1 /dev/sdc1 /dev/sdd1
  Volume group “ASMDISK” successfully created

 

 – LV(Logical Volume)을 생성한다.
[root@localhost ~]# lvcreate -L 40g -n DATA01 ASMDISK
  Logical volume “DATA01” created.
[root@localhost ~]# lvcreate -L 39.5g -n DATA02 ASMDISK
  Logical volume “DATA02” created.
 Step 3. PV / VG / LV 조회
 생성구문의 create 대신 display 명령을 붙여주면 조회가 가능하다.
[root@localhost ~]# pvdisplay
  — Physical volume —
  PV Name               /dev/sdb1
  VG Name               ASMDISK
  PV Size               <20.00 GiB / not usable 3.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              5119
  Free PE               125
  Allocated PE          4994
  PV UUID               Y16fLb-fmBl-Qga0-Vt0Q-xYGm-0YfF-L2HRz2
  — Physical volume —
  PV Name               /dev/sdc1
  VG Name               ASMDISK
  PV Size               <20.00 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              5119
  Free PE               0
  Allocated PE          5119
  PV UUID               eyCU5C-Bzuj-DXBg-qVZX-uhM2-y7Hc-5AxKlZ
  — Physical volume —
  PV Name               /dev/sdd1
  VG Name               ASMDISK
  PV Size               <40.00 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              10239
  Free PE               0
  Allocated PE          10239
  PV UUID               ODoaFo-qV2G-T2EE-28mT-S1Sh-DGou-2IZcZz
[root@localhost ~]# vgdisplay
  — Volume group —
  VG Name               ASMDISK
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <79.99 GiB
  PE Size               4.00 MiB
  Total PE              20477
  Alloc PE / Size       20352 / 79.50 GiB
  Free  PE / Size       125 / 500.00 MiB
  VG UUID               LzMB5j-IChS-RByT-pFNR-OJZk-opt8-hz6rdf
[root@localhost ~]# lvdisplay
  — Logical volume —
  LV Path                /dev/VG01/oracle
  LV Name                oracle
  VG Name                VG01
  LV UUID                02j5sM-lYwm-jOWj-Koc3-nprv-Y4TT-S1HGE0
  LV Write Access        read/write
  LV Creation host, time localhost, 2017-12-11 12:15:01 -0500
  LV Status              available
  # open                 1
  LV Size                <79.98 GiB
  Current LE             20474
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  – currently set to     8192
  Block device           249:0
  — Logical volume —
  LV Path                /dev/ASMDISK/DATA01
  LV Name                DATA01
  VG Name                ASMDISK
  LV UUID                HBQT0M-VEzf-XjPm-ZH05-MrRT-AK8V-NaMNwq
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2017-12-11 16:09:06 -0500
  LV Status              available
  # open                 0
  LV Size                40.00 GiB
  Current LE             10240
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  – currently set to     8192
  Block device           249:1
  — Logical volume —
  LV Path                /dev/ASMDISK/DATA02
  LV Name                DATA02
  VG Name                ASMDISK
  LV UUID                S7eJc5-nQQ0-6vn7-yVis-zC7J-AK8r-AlcbQB
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2017-12-11 16:09:33 -0500
  LV Status              available
  # open                 0
  LV Size                39.50 GiB
  Current LE             10112
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  – currently set to     8192
  Block device           249:2
 Step 4. PV / VG / LV 삭제
create, display 명령 대신 remove를 붙여 사용가능하다.
[root@localhost sbin]# pvremove /dev/sdb1
  Labels on physical volume “/dev/sdb1” successfully wiped.
[root@localhost sbin]# pvremove /dev/sdc1
  Labels on physical volume “/dev/sdc1” successfully wiped.
[root@localhost sbin]# pvremove /dev/sdd1
  Labels on physical volume “/dev/sdd1” successfully wiped.
[root@localhost sbin]# vgremove ASMDISK
Do you really want to remove volume group “ASMDISK” containing 1 logical volumes? [y/n]: y
Do you really want to remove active logical volume ASMDISK/DATA1? [y/n]: y
  Logical volume “DATA1” successfully removed
  Volume group “ASMDISK” successfully removed
 vg 삭제시에는 삭제하겠느냐는 물음과 함께 vg에 포함된 lv도 삭제되니 유의하도록 하자.
 Step 5. 기존 VG에 PV 추가
 기존에 사용하던 Volume Group이 공간이 부족해 추가를 원할때 사용이 가능하다. 일단 해당 Virture Machine에 Disk를 추가하고 포멧을 진행한다. 포멧은 Step 2의 절차를 따라하면 된다.
[root@localhost ~]# fdisk -l /dev/sde1
Disk /dev/sde: 128.8 GB, 128849018880 bytes, 251658240 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: 0x625d1896
   Device Boot      Start         End      Blocks   Id  System
/dev/sde1            2048   251658239   125828096   8e  Linux LVM
 – VG에 추가 될 해당 Disk를 PV를 생성해준다.
[root@localhost ~]# pvcreate /dev/sde1
  Physical volume “/dev/sde1” successfully created.
 
 – 생성된 PV를 VG에 추가 할당 해준다.
[root@localhost sbin]# vgextend ASMDISK /dev/sde1
  Volume group “ASMDISK” successfully extended
 – 추가할당 해준 VG을 확인한다.
[root@localhost sbin]# vgdisplay
VG Name               ASMDISK
  System ID
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  10
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                8
  Open LV               4
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               199.98 GiB
  PE Size               4.00 MiB
  Total PE              51196
  Alloc PE / Size       20352 / 79.50 GiB
  Free  PE / Size       30844 / 120.48 GiB
  VG UUID               1M7FrH-e23z-216o-Hf5n-Ad8g-nJXk-WRF1Uf
 VG의 Size가 기존 80G에서 200G가 됐음을 확인할 수 있다.