DAY_7 리눅스 디스크 관리
하드 디스크 장치명
-/dev/ 이름으로 시작한다.
가상 터미널
-외부에서 로그인을 하면 리눅스에 접속해서 명령어를 사용할 수 있는
터미널을 부여받는다.
자신의 터미널 번호를 확인하는 명령어 : tty
가상 콘솔 : /dev/tty1, /dev/tty2,,,,
가상 터미널 : /dev/pts/0, /dev/pts/1,,,,
일반 PC : SATA, SSD 방식을 사용한다.
서버 : SATA, SSD 방식과 SAS를 사용한다.
SATA, SSD 회전 속도 : 7200rpm
SAS 회전 속도 : 10000, 15000rpm
하드디스크 장치명은 아래와 같은 형식으로 되어 있습니다.
/dev/[디스크종류]d[하드순서][파티션순서]
ex) /dev/sda1, /dev/sdb2 ...
IDE 방식의 장치명 : /dev/hda, /dev/hdb, /dev/hdc, /dev/hdd ... (거의 사용하지 않는다.)
SCSI,SATA,SAS,SSD 방식의 장치명 : /dev/sda, /dev/sdb, /dev/sdc, /dev/sdd ...
파티션 번호 :
/dev/sda1, /dev/sda2, /dev/sda3 ...
연결방식에 따른 차이 :
a부터 차례대로 붙음 : /dev/sda, /dev/sdb, /dev/sdc
1. 리눅스 시스템을 종료하는 다양한 방법
: shutdown -h now
: init 0
: poweroff
: halt
2. 리눅스 시스템을 재부팅하는 다양한 방법
: shutdown -r now
: init 6
: reboot
: Ctrl + Alt + Del 키
파티션 : HDD를 분할해서 분리한 경우 이를 파티션이라고 한다.
마운트 : 장치를 디렉터리에 연결하는 작업을 의미한다.
HDD 파티션 분할
운영중인 리눅스 서버에 HDD 를 추가하는 일은 자주 일어나는 일은 아니고 가끔씩 일어나는 일이며 여기서는
리눅스 서버에 HDD 를 추가하는 방법을 설명합니다.
1. HDD 준비
2. 시스템 종료 후 HDD 연결 # init 0
3. HDD 파티션 분할
fdisk 로 HDD의 파티션을 분할합니다.
# fdisk -l <-- 부팅 후 fdisk -l로 확인
# fdisk /dev/sdb
4. 파일시스템 생성(포맷)
분할된 파티션에 파일시스템을 생성(포맷)한다.
참고 : https://ko.wikipedia.org/wiki/XFS
ext -> ext2 -> ext3 -> ext4
CentOS 7 파일시스템 : xfs
mkfs.ext4 : ext4 파일시스템 생성(포맷)하는 명령어
mkfs.xfs : xfs 파일시스템 생성(포맷)하는 명령어
# mkfs.ext4 /dev/sdb1
# mkfs.xfs /dev/sdb2
5. 마운트할 디렉터리 생성
파티션과 연결할 디렉터리 /data, /home2 를 생성합니다.
#mkdir /home2
#mkdir /data
6. 파티션을 마운트 할 디렉터리에 연결 (마운트)
#mount /dev/sdb1 /home2
#mount /dev/sdb2 /data
7. /etc/fstab 수정
# vi /etc/fstab
:
:
(생략)
/dev/sdb1 /data ext4 defaults 1 2
/dev/sdb2 /home2 xfs defaults 1 2
- /etc/fstab 을 수정하는 이유는 수정하고 저장하지 않으면 마운트 된 것이 사라지기 때문이다.
이전에도 변경된 설정을 저장 해 보았던 경험이 있다.
/etc/vimrc
$HOME /.vimrc
:set nu
$HOME /.bashrc
alias vi='vim'
--실습--
서버에 HDD 추가하기
- fdisk : 파티션 분할 명령어 (2T 이상은 사용할 수 없다.)
- parted : 파티션 분할 명령어 (2T 이상 가능하다.)
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition <-- 파티션 삭제
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types <-- 파티션 타입 확인
m print this menu <-- 메뉴 출력
n add a new partition <-- 파티션 생성
o create a new empty DOS partition table
p print the partition table <-- 파티션 테이블 출력
q quit without saving changes <-- 저장하지 않고 종료
s create a new empty Sun disklabel
t change a partition's system id <-- 파티션 system id 변경
u change display/entry units
v verify the partition table
w write table to disk and exit <-- 저장하고 종료
x extra functionality (experts only)
- 파티션 추가과 삭제
fdisk 로 파티션을 분할하면 system ID : 83 (리눅스 파티션)
- 실습 : sdb를 2개의 파티션으로 나눠보기
20G
+-------------------+
| /dev/sdb |
+---------+---------+
| 10G | 10G |
+---------+---------+
/dev/sdb1 /dev/sdb2
fdisk 명령어 :
n : 파티션 추가 p : 파티션 테이블 확인 d : 파티션 삭제 q : 저장하지 않고 종료 w : 저장하고 종료
실행 순서
n -> 엔터 -> 엔터 -> 엔터 -> +10G
n -> 엔터 -> 엔터 -> 엔터 -> 엔터
p
w
# fdisk -l /dev/sdb
4. - mkfs.ext4 : ext4 파일시스템 생성(포멧)하는 명령어
5. 마운트할 디렉터리 생성
마운트 : 저장장치와 디렉터리를 연결하는 것이다.
파티션과 연결할 디렉터리 /data, /home2 를 생성한다.
# mkdir /data
# mkdir /home2
6. 파티션을 마운트할 디렉터리에 연결 (마운트)
파티션을 연결할 디렉터리에 마운트한다.
mount : 마운트하는 명령어
형식 : mount 저장장치 디렉터리
# mount /dev/sdb1 /data
# mount /dev/sdb2 /home2
# df ---> 디스크 용량 확인
:
:
/dev/sdb1 10190100 36888 9612540 1% /data
/dev/sdb2 10474496 32992 10441504 1% /home2
7. /etc/fstab 수정
영구적으로 마운트 하기 위해서 /etc/fstab 파일을 수정한다.
디바이스 마운트포인트 파일시스템타입 옵션 덤프 파일시스템체크순서
# vi /etc/fstab
:
: (생략)
/dev/sdb1 /data xfs defaults 1 2
/dev/sdb2 /home2 ext4 defaults 1 2
8. 리부팅 후 확인
서버를 리부팅한 후 서버가 잘 부팅이 되면 정상적으로 마운트가 잘 된 것이다.
로그인해서 df로 마운트된 상태를 확인한다.
# reboot
# df
--실습--
언마운트 : 마운트 된 장치를 분리하는 작업이다.
umount 명령어를 사용한다.
순서
1. #df 로 상태 확인
2. /dev/sdc1의 마운트를 해제한다. (즉, 언마운트 한다.)
#umount /dev/sdc1
3. /backup2에 마운트 된 장치를 해제한다. (즉, 언마운트 한다.)
#umount /backup2
- 파티션의 종류
주파티션 (Primary Partition) : 데이터를 담을 수 있는 파티션
확장 파티션 (Extended Partition) : 데이터를 담을 수 없는 파티션이고 논리 파티션을 담을 수 있는 파티션(그릇)
논리 파티션 (Logical Partition) : 데이터를 담을 수 있는 파티션
하나의 하드디스크에서 분할 가능한 개수가 정해져 있다
주 파티션 : 4개
확장 파티션 : 1개
주 파티션 + 확장 파티션 ==> 주 파티션 3개 + 확장 파티션 1개
ex) 파티션을 7개 만들고 싶다 (여러가지 방법이 있다) ---> 주 파티션 1개 + 확장 파티션 1개 + 논리 파티션 6개
---> 주 파티션 2개 + 확장 파티션 1개 + 논리 파티션 5개
---> 확장 파티션 1개 + 논리 파티션 7개 (거의 안씀)
- 위 그림에서 핵심은 논리 파티션은 5부터 시작한다는 것이다.
- /etc/fstab
디바이스 : 장치명, LABEL명, UUID (고유ID)
----------------------> 화살표 방향으로 점차 사용하고 있다.
장치명 : /dev/sdb1, .... -> 장치명은 HDD를 장착하면 이미 정해져 있다.
LABEL명 : 라벨명 (사용자 변경 가능하다.)
UUID : 범용 고유 식별자
--실습--
디바이스를 다양하게 변경해서 /etc/fstab 수정하기
/etc/fstab 수정
1. 디바이스 마운트포인트 파일시스템타입 옵션 덤프 파일시스템체크순서 <-- vi 편집기에서 /dev/sdb1,.... 이런식으로 수정 (예제 위에 있음)
2. 라벨명 마운트포인트 파일시스템타입 옵션 덤프 파일시스템체크순서 <-- e2label, xfs_admin 명령어를 사용
3. UUID 마운트포인트 파일시스템타입 옵션 덤프 파일시스템체크순서 <-- blkid 명령어 사용
/dev/sdb1: ext4
/dev/sdb2 :xfs
/dev/sdc1 :xfs
/dev/sdc2 :xfs
2. /etc/fstab 디바이스 LABEL명 설정하기 ext4 : e2label 명령어로 변경 -> 형식 : e2label device [ new-label ] xfs : xfs_admin 명령어로 변경 -> 형식 : xfs_admin [-L label] device
#e2label /dev/sdb1 ---> 아무것도 안나온다.
2. /dev/sdb1 label명 붙이기 (아무 상관없지만 대부분 마운트 되는 디렉터리 명으로 붙인다.) #e2label /dev/sdb1 /data
3. /dev/sdb2 label명 붙이기 # xfs_admin -L /home2 /dev/sdb2 # xfs_admin -l /dev/sdb2 --> label 명 확인
4. /dev/sdc1, /dev/sdc2 도 바꿔주기
5. /etc/fstab 수정해주기 # vi /etc/fstab : : LABEL=/data /data ext4 defaults 1 2 LABEL=/home2 /home2 xfs defaults 1 2 LABEL=/backup1 /backup1 xfs defaults 1 2 LABEL=/backup2 /backup2 xfs defaults 1 2
설정이 완료되면 리부팅한다. # reboot |
3. /etc/fstab 디바이스 UUID로 설정하기 1. 마운트된 디렉터리를 모두 언마운트한다. # umount /home2 /data /backup1 /backup2
2. blkid 명령어를 사용한다. # blkid : : /dev/sdb1 : UUID 정보 복사하기
3. vi /etc/fstab : : 아래 그림과 같이 수정한다. ![]() 4. 리부팅 |
--실습--
UUID 변경하기
#umount /dev/sdc2
# xfs_admin -U generate /dev/sdc2
# blkid
:
:
UUID 값이 변한 것을 알 수 있다.
--실습--
================================================
부팅하다가 멈추면 /etc/fstab 내용이 잘못된 것이고
root 비번을 입력해서 로그인한 후에
# mount -o remount,rw /
================================================
변경된 UUID를 수정하지 않고 리부팅하면 부팅하다가 멈추게 된다.
# reboot
멈추는 이유는 HDD를 마운트를 해야 하는데 잘못된 마운트 정보 때문에 파일시스템을 마운트 못하기 때문이다.
Give root password fror mainenance
(or press Control-D to continue): <-- root 비번을 입력하고 로그인한다.
/etc/fstab 내용이 잘못된 것이고 root 비번을 입력해서 로그인한 후에 /etc/fstab 파일을
수정하고 저장한 후 reboot 잘 부팅되는 것을 확인한다.
:r !blkid <-- 현재 문서에 blkid의 결과값을 얻어온 후 수정한다.
[root@localhost ~]# vi /etc/fstab
:
:
UUID=bc35eada-56ef-4e51-89d9-cd87c6da772a /data ext4 defaults 1 2
UUID=fdc867ff-f86f-44e8-ac32-5ee791777602 /home2 xfs defaults 1 2
UUID=6a1dafa9-be65-4f2f-9fec-deeff3781835 /backup1 xfs defaults 1 2
# 이전 값
#UUID=65825429-d5a9-441a-921a-59759cf62235 /backup2 xfs defaults 1 2
# 새로운 값
UUID=bb75c755-9955-4276-88f9-06b9c847e670 /backup2 xfs defaults 1 2
# reboot
쉘이란?
- 사용자와 커널 사이에 연결시켜주는 역할을 하며 사용자가 입력한 명령어를 해석하여 커널로 전달하여 해당
운영체제가 명령어를 실행시켜 줍니다.
쉘의 종류
Bourne Shell
/bin/sh
벨 연구소의 스티브본이 개발, 많은 셸 스크립트의 기반이 되는 셸
C Shell
/bin/csh
C 언어 구문과 유사, Bourne Shell 을 확장하여 히스토리, 작업제어, 엘리어스 등 기능 추가 개발자들에게
유용한 기능들을 제공
TC Schell
/bin/tcsh
C Shell 에 명령 행 완성 과 명령 행 편집 기능을 추가
Korn Shell
/bin/ksh
Bourne Shell 가 호환되며 C Shell 의 많은 기능을 포함, Unix 계열에서 많이 사용
Bourne Again Shell (bash)
/bin/bash
리눅스에서 가장 많이 사용되는 쉘로 본쉘 + C 셸 + Korn Shell 의 기능들을 통합시켜 개발
- 최상위 루트파일시스템의 리스트를 확인한다.
# ls /
- CentOS 7 에서는 /bin 이 /usr/bin과 통합되어 있다.
bin -> usr/bin
- /dev 디렉터리의 파일 리스트를 확인한다.
# ll /dev
TUI (TEXT USER INTERFACE)
---> vmware workstation에서
: Alt + F1 : /dev/tty1 -> 첫 번째 가상 콘솔
: Alt + F2 : /dev/tty2 -> 두 번째 가상 콘솔
: Alt + F3 : /dev/tty3 -> 세 번째 가상 콘솔
: Alt + F4 : /dev/tty4 -> 네 번째 가상 콘솔
: Alt + F5 : /dev/tty5 -> 다섯 번째 가상 콘솔
: Alt + F6 : /dev/tty6 -> 여섯 번째 가상 콘솔
GUI 환경
Alt + F1 : GUI 로그인 환경
[Ctrl + ]Alt + F2 : /dev/tty2 (두 번째 가상 콘솔)
[Ctrl + ]Alt + F3 : /dev/tty3 (세 번째 가상 콘솔)
[Ctrl + ]Alt + F4 : /dev/tty4 (네 번째 가상 콘솔)
[Ctrl + ]Alt + F5 : /dev/tty5 (다섯 번째 가상 콘솔)
[Ctrl + ]Alt + F6 : /dev/tty6 (여섯 번째 가상 콘솔)
Alt + F1 -> 여섯 번째 가상콘솔로 전환하는 단축키는 Ctrl + Alt + F6
[1-6] : 1 ~ 6을 의미한다.
/dev/tty1 ~ /dev/tty6까지 ls로 확인한다. --> PuTTY에서 확인
# ls -l /dev/tty[1-6]
crw--w----. 1 root tty 4, 1 1월 4 15:54 /dev/tty1
crw--w----. 1 root tty 4, 2 1월 4 16:42 /dev/tty2
crw--w----. 1 root tty 4, 3 1월 4 16:44 /dev/tty3
crw--w----. 1 root tty 4, 4 1월 4 16:44 /dev/tty4
crw--w----. 1 root tty 4, 5 1월 4 16:44 /dev/tty5
crw--w----. 1 root tty 4, 6 1월 4 16:44 /dev/tty6
# rm -f /dev/tty4 ---> PuTTY에서
Alt + F4 로 전환한 후 로그아웃하면 터미널이 삭제되었기 때문에 로그인
화면이 나오지 않는다.
mknod 명령어를 이용해서 /dev/tty4를 다시 생성하면 로그인창이 다시 활성화된다.
crw--w----. 1 root tty 4, 4 1월 4 16:44 /dev/tty4 ---> 삭제 되었던 tty4 정보
mknod 형식 :
Usage: mknod [OPTION]... NAME TYPE [MAJOR MINOR]
-m : permission
# mknod -m 640 /dev/tty4 c 4 4
# chgrp tty /dev/tty4
# ls -l /dev/tty4
crw--w----. 1 root tty 4, 4 1월 4 16:55 /dev/tty4
/dev/sdb1, /dev/sdb2, /dev/sdc1, /dev/sdc2 를 확인한다.
# ls -l /dev/sd[bc][12]
brw-rw----. 1 root disk 8, 17 1월 4 15:54 /dev/sdb1
brw-rw----. 1 root disk 8, 18 1월 4 15:54 /dev/sdb2
brw-rw----. 1 root disk 8, 33 1월 4 15:54 /dev/sdc1
brw-rw----. 1 root disk 8, 34 1월 4 15:54 /dev/sdc2
- 자신의 가상 터미널을 확인한다.
# ll /dev/pts/0
- 장치 파일(/dev) : 가상 콘솔, 터미널, HDD 등이 여기에 해당된다.
- /etc : 환경설정 파일을 가지고 있는 디렉터리이다.
대표적인것으로
/etc/passwd : 사용자 정보를 저장하고는 파일
/etc/shadow : 사용자 비밀번호를 저장하는 파일
/etc/fstab : 파일시스템의 정보를 담고 있는 파일
/etc/init.d/network : 네트워크 재시작 스크립트 파일
/etc/resolv.conf : DNS 서버의 주소 정보를 가지고 있는 파일 ---> 만약 정보가 없다면 이름으로 접근하는
모든 것이 안됨
/etc/sysconfig/network-scripts/ifcfg-ens33 : 네트워크(이더넷) 설정 파일
내 컴퓨터에서도 확인할 수 있다
- 네트워크 및 인터넷 설정 열기 -> 이더넷 -> 어뎁터 옵션 변경 -> 이더넷 -> 속성
-> 인터넷 프로토콜 버전 4(TCP/IPv4)
**참고**
인터넷을 사용하기 위한 설정 : 4가지
IP주소
서브넷마스크
게이트웨이 주소
DNS 서버 주소
--실습--
네트워크 파일 수정하기
!! : 바로 이전 명령어 실행
!c : 바로 이전에 c로 시작하는 명령어 실행
!s : 바로 이전에 s로 시작하는 명령어 실행
!v : 바로 이전에 v로 시작하는 명령어 실행
# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 168.126.63.1
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
:
:
DNS1=168.126.63.2 -> 수정한것
# service network restart
# !c
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 168.126.63.2
# !v
vi /etc/sysconfig/network-scripts/ifcfg-ens33
:
DNS1=168.126.63.1
# !s
service network restart
# !c
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 168.126.63.1
--실습--
서버의 호스트명 설정하기
형식 : hostname.domainname
- 호스트명 변경하는 명령어
# nmtui를 사용
- # hostnamectl set-hostname ---> 호스트명을 변경하는 명령어
- # hostname ---> 호스트명을 확인하는 명령어이다.
- 호스트명이 저장되는 파일 : /etc/hostname
/etc/hostname 파일의 내용을 확인한다.
# cat /etc/hostname
test.linux.co.kr
hostnamectl 명령어를 이용해서 변경한다.
hostnamectl : 호스트명을 변경하는 명령어
# hostnamectl set-hostname test.linuxmaster.co.kr
# cat /etc/hostname
test.linux.co.kr
# hostname
test.linux.co.kr
호스트명을 변경하고 /etc/hosts 파일에 호스트명을 추가한다.
# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:
:
1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.3 test test.linux.co.kr
'정보보안(시스템,네트워크) > 리눅스' 카테고리의 다른 글
DAY_9 다양한 디렉터리, APM (0) | 2021.01.06 |
---|---|
DAY_8 다양한 디렉터리 살펴보기 (0) | 2021.01.05 |
DAY_6 vi편집기 활용 및 단축키 학습 (0) | 2020.12.31 |
DAY_5 vi편집기 연습 (0) | 2020.12.31 |
DAY_4 파일 권한 학습 (0) | 2020.12.29 |