๐ง Linux ๆชๆก็ณป็ตฑๆทฑๅ ฅๅๆ:EXT4、XFS、Btrfs、ZFS ๅช็ผบ้ป่ๅฏฆๅ้ธๆๆๅ
Linux ไธ็ไธญๆ้่ฆ、ๅปๆๅฎนๆ่ขซๅฟฝ็ฅ็ๅบ็คๅปบ่จญ,ๅฐฑๆฏๆชๆก็ณป็ตฑ(Filesystem)。 ๅฎๆฑบๅฎไบ่ณๆๅฆไฝๅญๆพ、ๆ่ฝๅฆไฝ็ผๆฎ、SSD ๅฆไฝ่็จ、ไผบๆๅจๆฏๅฆ็ฉฉๅฎ, ๆดๆฑบๅฎไบไฝ ๅจ VM、ๅฎนๅจ、่ณๆๅบซ、Proxy、NAS、PBS ็ญๆ ๅขไธๆฏๅฆๆๆ็。
ๆฌๆๆก็จ ็พ็ง็ดๆทฑๅบฆ,ๆถต่: EXT4、XFS、Btrfs、ZFS ๅๅคงๆชๆก็ณป็ตฑ็ๆถๆง、ๆง่ฝ、Journaling、Metadata、ๅฟซ็ ง、RAID、CoW、 ไปฅๅ็ๅฏฆไธ็้จ็ฝฒไธ็้ธๆๆๅ。
ๅๆๅ ๅซๅฎๆด็ ASCII ๆถๆงๅ็คบ、ๅฏฆๅๆฏ่ผ่กจๆ ผ、 ๅฏฆ้ๆไปค ่ ไผๆฅญ้จ็ฝฒ็ถ้ฉ,ๅฏไฝ็บๆจๅจ Linux ไธ ้ธๆ FileSystem ็ๆ่ก่ๆฌ。
๐ ็ฎ้
- ไธ、็บไป้บผๆชๆก็ณป็ตฑๅพ้่ฆ?(ๅบ็ค่่ฟทๆ)
- ไบ、EXT4 ๆทฑๅ ฅๅๆ(Journaling、Block Group、Inode)
- ไธ、XFS ๆถๆง่งฃๆ(AG、Extent、Metadata、Scaling)
- ๅ、Btrfs:CoW、Subvolume、Snapshot、RAID ๅ็
- ไบ、ZFS:Pool、vdev、ARC、ZIL/SLOG、RAIDZ
- ๅ ญ、ๆ่ฝๆฏ่ผ(SSD/HDD/NVMe ๅฏฆๅๅทฎ็ฐ)
- ไธ、ไฝฟ็จๅ ดๆฏๆฏ่ผ:Web、DB、VM、NAS、PBS、ๅฎนๅจ
- ๅ ซ、ๅฎๆดๆฏ่ผ่กจ(ๆ็ต็ธฝ่กจ)
- ไน、็ต่ช่ๅฏฆๅๅปบ่ญฐ
ไธ、็บไป้บผๆชๆก็ณป็ตฑ้้บผ้่ฆ?(ๅธธ่ฆ่ฟทๆ)
ๅพๅคๅทฅ็จๅธซ็ฌฌไธๆฌก็ขฐๅฐ FS ้ธๆๆๆๅ:
- 「้ฝๆฏๆด่ฎๅฏซ,ไธ้ฝๅทฎไธๅคๅ?」
- 「ๆชๆก็ณป็ตฑไธๆฏๆ ผๅผๅไธไธๅฐฑๅฅฝไบ?」
ไบๅฏฆไธๅฎๅ จไธๅ。
ไธๅ FS ๆ็ดๆฅๅฝฑ้ฟ:
- ๅคง้ๅฐๆชๆก vs ๅคงๆชๆก ็ๆ่ฝๅทฎ็ฐ
- SSD ๅฃฝๅฝ(ๅฏซๅ ฅๆพๅคง Write Amplification)
- ่ณๆๅฏ้ ๆง(Metadata、Checksum、RAID)
- VM / Container ็็ฉฉๅฎๅบฆ่้ๅบฆ
- ่ฝๅฆๆไพ Snapshot / Clone / Send-Receive
- ่ฝๅฆๅฟซ้ๆดๅฑ
ๆไปฅๅฐ Linux ็ฎก็่ ไพ่ชช,ๆชๆก็ณป็ตฑ้ธ้ฏ,ๆไบๆ ๆณ「ๆ่ฎๆดๅฐไผบๆๅจๅ ฑๅปข」。
ไบ、EXT4 ๆทฑๅ ฅๅๆ(Journaling、Block Group、Inode、Extents)
EXT4 ๆฏ็ฎๅ Linux ๆๆฎ้็ FS,่ขซๅคง้็จๆผๅณ็ตฑ Web Server、 ๅฐๅ DB、ๅไบบ้ป่ ฆ่ไธไบๅบๆฌ VM ๅญๆพ็จ้。
ๅฎๅฑฌๆผ EXT ็ณปๅๆผ้ฒๅพ็ๆ็ๆ่ก,็น้ปๆฏ:
- ็ฉฉๅฎ、็ธๅฎนๆงๅฅฝ、่ณๆ็ตๆง็ฐกๅฎ
- ๅฏๅจๅนพไนๆๆ Linux ็ผ่ก็ๅฎๅ จไฝฟ็จ
- ้ฉๅ้็จ็จ้(General Purpose)
๐ EXT4 ็ๆถๆง็ธฝ่ฆฝ(ASCII ๅ)
EXT4 Filesystem Layout --------------------------------------- | Boot Sector | Superblock | --------------------------------------- | Block Group #1 | | ├─ Block Bitmap | | ├─ Inode Bitmap | | ├─ Inode Table | | └─ Data Blocks (Extents) | --------------------------------------- | Block Group #2 | | ├─ Block Bitmap | | ├─ Inode Bitmap | | ├─ Inode Table | | └─ Data Blocks | --------------------------------------- | ... repeated ... | ---------------------------------------
EXT4 ็ๆ ธๅฟๆฆๅฟตๆฏ「ๅๅก็พค็ต Block Group」, ๆฏๅ Block Group ้ฝๅฏ่ฝๅ ๅซ Bitmap、Inode Table ่่ณๆๅ, ๅคฉ็ๅ ทๆ「ๅๆฃๅผ」็ตๆง,ๆๅฉๆผ้ไฝ็ฃ็ขๅฐ้็ถ้ ธ。
๐ EXT4 Journaling(ๆฅ่ช)
EXT4 ไฝฟ็จ Metadata Journaling,้ธ้ ๅฆไธ:
- journal:่ณๆ่ metadata ้ฝๅฏซๅ ฅ journal(ๆๅฎๅ จ、ๆๆ ข)
- ordered(้ ่จญ):metadata ้ฒ journal,่ณๆไธ้ฒ(ๅฎๅ จ+ๆ่ฝๅนณ่กก)
- writeback:ไธไฟ่ญ่ณๆๅฏซๅ ฅ้ ๅบ(ๆ่ฝ้ซ、่ณๆๆ้ซ)
๐ Extents:EXT4 ๆ้่ฆ็ๆๅ
EXT4 ๆจๆฃๅณ็ตฑ block mapping,ๆน็จ Extents:
Extent (้่ผฏๅๆฎต) ---------------------------------- | [start block], [length] | ---------------------------------- ไพๅฆ: Block 1000 ~ 2000 ้ฝๆฏๅไธๅ extent
ๅช้ป:
- ้ฟๅ ็ข็ๅ
- ๅ ้ sequential write
- ็ฐกๅ block index
๐ EXT4 Inode ็ตๆงๆฆๅฟต
Inode ------------------------------------ | Metadata | | ├─ Owner UID/GID | | ├─ Permission | | ├─ Timestamp | | ├─ Pointer to Extents | | └─ Extended Attributes (xattr) | ------------------------------------
ๆฏๅๆชๆก็ๅ งๅฎน้ฝๆฏๅพ Inode ๆๅ Extents。
๐ EXT4 ๅช้ป
- ๆ็、็ฉฉๅฎ、็ธๅฎนๆงๆไฝณ
- ้ฉๅๅคง้ๅฐๆชๆก
- ็ฝ้ฃๅพ fsck ๆ็(ไฟฎๅพฉๆๅ็้ซ)
- ๆ่ผ้ๅบฆๅฟซ
- ๅฏซๅ ฅๅปถ้ฒไฝ(็ก CoW)——้ๅธธ้ฉๅ DB ่้ซ IOPS ่ ณๆฌ
๐ EXT4 ็ผบ้ป
- ไธๆฏๆดๅ็ Snapshot(ๅฟซ็ ง)
- ไธๆฏๆด Checksum(่ณๆๅฎๆดๆงๆฏไธไธ ZFS/Btrfs)
- ไธ้ฉๅๅคงๅๆชๆกๆ้ซๅฎน้ๆ็จ
- ไธ่ฝ็ทๆงๆดๅ ๆๅค disk(้้้ LVM)
๐ EXT4 ๅฏฆๅ mount option ๅปบ่ญฐ
mount -o defaults,noatime,nodiratime,errors=remount-ro /dev/sda1 /data
noatime ๅฏ้กฏ่้ไฝๅคง้ๅฐๆชๆก่ฎๅๆ็ Metadata I/O。
๐ EXT4 ๅฏ็จๅทฅๅ ท
# ๆฅ็ EXT4 ่ณ่จ
sudo tune2fs -l /dev/sda1
# ็ทไธๆดๅ
(LVM ไธ)
sudo resize2fs /dev/mapper/vg0-lv0
# ไฟฎๅพฉ(fsck)
sudo fsck.ext4 /dev/sda1
๐ EXT4 ้ฉ็จๆ ๅข
- Web Server(ๅคง้ๅฐๆชๆก)
- ่ผ้ VM、ๅฎนๅจ rootfs
- ๅบๆฌ DB(MySQL / MariaDB)
- ้้ซๅฎน้ๅ ดๆฏ
่ฅไฝ ้่ฆๅฟซ็ ง、send/receive、ๅฎๆด Checksum → EXT4 ไธ้ฉๅ。
➡️ Part 1 ็ตๆ,ไธไธๆฎตๅฐ้ๅง XFS(ๅซ AG ๆถๆงๅ)、Btrfs(CoW、RAID10)、ZFS(Pool/ARC/ZIL/SLOG)
่ซ่ผธๅ ฅ:้ๅง Part 2
ไธ、XFS ๆถๆง่งฃๆ(AG、Extent、Metadata、Scaling)
XFS ๆฏ็ฑ SGI ่จญ่จ็้ซๆ่ฝ 64-bit ๆชๆก็ณป็ตฑ,ๅจ RHEL/CentOS、Rocky、AlmaLinux ็ญ ไผๆฅญ็ด็ผ่ก็ไธญ่ขซ่ฆ็บ「้ ่จญ」ๆจ่ฆ FS,ๅฐคๅ ถ้ฉ็จๆผ:
- ๅคงๆชๆก(ๅฝฑ็、ๆ ๅๆช、 VM disk)
- ๅนณ่ก I/O ๅทฅไฝ่ฒ ่ผ(่ณๆๆน、ๅไปฝ、ๅๆฃๅผๅฒๅญ)
- ้ซๅฎน้็ฃ็ข(> 10TB)
๐ XFS ็ๆ ธๅฟ:Allocation Group(AG)
XFS ๆๅคง็่จญ่จ้้ปๆฏๅฐๆดๅๆชๆก็ณป็ตฑๅๆๅคๅ็จ็ซ็ Allocation Groups(AG),ๆฏๅ AG ้ฝ่ฝ็จ็ซ่็ metadata ่ I/O, ้่ฎ XFS ่ฝๅค ๅผทๅ「ๅนณ่กๅญๅ」่ฝๅ,ๆฏ VM Host、PB ็ดๅฒๅญ็ๅผท้ 。
XFS Allocation Group Layout -------------------------------------------------------------------- | AG #0 | AG #1 | AG #2 | AG #3 | ... | AG #N | -------------------------------------------------------------------- ๆฏๅ AG ้ฝๅ ๅซ: ├─ Superblock ├─ Inode B+Tree ├─ Free Space B+Tree ├─ Data Blocks --------------------------------------------------------------------
๐ XFS Metadata 100% ไฝฟ็จ B+Tree
ๅ ๅซ:
- Free space B+Tree
- Inode B+Tree
- Directory B+Tree
ๅ ๆญค XFS ๅจๅคง้ๆชๆก็ฎ้、็ข็ๆด็、่ณๆๆฅๆพๆๆๆ้ๅธธๅช็ง็็ฉฉๅฎๅบฆ, ไธๆๅ EXT4 ๅจ็นๅฎๆ ๆณไธๆ็ไธ้。
๐ XFS Extent-based Allocation
ๅ EXT4 ไธๆจฃ,XFS ไนไฝฟ็จ Extents,ไฝ XFS ็ Extent ็ฎก็ๆด้ฉๅ่ถ ๅคงๆชๆก。
XFS Extent Example ---------------------------------- | Logical Range | Physical Range | | 0-999 | block 20000 | | 1000-1999 | block 35000 | ----------------------------------
๐ XFS ๅช้ป
- ๅนณ่ก I/O ่กจ็พๆฅตไฝณ(AG ๆถๆง)
- ้ฉๅๅคงๅๆชๆก(VM disk、ๅฝฑๅ)
- Metadata B+Tree ็ตๆง็ฉฉๅฎ
- fsck ๅนพไนไธ้่ฆ(metadata ๆดไธ่ด)
- ๅฏ็ทไธๅข้ท(Grow)
๐ XFS ็ผบ้ป
- ไธๆฏๆด shrink(็กๆณ็ธฎๅฐ)
- ไธๆฏๆดๅ็ๅฟซ็ ง(้ LVM ๆๅ ถไปๅทฅๅ ท)
- ไธๆฏๆดๅ็ Checksum(ไธๅฆ Btrfs/ZFS)
๐ XFS ๅฏฆๅๆไปค
# ๆฅ็ XFS ็ๆ
sudo xfs_info /dev/sda1
# ็ทไธๆดๅ
sudo xfs_growfs /mountpoint
# Metadata ๆชขๆฅ
sudo xfs_repair /dev/sda1
๐ XFS ้ฉ็จๆ ๅข
- ่ๆฌๆฉๅฒๅญ(qcow2/raw)
- ๅคงๆชๆก、้ซๅฎน้็ฃ็ข
- ๅไปฝๅฒๅญ(้ๅ ๅฏ)
- ้ซไธฆ่ก็ I/O workload
ๅ、Btrfs:CoW、Subvolume、Snapshot、RAID ๅ็
Btrfs ๆฏ Linux ่ไผๆฅญ็ๆๆๆ็บ「ZFS ๆฟไปฃๅ」็่ช็ฑๆชๆก็ณป็ตฑ, ๆๅคง็็น่ฒๆฏ ๅฎๅ จ CoW(Copy-on-Write)ๆถๆง,ไธฆๅ ทๆ:
- ๅ็ๅฟซ็ ง(Snapshot)
- Subvolume(ๅฏ็จ็ซ็ฎก็็ๅญๆชๆก็ณป็ตฑ)
- RAID0/1/10(ๅ็)
- Send/Receive(็ฐๅฐๅข้ๅๆญฅ)
- Checksum(Metadata + Data)
๐ Btrfs CoW ๆถๆงๅ(ASCII)
Btrfs CoW Write Path ------------------------------------------------------- | Original Block | → | New Block Written | | Metadata CoW | → | Metadata Updated as New Nodes | | Tree Root CoW | → | Updated Tree Points to New Data| -------------------------------------------------------
้็จฎๆถๆง่ฎ Snapshot ๅนพไน「็ฌ้ๅฎๆ」,ไฝไน้ ๆ: ๅฐๆชๆกๅคง้ๅฏซๅ ฅๆๅฐ่ด็ข็่้ซๅปถ้ฒ。
๐ Btrfs Subvolume ๆถๆง
Btrfs ├─ @ (rootfs) ├─ @home ├─ @log └─ @docker
ๆฏๅ Subvolume ้ฝๅฏไปฅๆ่ชๅทฑ็ Snapshot。
๐ Snapshot ็คบไพ
# ๅปบ็ซ snapshot
sudo btrfs subvolume snapshot /data /data-snap-2025
# ๆฅ็ subvol
sudo btrfs subvolume list /data
๐ Btrfs RAID
Btrfs ๆฏๆด:
- RAID0
- RAID1(้ๅฏๆฌ)
- RAID10
Btrfs RAID10 Layout
------------------------------------
Disk1 ----\ /----Disk3
\ Mirror /
Disk2 ----/ Stripe \----Disk4
------------------------------------
๐ Send/Receive(้กไผผ ZFS replication)
# ็ข็ snapshot
sudo btrfs subvolume snapshot /data /data-snap
# ้ๅบๅฐๅฆไธๅฐ(้้ ssh)
sudo btrfs send /data-snap | ssh host "btrfs receive /backup"
๐ Btrfs ๅช้ป
- ๅ็ Snapshot / Send-receive
- ๆฏๆด RAID10(็ฐกๅฎๅๅฎๅ จ)
- ๆฏๆด่ณๆ + Metadata checksum
- Subvolume ่จญ่จ้ๅธธๅฝๆง
๐ Btrfs ็ผบ้ป
- ๅฏซๅ ฅๅปถ้ฒ้ซ(ๅฐๆชๆกๅคง้ๆดๆฐ)
- ๅ ไปถๅฐๆชๅฆ ZFS ็ฉฉๅฎ
- ไธ้ฉๅ้ซๅฏซๅ ฅ้็ฐๅข(VM、DB)
- RAID5/6 ไธๅฏ็จ(ไธ็ฉฉๅฎ)
๐ Btrfs ้ฉ็จๆ ๅข
- ๆก้ข็ณป็ตฑ(Ubuntu/SUSE)
- ้่ฆ Snapshot ็ Web ๆ น็ฎ้
- ๅฝฑๅๅฒๅญ、็ๆฌๅๆชๆก
- ๅค็ฏ้ป็ฐกๆๆชๆกๅๆญฅ(send/receive)
ไบ、ZFS:Pool、vdev、ARC、L2ARC、ZIL、SLOG、RAIDZ
ZFS ่ขซๅ ฌ่ช็บไธ็ไธๅ่ฝๆๅฎๆดไธๅฏ้ ็ๆชๆก็ณป็ตฑ, Proxmox、TrueNAS、PBS ้ฝๆก็จ ZFS ไฝ็บไธปๅ FS。
ๆ ธๅฟ็น้ป:
- Pool(ๅฒๅญๆฑ )ๆฝ่ฑกๅฑค
- Copy-on-Write(ๅ จ็ณป็ตฑ)
- End-to-end Checksum(็ซฏๅฐ็ซฏ้ฉ่ญ)
- RAIDZ / Mirror / Triple Mirror
- Snapshot / Clone / Send-Receive
- ARC(ๅฟซๅ)
- ZIL / SLOG(ๅๆญฅๅฏซๅ ฅๆฅ่ช)
๐ ZFS Pool/vdev ๆถๆง(ASCII ๅ)
ZFS Storage Pool ================================================================ | zpool "tank" | | | | vdev #1 (mirror) | | ├─ disk1 | | └─ disk2 | | | | vdev #2 (raidz1) | | ├─ disk3 | | ├─ disk4 | | └─ disk5 | ================================================================
้่ฆๆฆๅฟต:
- Pool = ๆด้ซๅฒๅญ็ฉบ้
- vdev = ๅปบ็ซ Pool ็็ตๆๅฎไฝ
- Pool ็กๆณ็ธฎๅฐ(ไธๅฏ็ธฎๅฎน)
๐ ARC / L2ARC(ๅฟซๅ)
ZFS ๆ่ฝๆ ธๅฟๅจๆผ:
ARC(RAM) → L2ARC(SSD cache)
ARC ๆฏ่จๆถ้ซๅฟซๅ,ๆๆๆฅต้ซ; L2ARC ๆฏ SSD ๅฟซๅ,้ฉๅๅท่ณๆๅ ้。
๐ ZIL / SLOG(ๅๆญฅๅฏซๅ ฅ)
ZIL(ZFS Intent Log) ------------------------------------ | ๆซๅญๅๆญฅๅฏซๅ ฅ(sync write) | ------------------------------------ SLOG ------------------------------------ | ๅฐ็จ SSD,้ไฝ ZIL ๅฏซๅ ฅๅปถ้ฒ | ------------------------------------
ๅๆญฅๅฏซๅ ฅๅคง้(ๅฆ DB)→ ๅผท็ๅปบ่ญฐๅ SLOG。
๐ RAIDZ1/2/3 ๆฆๅฟต
RAIDZ1(ๅฎๆ ก้ฉ) ----------------------------------- Disk1 | Disk2 | Disk3 | Parity ----------------------------------- RAIDZ2(้ๆ ก้ฉ) ----------------------------------- Disk1 | Disk2 | Disk3 | Disk4 | 2×Parity -----------------------------------
๐ ZFS ๅช้ป
- ่ณๆๆๅฎๅ จ็ FS(checksum)
- ๅฟซ็ ง、clone、send/receive ๆๆ็
- ARC/L2ARC ๅคงๅน ๆๅๆ่ฝ
- ๅฏซๅ ฅ้ ๅบ่ CoW ่ฎ่ณๆไธ่ดๆงๆฅต้ซ
- ้ๅธธ้ฉๅ VM、PBS、NAS、่ณๆๆน
๐ ZFS ็ผบ้ป
- ้่ฆๅคง้่จๆถ้ซ(ๅปบ่ญฐ่ณๅฐ 16GB)
- ไธ้ฉๅ 1GB RAM ่ฟทไฝ ๆฉ
- Pool ็กๆณ็ธฎๅฐ
- ๅฏซๅ ฅๆพๅคง(ๅคงๅฏซๅ ฅ workload ้ SSD/SLOG)
๐ ZFS ๅฏฆๅๆไปค
# ๅปบ็ซ pool(mirror)
sudo zpool create tank mirror /dev/sda /dev/sdb
# ๆฅ็ pool
sudo zpool status
# ๅปบ็ซ dataset
sudo zfs create tank/vmdata
# ๅ็จๅฃ็ธฎ
sudo zfs set compression=lz4 tank
# ๆฅ็ไฝฟ็จ้
sudo zfs list
๐ ZFS ้ฉ็จๆ ๅข
- Proxmox VE VM ๅฒๅญ(SSD + RAIDZ)
- TrueNAS、PBS、ZFS NAS
- ้่ฆ snapshot/clone ็ๅ ดๆฏ
- DevOps/CI pipeline ้่ฆๅฟซ้ rollback
➡️ Part 2 ็ตๆ,ไธไธๆฎต Part 3 ๅฐๆไพ:
- ✔ SSD vs HDD vs NVMe ๆ่ฝๆฏ่ผ่กจ
- ✔ ๅๅคง FS ไฝฟ็จๆ ๅขๅฎๆดๆฏ่ผ็ธฝ่กจ(Web、DB、VM、NAS、ๅฎนๅจ)
- ✔ ๆ็ต้ธๆๅปบ่ญฐ(ไผๆฅญๅฏฆๅๆๅ)
- ✔ ๅปถไผธ้ฑ่ฎๆจก็ต
- ✔ ไบๅ็่จๆจก็ต
- ✔ JSON-LD(SEO ๅผทๅ)
่ซ่ผธๅ ฅ:้ๅง Part 3
ๅ ญ、ๆ่ฝๆฏ่ผ(SSD / HDD / NVMe ๅฏฆๅๅทฎ็ฐ)
ไปฅไธๆฏ่ผ็บๅจ็ๅฏฆ็ฐๅข(SSD、HDD、NVMe)ไธญๅธธ่ฆ็ I/O ่ก็บ, ๆไพๆนๅๆง่ฉไผฐ,ๅฏฆ้ๆ่ฝไปๆไพๅฒๅญๆงๅถๅจ、ไฝๅฑ、่จๆถ้ซๅคงๅฐ่ๆๆๅทฎ็ฐ。
๐ 1. ๅคงๆชๆก้ฃ็บๅฏซๅ ฅ(ๅฝฑ็、ๆ ๅๆช、VM disk)
| FileSystem | HDD | SSD | NVMe | ่ชชๆ |
|---|---|---|---|---|
| EXT4 | ไธญ | ไธญ้ซ | ้ซ | Extents ๆๅฉ้ฃ็บๅฏซๅ ฅ |
| XFS | ้ซ | ้ซ | ๆ้ซ | AG ๆถๆงๆ้ฉๅๅคงๆชๆก่ๅนณ่ก I/O |
| Btrfs | ไธญ | ไธญ | ไธญ | CoW ๅฐ่ดๅปถ้ฒๅ้ซ |
| ZFS | ้ซ | ้ซ | ้ซ | ๆญ้ ARC/L2ARC、RAIDZ ๆฑบๅฎๆ่ฝ |
๐ 2. ๅคง้ๅฐๆชๆก(Web root、Git、Config、Logs)
| FileSystem | ๆด้ซ่กจ็พ | ๅๅ |
|---|---|---|
| EXT4 | ๆไฝณ | Metadata ๆไฝๆๆฌไฝ |
| XFS | ไธญ~้ซ | Metadata B+Tree ็ฉฉๅฎ |
| Btrfs | ๅทฎ | CoW ๅฐ่ด metadata ็้ๆดๆฐ |
| ZFS | ไธญ | CoW + checksum ๅฐ่ด้้ท็ฅ้ซ |
๐ 3. ่ณๆๅบซ(MySQL / PostgreSQL)
| FileSystem | ๆ่ฝ | ๅๅ |
|---|---|---|
| EXT4 | ้ซ | ็ก CoW、ๅปถ้ฒไฝ,DB ๆๅธธ็จ |
| XFS | ้ซ | Metadata ็ฉฉๅฎ + ๅคงไฝต็ผๆฏๆดๅฅฝ |
| Btrfs | ๅทฎ | CoW ้ ๆๅคง้ๅฏซๅ ฅๆ ข |
| ZFS | ้ซ(SLOG ๅฟ ่ฆ) | ้้้ sync ๆไฝฟ็จไฝๅปถ้ฒ SLOG |
๐ 4. VM / ๅฎนๅจ(Proxmox、KVM、Docker)
| FileSystem | VM Disk | Container | ๅ่จป |
|---|---|---|---|
| EXT4 | ไธญ | ้ซ | ้ฉๅ rootfs |
| XFS | ้ซ | ้ซ | RHEL ้ ่จญๆจ่ฆ |
| Btrfs | ๅทฎ | ไธญ | ไธ้ฉๅ้ซๅฏซๅ ฅ VM |
| ZFS | ๆ้ซ | ้ซ | Proxmox ๆจ่ฆ |
ไธ、ๅฏฆๅไฝฟ็จๆ ๅข:ๅชๅ FS ้ฉๅๅช็จฎ็จ้?
ไปฅไธไปฅ็พไปฃไผๆฅญ่ๅไบบๅธธ่ฆๆ ๅขไฝๅฎๆดๅปบ่ญฐ。
๐ Web Server(Nginx/Apache)
- EXT4:ๆไฝณ(ๅคง้ๅฐๆชๆก)
- XFS:้ฉๅ่ผๅคงๆชๆก็็ถฒ็ซ
- Btrfs:ไธๅปบ่ญฐ(ๅฐๆชๆกๅฏซๅ ฅๆ ข)
- ZFS:ๅฏ็จ,ไฝๆๆฌ้ซ
๐ Database(MySQL/PostgreSQL)
- EXT4:ๆไฝณ
- XFS:ๆไฝณ
- Btrfs:ไธๆจ่ฆ
- ZFS:ๅฏ,ไฝ้ SLOG / sync=disabled
๐ VM(Proxmox / KVM / ESXi ไปฅ raw/qcow2)
- XFS:้ซ้ VM Disk(qcow2/random IO ่กจ็พ้ๅธธๅฅฝ)
- ZFS:ๆไฝณ(snapshot + clone + send)
- EXT4:ๅฏ็จไฝ้ๆๅช
- Btrfs:ไธๅปบ่ญฐ
๐ Linux Container(Docker / LXC)
- EXT4:ๆไฝณ
- XFS:ๆฌกไฝณ(CentOS ้ ่จญ)
- Btrfs:ๅฏ็จไฝ่ฆๆณจๆ็ข็ๅ
- ZFS:ๆ่ฝๅฅฝไฝไฝ็จ่จๆถ้ซๅคง
๐ NAS / ๅฎถๅบญ้ฒ(ๆชๆกไผบๆๅจ)
- ZFS:ๆไฝณ(Checksum + snapshot)
- Btrfs:ๆฌกไฝณ(็ฐกๆ NAS)
- XFS:็ฌฌไธ(ๅ ่ณๆๆน)
- EXT4:ๅ ๅบๆฌ็จ้
๐ Proxmox Backup Server(PBS)
- ZFS:ๅฎๆนๆจ่ฆ
- XFS:ๅฏ็จไฝๆฒๆ snapshot
ๅ ซ、ๅๅคงๆชๆก็ณป็ตฑๅฎๆดๆฏ่ผ่กจ(ๆญฃๅผ็็ธฝ่กจ)
| ้ ็ฎ | EXT4 | XFS | Btrfs | ZFS |
|---|---|---|---|---|
| ๆ็ๅบฆ | ๆ้ซ | ้ซ | ไธญ | ๆ้ซ |
| ๅฏซๅ ฅๆจกๅ | ้ CoW | ้ CoW | CoW | CoW |
| ๅฟซ็ ง | ็ก | ็ก | ๆ | ๆ |
| Send/Receive | ็ก | ็ก | ๆ | ๆ |
| Checksum(่ณๆๅฎๆดๆง) | ็ก | ็ก | ๆ | ๆ(ๆๅฎๆด) |
| ๆดๅ ๅๅฒ | ๅฏ(LVM) | ๅฏ(Grow Only) | ๅฏ | ไธๅฏ็ธฎๅฐ |
| ้ฉๅๅฐๆชๆก | ๆไฝณ | ้ซ | ๅทฎ | ไธญ |
| ้ฉๅๅคงๆชๆก | ไธญ | ๆ้ซ | ไธญ | ้ซ |
| VM/่ๆฌๅ | ไธญ | ้ซ | ๅทฎ | ๆ้ซ(snapshot) |
| ่ณๆๅบซ | ้ซ | ้ซ | ๅทฎ | ้ซ(้ SLOG) |
| NAS/ๅไปฝ | ไฝ | ไธญ | ไธญ | ๆ้ซ |
| ่จๆถ้ซ้ๆฑ | ไฝ | ไฝ | ไฝ | ้ซ(16GB+) |
| ๆไฝณไฝฟ็จๆ ๅข | Web、ๅฐๆชๆก、DB | VM、ๅคงๆชๆก | Snapshot、Desktop | NAS、ๅคงๅฎน้、VM、PBS |
ไน、ๆ็ต้ธๆๆๅ(็ต่ซ)
ๅฆๆไฝ ๅชๆณ็ฅ้「ๆ็ฐกๅฎ็้ธๆๆนๅผ」,ไปฅไธๆฏๆ้่ฆ็็ต่ซ:
๐ 1. ไธ่ฌ Linux ไผบๆๅจ → ้ธ EXT4
็ฉฉๅฎ、ไฝๅปถ้ฒ、็ฐกๅฎ、ๅฎๅ จ,ๆๆ็ผ่ก็้ฝๆฏๆด。
๐ 2. ๅคงๅฎน้、้ซ I/O ๅทฅไฝ่ฒ ่ผ → ้ธ XFS
ๆๅฅฝ่็ๅคงๆชๆก,ๅนณ่กๅฏซๅ ฅไธๆต。
๐ 3. ้่ฆ Snapshot / Send / ๅญๅท → ้ธ Btrfs
ๆก้ข็ฐๅขๆไฝณ;ไผบๆๅจไธๅปบ่ญฐ้ซๅฏซๅ ฅไฝฟ็จ。
๐ 4. ่ฆๆๅฎๅ จ、ๆๅฎๆดๅ่ฝ、ๆ้ซ้ FS → ้ธ ZFS
Proxmox / NAS / PBS ้ฆ้ธ,ไนๆฏไผๆฅญ็ดๆไฝณ่งฃ。
๐ ๅปถไผธ้ฑ่ฎ
- ๐งฑ Linux Proxy Server(Squid)ๅปบ็ฝฎๆๅญธ ๅๅพๆฅ็
- ๐ง Linux systemd ๆทฑๅ ฅ่งฃๆ่ๅๅๆต็จ็ฎก็ ๆฅ็ systemd
- ๐ง Linux SSH ๅฎๅ จๅผทๅๆๅ(Fail2Ban) ๆฅ็ SSH ๅผทๅ
- ๐ง Linux ไฝฟ็จ่ ่ๆฌ้้ฒ้ๆๅ(ACL) ๅๅพๆฅ็
๐ฌ ไบๅ็่จ
๐ก 「็ไธไฝ ็่ง้ป,่ฎ่จ่ซๆด็ฒพๅฝฉ!」 ไฝ ไฝฟ็จๅช็จฎ FileSystem?้้ๅชไบๆ่ฝๆๅฏ้ ๆงๅ้ก?
- ไฝ ๆๆจ่ฆ EXT4、XFS、Btrfs ้ๆฏ ZFS?็บไป้บผ?
- ๅจ VM ๆ่ณๆๅบซไธญ,ไฝ ็ FS ้ธๆๆๆน่ฎ้ๅ?
- ไฝ ๆณ็ไธไธ็ฏ Filesystem / Storage ไธป้กๆฏไป้บผ?
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ