π Ubuntu μμ€ν μ© ν΅ν© μ€ν λ¦¬μ§ κ΄λ¦¬ λꡬ
Ubuntu νκ²½μμ λμ€ν¬, RAID, fstabμ ν΅ν© κ΄λ¦¬νλ ν¬κ΄μ μ΄κ³ μ¬μ©μ μΉνμ μΈ CLI λꡬμ λλ€. λͺ¨λν API μν€ν μ²μ ID κΈ°λ° λμ€ν¬ κ΄λ¦¬λ₯Ό ν΅ν΄ μμ νκ³ κ°λ ₯ν μ€ν λ¦¬μ§ κ΄λ¦¬λ₯Ό μ 곡ν©λλ€.
- RAID κ΄λ¦¬: RAID 0, 1, 5, 6, 10 μ§μ + μλ νμΌμμ€ν μμ± + fail-safe fstab ν΅ν©
- λμ€ν¬ κ΄λ¦¬: ID κΈ°λ° μμ ν λμ€ν¬ μλ³ (UUID, PARTUUID, LABEL, /dev/sdX)
- fstab κ΄λ¦¬: μλ fail-safe μ΅μ μ μ©, κ²μ¦, λ°±μ , ID κΈ°λ° μμ μ±
- μ’ ν© μ§λ¨: μ€μκ° κ±΄κ° λΆμ λ° μλ λ¬Έμ μμ
- Fail-safe κΈ°λ³Έκ°: λͺ¨λ fstab νλͺ©μ
nofailμ΅μ μλ μ μ© - ID κΈ°λ° μμ μ±: UUID/PARTUUID μ¬μ©μΌλ‘ λλ°μ΄μ€ κ²½λ‘ λ³κ²½μ 무κ΄
- μλ κ²μ¦: λμ€ν¬ μ‘΄μ¬μ±, RAID νΈνμ±, λ§μ΄νΈ μΆ©λ μ¬μ κ²μ¬
- μμ μλ λ°±μ : fstab, mdadm.conf μμ μ νμμ€ν¬ν λ°±μ μμ±
- ν΅ν© CLI: λ¨μΌ
ubuntu-disk-toolkitλͺ λ Ήμ΄λ‘ λͺ¨λ κΈ°λ₯ μ κ·Ό - Just μν¬νλ‘μ°: κ°λ°μ μΉνμ
justλͺ λ Ήμ΄ μ§μ - λ€μ€ μΆλ ₯ νμ: table, detailed, simple, JSON μ§μ
- λνν λͺ¨λ: 볡μ‘ν μμ μ μν λ¨κ³λ³ μλ΄
- Core Utilities:
id-resolver.sh,validator.sh,fail-safe.sh - High-Level APIs:
disk-api.sh,fstab-api.sh,raid-api.sh - μ½λ μ¬μ¬μ©μ±: λͺ¨λ κΈ°λ₯μ΄ λͺ¨λνλμ΄ μμ μ μ¬μ¬μ© κ°λ₯
- νμ₯μ±: μλ‘μ΄ κΈ°λ₯ μΆκ°κ° μ©μ΄ν κ³μΈ΅μ ꡬ쑰
- Ubuntu 18.04 LTS μ΄μ
- Debian 10 μ΄μ
- κΈ°ν Debian κ³μ΄ λ°°ν¬ν
# μλ μ€μΉ λ° νμΈ μ 곡
sudo apt update && sudo apt install -y \
mdadm \
smartmontools \
util-linux \
parted \
e2fsprogs \
shellcheck # κ°λ° μ κΆμ₯git clone <repository-url>
cd ubuntu-disk-toolkit
# π― λ°©λ² 1: μμ μλ μ€μΉ (κΆμ₯)
just setup -y && just install -y
# π§ λ°©λ² 2: λ¨κ³λ³ μ€μΉ
just setup # κ°λ° νκ²½ μ€μ
just install # μμ€ν
μ€μΉ
# π λ°©λ² 3: μλ μ€μΉ
./install/install-deps.sh -y
sudo ./install/install.sh -y# π μμ€ν
μν νμΈ
ubuntu-disk-toolkit check-system
ubuntu-disk-toolkit list-disks
ubuntu-disk-toolkit list-raids
ubuntu-disk-toolkit list-fstab
# π§ Just λͺ
λ Ήμ΄λ‘ λ νΈλ¦¬νκ²
just check-system
just disks
just raids
just fstabjust --list # λͺ¨λ λͺ
λ Ήμ΄ λ³΄κΈ°
just dev-guide # κ°λ° κ°μ΄λ 보기# =============================================================================
# π κ°λ° νκ²½
# =============================================================================
just setup [-y] # κ°λ° νκ²½ μ€μ (μμ‘΄μ± μ€μΉ + κΆν)
just install [-y] # μμ€ν
μ€μΉ (λΉλνν κ°λ₯)
just uninstall [-y] # μμ μ κ±°
# =============================================================================
# π§ͺ ν
μ€νΈ λ° νμ§ κ²μ¬
# =============================================================================
just test # μ 체 ν
μ€νΈ μ€ν
just lint [-y] # shellcheck κ²μ¬ (μλ μ€μΉ μ΅μ
)
just demo # λ°λͺ¨ μ€ν
# =============================================================================
# πΎ λμ€ν¬ κ΄λ¦¬
# =============================================================================
just disks [TYPE] # λμ€ν¬ λͺ©λ‘ (table/available/mounted/raid-ready)
just disk-info <ID> # λμ€ν¬ μμΈ μ 보
just mount-temp <ID> <MOUNT> [FS] # μμ λ§μ΄νΈ
just unmount-temp <TARGET> [force] # μμ μΈλ§μ΄νΈ
# =============================================================================
# β‘ RAID κ΄λ¦¬
# =============================================================================
just raids [FORMAT] # RAID μν (detailed/simple/summary)
just create-raid <LEVEL> <MOUNT> [FS] <DISK1> <DISK2>... # RAID μμ±
just remove-raid <DEVICE> [wipe] # RAID μ κ±°
just analyze-raid <DEVICE> [perf] # RAID μμΈ λΆμ
just setup-raid # λνν RAID μ€μ
just raid-disks # RAIDμ© μ¬μ© κ°λ₯ν λμ€ν¬
# =============================================================================
# π fstab κ΄λ¦¬
# =============================================================================
just fstab [FORMAT] # fstab νλͺ© λͺ©λ‘
just add-fstab <ID> <MOUNT> [FS] [OPTIONS] # fstab μΆκ° (fail-safe μλ)
just remove-fstab <IDENTIFIER> # fstab μ κ±°
# =============================================================================
# π μμ€ν
κ΄λ¦¬
# =============================================================================
just check-system # μ 체 μμ€ν
κ²μ¬
just fix-system # μλ λ¬Έμ μμ # κΈ°λ³Έ μ 보 μ‘°ν
ubuntu-disk-toolkit --help
ubuntu-disk-toolkit list-disks [table|available|mounted|raid-ready]
ubuntu-disk-toolkit list-raids [detailed|simple|summary]
ubuntu-disk-toolkit list-fstab [detailed|table|simple]
ubuntu-disk-toolkit disk-info <UUID|PARTUUID|LABEL|/dev/sdX|sdX>
# μμ€ν
κ΄λ¦¬
ubuntu-disk-toolkit check-system # μ 체 κ²μ¬
ubuntu-disk-toolkit fix-system # μλ λ¬Έμ μμ # RAID μμ± - μμ μλνλ νλ‘μΈμ€
ubuntu-disk-toolkit create-raid 1 /data ext4 sdb sdc
ubuntu-disk-toolkit create-raid 5 /storage ext4 sdb sdc sdd sde
# RAID κ΄λ¦¬
ubuntu-disk-toolkit remove-raid /dev/md0 [wipe]
ubuntu-disk-toolkit analyze-raid /dev/md0 [perf]
# λνν λͺ¨λ (볡μ‘ν μ€μ μ©)
ubuntu-disk-toolkit setup-raid# ID κΈ°λ° μμ ν fstab κ΄λ¦¬ (fail-safe μλ μ μ©)
ubuntu-disk-toolkit add-fstab UUID=12345678-... /data ext4 defaults
ubuntu-disk-toolkit add-fstab PARTUUID=abcd-... /backup xfs "defaults,noatime"
ubuntu-disk-toolkit add-fstab /dev/sdb1 /temp ext4 defaults
# fstab νλͺ© μ κ±°
ubuntu-disk-toolkit remove-fstab /data
ubuntu-disk-toolkit remove-fstab UUID=12345678-...# ID κΈ°λ° λμ€ν¬ μ 보 (λͺ¨λ ID νμ μ§μ)
ubuntu-disk-toolkit disk-info UUID=12345678-...
ubuntu-disk-toolkit disk-info /dev/sdb1
ubuntu-disk-toolkit disk-info sdb
# μμ λ§μ΄νΈ (fstab μμ μμ)
ubuntu-disk-toolkit mount-temp UUID=... /mnt/temp ext4
ubuntu-disk-toolkit unmount-temp /mnt/temp [force]# 1οΈβ£ RAID 1 λ―Έλ¬λ§ μ€μ (μμ μλ)
just create-raid 1 /data ext4 sdb sdc
# β
λμ€ν¬ κ²μ¦ β RAID μμ± β νμΌμμ€ν
μμ± β fstab λ±λ‘ (nofail μλ) β λ§μ΄νΈ
# 2οΈβ£ κΈ°μ‘΄ λμ€ν¬λ₯Ό fstabμ μμ νκ² μΆκ°
just add-fstab UUID=12345678-abcd-... /backup ext4 "defaults,noatime"
# β
UUID μ‘΄μ¬ νμΈ β λ§μ΄νΈν¬μΈνΈ μΆ©λ κ²μ¬ β nofail μΆκ° β fstab λ°±μ
β λ±λ‘
# 3οΈβ£ μμ€ν
μ 체 κ²μ¬ λ° μλ μμ
just check-system # λ¬Έμ μ λ°κ²¬
just fix-system # μλ μμ μ μ©
# 4οΈβ£ RAIDμ© μ¬μ© κ°λ₯ν λμ€ν¬ νμΈ
just raid-disks
# β
λ§μ΄νΈλμ§ μκ³ RAIDμ μνμ§ μμ μ¬μ© κ°λ₯ν λμ€ν¬λ§ νμ# ν
μ€νΈ μ€ν
just test # μ 체 ν
μ€νΈ
just lint -y # shellcheck μλ μ€μΉ + κ²μ¬
# κ°λ° μν¬νλ‘μ°
just setup -y && just test && just lint -y && just demotests/
βββ test_helpers.bash # Mock μμ€ν
+ κ³΅ν΅ ν¨μ
βββ test_common.bats # κΈ°λ³Έ κΈ°λ₯ ν
μ€νΈ
βββ test_integration.bats # ν΅ν© ν
μ€νΈ (ubuntu-disk-toolkit)
βββ test_*.bats # κΈ°λ₯λ³ μΈλΆ ν
μ€νΈ
ubuntu-disk-toolkit/
βββ π README.md # νλ‘μ νΈ κ°μ
βββ π οΈ justfile # Just μν¬νλ‘μ°
βββ π docs/
β βββ FEATURES.md # μμΈ κΈ°λ₯ λ¬Έμ
βββ π― bin/ # μ€ν μ€ν¬λ¦½νΈ
β βββ ubuntu-disk-toolkit # λ©μΈ ν΅ν© CLI
β βββ check-system # μμ€ν
κ²μ¬
β βββ manage-disk # λμ€ν¬ κ΄λ¦¬
β βββ manage-fstab # fstab κ΄λ¦¬
β βββ check-disk-health # μ’
ν© μ§λ¨
βββ π lib/ # λͺ¨λν λΌμ΄λΈλ¬λ¦¬
β βββ π§ Core Utilities
β β βββ common.sh # κΈ°λ³Έ μ νΈλ¦¬ν°
β β βββ id-resolver.sh # ID ν΄μ (UUIDβκ²½λ‘)
β β βββ validator.sh # κ²μ¦ μμ€ν
β β βββ fail-safe.sh # nofail μλ μ μ©
β βββ π― High-Level APIs
β β βββ disk-api.sh # λμ€ν¬ κ΄λ¦¬ API
β β βββ fstab-api.sh # fstab κ΄λ¦¬ API
β β βββ raid-api.sh # RAID κ΄λ¦¬ API
β βββ π¨ Legacy Functions
β βββ ui-functions.sh # UI/μΆλ ₯ ν¨μ
β βββ system-functions.sh # μμ€ν
κ²μ¬
β βββ disk-functions.sh # λμ€ν¬ κ΄λ¦¬
β βββ fstab-functions.sh # fstab κ΄λ¦¬
β βββ raid-functions.sh # RAID κ΄λ¦¬
βββ βοΈ config/
β βββ defaults.conf # μ€μ νμΌ
βββ π install/
β βββ install.sh # μμ€ν
μ€μΉ
β βββ install-deps.sh # μμ‘΄μ± μ€μΉ
β βββ uninstall.sh # μμ μ κ±°
βββ π§ͺ tests/ # Bats ν
μ€νΈ μμ€ν
βββ test_*.bats # κΈ°λ₯λ³ ν
μ€νΈ
βββ test_helpers.bash # ν
μ€νΈ ν¬νΌ
βββ run-tests.sh # ν
μ€νΈ μ€νκΈ°
# μ§μνλ λͺ¨λ ID νμ
ubuntu-disk-toolkit disk-info UUID=12345678-1234-1234-1234-123456789abc
ubuntu-disk-toolkit disk-info PARTUUID=abcd1234-12ab-34cd-56ef-123456789abc
ubuntu-disk-toolkit disk-info LABEL=MyDisk
ubuntu-disk-toolkit disk-info /dev/sdb1
ubuntu-disk-toolkit disk-info sdb1
ubuntu-disk-toolkit disk-info sdb
# fstabμμλ UUIDκ° μλ μ°μ μ ν
just add-fstab /dev/sdb1 /data # λ΄λΆμ μΌλ‘ UUIDλ‘ λ³ν# λͺ¨λ fstab μΆκ° μ nofail μλ μ μ©
just add-fstab UUID=... /data ext4 defaults
# μ€μ fstab: UUID=... /data ext4 defaults,nofail 0 2
# RAIDμ κ²½μ° nofail + noauto μλ μ μ©
just create-raid 1 /data ext4 sdb sdc
# μ€μ fstab: UUID=... /data ext4 defaults,nofail,noauto 0 2# ν¬κ΄μ μμ€ν
μν νμΈ
just check-system
# β
νμ λꡬ μ€μΉ νμΈ
# β
RAID λ°°μ΄ μν κ²μ¬
# β
fstab μ ν¨μ± κ²μ¦
# β
λ§μ΄νΈ μν νμΈ
# β
λμ€ν¬ κ±΄κ° μν
# β
κΆν λ° μ€μ κ²μ¬
# λ°κ²¬λ λ¬Έμ μλ μμ
just fix-system- μλ λ°±μ
: λͺ¨λ μ€μ λ³κ²½ μ
/var/backups/μλ λ°±μ - ID κΈ°λ° μμ μ±: UUID/PARTUUID μ¬μ©μΌλ‘ λλ°μ΄μ€ λ³κ²½μ 무κ΄
- fail-safe κΈ°λ³Έκ°: λΆν
μ€ν¨ λ°©μ§λ₯Ό μν
nofailμλ μ μ© - μ¬μ κ²μ¦: λͺ¨λ μμ μ λμ€ν¬ μ‘΄μ¬μ±, νΈνμ± κ²μ¬
- ID κ²μ¦: μ‘΄μ¬νμ§ μλ λμ€ν¬ μ¬μ μ°¨λ¨
- μΆ©λ λ°©μ§: λ§μ΄νΈν¬μΈνΈ, fstab νλͺ© μ€λ³΅ κ²μ¬
- RAID νΈνμ±: λ§μ΄νΈλ λμ€ν¬, κΈ°μ‘΄ RAID λ©€λ² μ¬μ© λ°©μ§
- μλ λ‘€λ°±: μ€ν¨ μ λ°±μ μ ν΅ν μλ 볡μ
# 1. κ°λ° νκ²½ μ€μ
git clone <repo> && cd ubuntu-disk-toolkit
just setup -y
# 2. κ°λ° λ° ν
μ€νΈ
just test && just lint -y
# 3. μ κΈ°λ₯ μΆκ° μ
# - lib/ λλ ν 리μ λͺ¨λ μΆκ°
# - tests/ λλ ν 리μ ν
μ€νΈ μΆκ°
# - justfileμ λͺ
λ Ήμ΄ μΆκ° (νμμ)
# - README.md μ
λ°μ΄νΈ
# 4. ν 리νμ€νΈ μ μ΅μ’
κ²μ¬
just demo # μ 체 κΈ°λ₯ λμ νμΈμ΄ νλ‘μ νΈλ MIT λΌμ΄μ μ€ νμ λ°°ν¬λ©λλ€.
| λΆμΌ | μ΄μ λ²μ | νμ¬ λ²μ | κ°μ ν¨κ³Ό |
|---|---|---|---|
| μν€ν μ² | λ¨μΌ νμΌ ν¨μ | λͺ¨λν API | μ¬μ¬μ©μ± 3λ°° ν₯μ |
| λμ€ν¬ κ΄λ¦¬ | κ²½λ‘ κΈ°λ° | ID κΈ°λ° (UUID/PARTUUID) | μμ μ± λν ν₯μ |
| fail-safe | μλ κΆμ₯ | μλ μ μ© | λΆν μ€ν¨ μν μ κ±° |
| CLI ν΅ν© | κ°λ³ μ€ν¬λ¦½νΈ | λ¨μΌ ubuntu-disk-toolkit | μ¬μ© νΈμμ± ν₯μ |
| Just λͺ λ Ήμ΄ | κΈ°λ³Έ 5κ° | νμ₯ 16κ° | κ°λ° μμ°μ± 3λ°° |
| κ²μ¦ μμ€ν | κΈ°λ³Έ κ²μ¬ | ν¬κ΄μ validator.sh | μ€λ₯ μ¬μ λ°©μ§ |
| μλν | μλ λ¨κ³ | μμ μλ μν¬νλ‘μ° | RAID μμ± μν΄λ¦ |
Ubuntu Disk ToolkitμΌλ‘ λ μμ νκ³ κ°λ ₯ν Ubuntu μ€ν λ¦¬μ§ κ΄λ¦¬λ₯Ό κ²½ννμΈμ! π
# μμ μλ μ€μΉ λ° λ°λͺ¨
git clone <your-repo>
cd ubuntu-disk-toolkit
just setup -y && just demo
# 첫 λ²μ§Έ RAID μμ±
just raid-disks # μ¬μ© κ°λ₯ν λμ€ν¬ νμΈ
just create-raid 1 /data ext4 sdb sdc # RAID 1 μμ±