這裡想聊的是 Linux 的磁碟要怎麼割,這在生命當中是會時時的變更的,也會隨硬碟愈來愈大而不同
以前會想讓 /boot 為獨立一個 device,而此時不會,以減少 partition device 的數量
某個時期是
/boot 512M / 10240M swap 4096M /tmp 4096M /usr 10240M /var (剩下的)
我在 Linux 上時常閒晃的地方會是,另一層意義就是這幾個點是 io 常起起落落的地方
/root/ /etc/ /home/ /usr/local/ /var/log/ /var/www /var/lib/mysql /tmp/ swap
也曾想讓以下幾個獨立一個 device,因為它是 web site 及 mysql database 常讀寫的地方
/var/lib/mysql/ /var/www/ /var/log/
像現在流行的 Cloud / VPS 可能是割如此而已
/boot/ /
少 partition 有少的好壞處,多的亦同
假如 /var 壞軌了,你可能會想當初就分成 /var/www 、/var/lib/mysql 、/var/log 就好了
我最新作法,現在 (可能會偶而更新 :) )
# for web site + database / 25600M 或 51200M /tmp (可隨時變化,所以用 image 方式給 4096M,綁在 /) swap (可隨時變化,所以用 image 方式給 4096M,綁在 /) /usr 25600M 或 51200M /var (剩下的對半)
# for samba service fileserver / 25600M 或 51200M /home (剩下的) /tmp (用 image 方式給 4096M,綁在 /) swap (用 image 方式給 4096M,綁在 /)
我也會用 virtualbox 架 web 子機,然後 fileserver 再弄個 NFS 給 web 子機掛載 data 用,一方面 web 這台子機也不用給太大的空間了
swap 與 /tmp 怎麼用 image 來 mount
掛載 /tmp
dd if=/dev/zero of=/tmpfile.img bs=4096 count=1000000 echo y | mkfs.ext4 /tmpfile.img mount -o loop,rw,nodev,nosuid,noexec /tmpfile.img /tmp chmod 1777 /tmp mount -o rw,noexec,nosuid,nodev,bind /tmp /var/tmp
編輯 /etc/fstab 加入
/tmpfile.img /tmp ext4 rw,noexec,nosuid,nodev,loop 0 0 /tmp /var/tmp none rw,noexec,nosuid,nodev,bind 0 0
掛排 swap
dd if=/dev/zero of=/swapfile.img bs=4096 count=1000000 mkswap -f /swapfile.img chmod 0600 /swapfile.img swapon /swapfile.img
編輯 /etc/fstab 加入
/swapfile.img swap swap defaults 0 0
最近也關注一個小技巧就是,最好設定每個 device (/dev/sdX[0-9]) 有一個 LABEL,然後用 LABEL 來載掛 (或 UUID),以避免硬碟順序問題 (先插後插等)而讓系統掛載錯顆 device,
像一台 server 一般會有四顆硬碟插槽,可能 disk1 與 disk2 會是組成 raid1 當 OS,disk3 與 disk4 可能是各單獨的一顆作資料用,disk 3 可能會是 /dev/sdb1,而 disk 4 可能是 /dev/sdc1,當下是好好的,可是重開機後又可能兩兩交換。
留言
正常來說要掛載UUID 會比較準確,尤其在 Public Cloud Instance 上。 不要偷懶. XD .. #blkid /dev/xxxx
有一情況要小心,就是當下 dd 或 clone /dev/sda 到 /dev/sdb 時,不管你是 LABEL= 或 UUID= 都難逃避掉重開機後系統會混亂的時後。