
vagrant up: VM 생성 및 실행, 프로비저닝이 있으면 한번만 실행vagrant resume: 일시중지된 VM 재개vagrant provision: VM 프로비저닝vagrant reload: VM 재시작, Vagrantfile 다시 읽음vagrant reload --provision: VM 재시작, Vagrantfile 다시 읽고 프로비저닝 실행vagrant halt: VM 중지vagrant suspend: VM 일시중지vagrant destroy: VM 삭제vagrant destroy -f: 확인 절차 없이 VM 삭제vagrant ssh: 단일 VM인 경우vagrant ssh <vm_name>: 여러 VM인 경우 반드시 VM 이름을 지정해야 함vagrant ssh-config: SSH 클라이언트 컨피그 확인, 일반적으로~/.ssh/config 파일에 해당 정보를 저장하며, vagrant ssh 명령이 아닌 ssh# 둘이 똑같은 기능을 수행함
$ echo 'student123' | sudo passwd --stdin student1
Changing password for user student1.
passwd: all authentication tokens updated successfully.
$ sudo passwd student1
Changing password for user student1.
New password:
# 둘이 똑같은 기능을 수행함
$ sudo usermod -e 2026-12-31 student1
$ sudo chage -E 2026-12-31 student1
: 작업이 자동으로 실행되도록 예약하는 기능
atat [옵션] 시간
→ 실행할 명령 후 Ctrl+D 눌러서 완료!
# 예시
$ at now + 5min
warning: commands will be executed using /bin/sh
at> echo "hello world" > message.txt
at> <EOT>
job 1 at Tue Aug 26 01:33:00 2025
# 예약된 작업 목록 확인
$ atq
1 Tue Aug 26 01:33:00 2025 a vagrant
# 예약 취소
$ atrm 1
# 취소되어 목록이 빈 걸 확인 가능
$ atq
# atd 데몬 프로세스가 백그라운드에서 돌아가는 중?
$ ps -ef | grep atd
^[[Droot 4981 1 0 01:26 ? 00:00:00 /usr/sbin/**atd** -f
vagrant 32267 4373 0 01:33 pts/0 00:00:00 grep --color=auto **atd**
crond)crontab 과 crond 에 대한 이해
crontab: 작업을 정의하는 파일crond: 데몬 (백그라운드에서 실행되는 프로그램)crond 데몬: crontab 명령을 사용하여 예약한 주기적인 작업을 실행함
crontab 명령/etc/crontab
# 열린 파일에 작업 예약 작성
# 빈 파일이 열림
# 권장 방법(직접 설정 파일에 접근해서 수정하는 것은 위험)
$ crontaㄷb -e
# 동일한 기능 수행
# 안내문이 적혀있음
$ vi /etc/crontab

$ crontab -l
* * * * * date >> ~/date_log.txt
$ ls
date_log.txt
$ cat date_log.txt
Tue Aug 26 01:47:02 AM UTC 2025
# 예약한 작업을 등록한 사용자 확인 가능
$ sudo ls -l /var/spool/cron/
total 4
-rw-------. 1 vagrant vagrant 33 Aug 26 01:47 vagrant
# root 사용자도 확인 가능
[vagrant@user01 ~]$ sudo su -
[**root**@user01 ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@user01 ~]# sudo ls -l /var/spool/cron/
total 8
-rw-------. 1 root root 33 Aug 26 01:51 root
-rw-------. 1 vagrant vagrant 33 Aug 26 01:47 vagrant
anacron과crond은 아예 따로 동작
anacron 은 예약 작업이 실행되어야 할 때 시스템을 사용할 수 없으면 해당 작업을 기억해 두었다가 시스템이 정상적으로 사용 가능하거나 부팅이 완료되었을 때 일정 시간 이후 해당 작업을 진행함
→ 여기서의 작업은 anacron 의 작업이므로 crond 와 별개
BIOS vs. UEFI
←————→
UEFI 에선? 공유기를 이용해 집에 있는 컴퓨터에 원격 접속 가능?
파티션이 필요한 이유


→ Protective MBR: 이전의 레거시 모드와 호환성을 위해
MBR
GPT
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 48.4G 0 part /
$ ls -l /dev/sd*
brw-rw----. 1 root disk 8, 0 Aug 26 00:33 /dev/sda
brw-rw----. 1 root disk 8, 1 Aug 26 00:33 /dev/sda1
brw-rw----. 1 root disk 8, 2 Aug 26 00:33 /dev/sda2
brw-rw----. 1 root disk 8, 3 Aug 26 00:33 /dev/sda3
: 장치 연결 시 자동으로 장치파일 생성(전원 off 필요없음)
: 하드디스크를 추가하고 싶을 때 엔터프라이즈 레벨에서는 서버가 꺼지면 치명적이므로 이런 개념이 등장함
도구가 바뀔 뿐 동작원리는 같음
# 디스크 장치가 하나 존재함 (sda)
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 48.4G 0 part /
가상머신 종료 후 virtualbox 에서 디스크 추가
# sdb 디스크 추가된 걸 확인 가능
$ ls -l /dev/sd*
brw-rw----. 1 root disk 8, 0 Aug 26 03:29 /dev/sda
brw-rw----. 1 root disk 8, 1 Aug 26 03:29 /dev/sda1
brw-rw----. 1 root disk 8, 2 Aug 26 03:29 /dev/sda2
brw-rw----. 1 root disk 8, 3 Aug 26 03:29 /dev/sda3
brw-rw----. 1 root disk 8, 16 Aug 26 03:29 **/dev/sdb**
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 48.4G 0 part /
**sdb 8:16 0 20G 0 disk**
→ 아직 파티셔닝은 안된 빈 깡통 상태
**$ sudo fdisk /dev/sdb**
Welcome to fdisk (util-linux 2.37.4).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x19c69d54.
# 새 파티션 생성
**Command (m for help): n**
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039): +2G
Created a new partition 1 of type 'Linux' and of size 2 GiB.
# 현재 파티션 확인
**Command (m for help): p**
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x19c69d54
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 4196351 4194304 2G 83 Linux
# 파티션 타입 변경
**Command (m for help): t**
Partition number (1,2, default 2): 1
Hex code or alias (type L to list all): L
...82 Linux swap / So...
Hex code or alias (type L to list all): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'.
**Command (m for help): p**
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x19c69d54
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 4196351 4194304 2G 82 **Linux swap / Solaris**
/dev/sdb2 4196352 10487807 6291456 3G 83 Linux

# 나머지 파티션(18G)으로 확장 파티션 생성
**Command (m for help): n**
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): e
Partition number (2-4, default 2):
First sector (4196352-41943039, default 4196352):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (4196352-41943039, default 41943039):
Created a new partition 2 of type 'Extended' and of size 18 GiB.
# 논리 파티션 생성
**Command (m for help): n**
All space for primary partitions is in use.
Adding logical partition 5
First sector (4198400-41943039, default 4198400):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (4198400-41943039, default 41943039): +3G
Created a new partition 5 of type 'Linux' and of size 3 GiB.
**Command (m for help): n**
All space for primary partitions is in use.
Adding logical partition 6
First sector (10491904-41943039, default 10491904):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (10491904-41943039, default 41943039): +4G
Created a new partition 6 of type 'Linux' and of size 4 GiB.
# 생성된 파티션 확인
**Command (m for help): p**
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2b54b5f0
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 4196351 4194304 2G 82 Linux swap / Solaris
/dev/sdb2 4196352 41943039 37746688 18G 5 Extended
/dev/sdb5 4198400 10489855 6291456 3G 83 Linux
/dev/sdb6 10491904 18880511 8388608 4G 83 Linux
# 저장하고 나가기
**Command (m for help): w**
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
[vagrant@user01 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 48.4G 0 part /
**sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part
├─sdb2 8:18 0 1K 0 part
├─sdb5 8:21 0 3G 0 part
└─sdb6 8:22 0 4G 0 part**
→ 여기까지 파티셔닝은 완료
→ 커널이 해당 파티션을 인식할 수 있도록 해야 함
partprobe: 커널에 파티션 테이블 변경을 알려줌
# 커널에게 모든 파티션 테이블을 알려줌
# 그러나 모든 디스크에 대해 읽히는건 쓸데없이 cpu 사용하므로
$ sudo partprobe
# 지정해서 읽히고 싶은 디스크에 대해 알림
$ sudo partprobe /dev/sdb
: 디스크에서 파일과 디렉토리를 저장하고 관리하는 방식
: 추상화 계층을 제공
범용 서버: ext4 또는 XFS
대용량 스토리지 서버: XFS
임시 데이터 저장: tmfs
파일 시스템마다 파일을 관리하고 저장하는 알고리즘이 다르다
# 현재 주 파티션 2개 생성한 상태
# 파일시스템 x
# 마운트되어있지 않음
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 48.4G 0 part /
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part
└─sdb2 8:18 0 3G 0 part
마운트: 운영체제가 스토리지를 인식하고 연결하는 과정
각 운영체제가 사용하는 파일 시스템?
# 파일시스템 생성
**$ sudo mkfs.**
mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs
mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
**$ sudo mkfs.xfs /dev/sdb1**
meta-data=/dev/sdb1 **isize=512** agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
**$ man file | grep -i ' -s'**
troff: <standard input>:338: warning [p 4, 5.0i]: can't break line
troff: <standard input>:338: warning [p 4, 5.2i]: can't break line
troff: <standard input>:340: warning [p 4, 5.7i]: can't break line
troff: <standard input>:342: warning [p 4, 6.2i]: can't break line
troff: <standard input>:343: warning [p 4, 6.5i]: can't break line
-s, --special-files
have peculiar consequences. Specifying the -s option causes
-S, --no-sandbox
(https://github.com/seccomp/libseccomp) is available, the -S
**$ file -s /dev/wd0{b,d}
$ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}**
using the -S flag.
# 파일시스템이 생성된 파티션의 정보 확인
**$ sudo file -s /dev/sdb1**
/dev/sdb1: SGI **XFS** filesystem data (blksz 4096, inosz 512, v2 dirs)
blkid: 시스템에 생성된 파일시스템의 종류를 확인
**$ sudo blkid**
/dev/sdb2: **UUID**="b88802e0-1841-4be1-835d-465212975b96" TYPE="swap" PTTYPE="dos" PARTUUID="bcc5b468-02"
/dev/sdb1: UUID="78f63b2c-e872-4190-92c5-4b2dddf38cd0" TYPE="xfs" PARTUUID="bcc5b468-01"
/dev/sda2: UUID="0c6b2dc3-2204-4efc-9262-01d31b4c4e8b" TYPE="xfs" PARTUUID="2f3d756f-bef6-4ea3-9961-30badcedb0f5"
/dev/sda3: UUID="4272f9d7-7925-435f-aba1-73692d0ce628" TYPE="xfs" PARTUUID="6c5d05e3-68d3-4b21-ae0e-3e330a7dd7d2"
/dev/sda1: UUID="B149-D900" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="35eecbee-2618-4432-a7d8-9347bf205880"
→ 마운트할 때 파티션? 디스크? 이름대신 UUID 사용 가능
→ UUID 의 고유성
슬롯에 게임 카트리지를 꽂으면 게임기가 해당 게임을 인식하고 실행
- 게임기의 게임 카트리지, 게임 팩 등
: 파일 시스템
: /dev/sdb1
**# 마운트할 디렉토리 생성
$ sudo mkdir /mnt/xfsdata
# 파티션을 생성한 디렉토리에 마운트**
**$ sudo mount /dev/sdb1 /mnt/xfsdata/**
mount: (hint) your fstab has been modified, but systemd still uses
the old version; use 'systemctl daemon-reload' to reload.
**$ systemctl daemon-reload**
...
# 마운트됐는지 확인
**$ df -h**
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 974M 0 974M 0% /dev/shm
tmpfs 390M 17M 374M 5% /run
efivarfs 256K 14K 238K 6% /sys/firmware/efi/efivars
/dev/sda3 49G 1.7G 47G 4% /
/dev/sda2 960M 97M 864M 11% /boot
/dev/sda1 599M 7.1M 592M 2% /boot/efi
tmpfs 195M 0 195M 0% /run/user/1000
**/dev/sdb1 2.0G 47M 1.9G 3% /mnt/xfsdata**
tmpfs 195M 0 195M 0% /run/user/0
# 마운트됐음을 확인
**$ mount | grep sdb1**
/dev/sdb1 on /mnt/xfsdata type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)
# 정상적으로 마운트됐기에 해당 디렉토리에 정상적으로 파일을 만들고 확인 가능
**$ sudo touch /mnt/xfsdata/testfile**
**$ ls -l /mnt/xfsdata**
total 0
-rw-r--r--. 1 root root 0 Aug 26 07:08 testfile
재부팅해도 마운트가 되도록? 영구적으로 유지하도록 하려면?
/etc/fstab 에 등록
# /etc/fstab 에 등록
$ sudo vi /etc/fstab
$ sudo cat /etc/fstab
...
/dev/sdb1 /mnt/xfsdata xfs defaults 0 0
# 이전에 마운트해놨던 것을 해제
$ sudo umount /mnt/xfsdata
# 마운트가 풀렸음을 확인 가능
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 974M 0 974M 0% /dev/shm
tmpfs 390M 19M 372M 5% /run
efivarfs 256K 14K 238K 6% /sys/firmware/efi/efivars
/dev/sda3 49G 1.7G 47G 4% /
/dev/sda2 960M 97M 864M 11% /boot
/dev/sda1 599M 7.1M 592M 2% /boot/efi
tmpfs 195M 0 195M 0% /run/user/1000
tmpfs 195M 0 195M 0% /run/user/0
# /etc/fstab 에 등록된 것들을 다 마운트?
$ sudo mount -a
mount: (hint) your fstab has been modified, but systemd still uses
the old version; use 'systemctl daemon-reload' to reload.
# 정상적으로 마운트됐음을 확인 가능
# 이제 부팅해도 지워지지 않음. 영구적으로 유지.
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 974M 0 974M 0% /dev/shm
tmpfs 390M 19M 372M 5% /run
efivarfs 256K 14K 238K 6% /sys/firmware/efi/efivars
/dev/sda3 49G 1.7G 47G 4% /
/dev/sda2 960M 97M 864M 11% /boot
/dev/sda1 599M 7.1M 592M 2% /boot/efi
tmpfs 195M 0 195M 0% /run/user/1000
/dev/sdb1 2.0G 47M 1.9G 3% /mnt/xfsdata
UUID 로도 등록 가능
# 파티션 정보 확인(UUID)
$ blkid
/dev/sdb2: UUID="b88802e0-1841-4be1-835d-465212975b96" TYPE="swap" PTTYPE="dos" PARTUUID="bcc5b468-02"
/dev/sdb1: **UUID="78f63b2c-e872-4190-92c5-4b2dddf38cd0"** TYPE="xfs" PARTUUID="bcc5b468-01"
/dev/sda2: UUID="0c6b2dc3-2204-4efc-9262-01d31b4c4e8b" TYPE="xfs" PARTUUID="2f3d756f-bef6-4ea3-9961-30badcedb0f5"
/dev/sda3: UUID="4272f9d7-7925-435f-aba1-73692d0ce628" TYPE="xfs" PARTUUID="6c5d05e3-68d3-4b21-ae0e-3e330a7dd7d2"
/dev/sda1: UUID="B149-D900" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="35eecbee-2618-4432-a7d8-9347bf205880"
# UUID 로 /etc/fstab 에 등록
$ sudo vi /etc/fstab
UUID=78f63b2c-e872-4190-92c5-4b2dddf38cd0 /mnt/xfsdata xfs defaults 0 0
# 등록된 마운트 활성화
$ sudo mount -a
mount: (hint) your fstab has been modified, but systemd still uses
the old version; use 'systemctl daemon-reload' to reload.
# 정상적으로 마운트됐음을 확인 가능
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 974M 0 974M 0% /dev/shm
tmpfs 390M 19M 372M 5% /run
efivarfs 256K 14K 238K 6% /sys/firmware/efi/efivars
/dev/sda3 49G 1.7G 47G 4% /
/dev/sda2 960M 97M 864M 11% /boot
/dev/sda1 599M 7.1M 592M 2% /boot/efi
tmpfs 195M 0 195M 0% /run/user/1000
**/dev/sdb1 2.0G 47M 1.9G 3% /mnt/xfsdata**
# 스왑 영역 생성
$ sudo mkswap /dev/sdb2
mkswap: /dev/sdb2: warning: don't erase bootbits sectors
(dos partition table detected). Use -f to force.
Setting up swapspace version 1, size = 3 GiB (3221221376 bytes)
no label, UUID=b88802e0-1841-4be1-835d-465212975b96
# 스왑 영역 파일 정보 확인
$ sudo file -s /dev/sdb2
/dev/sdb2: **Linux swap file**, 4k page size, little endian, version 1, size 786431 pages, 0 bad pages, no label, UUID=b88802e0-1841-4be1-835d-465212975b96
# 스왑 영역 활성화
$ sudo swapon /dev/sdb2
$ free -h
total used free shared buff/cache available
Mem: 1.9Gi 405Mi 1.4Gi 18Mi 231Mi 1.5Gi
Swap: 3.0Gi 0B 3.0Gi
# 파일 시스템 마운트 영구 등록했던 것처럼
# 스왑 영역 활성화도 영구 등록 가능
$ sudo vi /etc/fstab
# /dev/sdb2 swap swap defaults 0 0
# 이전의 스왑 영역 활성화 해제
$ sudo swapoff /dev/sdb2
$ free -h
total used free shared buff/cache available
Mem: 1.9Gi 410Mi 1.4Gi 18Mi 231Mi 1.5Gi
Swap: 0B 0B 0B
# 등록된 swap 영역 활성화
# 영구 유지
$ sudo swapon -a
$ free -h
total used free shared buff/cache available
Mem: 1.9Gi 410Mi 1.4Gi 18Mi 231Mi 1.5Gi
Swap: 3.0Gi 0B 3.0Gi
언마운트, 스왑오프
→ /etc/fstab 수정
→ sudo fdisk /dev/sdb 로 파티션 다 삭제 후 저장
→ 마운트 포인트(디렉토리) 삭제