來(lái)自《鳥(niǎo)哥的 Linux 私房菜》浓恶,重復(fù)只是加深自己的印象。
本篇結(jié)構(gòu):
- 文件系統(tǒng)的簡(jiǎn)單操作
- 磁盤(pán)的分區(qū)结笨、格式化包晰、檢驗(yàn)與掛載
- 設(shè)置開(kāi)機(jī)掛載
- 內(nèi)存交換空間(swap)之創(chuàng)建
- 補(bǔ)充
一湿镀、文件系統(tǒng)的簡(jiǎn)單操作
1.1、磁盤(pán)與目錄的容量
磁盤(pán)的整體數(shù)據(jù)是在 superblock 區(qū)塊中伐憾,但是每個(gè)各別文件的容量則在 inode
當(dāng)中記載的勉痴。在命令行下面該如何叫出這幾個(gè)數(shù)據(jù)呢?
- df:列出文件系統(tǒng)的整體磁盤(pán)使用量树肃;
- du:評(píng)估文件系統(tǒng)的磁盤(pán)使用量(常用在推估目錄所占容量)
1.1.1蒸矛、 df
df [-ahikHTm] [目錄或文件名]
選項(xiàng)與參數(shù):
- -a :列出所有的文件系統(tǒng),包括系統(tǒng)特有的 /proc 等文件系統(tǒng)胸嘴;
- -k :以 KBytes 的容量顯示各文件系統(tǒng)雏掠;
- -m :以 MBytes 的容量顯示各文件系統(tǒng);
- -h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示劣像;
- -H :以 M=1000K 取代 M=1024K 的進(jìn)位方式乡话;
- -T :連同該 partition 的 filesystem 名稱(chēng) (例如 xfs) 也列出;
- -i :不用磁盤(pán)容量耳奕,而以 inode 的數(shù)量來(lái)顯示
在 Linux 下面如果 df 沒(méi)有加任何選項(xiàng)蚊伞,那么默認(rèn)會(huì)將系統(tǒng)內(nèi)所有的,(不含特殊內(nèi)存內(nèi)的文件系統(tǒng)與 swap) 都以 1 KBytes 的容量來(lái)列出來(lái)吮铭!
所輸出的結(jié)果信息:
- Filesystem:代表該文件系統(tǒng)是在哪個(gè) partition ,所以列出設(shè)備名稱(chēng)颅停;
- 1k-blocks:說(shuō)明下面的數(shù)字單位是 1KB谓晌!可利用 -h 或 -m 來(lái)改變?nèi)萘浚?/li>
- Used:顧名思義,就是使用掉的磁盤(pán)空間癞揉;
- Available:也就是剩下的磁盤(pán)空間大兄饺狻;
- Use%:就是磁盤(pán)的使用率啦喊熟!如果使用率高達(dá) 90% 以上時(shí)柏肪, 最好需要注意一下了,免得容量不足造成系統(tǒng)問(wèn)題芥牌;
- Mounted on:就是磁盤(pán)掛載的目錄所在烦味。
范例一:將系統(tǒng)內(nèi)的所有特殊文件格式及名稱(chēng)都列出來(lái)
范例二:將 /etc 下面的可用的磁盤(pán)容量以易讀的容量格式顯示
root@master:~# df -h /etc
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-root 476G 148G 304G 33% /
范例三:將目前各個(gè) partition 當(dāng)中可用的 inode 數(shù)量列出
root@master:~# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 7.9M 419 7.9M 1% /dev
tmpfs 7.9M 861 7.9M 1% /run
/dev/mapper/ubuntu--vg-root 31M 402K 30M 2% /
tmpfs 7.9M 4 7.9M 1% /dev/shm
tmpfs 7.9M 4 7.9M 1% /run/lock
tmpfs 7.9M 16 7.9M 1% /sys/fs/cgroup
/dev/sda1 122K 310 122K 1% /boot
tmpfs 7.9M 4 7.9M 1% /run/user/0
tmpfs 7.9M 4 7.9M 1% /run/user/1000
由于 df 主要讀取的數(shù)據(jù)幾乎都是針對(duì)一整個(gè)文件系統(tǒng),因此讀取的范圍主要是在 Superblock 內(nèi)的信息壁拉, 所以這個(gè)指令顯示結(jié)果的速度非常的快速谬俄!在顯示的結(jié)果中需要特別留意的是根目錄的剩余容量! 因?yàn)樗械臄?shù)據(jù)都是由根目錄衍生出來(lái)的弃理,因此當(dāng)根目錄的剩余容量剩下 0 時(shí)溃论,那 Linux 可能就問(wèn)題很大了。
需要注意的是痘昌,如果使用 -a 這個(gè)參數(shù)時(shí)钥勋,系統(tǒng)會(huì)出現(xiàn) /proc 這個(gè)掛載點(diǎn)炬转,但是里面的東西都是 0 ,不要緊張算灸! /proc 的東西都是 Linux 系統(tǒng)所需要載入的系統(tǒng)數(shù)據(jù)扼劈,而且是掛載在“內(nèi)存當(dāng)中”的, 所以當(dāng)然沒(méi)有占任何的磁盤(pán)空間乎婿。
/dev/shm/ 目錄测僵,其實(shí)是利用內(nèi)存虛擬出來(lái)的磁盤(pán)空間,通常是總實(shí)體內(nèi)存的一半谢翎!由于是通過(guò)內(nèi)存仿真出來(lái)的磁盤(pán)捍靠,因此你在這個(gè)目錄下面創(chuàng)建任何數(shù)據(jù)文件時(shí),存取速度是非成快速的Uテ拧(在內(nèi)存內(nèi)工作) 不過(guò),也由于他是內(nèi)存仿真出來(lái)的褒侧,因此這個(gè)文件系統(tǒng)的大小在每部主機(jī)上都不一樣良风,而且創(chuàng)建的東西在下次開(kāi)機(jī)時(shí)就消失了! 因?yàn)槭窃趦?nèi)存中闷供!
1.1.2烟央、du
du [-ahskm] 文件或目錄名稱(chēng)
選項(xiàng)與參數(shù):
- -a :列出所有的文件與目錄容量,因?yàn)槟J(rèn)僅統(tǒng)計(jì)目錄下面的文件量而已歪脏;
- -h :以人們較易讀的容量格式 (G/M) 顯示疑俭;
- -s :列出總量而已,而不列出每個(gè)各別的目錄占用容量婿失;
- -S :不包括子目錄下的總計(jì)钞艇,與 -s 有點(diǎn)差別。
- -k :以 KBytes 列出容量顯示豪硅;
- -m :以 MBytes 列出容量顯示哩照。
直接輸入 du 沒(méi)有加任何選項(xiàng)時(shí),則 du 會(huì)分析“目前所在目錄”的文件與目錄所占用的磁盤(pán)空間懒浮。但是飘弧,實(shí)際顯示時(shí),僅會(huì)顯示目錄容量(不含文件),因此 . 目錄有很多文件沒(méi)有被列出來(lái),所以全部的目錄相加不會(huì)等于 . 的容量觅彰。此外自阱,輸出的數(shù)值數(shù)據(jù)為 1K 大小的容量單位。加上參數(shù) -a 則可以將文件容量也顯示出來(lái)。
范例一:檢查根目錄下面每個(gè)目錄所占用的容量
du -sm /*
16 /bin
108 /boot
... 省略 ...
du: cannot access '/proc/104399/fd/4': No such file or directory
du: cannot access '/proc/104399/fdinfo/4': No such file or directory
... 省略 ...
1692 /tmp
9607 /usr
41054 /var
這是個(gè)很常被使用的功能,利用萬(wàn)用字符 * 來(lái)代表每個(gè)目錄,如果想要檢查某個(gè)目錄下版确,哪個(gè)次目錄占用最大的容量扣囊,可以用這個(gè)方法找出來(lái)。至于 /proc 里頭會(huì)列出一堆“No such file or directory” 的錯(cuò)誤绒疗,因?yàn)槭莾?nèi)存內(nèi)的程序侵歇,程序執(zhí)行結(jié)束就會(huì)消失,因此會(huì)有些目錄找不到吓蘑,是正確的惕虑!
與 df 不一樣的是,du 這個(gè)指令其實(shí)會(huì)直接到文件系統(tǒng)內(nèi)去搜尋所有的文件數(shù)據(jù)磨镶,所以指令的運(yùn)行會(huì)執(zhí)行一小段時(shí)間溃蔫。此外,在默認(rèn)的情況下琳猫,容量的輸出是以 KB 來(lái)設(shè)計(jì)的伟叛, 如果想要知道目錄占了多少 MB ,那么就使用 -m 這個(gè)參數(shù)即可脐嫂,如果只想要知道該目錄占了多少容量的話(huà)统刮,使用 -s 就可以。
至于 -S 這個(gè)選項(xiàng)部分账千,由于 du 默認(rèn)會(huì)將所有文件的大小均列出侥蒙,因此假設(shè)在 /etc 下面使用 du 時(shí), 所有的文件大小匀奏,包括 /etc 下面的次目錄容量也會(huì)被計(jì)算一次辉哥。然后最終的容量(/etc) 也會(huì)加總一次, 因此很多朋友都會(huì)誤會(huì) du 分析的結(jié)果不太對(duì)勁攒射。如果想要列出某目錄下的全部數(shù)據(jù), 或許也可以加上 -S 的選項(xiàng)恒水,減少次目錄的加總会放。
1.2、實(shí)體鏈接與符號(hào)鏈接: ln
1.2.1钉凌、Hard Link (實(shí)體鏈接, 硬式鏈接或?qū)嶋H鏈接)
- 每個(gè)文件都會(huì)占用一個(gè) inode 咧最,文件內(nèi)容由 inode 的記錄來(lái)指向;
- 想要讀取該文件御雕,必須要經(jīng)過(guò)目錄記錄的文件名來(lái)指向到正確的 inode 號(hào)碼才能讀取矢沿。
也就是說(shuō),其實(shí)文件名只與目錄有關(guān)酸纲,但是文件內(nèi)容則與 inode 有關(guān)捣鲸。那么想一想, 有沒(méi)有可能有多個(gè)文件名對(duì)應(yīng)到同一個(gè) inode 號(hào)碼呢闽坡?有的栽惶!那就是 hard link 的由來(lái)愁溜。
簡(jiǎn)單說(shuō):hard link 只是在某個(gè)目錄下新增一筆文件名鏈接到某 inode 號(hào)碼的關(guān)連記錄而已。
如圖外厂,有個(gè) /root/crontab 是 /etc/crontab 的實(shí)體鏈接冕象,這兩個(gè)文件名鏈接到同一個(gè) inode :
使用 hard link 設(shè)置鏈接文件時(shí),磁盤(pán)的空間與 inode 的數(shù)目都不會(huì)改變汁蝶, hard link 只是在某個(gè)目錄下的 block 多寫(xiě)入一個(gè)關(guān)連數(shù)據(jù)而已渐扮,既不會(huì)增加 inode 也不會(huì)耗用 block 數(shù)量(其實(shí)還是可能會(huì)改變系統(tǒng)的 block 的,那就是當(dāng)新增這筆數(shù)據(jù)卻剛好將目錄的 block 填滿(mǎn)時(shí)掖棉,就可能會(huì)新加一個(gè) block 來(lái)記錄文件名關(guān)連性墓律,而導(dǎo)致磁盤(pán)空間的變化)。
由圖也可知啊片,事實(shí)上 hard link 應(yīng)該僅能在單一文件系統(tǒng)中進(jìn)行的只锻,應(yīng)該是不能夠跨文件系統(tǒng),所以 hard link 是有限制的:
- 不能跨 Filesystem紫谷;
- 不能 link 目錄齐饮。
因?yàn)槿绻褂?hard link 鏈接到目錄時(shí), 鏈接的數(shù)據(jù)需要連同被鏈接目錄下面的所有數(shù)據(jù)都創(chuàng)建鏈接笤昨。
1.2.2祖驱、Symbolic Link (符號(hào)鏈接,亦即是捷徑)
相對(duì)于 hard link 瞒窒, Symbolic link 可就好理解多了捺僻,基本上, Symbolic link 就是在創(chuàng)建一個(gè)獨(dú)立的文件崇裁,而這個(gè)文件會(huì)讓數(shù)據(jù)的讀取指向他 link 的那個(gè)文件的文件名匕坯!由于只是利用文件來(lái)做為指向的動(dòng)作, 所以拔稳,當(dāng)來(lái)源文件被刪除之后葛峻,symbolic link 的文件會(huì)“開(kāi)不了”, 會(huì)一直說(shuō)“無(wú)法打開(kāi)某文件巴比!”术奖。實(shí)際上就是找不到原始“文件名”而已。
如圖:
由 1 號(hào) inode 讀取到鏈接文件的內(nèi)容僅有文件名轻绞,根據(jù)文件名鏈接到正確的目錄去取得目標(biāo)文件的 inode 采记, 最終就能夠讀取到正確的數(shù)據(jù)了≌可以發(fā)現(xiàn)的是唧龄,如果目標(biāo)文件(/etc/crontab)被刪除了,那么整個(gè)環(huán)節(jié)就會(huì)無(wú)法繼續(xù)進(jìn)行下去奸远, 所以就會(huì)發(fā)生無(wú)法通過(guò)鏈接文件讀取的問(wèn)題了选侨!
這個(gè) Symbolic Link 與 Windows 的捷徑可以給他劃上等號(hào)掖鱼,由 Symbolic link 所創(chuàng)建的文件為一個(gè)獨(dú)立的新的文件,所以會(huì)占用掉 inode 與 block 援制。
1.2.3戏挡、指令
ln [-sf] 來(lái)源文件 目標(biāo)文件
選項(xiàng)與參數(shù):
- -s :如果不加任何參數(shù)就進(jìn)行鏈接,那就是hard link晨仑,至于 -s 就是symbolic link褐墅;
- -f :如果 目標(biāo)文件 存在時(shí),就主動(dòng)的將目標(biāo)文件直接移除后再創(chuàng)建洪己!
關(guān)于目錄的 link 數(shù)量:
一個(gè)“空目錄”里面至少會(huì)存在 . 與 .. 這兩個(gè)目錄妥凳。那么,當(dāng)創(chuàng)建一個(gè)新目錄名稱(chēng)為 /tmp/testing 時(shí)答捕,基本上會(huì)有三個(gè)東西逝钥,那就是:
- /tmp/testing
- /tmp/testing/.
- /tmp/testing/..
而其中 /tmp/testing 與 /tmp/testing/. 其實(shí)是一樣的!都代表該目錄拱镐,而 /tmp/testing/.. 則代表 /tmp 這個(gè)目錄艘款。所以說(shuō),當(dāng)創(chuàng)建一個(gè)新的目錄時(shí)沃琅, “新的目錄的 link 數(shù)為 2 哗咆,而上層目錄的 link 數(shù)則會(huì)增加 1。
二益眉、磁盤(pán)的分區(qū)晌柬、格式化、檢驗(yàn)與掛載
想要在系統(tǒng)里面新增一顆磁盤(pán)時(shí)郭脂,應(yīng)該有如下動(dòng)作需要做:
- 對(duì)磁盤(pán)進(jìn)行分區(qū)年碘,以創(chuàng)建可用的 partition ;
- 對(duì)該 partition 進(jìn)行格式化 (format)展鸡,以創(chuàng)建系統(tǒng)可用的 filesystem盛泡;
- 若想要仔細(xì)一點(diǎn),則可對(duì)剛剛創(chuàng)建好的 filesystem 進(jìn)行檢驗(yàn)娱颊;
- 在 Linux 系統(tǒng)上,需要?jiǎng)?chuàng)建掛載點(diǎn) (亦即是目錄)凯砍,并將他掛載上來(lái)箱硕。
2.1、觀察磁盤(pán)分區(qū)狀態(tài)
目前磁盤(pán)分區(qū)主要有 MBR 以及 GPT 兩種格式悟衩,這兩種格式所使用的分區(qū)工具不太一樣剧罩,因此分區(qū)前要去找一下目前系統(tǒng)有的磁盤(pán)有哪些, 這些磁盤(pán)是 MBR 還是 GPT 等等座泳。
2.1.1惠昔、lsblk 列出系統(tǒng)上的所有磁盤(pán)列表
lsblk 可以看成“ list block device ”的縮寫(xiě)幕与,就是列出所有儲(chǔ)存設(shè)備的意思。
lsblk [-dfimpt] [device]
選項(xiàng)與參數(shù):
- -d :僅列出磁盤(pán)本身镇防,并不會(huì)列出該磁盤(pán)的分區(qū)數(shù)據(jù)
- -f :同時(shí)列出該磁盤(pán)內(nèi)的文件系統(tǒng)名稱(chēng)
- -i :使用 ASCII 的線(xiàn)段輸出啦鸣,不要使用復(fù)雜的編碼 (再某些環(huán)境下很有用)
- -m :同時(shí)輸出該設(shè)備在 /dev 下面的權(quán)限數(shù)據(jù) (rwx 的數(shù)據(jù))
- -p :列出該設(shè)備的完整文件名!而不是僅列出最后的名字而已
- -t :列出該磁盤(pán)設(shè)備的詳細(xì)數(shù)據(jù)来氧,包括磁盤(pán)佇列機(jī)制诫给、預(yù)讀寫(xiě)的數(shù)據(jù)量大小等
范例一:列出本系統(tǒng)下的所有磁盤(pán)與磁盤(pán)內(nèi)的分區(qū)信息
root@master:/dev# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 487M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 499.5G 0 part
├─ubuntu--vg-root 252:0 0 483.5G 0 lvm /
└─ubuntu--vg-swap_1 252:1 0 16G 0 lvm [SWAP]
sr0 11:0 1 1024M 0 rom
系統(tǒng)主要有個(gè) sr0 以及一個(gè) sda 的設(shè)備,而 sda 的設(shè)備下面又有三個(gè)分區(qū)啦扬, 其中 sda5 甚至還有因?yàn)?LVM 產(chǎn)生的文件系統(tǒng)中狂。
- NAME:就是設(shè)備的文件名!會(huì)省略 /dev 等前導(dǎo)目錄扑毡;
- MAJ:MIN:其實(shí)核心認(rèn)識(shí)的設(shè)備都是通過(guò)這兩個(gè)代碼來(lái)熟悉的胃榕!分別是主要:次要設(shè)備代碼;
- RM:是否為可卸載設(shè)備 (removable device)瞄摊,如光盤(pán)勋又、USB 磁盤(pán)等等;
- SIZE:當(dāng)然就是容量泉褐;
- RO:是否為只讀設(shè)備的意思赐写;
- TYPE:是磁盤(pán) (disk)、分區(qū) (partition) 還是只讀存儲(chǔ)器 (rom) 等輸出膜赃;
- MOUTPOINT:掛載點(diǎn)挺邀!
范例二:僅列出 /dev/sda 設(shè)備內(nèi)的所有數(shù)據(jù)的完整文件名
root@master:/dev# lsblk -ip /dev/sda
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sda 8:0 0 500G 0 disk
|-/dev/sda1 8:1 0 487M 0 part /boot
|-/dev/sda2 8:2 0 1K 0 part
`-/dev/sda5 8:5 0 499.5G 0 part
|-/dev/mapper/ubuntu--vg-root 252:0 0 483.5G 0 lvm /
`-/dev/mapper/ubuntu--vg-swap_1 252:1 0 16G 0 lvm [SWAP]
2.1.2、blkid 列出設(shè)備的 UUID 等參數(shù)
lsblk 可以使用 -f 也可以來(lái)列出文件系統(tǒng)與設(shè)備的 UUID 數(shù)據(jù)跳座。
UUID 是全域單一識(shí)別碼 (universally unique identifier)端铛,Linux 會(huì)將系統(tǒng)內(nèi)所有的設(shè)備都給予一個(gè)獨(dú)一無(wú)二的識(shí)別碼, 這個(gè)識(shí)別碼就可以拿來(lái)作為掛載或者是使用這個(gè)設(shè)備/文件系統(tǒng)之用疲眷。
root@master:/dev# blkid
/dev/sda1: UUID="4ed77cbc-f446-4918-90ca-4e6b6fc7d97c" TYPE="ext2" PARTUUID="863f83f3-01"
/dev/sda5: UUID="lYIIQX-XyCX-1hpS-bLSR-yXX7-SdqL-6Swqvq" TYPE="LVM2_member" PARTUUID="863f83f3-05"
/dev/mapper/ubuntu--vg-root: UUID="4eb8d680-6565-494a-bf6e-3c15e48eda1b" TYPE="ext4"
/dev/mapper/ubuntu--vg-swap_1: UUID="b2d65ad5-9053-4315-83ae-ddba10e59f57" TYPE="swap"
每一行代表一個(gè)文件系統(tǒng)禾蚕,主要列出設(shè)備名稱(chēng)、UUID 名稱(chēng)以及文件系統(tǒng)的類(lèi)型狂丝。
2.1.3换淆、parted 列出磁盤(pán)的分區(qū)表類(lèi)型與分區(qū)信息
parted device_name print
范例一:列出 /dev/sda 磁盤(pán)的相關(guān)數(shù)據(jù)
root@master:/dev# parted /dev/sda print
Model: VMware Virtual disk (scsi) # 磁盤(pán)的模塊名稱(chēng)(廠(chǎng)商)
Disk /dev/sda: 537GB # 磁盤(pán)的總?cè)萘?Sector size (logical/physical): 512B/512B # 磁盤(pán)的每個(gè)邏輯/物理扇區(qū)容量
Partition Table: msdos # 分區(qū)表的格式 (MBR/GPT)
Disk Flags:
# 下面才是分區(qū)數(shù)據(jù)
Number Start End Size Type File system Flags
1 1049kB 512MB 511MB primary ext2 boot
2 513MB 537GB 536GB extended
5 513MB 537GB 536GB logical lvm
2.2、磁盤(pán)分區(qū): gdisk/fdisk
MBR 分區(qū)表請(qǐng)使用 fdisk 分區(qū)几颜, GPT 分區(qū)表請(qǐng)使用 gdisk 分區(qū)倍试,否則會(huì)分區(qū)失敗。
所以先通過(guò) lsblk 或 blkid 先找到磁盤(pán)蛋哭,再用 parted /dev/xxx print 來(lái)找出內(nèi)部的分區(qū)表類(lèi)型县习,之后才用 gdisk 或 fdisk 來(lái)操作系統(tǒng)。
2.2.1、gdisk
先看看 gdisk躁愿。
gdisk 設(shè)備名稱(chēng)
范例:觀察該磁盤(pán)的分區(qū)與相關(guān)數(shù)據(jù)(鳥(niǎo)哥書(shū)上的代碼叛本,我的設(shè)備是 MBR 分區(qū)表)
gdisk /dev/vda # 仔細(xì)看,不要加上數(shù)字喔彤钟!
GPT fdisk (gdisk) version 0.8.6
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT. # 找到了 GPT 的分區(qū)表来候!
Command (? for help)# 這里可以讓你輸入指令動(dòng)作,可以按問(wèn)號(hào) (?) 來(lái)查看可用指令
Command (? for help): ?
b back up GPT data to a file
c change a partition's name
d delete a partition # 刪除一個(gè)分區(qū)
i show detailed information on a partition
l list known partition types
n add a new partition # 增加一個(gè)分區(qū)
o create a new empty GUID partition table (GPT)
p print the partition table # 印出分區(qū)表 (常用)
q quit without saving changes # 不儲(chǔ)存分區(qū)就直接離開(kāi) gdisk
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit # 儲(chǔ)存分區(qū)操作后離開(kāi) gdisk
x extra functionality (experts only)
? print this menu
Command (? for help):
先來(lái)看看分區(qū)表信息样勃。
Command (? for help): p # 這里可以輸出目前磁盤(pán)的狀態(tài)
Disk /dev/vda: 83886080 sectors, 40.0 GiB # 磁盤(pán)文件名/扇區(qū)數(shù)與總?cè)萘?Logical sector size: 512 Bytes # 單一扇區(qū)大小為 512 Bytes
Disk identifier (GUID): A4C3C813-62AF-4BFE-BAC9-112EBD87A483 # 磁盤(pán)的 GPT 識(shí)別碼
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 83886046
Partitions will be aligned on 2048-sector boundaries
Total free space is 18862013 sectors (9.0 GiB)
Number Start (sector) End (sector) Size Code Name # 下面為完整的分區(qū)信息了吠勘!
1 2048 6143 2.0 MiB EF02 # 第一個(gè)分區(qū)數(shù)據(jù)
2 6144 2103295 1024.0 MiB 0700
3 2103296 65026047 30.0 GiB 8E00
# 分區(qū)編號(hào) 開(kāi)始扇區(qū)號(hào)碼 結(jié)束扇區(qū)號(hào)碼 容量大小
Command (? for help): q
# 想要不儲(chǔ)存離開(kāi)嗎?按下 q 就對(duì)了峡眶!不要隨便按 w 熬绶馈!
使用“ p ”可以列出目前這顆磁盤(pán)的分區(qū)表信息辫樱,這個(gè)信息的上半部在顯示整體磁盤(pán)的狀態(tài)峭拘。下半部的分區(qū)表信息主要在列出每個(gè)分區(qū)的個(gè)別信息項(xiàng)目。每個(gè)項(xiàng)目的意義為:
- Number:分區(qū)編號(hào)狮暑,1 號(hào)指的是 /dev/vda1 這樣計(jì)算鸡挠;
- Start (sector):每一個(gè)分區(qū)的開(kāi)始扇區(qū)號(hào)碼位置;
- End (sector):每一個(gè)分區(qū)的結(jié)束扇區(qū)號(hào)碼位置搬男,與 start 之間可以算出分區(qū)的總?cè)萘浚?/li>
- Size:就是分區(qū)的容量了拣展;
- Code:在分區(qū)內(nèi)的可能的文件系統(tǒng)類(lèi)型。Linux 為 8300缔逛,swap 為 8200备埃。不過(guò)這個(gè)項(xiàng)目只是一個(gè)提示而已,不見(jiàn)得真的代表此分區(qū)內(nèi)的文件系統(tǒng)褐奴;
- Name:文件系統(tǒng)的名稱(chēng)等等按脚。
具體新增分區(qū)的操作見(jiàn)《鳥(niǎo)哥的 Linux 私房菜》378 頁(yè)。
2.2.2敦冬、partprobe 更新 Linux 核心的分區(qū)表信息
partprobe [-s] # 可以不要加 -s 辅搬!那么屏幕不會(huì)出現(xiàn)信息脖旱!
partprobe -s # 不過(guò)還是建議加上 -s 比較清晰佳恬!
2.2.3筷频、fdisk
雖然 MBR 分區(qū)表在未來(lái)應(yīng)該會(huì)慢慢的被淘汰坯癣,畢竟現(xiàn)在磁盤(pán)容量隨便都大于 2T 以上了,不過(guò)依舊有些舊的系統(tǒng)脯倒,以及虛擬機(jī)的使用上面,還是有小磁盤(pán)存在的空間茵臭!這時(shí)處理 MBR 分區(qū)表罢低, 就得要使用 fdisk日杈。
fdisk 跟 gdisk 使用的方式幾乎一樣麦萤,只是一個(gè)使用 ? 作為指令提示數(shù)據(jù)歼疮,一個(gè)使用 m 作為提示這樣而已铸磅。此外赡矢,fdisk 有時(shí)會(huì)使用柱面 (cylinder) 作為分區(qū)的最小單位杭朱,與 gdisk 默認(rèn)使用 sector 不太一樣。
2.3吹散、磁盤(pán)格式化(創(chuàng)建文件系統(tǒng))
格式化的指令非常的簡(jiǎn)單痕檬,那就是“make filesystem, mkfs” 這個(gè)指令!這個(gè)指令其實(shí)是個(gè)綜合的指令送浊,他會(huì)去調(diào)用正確的文件系統(tǒng)格式化工具軟件!
我們常聽(tīng)到的“格式化”其實(shí)應(yīng)該稱(chēng)為“創(chuàng)建文件系統(tǒng) (make filesystem)”才對(duì)丘跌,使用的指令是 mkfs 袭景。
2.3.1、EXT4 文件系統(tǒng) mkfs.ext4
想要格式化為 ext4 的傳統(tǒng) Linux 文件系統(tǒng)的話(huà)闭树,可以使用 mkfs.ext4 這個(gè)指令耸棒。
mkfs.ext4 [-b size] [-L label] 設(shè)備名稱(chēng)
選項(xiàng)與參數(shù):
- -b :設(shè)置 block 的大小,有 1K, 2K, 4K 的容量
- -L :后面接這個(gè)設(shè)備的標(biāo)頭名稱(chēng)报辱。
范例:將 /dev/vda5 格式化為 ext4 文件系統(tǒng)
mkfs.ext4 /dev/vda5
2.3.2与殃、XFS 文件系統(tǒng) mkfs.xfs
mkfs.xfs [-b bsize] [-d parms] [-i parms] [-l parms] [-L label] [-f] \
[-r parms] 設(shè)備名稱(chēng)
選項(xiàng)與參數(shù):
- 關(guān)於單位:下面只要談到“數(shù)值”時(shí),沒(méi)有加單位則為 Bytes 值碍现,可以用 k,m,g,t,p (小寫(xiě))等來(lái)解釋?zhuān)容^特殊的是 s 這個(gè)單位幅疼,它指的是 sector 的“個(gè)數(shù)”;
- -b :后面接的是 block 容量昼接,可由 512 到 64k爽篷,不過(guò)最大容量限制為 Linux 的 4k ;
- -d :后面接的是重要的 data section 的相關(guān)參數(shù)值慢睡,主要的值有:
- agcount=數(shù)值 :設(shè)置需要幾個(gè)儲(chǔ)存群組的意思(AG)逐工,通常與 CPU 有關(guān);
- agsize=數(shù)值 :每個(gè) AG 設(shè)置為多少容量的意思漂辐,通常 agcount/agsize 只選一個(gè)設(shè)置即可泪喊;
- file :指的是“格式化的設(shè)備是個(gè)文件而不是個(gè)設(shè)備”的意思!(例如虛擬磁盤(pán));
- size=數(shù)值 :data section 的容量祠斧,亦即你可以不將全部的設(shè)備容量用完的意思锉试;
- su=數(shù)值 :當(dāng)有 RAID 時(shí),那個(gè) stripe 數(shù)值的意思瘤泪,與下面的 sw 搭配使用;
- sw=數(shù)值 :當(dāng)有 RAID 時(shí)育八,用于儲(chǔ)存數(shù)據(jù)的磁盤(pán)數(shù)量(須扣除備份碟與備用碟)对途;
- sunit=數(shù)值 :與 su 相當(dāng),不過(guò)單位使用的是“幾個(gè) sector(512Bytes大兴杵濉)”的意思实檀;
- swidth=數(shù)值 :就是 su*sw 的數(shù)值惶洲,但是以“幾個(gè) sector(512Bytes大小)”來(lái)設(shè)置
- -f :如果設(shè)備內(nèi)已經(jīng)有文件系統(tǒng)膳犹,則需要使用這個(gè) -f 來(lái)強(qiáng)制格式化才行恬吕;
- -i :與 inode 有較相關(guān)的設(shè)置,主要的設(shè)置值有:
- size=數(shù)值 :最小是 256Bytes 最大是 2k须床,一般保留 256 就足夠使用了铐料;
- internal=[0|1]:log 設(shè)備是否為內(nèi)置?默認(rèn)為 1 內(nèi)置豺旬,如果要用外部設(shè)備钠惩,使用下面設(shè)置;
- logdev=device :log 設(shè)備為后面接的那個(gè)設(shè)備上頭的意思族阅,需設(shè)置 internal=0 才可篓跛;
- size=數(shù)值 :指定這塊登錄區(qū)的容量,通常最小得要有 512 個(gè) block坦刀,大約 2M 以上才行愧沟!
- -L :后面接這個(gè)文件系統(tǒng)的標(biāo)頭名稱(chēng) Label name 的意思;
- -r :指定 realtime section 的相關(guān)設(shè)置值鲤遥,常見(jiàn)的有:
- extsize=數(shù)值 :就是那個(gè)重要的 extent 數(shù)值沐寺,一般不須設(shè)置,但有 RAID 時(shí)盖奈,最好設(shè)置與 swidth 的數(shù)值相同較佳芽丹!最小為 4K 最大為 1G 。
2.3.3卜朗、其他文件系統(tǒng) mkfs
mkfs 其實(shí)是個(gè)綜合指令而已拔第,當(dāng)使用 mkfs -t xfs 時(shí),它就會(huì)跑去找 mkfs.xfs 相關(guān)的參數(shù)场钉,如果想要知道系統(tǒng)還支持哪種文件系統(tǒng)的格式化功能蚊俺,直接按 [tabl] 就很清楚。
mkfs[tab][tab]
mkfs mkfs.bfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev mkfs.fat mkfs.minix mkfs.msdos mkfs.ntfs mkfs.vfat mkfs.xfs
2.4逛万、文件系統(tǒng)檢驗(yàn)
文件系統(tǒng)運(yùn)行時(shí)會(huì)有磁盤(pán)與內(nèi)存數(shù)據(jù)非同步的狀況發(fā)生泳猬,因此莫名其妙的死機(jī)非常可能導(dǎo)致文件系統(tǒng)的錯(cuò)亂宇植。
2.4.1得封、xfs_repair 處理 XFS 文件系統(tǒng)
xfs_repair [-fnd] 設(shè)備名稱(chēng)
選項(xiàng)與參數(shù):
- -f :后面的設(shè)備其實(shí)是個(gè)文件而不是實(shí)體設(shè)備
- -n :?jiǎn)渭儥z查并不修改文件系統(tǒng)的任何數(shù)據(jù) (檢查而已)
- -d :通常用在單人維護(hù)模式下面,針對(duì)根目錄 (/) 進(jìn)行檢查與修復(fù)的動(dòng)作指郁!很危險(xiǎn)忙上!不要隨便使用
范例一:檢查一下剛剛創(chuàng)建的 /dev/vda4 文件系統(tǒng)
[root@study ~]# xfs_repair /dev/vda4
Phase 1 - find and verify superblock...
Phase 2 - using internal log
Phase 3 - for each AG...
Phase 4 - check for duplicate blocks...
Phase 5 - rebuild AG headers and trees...
Phase 6 - check inode connectivity...
Phase 7 - verify and correct link counts...
done
# 共有 7 個(gè)重要的檢查流程!詳細(xì)的流程介紹可以 man xfs_repair 即可闲坎!
范例二:檢查一下系統(tǒng)原本就有的 /dev/centos/home 文件系統(tǒng)
[root@study ~]# xfs_repair /dev/centos/home
xfs_repair: /dev/centos/home contains a mounted filesystem
xfs_repair: /dev/centos/home contains a mounted and writable filesystem
fatal error -- couldn't initialize XFS library
xfs_repair 可以檢查/修復(fù)文件系統(tǒng)疫粥,不過(guò)茬斧,因?yàn)樾迯?fù)文件系統(tǒng)是個(gè)很龐大的任務(wù)!因此梗逮,修復(fù)時(shí)該文件系統(tǒng)不能被掛載项秉! 所以,檢查與修復(fù) /dev/vda4 沒(méi)啥問(wèn)題慷彤,但是修復(fù)/dev/centos/home 這個(gè)已經(jīng)掛載的文件系統(tǒng)時(shí)娄蔼,就出現(xiàn)上述的問(wèn)題了! 沒(méi)關(guān)系底哗,若可以卸載贷屎,卸載后再處理即可。
Linux 系統(tǒng)有個(gè)設(shè)備無(wú)法被卸載艘虎,那就是根目錄!如果你的根目錄有問(wèn)題怎辦咒吐?這時(shí)得要進(jìn)入單人維護(hù)或救援模式野建,然后通過(guò) -d 這個(gè)選項(xiàng)來(lái)處理! 加入 -d 這個(gè)選項(xiàng)后恬叹,系統(tǒng)會(huì)強(qiáng)制檢驗(yàn)該設(shè)備候生,檢驗(yàn)完畢后就會(huì)自動(dòng)重新開(kāi)機(jī)!
2.4.2绽昼、fsck.ext4 處理 EXT4 文件系統(tǒng)
fsck 是個(gè)綜合指令唯鸭,如果是針對(duì) ext4 的話(huà),建議直接使用 fsck.ext4 來(lái)檢測(cè)比較妥當(dāng)硅确。
fsck.ext4 [-pf] [-b superblock] 設(shè)備名稱(chēng)
選項(xiàng)與參數(shù):
- -p :當(dāng)文件系統(tǒng)在修復(fù)時(shí)目溉,若有需要回復(fù) y 的動(dòng)作時(shí),自動(dòng)回復(fù) y 來(lái)繼續(xù)進(jìn)行修復(fù)動(dòng)作菱农;
- -f :強(qiáng)制檢查缭付!一般來(lái)說(shuō),如果 fsck 沒(méi)有發(fā)現(xiàn)任何 unclean 的旗標(biāo)循未,不會(huì)主動(dòng)進(jìn)入細(xì)部檢查的陷猫,如果您想要強(qiáng)制 fsck 進(jìn)入細(xì)部檢查,就得加上 -f 旗標(biāo)的妖;
- -D :針對(duì)文件系統(tǒng)下的目錄進(jìn)行最優(yōu)化配置绣檬;
- -b :后面接 superblock 的位置!一般來(lái)說(shuō)這個(gè)選項(xiàng)用不到嫂粟。但是如果 superblock 因故損毀時(shí)娇未,通過(guò)這個(gè)參數(shù)即可利用文件系統(tǒng)內(nèi)備份的 superblock 來(lái)嘗試救援。一般來(lái)說(shuō)星虹,superblock 備份在:1K block 放在 8193, 2K block 放在 16384, 4K block 放在 32768忘蟹。
2.5飒房、文件系統(tǒng)掛載與卸載
進(jìn)行掛載前,最好先確定幾件事:
- 單一文件系統(tǒng)不應(yīng)該被重復(fù)掛載在不同的掛載點(diǎn)(目錄)中媚值;
- 單一目錄不應(yīng)該重復(fù)掛載多個(gè)文件系統(tǒng)狠毯;
- 要作為掛載點(diǎn)的目錄,理論上應(yīng)該都是空目錄才是褥芒。
[root@study ~]# mount -a
[root@study ~]# mount [-l]
[root@study ~]# mount [-t 文件系統(tǒng)] LABEL='' 掛載點(diǎn)
[root@study ~]# mount [-t 文件系統(tǒng)] UUID='' 掛載點(diǎn) # 鳥(niǎo)哥近期建議用這種方式嚼松!
[root@study ~]# mount [-t 文件系統(tǒng)] 設(shè)備文件名 掛載點(diǎn)
選項(xiàng)與參數(shù):
-a :依照配置文件 /etc/fstab 的數(shù)據(jù)將所有未掛載的磁盤(pán)都掛載上來(lái);
-l :?jiǎn)渭兊妮斎?mount 會(huì)顯示目前掛載的信息锰扶。加上 -l 可增列 Label 名稱(chēng)献酗;
-t :可以加上文件系統(tǒng)種類(lèi)來(lái)指定欲掛載的類(lèi)型。常見(jiàn)的 Linux 支持類(lèi)型有:xfs, ext3, ext4,reiserfs, vfat, iso9660(光盤(pán)格式), nfs, cifs, smbfs (后三種為網(wǎng)絡(luò)文件系統(tǒng)類(lèi)型)坷牛;
-n :在默認(rèn)的情況下罕偎,系統(tǒng)會(huì)將實(shí)際掛載的情況實(shí)時(shí)寫(xiě)入 /etc/mtab 中,以利其他程序的運(yùn)行京闰,但在某些情況下(例如單人維護(hù)模式)為了避免問(wèn)題會(huì)刻意不寫(xiě)入颜及。此時(shí)就得要使用 -n 選項(xiàng);
-
-o :后面可以接一些掛載時(shí)額外加上的參數(shù)蹂楣!比方說(shuō)帳號(hào)俏站、密碼、讀寫(xiě)權(quán)限等:
- async, sync: 此文件系統(tǒng)是否使用同步寫(xiě)入 (sync) 或非同步 (async) 的內(nèi)存機(jī)制默認(rèn)為 async痊土;
- atime,noatime: 是否修訂文件的讀取時(shí)間(atime)肄扎。為了性能,某些時(shí)刻可使用 noatime赁酝;
- ro, rw: 掛載文件系統(tǒng)成為只讀(ro) 或可讀寫(xiě)(rw)
- auto, noauto: 允許此 filesystem 被以 mount -a 自動(dòng)掛載(auto)犯祠;
- dev, nodev: 是否允許此 filesystem 上,可創(chuàng)建設(shè)備文件酌呆? dev 為可允許雷则;
- suid, nosuid: 是否允許此 filesystem 含有 suid/sgid 的文件格式?
- exec, noexec: 是否允許此 filesystem 上擁有可執(zhí)行 binary 文件肪笋?
- user, nouser: 是否允許此 filesystem 讓任何使用者執(zhí)行 mount 月劈?一般來(lái)說(shuō),mount 僅有 root 可以進(jìn)行藤乙,但下達(dá) user 參數(shù)猜揪,則可讓一般 user 也能夠?qū)Υ?partition 進(jìn)行 mount ;
- defaults: 默認(rèn)值為:rw, suid, dev, exec, auto, nouser, and async坛梁;
- remount: 重新掛載而姐,這在系統(tǒng)出錯(cuò),或重新更新參數(shù)時(shí)划咐,很有用拴念!
2.5.1钧萍、掛載 xfs/ext4/vfat 等文件系統(tǒng)
范例一:找出 /dev/vda4 的 UUID 后,用該 UUID 來(lái)掛載文件系統(tǒng)到 /data/xfs 內(nèi)
[root@study ~]# blkid /dev/vda4
/dev/vda4: UUID="e0a6af55-26e7-4cb7-a515-826a8bd29e90" TYPE="xfs"
[root@study ~]# mount UUID="e0a6af55-26e7-4cb7-a515-826a8bd29e90" /data/xfs
mount: mount point /data/xfs does not exist # 非正規(guī)目錄政鼠!所以手動(dòng)創(chuàng)建它风瘦!
[root@study ~]# mkdir -p /data/xfs
[root@study ~]# mount UUID="e0a6af55-26e7-4cb7-a515-826a8bd29e90" /data/xfs
[root@study ~]# df /data/xfs
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda4 1038336 32864 1005472 4% /data/xfs
范例二:使用相同的方式,將 /dev/vda5 掛載于 /data/ext4
[root@study ~]# blkid /dev/vda5
/dev/vda5: UUID="899b755b-1da4-4d1d-9b1c-f762adb798e1" TYPE="ext4"
[root@study ~]# mkdir /data/ext4
[root@study ~]# mount UUID="899b755b-1da4-4d1d-9b1c-f762adb798e1" /data/ext4
[root@study ~]# df /data/ext4
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda5 999320 2564 927944 1% /data/ext4
2.5.2公般、重新掛載根目錄與掛載不特定目錄
整個(gè)目錄樹(shù)最重要的地方就是根目錄了万搔,所以根目錄根本就不能夠被卸載的。如果掛載參數(shù)要改變官帘, 或者是根目錄出現(xiàn)“只讀”狀態(tài)時(shí)瞬雹,如何重新掛載呢?最可能的處理方式就是重新開(kāi)機(jī) (reboot)刽虹!
不過(guò)也可以這樣做:
范例:將 / 重新掛載酗捌,并加入?yún)?shù)為 rw 與 auto
[root@study ~]# mount -o remount,rw,auto /
另外,也可以利用 mount 來(lái)將某個(gè)目錄掛載到另外一個(gè)目錄去涌哲!這并不是掛載文件系統(tǒng)胖缤,而是額外掛載某個(gè)目錄的方法! 雖然下面的方法也可以使用 symbolic link 來(lái)鏈接膛虫,不過(guò)在某些不支持符號(hào)鏈接的程序運(yùn)行中,還是得要通過(guò)這樣的方法才行钓猬。
范例:將 /var 這個(gè)目錄暫時(shí)掛載到 /data/var 下面
[root@study ~]# mkdir /data/var
[root@study ~]# mount --bind /var /data/var
[root@study ~]# ls -lid /var /data/var
16777346 drwxr-xr-x. 22 root root 4096 Jun 15 23:43 /data/var
16777346 drwxr-xr-x. 22 root root 4096 Jun 15 23:43 /var
# 內(nèi)容完全一模一樣吧缘丁!因?yàn)閽燧d目錄的緣故敞曹!
2.6账月、umount (將設(shè)備文件卸載)
umount [-fn] 設(shè)備文件名或掛載點(diǎn)
選項(xiàng)與參數(shù):
- -f :強(qiáng)制卸載!可用在類(lèi)似網(wǎng)絡(luò)文件系統(tǒng) (NFS) 無(wú)法讀取到的情況下澳迫;
- -l :立刻卸載文件系統(tǒng)局齿,比 -f 還強(qiáng);
- -n :不更新 /etc/mtab 情況下卸載橄登。
三抓歼、設(shè)置開(kāi)機(jī)掛載
但是掛載是臨時(shí)的,系統(tǒng)重啟后需要重新掛載拢锹,如果希望下次啟動(dòng)時(shí)谣妻,自動(dòng)掛載,需要按照下述操作卒稳。
3.1蹋半、開(kāi)機(jī)掛載 /etc/fstab 及 /etc/mtab
先查閱一下 /etc/fstab 這個(gè)文件的內(nèi)容。
[root@study ~]# cat /etc/fstab
Device Mount point filesystem parameters dump fsck
/dev/mapper/centos-root / xfs defaults 0 0
UUID=94ac5f77-cb8a-495e-a65b-2ef7442b837c /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/etc/fstab (filesystem table) 就是將利用 mount 指令進(jìn)行掛載時(shí)充坑, 將所有的選項(xiàng)與參數(shù)寫(xiě)入到這個(gè)文件中减江。除此之外染突, /etc/fstab 還加入了 dump 這個(gè)備份用指令的支持! 與開(kāi)機(jī)時(shí)是否進(jìn)行文件系統(tǒng)檢驗(yàn) fsck 等指令有關(guān)辈灼。
這個(gè)文件的內(nèi)容共有六個(gè)字段份企,各個(gè)字段的總結(jié)數(shù)據(jù)與詳細(xì)數(shù)據(jù)如下:
[設(shè)備/UUID等] [掛載點(diǎn)] [文件系統(tǒng)] [文件系統(tǒng)參數(shù)] [dump] [fsck]
第一欄:磁盤(pán)設(shè)備文件名/UUID/LABEL name:
這個(gè)字段可以填寫(xiě)的數(shù)據(jù)主要有三個(gè)項(xiàng)目:
- 文件系統(tǒng)或磁盤(pán)的設(shè)備文件名,如 /dev/vda2 等
- 文件系統(tǒng)的 UUID 名稱(chēng)茵休,如 UUID=xxx
- 文件系統(tǒng)的 LABEL 名稱(chēng)薪棒,例如 LABEL=xxx
第二欄:掛載點(diǎn) (mount point):
就是掛載的目錄。
第三欄:磁盤(pán)分區(qū)的文件系統(tǒng):
在手動(dòng)掛載時(shí)可以讓系統(tǒng)自動(dòng)測(cè)試掛載榕莺,但在這個(gè)文件當(dāng)中我們必須要手動(dòng)寫(xiě)入文件系統(tǒng)才行俐芯! 包括 xfs, ext4, vfat, reiserfs, nfs 等等。
第四欄:文件系統(tǒng)參數(shù):
參數(shù) | 內(nèi)容意義 |
---|---|
async/sync | 設(shè)置磁盤(pán)是否以非同步方式運(yùn)行钉鸯!默認(rèn)為 async(性能較佳) |
auto/noauto | 當(dāng)下達(dá) mount -a 時(shí)吧史,此文件系統(tǒng)是否會(huì)被主動(dòng)測(cè)試掛載。默認(rèn)為 auto唠雕。 |
rw/ro | 讓該分區(qū)以可讀寫(xiě)或者是只讀的型態(tài)掛載上來(lái)贸营,如果你想要分享的數(shù)據(jù) 是不給使用者隨意變更的, 這里也能夠設(shè)置為只讀岩睁。則不論在此文件系 統(tǒng)的文件是否設(shè)置 w 權(quán)限钞脂,都無(wú)法寫(xiě)入! |
exec/noexec | 限制在此文件系統(tǒng)內(nèi)是否可以進(jìn)行“執(zhí)行”的工作捕儒?如果是純粹用來(lái)儲(chǔ)存數(shù) 據(jù)的目錄冰啃, 那么可以設(shè)置為 noexec 會(huì)比較安全。不過(guò)刘莹,這個(gè)參數(shù)也不 能隨便使用阎毅,因?yàn)槟悴恢涝撃夸浵率欠衲J(rèn)會(huì)有可執(zhí)行文件。舉例來(lái) 說(shuō)点弯,如果你將 noexec 設(shè)置在 /var 扇调,當(dāng)某些軟件將一些可執(zhí)行文件放置 于 /var 下時(shí),那就會(huì)產(chǎn)生很大的問(wèn)題抢肛! 因此狼钮,建議這個(gè) noexec 最多 僅設(shè)置于你自訂或分享的一般數(shù)據(jù)目錄。 |
user/nouser | 是否允許使用者使用 mount指令來(lái)掛載呢捡絮?一般而言燃领,我們當(dāng)然不希望 一般身份的 user 能使用 mount 啰,因?yàn)樘话踩私踉虼诉@里應(yīng)該要設(shè) 置為 nouser猛蔽! |
suid/nosuid | 該文件系統(tǒng)是否允許 SUID 的存在?如果不是可執(zhí)行文件放置目錄,也 可以設(shè)置為 nosuid 來(lái)取消這個(gè)功能曼库! |
defaults | 同時(shí)具有 rw, suid, dev, exec, auto, nouser, async 等參數(shù)区岗。 基本上, 默認(rèn)情況使用 defaults 設(shè)置即可毁枯! |
第五欄:能否被 dump 備份指令作用:
dump 是一個(gè)用來(lái)做為備份的指令慈缔,不過(guò)現(xiàn)在有太多的備份方案了,所以這個(gè)項(xiàng)目可以不要理會(huì)种玛!直接輸入 0 就好了藐鹤!
第六欄:是否以 fsck 檢驗(yàn)扇區(qū):
早期開(kāi)機(jī)的流程中,會(huì)有一段時(shí)間去檢驗(yàn)本機(jī)的文件系統(tǒng)赂韵,看看文件系統(tǒng)是否完整
(clean)娱节。 不過(guò)這個(gè)方式使用的主要是通過(guò) fsck 去做的,我們現(xiàn)在用的 xfs 文件系統(tǒng)就沒(méi)有辦法適用祭示,因?yàn)?xfs 會(huì)自己進(jìn)行檢驗(yàn)肄满,不需要額外進(jìn)行這個(gè)動(dòng)作!所以直接填 0 就好了质涛。
例題:假設(shè)我們要將 /dev/vda4 每次開(kāi)機(jī)都自動(dòng)掛載到 /data/xfs 稠歉,該如何進(jìn)行?
# 首先汇陆,請(qǐng)用 nano 將下面這一行寫(xiě)入 /etc/fstab 最后面中怒炸;
[root@study ~]# nano /etc/fstab
UUID="e0fa7252-b374-4a06-987a-3cb14f415488" /data/xfs xfs defaults 0 0
# 再來(lái)看看 /dev/vda4 是否已經(jīng)掛載,如果掛載了毡代,請(qǐng)務(wù)必卸載再說(shuō)阅羹!
[root@study ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda4 1038336 32864 1005472 4% /data/xfs
# 竟然不知道何時(shí)被掛載了?趕緊給他卸載先月趟!
# **因?yàn)榈坪绻粧燧d的文件系統(tǒng)已經(jīng)被掛載了(無(wú)論掛載在哪個(gè)目錄)恢口,那測(cè)試就不會(huì)進(jìn)行喔孝宗!**
[root@study ~]# umount /dev/vda4
# 最后測(cè)試一下剛剛我們寫(xiě)入 /etc/fstab 的語(yǔ)法有沒(méi)有錯(cuò)誤!這點(diǎn)很重要耕肩!因?yàn)檫@個(gè)文件如果寫(xiě)錯(cuò)了因妇, 則你的 Linux 很可能將無(wú)法順利開(kāi)機(jī)完成!所以請(qǐng)務(wù)必要測(cè)試測(cè)試猿诸!
[root@study ~]# mount -a
[root@study ~]# df /data/xfs
最終有看到 /dev/vda4 被掛載起來(lái)的信息才是成功的掛載了婚被!而且以后每次開(kāi)機(jī)都會(huì)順利的將此文件系統(tǒng)掛載起來(lái)的!
3.2梳虽、特殊設(shè)備 loop 掛載
如果有光盤(pán)鏡像文件址芯,或者是使用文件作為磁盤(pán)的方式時(shí),那就得要使用特別的方法來(lái)將他掛載起來(lái),不需要燒錄谷炸!
3.2.1北专、掛載光盤(pán)/DVD鏡像文件
如果下載了 Linux 或者是其他所需光盤(pán)/DVD的鏡像文件后, 難道一定需要燒錄成為光盤(pán)才能夠使用該文件里面的數(shù)據(jù)嗎旬陡?當(dāng)然不是拓颓!我們可以通過(guò) loop 設(shè)備來(lái)掛
載的!
ll -h /tmp/CentOS-7.0-1406-x86_64-DVD.iso
-rw-r--r--. 1 root root 3.9G Jul 7 2014 /tmp/CentOS-7.0-1406-x86_64-DVD.iso
# 看到上面的結(jié)果吧描孟!這個(gè)文件就是鏡像文件驶睦,文件非常的大吧!
[root@study ~]# mkdir /data/centos_dvd
[root@study ~]# mount -o loop /tmp/CentOS-7.0-1406-x86_64-DVD.iso /data/centos_dvd
[root@study ~]# df /data/centos_dvd
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/loop0 4050860 4050860 0 100% /data/centos_dvd
# 就是這個(gè)項(xiàng)目匿醒! .iso 鏡像文件內(nèi)的所有數(shù)據(jù)可以在 /data/centos_dvd 看到场航!
[root@study ~]# ll /data/centos_dvd
total 607
-rw-r--r--. 1 500 502 14 Jul 5 2014 CentOS_BuildTag <==瞧!就是DVD的內(nèi)容扒嗯住旗闽!
drwxr-xr-x. 3 500 502 2048 Jul 4 2014 EFI
-rw-r--r--. 1 500 502 611 Jul 5 2014 EULA
-rw-r--r--. 1 500 502 18009 Jul 5 2014 GPL
drwxr-xr-x. 3 500 502 2048 Jul 4 2014 images
.....(下面省略).....
[root@study ~]# umount /data/centos_dvd/
# 測(cè)試完成!記得將數(shù)據(jù)給他卸載蜜另!同時(shí)這個(gè)鏡像文件也被鳥(niǎo)哥刪除了...測(cè)試機(jī)容量不夠大适室!
四、內(nèi)存交換空間(swap)之創(chuàng)建
以前的年代因?yàn)閮?nèi)存不足举瑰,因此那個(gè)可以暫時(shí)將內(nèi)存的程序拿到硬盤(pán)中暫放的內(nèi)存交換空間(swap) 就顯的非常的重要捣辆! 否則饱狂,如果突然間某支程序用掉你大部分的內(nèi)存率触,那你的系統(tǒng)恐怕有損毀的情況發(fā)生。
一般來(lái)說(shuō)房资,如果硬件的配備資源足夠的話(huà)耸序,那么 swap 應(yīng)該不會(huì)被系統(tǒng)所使用到忍些,swap 會(huì)被利用到的時(shí)刻通常就是實(shí)體內(nèi)存不足的情況了。 CPU 所讀取的數(shù)據(jù)都來(lái)自于內(nèi)存坎怪, 那當(dāng)內(nèi)存不足的時(shí)候罢坝,為了讓后續(xù)的程序可以順利的運(yùn)行,因此在內(nèi)存中暫不使用的程序與數(shù)據(jù)就會(huì)被挪到 swap 中了搅窿。 此時(shí)內(nèi)存就會(huì)空出來(lái)給需要執(zhí)行的程序載入嘁酿。由于 swap 是用磁盤(pán)來(lái)暫時(shí)放置內(nèi)存中的信息,所以用到 swap 時(shí)男应,主機(jī)磁盤(pán)燈就會(huì)開(kāi)始閃個(gè)不停闹司!
4.1、使用實(shí)體分區(qū)創(chuàng)建swap
創(chuàng)建 swap 分區(qū)的方式也是非常的簡(jiǎn)單的沐飘!通過(guò)下面幾個(gè)步驟就搞定:
- 分區(qū):先使用 gdisk 在磁盤(pán)中分區(qū)出一個(gè)分區(qū)給系統(tǒng)作為 swap 游桩。由于 Linux 的 gdisk 默認(rèn)會(huì)將分區(qū)的 ID 設(shè)置為 Linux 的文件系統(tǒng)牲迫,所以可能還得要設(shè)置一下 system ID。
- 格式化:利用創(chuàng)建 swap 格式的“mkswap 設(shè)備文件名”就能夠格式化該分區(qū)成為 swap 格式借卧。
- 使用:最后將該 swap 設(shè)備啟動(dòng)恩溅,方法為:“swapon 設(shè)備文件名”。
- 觀察:最終通過(guò) free 與 swapon -s 這個(gè)指令來(lái)觀察一下內(nèi)存的用量吧谓娃!
具體操作:
- 先進(jìn)行分區(qū)的行為
[root@study ~]# gdisk /dev/vda
Command (? for help): n
Partition number (6-128, default 6):
First sector (34-83886046, default = 69220352) or {+-}size{KMGTP}:
Last sector (69220352-83886046, default = 83886046) or {+-}size{KMGTP}: +512M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux swap'
Command (? for help): p
Number Start (sector) End (sector) Size Code Name
6 69220352 70268927 512.0 MiB 8200 Linux swap # 重點(diǎn)就是產(chǎn)生這東西脚乡!
Command (? for help): w
Do you want to proceed? (Y/N): y
[root@study ~]# partprobe
[root@study ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 40G 0 disk
.....(中間省略).....
`-vda6 252:6 0 512M 0 part # 確定這里是存在的才行!
# 鳥(niǎo)哥有簡(jiǎn)化輸出喔滨达!結(jié)果可以看到我們多了一個(gè) /dev/vda6 可以使用于 swap 喔奶稠!
- 開(kāi)始創(chuàng)建 swap 格式
[root@study ~]# mkswap /dev/vda6
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=6b17e4ab-9bf9-43d6-88a0-73ab47855f9d
[root@study ~]# blkid /dev/vda6
/dev/vda6: UUID="6b17e4ab-9bf9-43d6-88a0-73ab47855f9d" TYPE="swap"
# 確定格式化成功!且使用 blkid 確實(shí)可以抓到這個(gè)設(shè)備了喔
- 開(kāi)始觀察與載入看看
[root@study ~]# free
total used free shared buff/cache available
Mem: 1275140 227244 330124 7804 717772 875536 # 實(shí)體內(nèi)存
Swap: 1048572 101340 947232 # swap 相關(guān)
# 我有 1275140K 的實(shí)體內(nèi)存捡遍,使用 227244K 剩余 330124K 锌订,使用掉的內(nèi)存有 717772K 用在緩沖/高速緩存的用途中。至于 swap 已經(jīng)有 1048572K 画株!這樣會(huì)看了吧辆飘?!
[root@study ~]# swapon /dev/vda6
[root@study ~]# free
total used free shared buff/cache available
Mem: 1275140 227940 329256 7804 717944 874752
Swap: 1572856 101260 1471596 <==有看到增加了沒(méi)谓传?
[root@study ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 101260 -1
/dev/vda6 partition 524284 0 -2
# 上面列出目前使用的 swap 設(shè)備有哪些的意思蜈项!
[root@study ~]# nano /etc/fstab
UUID="6b17e4ab-9bf9-43d6-88a0-73ab47855f9d" swap swap defaults 0 0
# 當(dāng)然要寫(xiě)入配置文件,只不過(guò)不是文件系統(tǒng)续挟,所以沒(méi)有掛載點(diǎn)紧卒!第二個(gè)字段寫(xiě)入 swap 即可。
4.2诗祸、使用文件創(chuàng)建swap
如果是在實(shí)體分區(qū)無(wú)法支持的環(huán)境下跑芳,此時(shí)前一小節(jié)提到的 loop 設(shè)備創(chuàng)建方法就派的上用場(chǎng),與實(shí)體分區(qū)不一樣的直颅,這個(gè)方法只是利用 dd 去創(chuàng)建一個(gè)大文件而已博个。
- 使用 dd 這個(gè)指令來(lái)新增一個(gè) 128MB 的文件在 /tmp 下面:
[root@study ~]# dd if=/dev/zero of=/tmp/swap bs=1M count=128
128+0 records in
128+0 records out
134217728 Bytes (134 MB) copied, 1.7066 seconds, 78.6 MB/s
[root@study ~]# ll -h /tmp/swap
-rw-r--r--. 1 root root 128M Jun 26 17:47 /tmp/swap
# 這個(gè)指令的簡(jiǎn)單意義如下:
# if 是 input file ,輸入文件功偿。那個(gè) /dev/zero 是會(huì)一直輸出 0 的設(shè)備盆佣!
# of 是 output file ,將一堆零寫(xiě)入到后面接的文件中脖含。
# bs 是每個(gè) block 大小罪塔,就像文件系統(tǒng)那樣的 block 意義投蝉;
# count 則是總共幾個(gè) bs 的意思养葵。所以 bs*count 就是這個(gè)文件的容量了!
- 使用 mkswap 將 /tmp/swap 這個(gè)文件格式化為 swap 的文件格式:
[root@study ~]# mkswap /tmp/swap
Setting up swapspace version 1, size = 131068 KiB
no label, UUID=4746c8ce-3f73-4f83-b883-33b12fa7337c
# 這個(gè)指令下達(dá)時(shí)請(qǐng)“特別小心”瘩缆,因?yàn)橄洛e(cuò)字符控制关拒,將可能使您的文件系統(tǒng)掛掉!
- 使用 swapon 來(lái)將 /tmp/swap 啟動(dòng):
[root@study ~]# swapon /tmp/swap
[root@study ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 100380 -1
/dev/vda6 partition 524284 0 -2
/tmp/swap file 131068 0 -3
- 使用 swapoff 關(guān)掉 swap file,并設(shè)置自動(dòng)啟用:
[root@study ~]# nano /etc/fstab
/tmp/swap swap swap defaults 0 0
# 為何這里不要使用 UUID 呢着绊?這是因?yàn)橄到y(tǒng)僅會(huì)查詢(xún)區(qū)塊設(shè)備 (block device) 不會(huì)查詢(xún)文件谐算!
# 所以,這里千萬(wàn)不要使用 UUID归露,不然系統(tǒng)會(huì)查不到喔洲脂!
[root@study ~]# swapoff /tmp/swap /dev/vda6
[root@study ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 100380 -1
# 確定已經(jīng)回復(fù)到原本的狀態(tài)了!然后準(zhǔn)備來(lái)測(cè)試>绨恐锦!
[root@study ~]# swapon -a
[root@study ~]# swapon -s
# 最終你又會(huì)看正確的三個(gè) swap 出現(xiàn)啰!這也才確定你的 /etc/fstab 設(shè)置無(wú)誤疆液!
swap 在目前的桌面電腦來(lái)講一铅,存在的意義已經(jīng)不大了!這是因?yàn)槟壳暗?x86 主機(jī)所含的內(nèi)存實(shí)在都太大了 (一般入門(mén)級(jí)至少也都有 4GB 了)堕油,所以潘飘, Linux 系統(tǒng)大概都用不到 swap 這個(gè)玩意兒的。不過(guò)掉缺, 如果是針對(duì)服務(wù)器或者是工作站這些常年上線(xiàn)的系統(tǒng)來(lái)說(shuō)的話(huà)卜录,那么,無(wú)論如何眶明,swap 還是需要?jiǎng)?chuàng)建的暴凑。
五、補(bǔ)充
5.1赘来、利用 GNU 的 parted 進(jìn)行分區(qū)行為(Optional)
gdisk/fdisk 很快速的將分區(qū)切割妥當(dāng)现喳,不過(guò) gdisk 主要針對(duì) GPT 而 fdisk 主要支持 MBR ,對(duì) GPT 的支持還不夠犬辰! 所以使用不同的分區(qū)時(shí)嗦篱,得要先查詢(xún)到正確的分區(qū)表才能用適合的指令,好麻煩幌缝!有沒(méi)有同時(shí)支持的指令呢灸促?有的!那就是 parted涵卵。
parted 可以直接在一行命令行就完成分區(qū)浴栽,是一個(gè)非常好用的指令!它常用的語(yǔ)法如下:
parted [設(shè)備] [指令 [參數(shù)]]
選項(xiàng)與參數(shù):
指令功能:
- 新增分區(qū):mkpart [primary|logical|extended] [ext4|vfat|xfs] 開(kāi)始 結(jié)束
- 顯示分區(qū):print
- 刪除分區(qū):rm [partition]
范例一:以 parted 列出目前本機(jī)的分區(qū)表數(shù)據(jù)
[root@study ~]# parted /dev/vda print
Model: Virtio Block Device (virtblk) <==磁盤(pán)接口與型號(hào)
Disk /dev/vda: 42.9GB <==磁盤(pán)文件名與容量
Sector size (logical/physical): 512B/512B <==每個(gè)扇區(qū)的大小
Partition Table: gpt <==是 GPT 還是 MBR 分區(qū)
Disk Flags: pmbr_boot
Number Start End Size File system Name Flags
1 1049kB 3146kB 2097kB bios_grub
2 3146kB 1077MB 1074MB xfs
3 1077MB 33.3GB 32.2GB lvm
4 33.3GB 34.4GB 1074MB xfs Linux filesystem
5 34.4GB 35.4GB 1074MB ext4 Microsoft basic data
6 35.4GB 36.0GB 537MB linux-swap(v1) Linux swap
[ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
- Number:這個(gè)就是分區(qū)的號(hào)碼轿偎!舉例來(lái)說(shuō)典鸡,1號(hào)代表的是 /dev/vda1 的意思;
- Start:分區(qū)的起始位置在這顆磁盤(pán)的多少 MB 處坏晦,他以容量作為單位;
- End:此分區(qū)的結(jié)束位置在這顆磁盤(pán)的多少 MB 處萝玷;
- Size:由上述兩者的分析嫁乘,得到這個(gè)分區(qū)有多少容量;
- File system:分析可能的文件系統(tǒng)類(lèi)型為何的意思球碉;
- Name:就如同 gdisk 的 System ID 之意蜓斧。
范例二:將 /dev/sda 這個(gè)原本的 MBR 分區(qū)表變成 GPT 分區(qū)表!(危險(xiǎn)睁冬!危險(xiǎn)挎春!勿亂搞!無(wú)法復(fù)原6共Α)
[root@study ~]# parted /dev/sda print
Model: ATA QEMU HARDDISK (scsi)
Disk /dev/sda: 2148MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos # 確實(shí)顯示的是 MBR 的 msdos 格式喔搂蜓!
[root@study ~]# parted /dev/sda mklabel gpt
Warning: The existing disk label on /dev/sda will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? y
[root@study ~]# parted /dev/sda print
# 你應(yīng)該就會(huì)看到變成 gpt 的模樣!只是...后續(xù)的分區(qū)就全部都死掉了辽装!
范例三:創(chuàng)建一個(gè)約為 512MB 容量的分區(qū)
[root@study ~]# parted /dev/vda print
.....(前面省略).....
Number Start End Size File system Name Flags
.....(中間省略).....
6 35.4GB 36.0GB 537MB linux-swap(v1) Linux swap # 要先找出來(lái)下一個(gè)分區(qū)的起始點(diǎn)帮碰!
[root@study ~]# parted /dev/vda mkpart primary fat32 36.0GB 36.5GB
# 由于新的分區(qū)的起始點(diǎn)在前一個(gè)分區(qū)的后面,所以當(dāng)然要先找出前面那個(gè)分區(qū)的 End 位置拾积!
# 然后再請(qǐng)參考 mkpart 的指令功能殉挽,就能夠處理好相關(guān)的動(dòng)作!
[root@study ~]# parted /dev/vda print
.....(前面省略).....
Number Start End Size File system Name Flags
7 36.0GB 36.5GB 522MB primary
[root@study ~]# partprobe
[root@study ~]# lsblk /dev/vda7
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda7 252:7 0 498M 0 part # 要確定它是真的存在才行拓巧!
[root@study ~]# mkfs -t vfat /dev/vda7
[root@study ~]# blkid /dev/vda7
/dev/vda7: SEC_TYPE="msdos" UUID="6032-BF38" TYPE="vfat"
[root@study ~]# nano /etc/fstab
UUID="6032-BF38" /data/win vfat defaults 0 0
[root@study ~]# mkdir /data/win
[root@study ~]# mount -a
[root@study ~]# df /data/win
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda7 509672 0 509672 0% /data/win
事實(shí)上斯碌,應(yīng)該使用 gdisk 來(lái)處理 GPT 分區(qū)就好了!不過(guò)肛度,某些特殊時(shí)刻傻唾,例如要自己寫(xiě)一只腳本,讓分區(qū)全部一口氣創(chuàng)建承耿, 不需要 gdisk 一條一條指令去進(jìn)行時(shí)冠骄,那么 parted就非常有效果了!因?yàn)樗梢灾苯舆M(jìn)行 partition 而不需要跟用戶(hù)互動(dòng)加袋!這就是它的最大好處凛辣!