Linux 筆記 - 第六章 Linux 磁盤管理

博客地址:http://www.moonxy.comnode

1、前言

1.1 硬盤

硬盤通常分爲 IDE 硬盤、SCSI 硬盤和 SATA 硬盤。在 Linux 中,IDE 接口的設備被稱爲 hd,SCSI 和 SATA 接口的設備則被稱爲 sd。第一塊 硬盤被稱做 sda,第2塊被稱做 sdb,以此類推。Linux 規定,一塊硬盤上只能存在 4 個主分區,分別被命名爲 sda一、sda二、sda3 和 sda4。邏輯分區則從 5 開始標識,每多一個邏輯分區,就在末尾的分區號上加 1。邏輯分區理論上沒有數量限制。正是因爲 Linux 系統中最多隻能建立 4 個主分區,因此當你想多建立幾個分區時,那麼就應該在建立完第 3 個分區後,建立第四個分區時選擇擴展分區,而後,在擴展分區中,再建立邏輯分區,擴展分區並非真正的分區,而只是概念上的分區,邏輯分區纔是實際的分區,且一塊硬盤上最多隻能建立一個擴展分區,邏輯分區理論上沒有數量限制。linux

通常來講,每一個系統都須要一個主分區來引導。每一個分區中存放着引導整個系統所必須的程序參數。在 Windows 環境中常說的 C 盤就是一個主分區,它是硬盤的第一個分區,在 Linux 下被稱爲 sda1。Windows 中的 D、E、F 等屬於邏輯分區,對應於 Linux 下的 sda五、sda六、sda7……。操做系統主體能夠安裝在主分區,也能夠安裝在邏輯分區,但引導程序必須安裝在主分區內。ide

綜上,硬盤分區表 64byte,共分爲4組記錄區,每一組記錄區記錄了該區段的起始與結束的磁柱號碼,這四組記錄就是主要(primary)分區或擴展(extended)分區,因此主要分區加上擴展分區最多隻能有四個。因爲操做系統(包括 Linux、Windows)的限制,擴展分區最多隻能有一個,因此一塊磁盤最多能夠分爲 3 個主分區加 1 個擴展分區,擴展分區的目的是使用額外的扇區來記錄磁盤分割信息,擴展分區自己不能格式化。邏輯(logical)分區是由擴展分區持續切割出來的,做爲數據存儲的分區是主要分區和邏輯分區。邏輯分區的數量依操做系統不一樣而不一樣,在linux中,IDE硬盤最多有 59 個邏輯分區(/dev/hda5到/dev/hda63),SATA硬盤則最多有11個邏輯分區(/dev/sda5 到 /dev/sda15)。spa

 

1.2 文件系統

Windows 系統格式化硬盤時會指定格式爲 FAT32 或者 NTFS,而 Linux 常見的文件系統格式有 Ext二、Ext3 或者 Ext4 等。Ext3 比 Ext2 多了日誌功能,能夠跟蹤記錄文件系統的變化,並將變化內容寫入日誌。當系統崩潰以後,就能夠利用日誌恢復文件系統,在很大程度上避免了數據的丟失。當系統崩潰以後,就能夠利用日誌恢復文件系統,在很大程度上避免了數據的丟失。Ext4 支持的最大文件系統容量和單個最大文件大小比 Ext3 都要大。ReiserFS 是 SuSE 默認的文件系統。swap 是交換分區,能夠理解爲虛擬內存。實際內存不夠時,操做系統從內存中取出一部分暫時不用的數據,放在交換分區中。Windows 不會爲 swap 單獨劃分一個分區,而是使用分頁文件實現相同的功能。如何將 NTFS 格式的分區掛載到 Linux 下呢,咱們能夠經過安裝 ntfs-3g 軟件包來解決這個問題。操作系統

1.3 設備文件

/dev 是全部設備文件所在的目錄,設備文件格式爲 /dev/xxyN。其中,xx:標明分區所在設備的類型,如 hd(IDE 硬盤)或 sd(SCSI 硬盤);y:標明分區所在的設備,如 /dev/hda(第一個 IDE 硬盤)或 /dev/sdb(第二個 SCSI 硬盤);N:這個數字表明分區,前四個分區(主分區或擴展分區)是用數字從1排列到4,邏輯分區從5開始。3d

2、查看磁盤或者目錄的容量

2.1 查看磁盤的容量命令 df -h

df - report file system disk space usage,能夠查看已掛載磁盤的總容量、使用容量和剩餘容量等。不加選項時,默認單位爲 KB。主要選項有 -i、-h、-T、-k 和 -m。其中 -i 表示查看 inodes 使用情況;-T 能夠查看文件系統類型;-h 最經常使用,表示使用合適的單位顯示容量,系統會自動判斷;-k 和 -m 分別表示以 K 和 M 爲單位顯示容量。經常使用格式爲: df -h [Filesystem],若是不添加具體的 Filesystem 名稱,那麼會列出系統全部的分區 。日誌

[root@ryan ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        19G  1.6G   16G   9% /
tmpfs           931M     0  931M   0% /dev/shm
/dev/sda1       190M   35M  145M  20% /boot
/dev/sr0        3.7G  3.7G     0 100% /mnt/cdromblog

第1列爲分區的名字,第2列爲該分區的總容量,第3列爲已使用容量,第4列爲剩餘容量,第5列爲已使用容量的百分比,第6列爲掛載點。接口

[root@ryan ~]# df -hT
Filesystem     Type     Size  Used Avail Use% Mounted on
/dev/sda3      ext4      19G  1.6G   16G   9% /
tmpfs          tmpfs    931M     0  931M   0% /dev/shm
/dev/sda1      ext4     190M   35M  145M  20% /boot
/dev/sr0       iso9660  3.7G  3.7G     0 100% /mnt/cdrom內存

其中,/dev/shm 爲內存掛載點,tmpfs 是 Linux/Unix 系統上的一種基於內存的文件系統,tmpfs 可使用您的內存或 swap 分區來存儲文件。iso9660 爲光盤的文件系統類型。

2.2 查看目錄或文件所佔磁盤空間的大小命令 du -sh

du - estimate file space usage,用於查看目錄或文件所佔磁盤空間的大小,默認單位爲 KB。格式爲 du [-abckmsh] [文件或者目錄名],主要選項有 -a、-b、-k、-m、-h、-c、-s。-a 表示列出所有文件和目錄的大小,不然只會列出目錄(包含子目錄)的大小,而不包含文件的大小;-b、-k、-m 分別表示以 byte、KB、MB爲單位輸出;-h 表示系統自動調節單位;-c 表示最後加總;-s 表示只列出總和。經常使用格式爲 du -sh filename。

[root@ryan ~]# du -sh /opt
1.1G    /opt

綜上,統計磁盤分區(即文件系統)的容量大小命令爲:df -h;統計文件的實際內容大小命令爲:ls -lh;統計目錄或者文件佔用磁盤空間的大小命令爲:du -sh。

3、磁盤的分區

新的磁盤在使用以前須要先分區,語法格式爲: fdisk [-l ] [設備名稱],可是 fdisk 只能劃分小於 2TB 的分區,若是要劃分大於 2TB 的分區,則須要使用 GPT 分區格式,可利用 parted 命令來完成分區。無論使用哪一種分區程序,咱們在 Linux 上給新硬盤創建分區時都要遵循如下的順序:創建主分區 → 創建擴展分區 → 創建邏輯分區 → 指定文件系統類型,格式化全部分區 → 掛載

[root@ryan ~]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008da69

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26         157     1048576   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             157        2611    19717120   83  Linux

[root@ryan ~]# fdisk -l /dev/sda2

Disk /dev/sda2: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

進入分區模式:

按 m 進入分區菜單:

上面經常使用的幾個菜單項:

d 刪除一個分區;
l 打印分區類型對應的 ID 號;
n 添加一個分區;
p 打印分區表;
q 不保存退出;
w 保存退出。

4、磁盤格式化

磁盤分區好以後,還不能使用,須要對每個分區進行格式化,其實就是安裝文件系統。如 Windows 下有 Fat32 和 NTFS,CentOS 下有 ext二、ext三、ext4 等。

經過查看 /etc/filesystems 文件列出當前系統所支持的全部文件系統類型:

[root@ryan ~]# cat /etc/filesystems
ext4
ext3
ext2
nodev proc
nodev devpts
iso9660
vfat
hfs
hfsplus

可使用 mke2fs、mkfs.ext二、mkfs.ext3 和 mkfs.ext4 等命令,對分區進行格式話,建議使用 mke2fs 命令,由於它的選項比較多,能夠分紅 ext二、ext三、ext4 的格式。經常使用選項有:-b 指定分區時設定每一個數據區塊佔用的空間大小,默認爲 4096 bytes,即 4K;-L 預設該分區的標籤(Label);-t 用來指定文件系統的類型,如 ext二、ext三、ext4。如 mke2fs -t ext4 /dev/sdb5

命令 e2label 用於查看或修改分區的標籤。

5、掛載/卸載磁盤

磁盤分區,而後格式化,此時磁盤已是一個塊設備文件,類型爲 b,可是如今還不能直接在該磁盤分區中寫入數據,而是先創建一個掛載點,掛載點是以目錄的形式出現的。若是掛載點不存在,須要先手工建立掛載點,而且掛載點(目錄)下必須是個空目錄。若是不是空目錄,一旦掛在了新的分區,該目錄下之前的數據就看不到了,除非卸載該分區。

5.1 掛載磁盤

mount - mount a filesystem,掛載一個文件系統,若是不加任何選項,直接運行 mount 命令,則顯示系統全部分區,掛載點,分區文件系統類型等信息:

[root@ryan ~]# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sr0 on /mnt/cdrom type iso9660 (ro)

經常使用選項還有 -a、-t 和 -o。-a 會掛載 /etc/fstab 中出現的全部磁盤分區;-t 選項用來指定掛載的分區類型,默認不指定會自動識別;-o 選項用來指定掛載的分區有哪些特性,即 /etc/fstab 配置文件中第 4 列的信息。如

[root@ryan ~]# mount /dev/sdb5 /newfolder

表示將分區 /dev/sdb5 掛載到 /newfolder 下,一般第一個參數能夠是文件系統,LABEL 或 UUID。

5.2 /etc/fstab 配置文件

此配置文件中顯示了系統啓動時須要掛載的各個分區。

[root@ryan ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Nov 12 07:40:10 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=3974d6b2-aa5c-4a43-a296-bf3dc70654e9 /                       ext4    defaults        1 1
UUID=49d563ca-1c80-47bd-8721-ac2323568655 /boot                   ext4    defaults        1 2
UUID=796cdd24-f311-407c-9fa8-e272e5b5fd66 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

第1列是分區的表示,能夠寫分區的 Label、分區的 UUID、也能夠寫分區名(/dev/sda1);第2列是掛載點;第3列分區的格式;第4列是 mount 的一些掛載參數,通常狀況下,直接寫 defaults 便可;第5列的數字表示是否被 dump 備份,1表示備份,0表示不備份;第6列的數字表示開機時是否自檢磁盤,1和2都表示檢測,1比2優先級高,0表示不檢測。

也能夠將須要掛載的命令寫入 /etc/rc.local(此爲軟連接,實際指向 /etc/rc.d/rc.local 文件),系統啓動最後會執行這個文件中的命令,這也就是讓一些操做行爲隨系統啓動而自動執行。

5.3 命令 blkid

blkid - command-line utility to locate/print block device attributes,獲取分區的惟一標識 UUID,它是真正的惟一標誌符,格式爲:blkid [filesystem]

[root@ryan ~]# blkid
/dev/sda3: UUID="3974d6b2-aa5c-4a43-a296-bf3dc70654e9" TYPE="ext4"
/dev/sda1: UUID="49d563ca-1c80-47bd-8721-ac2323568655" TYPE="ext4"
/dev/sda2: UUID="796cdd24-f311-407c-9fa8-e272e5b5fd66" TYPE="swap"

5.4 卸載磁盤

umount - unmount file systems,卸載文件系統,這個命令後能夠跟掛載點,也能夠跟分區名(如 /dev/hdb1),可是不能夠跟 LABEL 和 UUID。若是遇到不能卸載的狀況,能夠跳轉到其餘目錄,或者使用 umount -l 選項,表示延遲卸載。

6、關於 swap

swap 用來作虛擬內存,雖然 swap 沒法代替物理內存,但不可缺乏。swap 分區的做用是:當系統的物理內存不夠用的時候,就須要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什麼操做的程序,這些被釋放的空間被臨時保存到 swap 空間中,等到那些程序要運行時,再從 swap 中恢復保存的數據到內存中。這樣,系統老是在物理內存不夠時,才進行 swap 交換。查看當前系統中是否已經啓用 swap 分區:cat /proc/swaps。
一般創建 swap 有兩種方法:1.創建 swap 分區;2.建立 swap 交換文件。運行速度:物理內存 > swap 分區 > swap 文件。當你的數據盤已經裝了不少內容,不方便從新規劃的話,也只好使用第二種方法,建立 swap 文件了。若是你只有一塊磁盤,並且磁盤已經裝了不少內容,因此就不可能再選擇對磁盤格式化來給磁盤分區了,而是選擇建立 swap 文件的方法。基本步驟是:創建 swapfile → 格式化爲 swap 格式 → 啓用該虛擬內存。使用 free 命令來查看內存的使用狀況,包括物理內存和虛擬內存, -m 選項表示以 MB 爲單位顯示。

[root@ryan ~]# free -m                   total       used       free     shared    buffers     cachedMem:          1861        200       1660          0          9         59-/+ buffers/cache:        131       1730Swap:         1023          0       1023

相關文章
相關標籤/搜索