}

블로그 소개


*여러분들의 따듯한 댓글은 5%, 팔로우는 10% 블로그 포스팅 속도와 퀄리티를 높여줍니다.*

프로필

팔로우 해주시면 포스트할 때 큰 힘이 됩니다!!! 사실 저도 이 팔로우가 무슨 기능이 있는지는 모르겠습니다만, 팔로우 수가 늘면 '날 응원해주는 사람들이 있구나' 생각이 들어서 큰 힘이 됩니다.

팔로어

다른 페이지로 이동


리눅스 독학 페이지 운영체제 독학 페이지 네트워크 독학 페이지 하드웨어 독학 페이지 프로그래밍 독학 페이지 보안 페이지

오스 페이지 다이어트 정보 페이지 게임 정보 페이지 인생 꿀팁


****사진을 클릭하시면 페이지로 이동할 수 있습니다!****

<===***===↓↓↓You can use translate on the chrome↓↓↓===***===>

2019년 11월 1일 금요일

리눅스 마운트란 자세히!!

안녕하세요~ 마무입니다. 이번 포스트에서는 "리눅스 마운트란"과 "blkid", "리눅스 디스크 추가", "fdisk", "mkfs", "df", "/etc/fstab", "UUID"에 관련된 모든 정보들에 대해서 포스트를 해볼 것입니다!

"디스크의 원리""파일시스템" 개념을 알고있어야 이 포스트와 또 다음에 있을 "LVM" ,"RAID"개념이 부드럽게 이해가 될 테니 웬만하면 꼭 먼저 보고 오시길 바랍니다.

-이 포스트를 이해하기 위해 알고 있어야하는 지식-
하드디스크 원리 : https://mamu2830.blogspot.com/2019/10/blog-post_14.html
파일시스템 개념 : https://mamu2830.blogspot.com/2019/10/chs-lba.html


--목차--

1. "마운트" 개념과 디스크의 "파티션", /dev/sda디스크 구조

2. 마운트를 하기위한 단 4가지 과정

3. "VM"에서 디스크 추가

4. "fdisk"와 파티션(Primary, Extended, Logical)

5. 파일시스템 포맷 명령어 "mkfs" "mke2fs"

6. "마운트 포인트"인 디렉토리 그리고 확인 명령어 "df"

7. 영구적으로 마운트상태를 유지하기 위해 등록해야하는 "/etc/fstab"

8. UUID란? 그리고 blkid

9. 총 정리

---------

이 곳에서 못 찾은 정보는

리눅스 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_13.html

여기에 있을 수도 있습니다~





1. 마운트란, 파티션이란, sda디스크 구조




"마운트(mount)"란 무엇일까요? 처음 접하시는 분들은 여러가지 생각이 드실겁니다.
'mount...? 산....? 수가 커지다...무언가를 타는 것인가...!?' 등등 말이죠 ㅋㅋ

"mount"라는 단어에는 사실 저희는 잘 모르는 낯선 뜻이 있었습니다. 그것은 바로
"사용하기 위해 어딘가에 고정하는 것(to fix something to a wall, in a frame, etc., so that it can be looked at or used:)"
이라는 뜻이 말이죠!

실제로 리눅스에서의 "마운트(mount)""사용하기 위해 어딘가에 고정하는 것" 의미 그대로 사용되고 있습니다.

바로 실제 공간인 디스크를 사용하기 위해서, 현재 사용하고 있는 운영체제에 고정(연결)하는 것이죠. 말이 좀 어려운데 그냥 쉽게 "디스크공간과 디렉토리를 연결한다" 라고 생각하셔도 됩니다.

마운트의 과정은 쉽게 "선박(디스크)""선착장(디렉토리)"의 관계라고 생각하시면
됩니다.

배(디스크)가 있습니다. 그리고 그 배를 관리하는 선장(파일시스템)이 있죠.
그럼 일단 이 선박(디스크) 자체를 사용하는 것에는 문제가 없습니다. 하지만 다른 국가나 나라(시스템)와 교류를 하려면 나라에서 마련해준 선착장(디렉토리)배(디스크)선착(마운트)해야겠죠?

한번 가장 흔한 마운트의 예시인 "USB"를 생각해볼까요?

"FAT 32 파일시스템"으로 포맷이 돼 있는 "32기가 USB"를 컴퓨터에 꽂으면 컴퓨터와 연결이 되면서 "장치 및 드라이브"에 USB 모양이 뜨며 기존에 있던 C, D 드라이브 이외에 32기가의 USB공간을 추가로 사용할 수 있었죠?

이 물리적 "USB"를 소프트웨어적으로 표현해주며 우리가 파일처럼 쉽게 사용 할 수 있게 해주던 그 과정이 바로 "마운트(mount)"였던 겁니다.

단지 "윈도우 운영체제"는 이 마운트 과정을 자동으로 해줍니다. 그래서 저희는 이 "마운트"라는 과정을 모르고 살았던 겁니다.

하지만 "리눅스"는 마운트를 자동으로 해주는 배포판도 있지만 보통은 자동으로 안해주며
리눅스를 서버용으로 사용할 경우 주로 "CLI환경"으로 사용한다고 했죠? 이 "CLI환경"에선 자동으로 마운트가 안 됩니다.

그래서 저희는 리눅스를 사용할 때, USB뿐만 아니라 DVD 같은 것을 사용할 때도 일일이 마운트를 직접 해줘야 합니다.

이렇게만 말하면 "마운트(mount)"라는 기능을 "외부 장치와 연결할 때만 사용한다고" 착각하게 되는데 이 "마운트"라는 개념은 이미 리눅스에서 기본적으로 많은 파일들에게 사용되고 있습니다. 가장 쉽게 볼 수 있는 예시론 바로 "/boot" 파일이 있습니다.

여기서 많은 분들은 '/boot 파일이 왜??? 원래 "/"에 있는 디렉토리 아닌가?' 싶으실 겁니다.
하지만 사실 "/boot" 디렉토리는, "boot용 디스크 공간"이 "/boot"라는 디렉토리와 마운트가 된 겁니다.

그림을 보시죠!

리눅스 디렉토리 파일시스템


사진처럼 현재 우리가 사용하고 있는 30기가 디스크는 저렇게 구성이 되어 있습니다.
그림만 봐서는 이해가 힘드실테니 설명을 하자면

현재 리눅스 운영체제 "Centos 7버젼 이상"이 깔린 이 30기가 디스크의 이름은 "/dev/sda"이고

"/dev/sda"라는 우리가 리눅스를 설치하고 사용하는 디스크는 윗 사진처럼
부팅을 위한 정보들이 모여있는 "Boot"용 sda1 파티션 1GB
나머지 모든 리눅스 정보용 sda2 파티션 29GB으로 크게 나눠집니다.

파티션은 영어 "partition" 뜻 그대로 디스크 공간을 나눈겁니다. "sda"란 디스크를
"sda1 파티션"과 "sda2 파티션"으로 나눈 것이죠.

그리고 리눅스에선 각 파티션마다 파일시스템을 포맷해야 합니다.
"파티션들을 사용하려면 각자 파일시스템을 가지고 있어야한다"는 것이죠.

그리고 "sda2"는 아직은 안 배웠지만 다음에 배울 "LVM"이란 것으로 만든다음,
27GB는 "/"디렉토리 공간과 xfs파일시스템 그리고
나머지 2GB는 "swap"과 "swap 파일시스템"위한 공간으로 나눠서 사용을 합니다.
(이 부분은 리눅스 설치하실 때 어떻게 공간을 미리 나눠놨냐에 따라 용량 크기가 다를 수 있습니다.)

27GB의 "최상위 디렉토리 /" 밑으로, 우리가 아는 그 역트리 구조의 디렉토리들과 파일들이 모두 있는 겁니다.

여기서 의문이 드실겁니다. '어라? 그럼 왜 "/boot"디렉토리는 "/" 하위에 있는 건가요?' 
라고 말이죠.

 그것은 바로 제가 말 한 "마운트(mount)"를 이용했기 때문입니다.

즉, "/" 디렉토리 하위에 "/boot"란 디렉토리를 만든 다음 거기에 "sda1(boot)"디스크 공간을 마운트 한 것이죠.

"swap"은 나중에 자세히 설명하겠지만, 일단은 "swap(교환)"이란 뜻대로 디스크 공간을
메모리 공간처럼 "교환"하여 사용하는 것이라고 생각해주세요.

그래서 메모리 공간이 부족할 때 디스크 공간을 메모리처럼 사용하는 거죠. 그래서 "swap"이란 이름을 붙인 것이고, 이런 특수한 목적을 위한 공간이기 때문에 "swap공간"을 위한 "swap 파일시스템"이 따로 있습니다.



2. 마운트를 하기 위한 4가지 과정



자 이제 "마운트"라는 것에 대해서 대충 감이 잡혔으니 이제 직접 해보면서 체화해야죠?

그 과정은 사실 명령어들만 알면 이제 다들 할 수 있을겁니다. 왜냐면 위에서
과정들마다 필요한 것들을 모두 알게모르게 설명했기 때문이죠.

"마운트" 라는 것을 하기위해선 4가지 과정만 하면 됩니다.

1. 디스크 추가(선박 추가) 

당연히 사용하려면 디스크(선박)가 있어야죠?

2. 디스크 파티션을 나눈 뒤 사용할 시스템에 맞춰 타입 정하기
(전투함인지, 수송함인지, 그냥 뗏목인지)

세상에 수 많은 배가 있듯이, 시스템도 수 많은 시스템이 있습니다. 그리고 당연히 그 시스템에 맞는 디스크 파티션을 만들어야겠죠?

3. 용도에 맞게 파일시스템 포맷하기
(전투함이면 전투함을 사용할 줄 아는 선장을 배치해야하고, 수송함이면 수송함에 특화된 선장을 배치해야겠죠?)

당연한 거죠. 전투함에 일반 선박 선장을 배치하면 제대로 조종을 할 수 있겠습니까?

4. 디스크를 마운트 할 마운트 포인트(디렉토리)를 만들어 둔다
(선박이 선착할 수 있는 선착장을 마련한다)

선착장이 없으면 배가 선착할 수가 없겠죠? 그리고 일반 파일 공간을 선착장이라고
마련하면 배가 선착할 수 없겠죠? 배가 들어갈 크기의 공간 "디렉토리"정도가 필요할 것입니다.


이 4가지만 과정을 수행했으면 이제 그냥 마운트 명령어로 "마운트" 하면 됩니다
매우 쉽죠?


3. "VM"에서 디스크 추가




자... 제일 먼저 "배(디스크)"를 만들 재료를 공수해야죠?
저희는 "VM(Virtual Machine)"으로 리눅스를 구현하고 있기에 "VM"에서 디스크를
추가만 하면 됩니다. (실제 컴퓨터는 진짜 디스크를 하나 사서 추가해야겠죠?)

제일 먼저 디스크를 추가해주기 위해, 리눅스를 종료해줍니다. VM을 끄라는 소리가
아니라 "VM"에서 구현하고 있는 리눅스만 종료하라는 겁니다.




자 이렇게 컴퓨터 하드웨어 스펙이 뜨죠?
여기서 "Devices"라 표시된 것중 아무거나 클릭하세요
Memory를 클릭해도 되고 Processors를 클릭해도, USB Controller를 눌러도
아무거나 상관 없어요~





자 아무거나 클릭하시면 이렇게 화면이 나올텐데 주황색으로 표시한
"Add"를 클릭해줍니다! 하드웨어를 추가하려면 당연히 Add해야죠!





이렇게 어떤 하드웨어를 추가할거냐 뜨는데 맨 위에 있는
"Hard Disk"를 눌러주시고 Next를 눌러줍니다.






그러면 이제 어떤 종류의 하드디스크를 추가할거냐고 물어보는데
음 하드디스크 종류에 대해선 나중에 기회가 되면 "운영체제"쪽에서 다룰 예정이니
일단 "SCSI"를 선택해줍니다 참고로 이 SCSI 디스크를 저희가 사용하기 때문에
리눅스에서 디스크 파일이름이 "sda"로 되는 겁니다. 체크하고 Next를 누르시면







이렇게 "Create a new virtual disk" , 가상 디스크를 만들어서 사용할 것이냐(그냥 설정한 디스크 크기만큼 컴퓨터에 가상 디스크 파일을 만들어서 사용하는 겁니다.)

"Use an existing virtual disk", 이미 있는 가상 디스크를 사용할 것이냐

"Use a physical disk (for advanced users)", 실제 윈도우 운영체제에서 사용중인
디스크를 리눅스 용으로 같이 사용할 것이냐

물어보는데 당연히 가상 디스크를 만들어서 사용한다고 체크(Create a new virtual disk)
하고 next 누릅니다.





그러면 이제 디스크 크기를 몇 기가로 할 건지

"Allocate all disk space now", 이걸 체크하면 바로 20GB만큼 가상 디스크 파일을
만들어서, 실제로 디스크에서 바로 20GB만큼 공간이 사라집니다.

이걸 체크안하면 저희가 가상디스크를 20GB로 만들었다 쳐도 바로 20GB만큼 만드는 것이
아니라, 리눅스에서 이 디스크에 데이터를 채울 때마다 조금씩 20GB에 가깝게 만들어지는 겁니다.

당연히 웬만하면 체크 안하는게 좋구요. 체크하면 디스크 추가하는데 오래 걸립니다.

한번 실제로 디스크에서 바로 20GB가 사라지는 것을 보고 싶으시면(wow~찡긋☆)
내 컴퓨터를 눌러 C드라이브 현재 남은 공간을 확인한 뒤
"allocate all disk space now"체크하고 가상 디스크를 추가한 뒤 다시 C드라이브
공간을 확인해보시면 됩니다.

"Store virtual disk as a single file""Split virtual disk into multiple files"
는 사실 아무거나 체크하셔도 상관은 없습니다.

제가 "리눅스 설치" 포스트에서 다뤄웠는데, 그냥 "single"은 파일 크기 고대로
디스크에 저장하는 거고, "multiple"은 큰 파일은 2GB씩 나눠서 디스크에 저장하는 겁니다.

allocate는 체크 하지 마시고 single, multiple중 아무거나 취향대로 체크하신 뒤 Next
누르세요.





우리가 만든 가상 디스크 이름입니다. 뭐 그냥 finish 누르시면 돼요.







자 여기까지 하면 이제 SCSI형식 20GB 디스크를 하나 더 성공적으로 추가한 겁니다.
OK누르고 이제 리눅스를 켜주시면 됩니다.

여기까지 선박 재료를 성공적으로 만든 겁니다.



4. fdisk 파티션(Primary, Extended, Logical)




자 이제 선박을 만들 재료는 준비했으니 목적에 맞는 배를 만들어야죠?

이 목적에 맞는 배를 만드는 명령어는 바로 "fdisk(fixed disk)"입니다.

"fdisk(fixed disk)"는 영어 그대로 이제 컴퓨터에 "disk""fixed(장착)"한다는 의미입니다. 디스크를 본격적으로 사용하겠다는 거죠.

이 명령어를 사용하면 이제 디스크의 파티션을 나누거나, "디스크 타입"(SCSI같은 타입 아닙니다.)을 변경하는 등 디스크를 관리할 수 있습니다.

사용하는 명령어 형식은

fdisk [옵션] [디스크]

입니다. 보통 옵션을 적지 않고 "fdisk [디스크]"로 사용하며 이렇게 할 경우
"fdisk" 모드로 들어가 디스크를 관리할 수 있습니다.

당연히 디스크는 장치이기 때문에 "/dev" 디렉토리 안에
"/dev/sda" , "/dev/sdb" 이런식으로 있는 건 아시죠?
이후 새로운 SCSI 디스크를 추가할 때마다 "sdc", "sdd", "sde"... 이렇게 뒤에
알파벳이 변합니다.

옵션으로 사용할 만한 건 -l(list)가 있고 나머지 옵션들은, fdisk 모드에 들어가서 할 수 있기 때문에 굳이 외울 필요 없습니다.

"-l"을 붙일 경우 fdisk 모드로 들어가지 않고 그냥 디스크 정보만 보여줍니다.






이렇게 뒤에 특정 디스크를 지목하지 않고 그냥 "fdisk -l" 할 경우 모든
디스크와 파티션의 정보를 보여줍니다.

특정 디스크를 지목하면 그 디스크 정보만 보여주고요~

일단 확인삼아 현재 리눅스가 깔려있는 "/dev/sda"를 "fdisk"를 이용해 열어 확인해볼까요?




/dev/sda1 , /dev/sda2가 아닌 "/dev/sda"입니다




이렇게 "fdisk"를 통해 들어가면 command를 입력하라고 합니다만
저희는 아무것도 모르죠?

"m(manu)"를 누르고 엔터를 누릅니다 그러면



이렇게 뜹니다.  물론 저 중에서 실제로 사용하는 건 절반도 안되지만 한번은
차근차근 하나하나 읽고 넘어갑시다~ 언제가는 익숙해져야 해요!
저희가 자주 사용할 것은 굵은 글씨로 강조하겠습니다.

a : 부트테이블 이라는 표시(플래그)를 붙이겠다.
b : BSD 디스크라벨을 편집하겠다.
c : DOS 호환성 표시(플래그)를 붙이겠다.
d(delete) : 한 파티션을 제거하겠다.
G : IRIX(SGI) 파티션 테이블을 만들겠다.
l : 유명한 파티션 타입 종류 리스트를 보여줘라
m(manu) : 메뉴를 보여줘라.
n(new partition) : 새로운 파티션을 만들겠다.
o : DOS 파티션 테이블을 만들겠다.
p(print table) : 파티션 테이블을 보여줘라
q(quit) : 아무것도 저장하지 않고 나가겠다.
s : SUN 디스크라벨을 만들겠다.
t(transform) : 파티션의 시스템 id를 바꾸겠다.
u : 보여주는 디스크 크기를 섹터 단위로 <---> 실린더 단위로 바꾸겠다. 
v : 파티션테이블을 검사하겠다.
w(write and quit) : 현재 만든 파티션 테이블을 저장하고 나가겠다.
x(extra) : 추가적인 기능들을 사용하겠다(전문가들만 추천)

다른거 건들지 마시구 "p(print table)"를 입력하고 엔터를 눌러서 테이블을 봅니다!
괜히 다른 거 건들였다가 리눅스가 통째로 날라가는 사태를 보고 싶지 않다면 말이죠 ㅎㅎ
(물론 w만 안누르면 됨)

그러면



             
이렇게 현재 "sda"디스크의 크기는 32.2GB이고, 섹터의 크기는 512바이트이며,
디스크 라벨 타입은 "dos"이고 리눅스 시스템용 "/dev/sda1"리눅스 LVM용 "/dev/sda2"로 나눠져 있다는 정보가 나오죠~

그리고 심지어 "/dev/sda1"에는 "Boot"에 "별표(*)"로 부트용 디스크라는 게 표시 돼있고 시작 섹터가 2048번이며 끝 섹터가 2099199번이고 총 1048576블록으로 이루어져있다고 나옵니다.

"디스크의 원리" 포스트를 보고 오셨으면 지금 제가 하는 말이 모두 이해가 되실겁니다.

자 여기서 리눅스가 설치된 "/dev/sda" 디스크가 어떻게 생겼나 잘~ 구경했으니 이제
아무것도 건들지말구 "q(quit)"타이핑한 뒤 엔터를 눌러 나가줍니다.

"sda"디스크는 리눅스 시스템과 부팅에 쓰인다는 것을 저희는 이제 알았기에 웬만하면
이제 건들지 않을겁니다.

자 그럼 우리가 아까 새로 추가한 디스크 20GB를 한번 봐볼까요?




자 이렇게 "/dev/"안에 "sd"로 시작하는 걸 모두 보여달라고 하니 우리가 추가한
20GB 디스크는 "/dev/sdb"라는 이름으로 있는 걸 볼 수 있습니다.

자 그럼 "fdisk /dev/sdb"를 해볼까요?




네 성공적으로 들어왔습니다. "p(print table)"를 입력하여 한번 구성이 어떻게 돼 있나
봐봅시다.



네. 당연히 아무것도 없습니다~ 만든 적이 없으니까요!

자 그럼 이제 만들어야죠?

"n(new partition)"를 치고 엔터해봅시다.




그러면 먼저 "p(primary)""e(extended)"를 선택하라고 나오는데요.

여기서 설명을 하고 넘어가자면

"primary(0 primary, 0 extended, 4 free)" 여기에 괄호안에 써 있는 게 무슨 뜻이냐면
현재 "primary"와 "extended"파티션은 각각 0개이며
총 파티션을 추가할 수 있는 4칸이 모두 비어있다고 하는데, 왜 4칸이냐면

원래 보통 디스크당 파티션은 4개까지만 추가할 수 있는데요. 그 이유는
"파일시스템" 포스트에서 잠깐 다뤘던 "MBR(Master Boot Record)"이라는 
디스크 맨 앞에 존재하는 부팅에 관련된 정보가 적힌 영역에, 디스크가 가진 파티션이 
몇 개인지 적을 수 있는 공간이 4개밖에 없기 때문입니다.

그래서 원래는 파티션을 최대 "4개"까지밖에 못 나누니까 더 파티션을 나누기
위해 도입된 기술이 바로 "extended" 파티션입니다. 4개까지 밖에 나눌수 없는 파티션을 이 "extended"를 사용하면 이름 그대로 확장하여 더 많이 나눌 수 있습니다.

그림과 함께 설명해볼게요




원래는 이렇게 어느크기로 나누든 한 디스크는 최대 4개까지밖에 파티션을 못 나눕니다.

하지만 이 "extended 파티션" 기술을 사용하면



"extended 파티션"을 추가한 뒤extended 파티션 내에서
또 파티션을 나눌 수 있습니다.


이제 "extended 파티션 내"에서 나눠지는 파티션을
우리는 논리적으로 구현한다고 해서 "logical 파티션"이라고 합니다.

그리고 이렇게 "extended(확장된) 파티션이 아닌" 파티션을 "주 파티션"이라 하여
"primary 파티션" 이라고 하는 것입니다.

원래 파티션은 4개까지 밖에 안된다고 했었죠? 그래서 "extended 파티션"으로
또 만들어지는 "logical 파티션"은 무조건 5번부터 시작합니다.

파티션 번호가 5번이다? "extended 파티션"에서 나눠진 "logical 파티션"이다~

자 이제 파티션 종류에 대해서 알았으니 계속해서 그럼 저희가 추가한 디스크를
"primary 파티션"과 "extended 파티션" 2개로 나눠볼게요.





자 먼저 "p"를 타이핑 하여 primary 파티션을 만든다고 하고 -->

그 다음 파티션 번호를 뭐라고 할 것이냐에서, 당연히 아무것도 없으니 default가 1번이겠죠? 그냥 엔터를 눌러 1번으로 정해준다음 -->

디스크 시작 섹터를 몇으로 할 것이냐에서, 디폴트인 2048로 하기위해 엔터를 누르고-->

마지막 섹터를 몇 번으로 할 것이냐에서 저희는 그냥 보기 쉽게
"+10G(10GB)"를 해줍니다. 

여기서 중요한 건 이렇게 단위로 파티션을 나눌 땐"+"와 대문자 "G"를 해줘야 합니다. "+"와 "대문자"를 안쓰면 다시 하라고 뜹니다.

단위로 안주고 직접 섹터 숫자를 줘도 됩니다

자 이렇게 해서 이제 10GB 크기의 "primary 파티션"이 하나 만들어졌습니다.

"p"로 확인해 보죠



"/dev/sdb1" 라는 이름으로 리눅스 시스템용 파티션이 잘 만들어진 것을 볼 수 있습니다.

이번엔 한번 "extended 파티션"을 만들어 볼게요.




파티션을 추가하겠다 "n" -->

"extended 파티션"을 만들겠다 "e" -->

파티션 번호를 2~4번중 뭘 줄꺼냐인데, 전 주로 헷갈림을 없에기 위해 extended는 4번을 줍니다. --->

"extended 파티션" 시작 섹터는, 자동으로 "primary 파티션 다음 섹터"로 계산이 돼서
디폴트로 보여줍니다 그냥 "엔터"~ --->

"extended 파티션" 끝 섹터는 몇으로 할 거냐인데 그냥 남은 모든 용량을 깔끔히 주기위해,
디폴트로 끝 섹터가 자동으로 계산되어 있으니  "엔터" -->

하면 이제 성공적으로 만들어졌으니 다시 "p"로 확인해 봅시다.




네 성공적으로 만들어진 것을 볼 수 있습니다.

이제 "Extended 파티션"을 만들었으니 다시 "logical 파티션"으로 나눌 수 있죠?





다시 파티션을 만들겠다 "n" 치시고 --->

이번에 보니 "e" 대신 "logical"의  "l(L)"이 생긴 걸 볼 수 있습니다. "l"을 치시고 -->

자동으로 계산해주는 시작 섹터인 디폴트, 엔터 그냥 눌러주시고 --->

끝 섹터는 몇으로 할 거냐에서 아까 "extended 파티션"에 10G를 할당했었는데 그 중
절반인 5G를 줍니다. --->

이제 다시 한번 "p"로 확인해보겠습니다.



제가 아까 말한대로 성공적으로 5번의 "/dev/sdb5"가 생겼네요~

이제 잘 만들었으니 저장하고 나갑시다. 꼭 저장 "w"로 나가셔야 합니다
그냥 "q"로 나가면 헛고생 한게 되어요 ㅠㅠ




네, 이렇게 "w"를 치고 엔터를 누르시면 성공적으로
저장됐다며 나와집니다.




이렇게 명령어로 확인해보니 성공적으로 디스크 파일이 만들어진 것을 볼 수 있죠?




5. 파일시스템 포맷 명령어 mkfs, mke2fs




자 우린 이제 배를 만들었습니다. 바로 "리눅스 시스템"용 "선박"을 말이죠.
이제 이 "선박을 관리할 선장(파일시스템)"만 고용하면 됩니다.

선장(파일시스템)을 고용(포맷)하는 명령어는 바로

"mkfs(make file system)"입니다.

명령어 형식은

mkfs.[파일시스템] [옵션] [디스크 파티션] 

또는

mkfs -t(type) [파일시스템] [옵션] [디스크 파티션]

입니다.

사실 "-t"도 옵션이지만 "mkfs.[파일시스템]" 방식으로 하는 것이 아니면
무조건 "-t [파일시스템]" 붙여야 하기 때문에 저렇게 썼습니다.

"mkfs"에서 사용할 만한 옵션에는 앞서 말한

옵션

-t(type) [파일시스템] : 파일시스템 타입은 ~다

-f(force) : 포맷하려는 디스크에 이미 다른 파일시스템이 포맷되어 있을 때, 덮어씌우기 위해 쓰는 강제 옵션

이렇게 있습니다.

참고로 "mke2fs(make ext2 file system)"이란 명령어로도 파일시스템을 포맷할 수 있는데
이 명령어는 "ext"시리즈 파일시스템만 포맷할 수 있습니다.

이름에 "e2(ext2)"가 들어가는 것 처럼 -T(Type) 옵션을 안 붙이고
"mke2fs [디스크 파티션]" 이렇게 하면 기본적으로 "ext2"로 포맷이 됩니다.
다른 ext시리즈로 포맷하고 싶으면
"mke2fs -T [ext파일시스템] [디스크 파티션]" 이렇게 하시면 됩니다.


반면에 "mkfs"다른 파일시스템으로도 포맷이 가능합니다. 그래서 "mkfs"만 외우면
됩니다만 "mke2fs"라는 게 시험에 나오니 알고만 넘어갑시다

자 설명은 끝났으니 이제 직접 만든 파티션에 파일시스템을 포맷해볼까요?

저희는 "primary 파티션" "/dev/sdb1""mke2fs -T ext4 /dev/sdb1"을 통해
"ext4"으로 포맷할 것이고

"logical 파티션" "/dev/sdb5""mkfs.xfs /dev/sdb5"을 통해
"xfs"으로 포맷할 것입니다.

네? "extended 파티션인 /dev/sdb4"는 안하냐구요? "extended 파티션"은
사실상 껍데기 역할사용을 못합니다.

하기전에 혹시나 실수 할 수 있으니





이렇게 이름을 확인하고 합시다. 실수로 "sda 1, 2" 파티션을 포맷해버리면
리눅스 데이터가 모두 날라가버리닌깐요~~~~





"mke2fs -T ext4 /dev/sdb1" 으로 포맷을 하니

이제 밑 줄 친 곳을 보시면

"Block size=4096"  : 블록의 사이즈는 4096바이트이며

"655360 inodes, 2621440 blocks" : 총 아이노드와 블록의 개수는 655360, 2621440개이며

"131072 blocks(5.00%)" : 약 5퍼센트정도 되는 131072 블록들은 슈퍼유저를 위해 예약됨

"80 block groups" : 총 80개의 블록 그룹으로 나뉘어졌으며 

"32768 blocks per gorup" : 각 그룹마다 32768개의 블록이 들었고

"8192 inodes per group" : 그룹마다 8192개의 아이노드가 들었고

"SuperBlock backups stored on blocks : 32768, 98304, 163840......1605632"
: 슈퍼블록의 백업들은 32768번, 98304번, 163840번, .....  1605632번 블록에 됐다


이렇게 어떻게 파일시스템이 구성됐는지 정보가 나오며 성공적으로 파일시스템 포맷이
"done"됐다고 뜹니다. 이야~~~ 전에 "파일시스템 핵심정리" 포스트에서
배웠었던 내용이 전부 나오죠~?  '뭔 소리야...' 하시는 분들은 보고 오세요~
 https://mamu2830.blogspot.com/2019/10/chs-lba.html


자 이번엔 mkfs를 이용해 포맷해보겠습니다.




이야 훨씬 깔끔하죠? 참고로 "-f"를 붙인 이유는 제가 테스트 삼아 파일시스템 포맷을
이미 해놓은 상태였기에 덮어씌우기 위해 붙인 겁니다.

뭐.. "xfs"파일시스템은 "ext"시리즈와는 좀 달라서 모르는 용어들이 많이 나옵니다만
사실 리눅스 시스템 공부하는데 알 필욘 없습니다~~

자 여기까지 우리는 드디어 "선장이 타고있는 배(파일시스템이 포맷된 디스크)"까지 만들었습니다!!

이제 원하는 선착장(디렉토리)에 마운트하고 사용하면 끝입니다 사실 처음 설명하는 거라
이렇게 길었던 것이지, 다시 한번 새로운 디스크 추가하고 파일시스템 포맷하는 건
금방 끝납니다~~뭐든지 처음은 어렵고 오래 걸리는겨!!!



6. 마운트 포인트란, 디스크 공간 확인 명령어 df



자 이제 배를 선착하기 위한 선착장(디렉토리)을 만들 차례입니다.
위에서도 살짝 언급했듯이 "디렉토리"를 만들어서 그곳에 디스크를
마운트하면 됩니다.

이렇듯 "마운트를 하기 위한 디렉토리" 혹은 "마운트를 한 디렉토리"를 "마운트 포인트"
라고 합니다. 그냥 말 그대로 "마운트 하는 장소"에요 ㅋㅋ





자 이렇게 "최상위 루트 디렉토리"에  "/forMount"라는 디렉토리를 만들어 줬습니다.
"ll -d /forMount"로 잘 만들어진 것을 볼 수 있죠?

이제 마운트만 하면 됩니다만 "마운트(mount)" 형식은 매우 쉽습니다.

디스크와 디렉토리를 마운트할 때는
mount [디스크 or 파티션] [마운트할 디렉토리]

이고

모든 마운트가 된 디스크와 디렉토리 정보를 보고 싶으면
mount [옵션]

이라 하면 된다.

쓸만한 옵션에는

-t(type) [파일시스템] : 파일시스템이 적용된 디스크들의, 모든 마운트 정보를 보여준다. 

이렇게 있습니다.

자 우리가 만든 "ext4"파일시스템이 포맷된 "/dev/sdb1"
"xfs" 파일시스템이 포맷된 "/dev/sdb5"를 마운트 해보겠습니다.

먼저 마운트 포인트(선착장)를 만들어줘야죠




이렇게 디렉토리 "for_xfs""for_ext4"를 만들었습니다.

이제 마운트만 하면 되요~





네? 아무반응이 없다고요? 아이 참~ 원래 컴퓨터 공학에선 무소식이 희소식이라니깐요~

마운트가 잘 된 겁니다~ 그래도 뭔가 불안하시다면 확인하면 되죠!

위에 말했다시피 그냥 "mount" 를 치시면 모든 마운트 정보가 나옵니다! 해볼까요?





으악!! 어마어마한 양의 마운트 정보들이 쏟아집니다. 하지만 걱정하지 마세요
마운트 시간 순서대로 적히기 때문에 맨 마지막을 보시면
최근에 한 마운트정보가 나옵니다~



마운트를 하는 법을 알았으면 마운트를 제거하는 법도 알아야죠? 바로 "u(un)"을 붙인
"umount(unmount)" 명령어를 사용하면 됩니다.

형식은
umount [마운트 된 장치 or 마운트 포인트(디렉토리)]
입니다.
마운트를 해제하는 건 굳이 장치와 마운트 포인트 둘다 쓸 필요가 없습니다.
생각해보세요. 선착장에서 "배를 묶은 줄"이나 "닻"을 끊거나 회수하면 배는 떠날 것이고(만화에서 많이 보던 장면이죠~)

또는 배쪽에서 그냥 일방적으로 선착장을 떠나버리면 되죠 마찬가지로
마운트 해제도 그냥 둘 중 한 곳만 하면 된다~ 이겁니다.

한번 해볼까요? 저는 솔직히 장치를 해제하는 것보단 디렉토리를 해제하는 게 편하기에
그렇게 하도록 하겠습니다.




자 이렇게 umount 했습니다. 무소식이죠? 잘 됐다는 겁니다~
그래도 확인해보기 위해 그냥 "mount" 명령어를 입력해서 맨 밑을 보시면





사라진 것을 확인할 수 있습니다.


사실 그런데 디스크를 사용함에 있어서 마운트가 된지 안 됐는지의 유무보단
현재 디스크가 공간이 얼마나 남았고 얼마나 사용되고 있는지 보고 싶잖아요?

리눅스에서 디스크 공간을 얼마나 사용할 수 있는지 확인하게 해주는 명령어가 있습니다!
바로 "df(disk free)"!!

이름 그대로 disk(디스크의 공간이) free(얼마나 남았는지) 보여주는 명령어로서 형식은

df [옵션] [디스크 or 마운트 포인트] 

입니다. 디스크나 마운트 포인트를 적지 않고 그냥 "df"만 쓰면 0이 아닌 
모든 디스크의 공간을 보여줍니다.





옵션

-h(human readable) : 디스크의 공간을 인간이 보기 쉽게 보여줍니다.(사이즈로 표현해줌)





-a(all) : 디스크 공간이 0인 것도 모두 보여줍니다.





-t(type) [파일시스템] : 적은 파일시스템의 디스크만 보여줍니다.





"Filesystem"은 이름은 파일시스템이라고 되어 있지만 그냥 "장치 이름"입니다.
"1K-blocks"은 이제 1KB크기의 블록들 개수를 의미하구 
"used" 사용되고 있는 블록의 수(공간)
"Available"은 사용할 수 있는 남은 블록의 수(공간)
"use%" 이제 사용되고 있는 공간을 퍼센트로 나타낸 것이고
"mounted on" 이제 어느 디렉토리에 마운트 되어 있는지 표시된 것이죠~

아까 저희가 "/dev/sdb1"과 "/dev/sdb5"를 마운트 했을 때
이렇게 "df" 명령어로 확인할 수도 있습니다.

"/dev/mapper/centos-root" 란 것은 사실 다음에 배울 LVM으로 만든 것으로
이름 그대로 "centos-root("/")"를 위한 공간이란 뜻입니다.

아까




이 사진에서 "sda2"가 "LVM"으로 만들어진 뒤 "swap"용과 "최상위 루트 디렉토리/"
로 나뉘어 진다고 했잖아요?

이 때 만들어진 저 27GB "/"의 디스크 이름은 바로 "/dev/mapper/centos-root" 라는 겁니다!

위에서는 안나왔지만 "/dev/mapper/centos-swap" 이라는 것도 있는데 안 말해도
이건 "swap용 공간"이라는 것을 알 수 있죠?




7. 영구적으로 마운트를 유지하기 위해 등록해야하는 /etc/fstab




우린 이제 "마운트"라는 개념을 마스터 했습니다.
하지만 마지막 단계가 있으니... 그것은 바로 "/etc/fstab"에 등록하는 것!!

'호에에~~? 그건 또 뭐에요~~?'

일단 "/etc" 디렉토리 안에 들어있으니 리눅스 전역에 영향을 미치는 설정 파일이란 것을
알 수 있죠? "

"fstab"이란 fstab(file system table) 이란 뜻으로 파일 시스템들에 대한 마운트 정보를 적는 테이블입니다. 이 파일의 특징은

원래 마운트는 껏다 키면 마운트가 해제가 되는데, 이 "/etc/fstab"에 마운트 정보를
적으면 시스템이 켜질 때 자동으로 마운트가 됩니다. 즉 영구적으로 마운트가 유지된다는 것이죠.

임시적으로 외부 장치(usb, dvd)를 연결한 거라면 "/etc/fstab"에 적을 필요가 없죠
하지만 저희가 계속 사용할 거라면 이곳에 적어줘야 합니다.




한 번 "cat /etc/fstab"으로 내용을 읽어보았습니다. 이미 3개가 쓰여있네요?

하나는 "/dev/mapper/centos-root" 이고 또 하나는 "/dev/mapper/centos-swap"

이렇게 말이죠 그리고 옆에 뭐 다른것들도 샬라샬라 써 있습니다.

답답하니 "vim"으로 다시 열어볼게요!



오우 이제야 뭔가 특징이 잘 보이네요.
저 옆에 샬라 샬라 써있는 "/ xfs defaults 0 0"와 여러 필드들은 이제 마운트를 자동으로
할 때 어떤 형식으로 할거냐에 대한 세부 사항들이라고 보시면 됩니다만

저것도 당연히 순서가 있습니다.

"/etc/fstab"에 마운트 정보를 적는 순서는

[디스크 이름 or 디스크 UUID] [마운트 포인트] [파일시스템] [마운트 옵션] [덤프(백업)유무)] [fsck 검사순서]

입니다.

각 값 사이의 공백은 1칸 이상만 띄우면 됩니다만 단지 저 파일에선 보기 쉽게 하려고
저렇게 띄워 놓여져 있는 겁니당

"디스크 이름", "마운트 포인트", "파일시스템"은 다들 아실 것이고

이제 "마운트 옵션"이 궁금하실 텐데요!



이렇게 [마운트 옵션]들이 있습니다.

"defaults"를 쓴다는 건 저 안에 들어있는 옵션들 모두 사용한다는 겁니다.
그리고 이름 "defaults"대로 보통 저 defaults를 많이 씁니다.

"auto, exec, suid" 이런 옵션들이 있으면 당연히 반대도 있겠죠?
그런 반대 개념들은 그냥 기존 옵션 맨앞에 "no"를 붙여주시면 됩니다.
"noauto, noexec, nosuid"와 같이 말이죠.

반대로 그냥 유저들도 마운트 권한을 갖게 하려면 "nouser"에서 no를 뺀 "user"를 쓰면 되고요

간단하게 "defaults"만 쓰면 좋겠지만 특수한 경우 몇 개의 옵션은 빼거나 다른 옵션을
써야할 때가 있잖아요? 그럴 땐 옵션 필드에 "noauto,noexec,rw" 이렇게 ","로 분리해서
써주시면 됩니다.

다음 필드인 [덤프 유무]는
원래 "덤프(dump)"란 "원래 별로 중요하지 않은 많은 것들을 한번에 모아두는 것"인데
 컴퓨터공학에선 이걸 "백업"의 개념으로 사용합니다.

[덤프 사용 유무] "0" 또는 "1"이 들어갈 수 있는데 
컴퓨터공학에서 "0"은 off, 즉 사용을 안한다는 것이고
"1"은 on, 사용한다는 것 아시죠? 

마지막 필드인 [fsck 검사순서]는

"fsck(file system check)" 명령어를 통한 파일시스템 체크 순서를 어떻게 하냐는 겁니다.
이 필드엔 "0", "1", "2" 총 3개가 들어갈 수 있는데
"0"은 아예 검사를 안하겠다고
"1"은 1순위로 검사하겠다.
"2"는 1순위 다음으로 검사하겠다. 라는 뜻입니다. 어렵지 않죠?

"usrquota, grpquota"와 같은 "quota"개념은 다음에 다루도록 하겠습니다~


자 "/etc/fstab"파일에 대해서 모두다 끝난 것... 같지만 UUID에 대해서 설명을 안했죠?
바로 설명해드리겠습니다.



8. UUID란, blkid



UUID(Universally Unique IDentifier) 이란 영어 뜻,
Universally(모든 곳에서, 국제적으로) Unique(유일한) IDentifer(아이디, 식별자) 대로
절대 겹칠 일이 없는 식별자입니다. "MAC주소" 같은 거라고 보시면 됩니다.

이 "UUID"는 총 32개의 16진수로 이루어져 있습니다. 그래서 이론적으로 만들어
질 수 있는 "UUID"는 16의 32승이니... 와우... 겹칠 일이 없겠죠?

그리고 이 "UUID"가 정해지는 것에는 현재 시간의 정보도 포함되기 때문에
더욱 겹칠 일이 없습니다.

아 왜 "UUID"를 설명했냐면, 리눅스에서 디스크의 이름 "dev/sda1" 같은 거는
언제든지 바뀔 수가 있거든요 윈도우만 해도 사실 C드라이브 이름을 D드라이브로 바꿀 수도 있잖아요?(물론 윈도우에선 C드라이브에 운영체제가 설치되길 추천하지만)

그래서 "/etc/fstab"에 등록할 때 디스크 이름대신 "UUID"를 적는게 훨씬 안전하고
좋습니다.

"UUID"는 절대 바뀔 일도 겹칠 일도 없으니깐요!

자 그럼 UUID는 어떻게 알까요? 바로 그걸 알 수 있게 해주는 명령어가 있습니다!
바로 "blkid(block identification)"

"blkid(block identification)"은 이름 그대로 block(운영체제가 사용하는 디스크 공간 단위를 block이라 했죠?) idetification(확인) 하는 명령어 입니다.

사용하는 형식은

blkid [디스크 파티션] 

입니다.

그냥 디스크 파티션 없이 "blkid"만 사용하면 현재 파일시스템 포맷이 된 모든 디스크의 "UUID"와 정보를 보여줍니다.




이렇게 말이죠 각 디스크의 "UUID" 보이시죠? 저걸 이제 복사한 다음
"/etc/fstab"에 디스크 이름대신 "UUID=~~~~~~~~~~" 형식으로
넣어주시면 되는 겁니다~ 당연히 "UUID"번호 양 옆에 ""는 빼줘야 하는거 아시죠?

자 한번 "/dev/mapper/centos-root"와 "/dev/mapper/centos-swap" 대신
각각의 "UUID"를 넣고 "/etc/fstab"를 재부팅 해보도록 하겠습니다.





이렇게 말이죠! 따라하시는 여러분들은
잘못 적으시면 부팅이 안 될 수 있으니... 불안하신 분은 "swap"만 해보세요!

스릴이 좋다 하시는 분은 "centos-root"를 하셔도 됩니다 단, 전 책임은 안집니당~

저는 부팅해도 무사히 잘 됐습니다~


9. 총 정리



자 오늘은 여기까지 "마운트"에 대한 정보들을 모두 알아보았는데요!
이제 총 정리하고 마무리 하겠습니다.

1. "마운트(mount)"란 디스크를 사용하기 위해 운영체제 소프트웨어와 연결하는 것이고
사용하는 형식은 mount [디스크 or 파티션] [마운트할 디렉토리]이다.
마운트 해제는 umount [파티션 or 디렉토리] 이다

2. 마운트를 하기 위한 과정은 
i) "VM"에서 디스크 추가
ii) 추가한 디스크를  fdisk [옵션] [디스크] 를 이용해 파티션 나누기
iii) 디스크 파티션에 mkfs.[파일시스템] [옵션] [디스크 파티션]으로 파일시스템 포맷하기
iiii) 디스크와 마운트할 디렉토리를 만든다

3.마운트는 껏다키면 자동으로 해제가 되고, 마운트 상태를 계속 유지하려면 
"/etc/fstab" 파일에 적어야 한다.

4. "UUID"는 겹치지 않는 장치의 고유 ID로, "/etc/fstab"에 디스크 이름대신 쓰는게 더
좋다. 그리고 "UUID"는 "blkid(block identification)" 명령어를 통해 알 수 있다.

5. 디스크의 공간을 보여주는 명령어는 "df(disk free)"이다.


틀린 내용이나 오타 지적은 댓글로 달아주시면 감사하겠습니다!

구글 블로그 팔로우, 네이버 블로그 공감, 따뜻한 댓글은 정말 큰! 힘이 되어
제가 더 좋은 퀄리티의 포스트를 만들게 도와줍니다!!


댓글 27개:

  1. 여러 블로그를 둘러 봤지만 여기 만큼 정리가 잘되어있고, 설명이 와닿게 설명된 블로그를 본적이 없는거 같습니다.
    많은 도움이 되고있습니다.
    포스팅 감사합니다.

    답글삭제
  2. 너무 잘 보고 있습니다. 진심으로 감사 드립니다.

    답글삭제
    답글
    1. 저야말로 포스트마다 댓글 달아주셔서 너무 감사합니다!

      삭제
  3. 잘보고 있습니다. 복 많이 받으세요. 감사합니다.

    답글삭제
    답글
    1. 감사합니다! 님도 복 많이 받으세요!

      삭제
  4. 언제나 잘 보고 있습니다~~!! 궁금한 게 있는데, fstab에서 fsck 검사순서요! 스토리지가 3개일 때는 1, 2, 다음에 3이 안 되는데 어떻게 순서를 정해줄 수 있는지 알 수 있을까요?

    답글삭제
    답글
    1. 항상 잘 봐주셔서 감사합니다.그리고 늦게 답변해서 죄송합니다 ㅠ
      일단 제가 설명을 포스트에서 부족하게 한 것 같아 추가로 설명을 드리자면, fsck 점검 순서는 "1, 2, 0"이렇게 있습니다. 그리고 보통 "루트 파일 시스템(/)"을 '1'로 설정하며 그외 다른 파일 시스템들은 '2'로 설정하고, 점검이 필요 없는 경우엔 "0"을 줍니다.

      3번 째 점검이 필요한 경우에는 부트 파일 시스템과 루트 파일시스템이 정상이면 부팅이 될 테니, 부팅이 되신 후에 "/etc/fstab"파일이 아닌 직접 "fsck [검사하고 싶은 스토리지]" 명령어를 쳐서 검사하시면 됩니다. ex)"fsck /dev/sdb1"

      그 외에 "/etc/fstab"에 등록된 스토리지를 모두 검사하고 싶으시면 "fsck -A"를 치시면 됩니다!

      삭제
  5. 안녕하세요.. 정말 단 한 번도 블로그 보면서 댓글 달아 본 적이 없습니다만, 이 정도의 정보와 자료들을 공짜로 본다는 것에 도저히 죄송스럽고 감사하여 댓글을 남깁니다. 너무나 유익하게 잘 ㅗ고 있습니다.
    극한의 초심자인 저에게, 아무리 잘 풀어놓은 책을 봐도 너무나 난해하고 어색하기만 했던 내용들이, 친절히 상세히 적어주시고 정리해주신 내용들을 접하며 대단히도 해소가 되고 있습니다. 좋은 내용 공유해주셔서 감사드리고, 포스트 작성에 노력해주셔서 감사드립니다. 좋은하루 되세요.

    답글삭제
    답글
    1. 영 좋지 못한 곳에 오타가 .. 있네요. 글이 쉊ㅇ도 안 되는 것 같구요... 아무튼... 많이 감사드린다는 내용입니다..

      삭제
    2. 와... 정말 정말 힘이 솟아나게 만드는 따뜻한 댓글이네요 ㅠㅠ 리마공부님에게 도움이 돼 너무나 다행스럽고, 앞으로도 더욱 노력하겠습니다!! 그리고 오타는 그만큼 리마님이 진심으로 댓글을 썼다는 것을 방증한다고 생각하기에 저는 개인적으로 더 좋네요 ㅎㅎ 리마님도 좋은 하루가 되셨으면 좋겠습니다!

      삭제
  6. 목소리가 들리는 듯 생생한 말투..
    바로 눈앞에 보이는 듯 와닿는 비유..
    강의하셔도 되겠어요
    신입이라서 혼자 끙끙공부하는데 너무 도움이 됩니다 감사합니다

    답글삭제
    답글
    1. 도움이 됐다니 정말 다행입니다!! ㅎㅎ 목소리가 들리는 듯한 생생한 말투라니... 조금 부끄럽네요 ㅋㅋㅋ

      삭제
  7. 너무너무너무 잘 보고 있습니다.
    내용 올리실때 어떻게하면 보는 사람 입장에서 편한지 고민하시며 올리실지 노력이 보입니다.

    답글삭제
    답글
    1. 저의 노력이 느껴진다니 너무나 다행입니다!!! 최근 코로나로 인해 카페에서 포스팅을 못해 전보다 많이 포스팅 속도가 느려졌지만... 그래도 이렇게 따뜻한 댓글을 달아주시는 분들 덕에 조금씩이나마 쓰고 있는 것 같습니다 ㅎㅎ

      삭제
  8. 답글
    1. 따뜻한 댓글을 달아주셔서 감사합니다~

      삭제
  9. SAP BC(Basis) 컨설턴트로 약 2년간 일해왔는데요. 컴퓨터공학 전공자 이지만 아직도 리눅스 및 리눅스와 관련된 정보들이 부족하다는것을 느끼고 다시 한번 마무님의 웹 페이지를 찾게 되었습니다. 철저하게 다시 기초부터 다지려고 합니다. 감사합니다. 건강 유의하시고 코로나 조심하세요.

    답글삭제
    답글
    1. 이야.. 전공자에 현장에서 일하시는 분들에게도 도움이 됐다니 정말 정말 다행입니다 ㅠㅠ 미래의 정보처리기술사님도 건강 잘 챙기시고 코로나 조심하세요!

      삭제
  10. 책으로 내고싶어요. 저작권 저한테 팔아주세요 엉엉 너무 도움이 됐습니다.

    답글삭제
    답글
    1. ㅋㅋㅋㅋㅋㅋ 안됩니다!! 제가 훗날 내야하기 때문이죠~ 도움이 돼 다행입니다!

      삭제
  11. 저는 모르는 부분이 나와도 나중에 꼭 필요하면 다시 공부해야지 하고 넘어가는데 정말 꼼꼼하시네요. 도움 받고 갑니다!

    답글삭제
    답글
    1. 저의 노력이 도움이 돼 다행입니다 ㅎㅎ 따뜻한 댓글 감사해요!

      삭제

#1 여러분들이 소중한 시간을 투자해 달아주시는 따뜻한 댓글들은 저에게 정말 큰 힘이 됩니다!

#2 저의 각 포스트들은 엄청난 노력과 시간 투자를 통해 만들어진 포스트들로, 무단 복제나 모방하는 것을 금지합니다.

#3 저의 포스트에도 틀린 정보가 있을 수도 있습니다. 그럴 경우 친절한 말투로 근거와 함께 댓글로 달아주시면 정말 감사하겠습니다!

* 바쁜 개인 일정으로 댓글 답변이 많이 느립니다 *