Linux文件系統(tǒng)

本文主要介紹分區(qū)基本知識, 文件系統(tǒng)常用命令, 如何給一塊新硬盤使用fdisk進行分區(qū), 格式化并且自動掛載, 如果將新的分區(qū)加入到swap等

一. 分區(qū)和文件系統(tǒng)

一塊新的硬盤想要使用, 首先要對其進行分區(qū), 然后在對各個分區(qū)進行格式化, 格式化也就是寫入文件系統(tǒng)

1. 分區(qū)類型

一塊硬盤可以劃分為以下三個分區(qū)

  • 主分區(qū): 總共最多只能有四個

  • 擴展分區(qū): 只能有一個, 也算作主分區(qū)的一種, 也就是說主分區(qū)加擴展分區(qū)只能有四個, 但是擴展分區(qū)劃分邏輯分區(qū)后才能使用, 不能對擴展分區(qū)進行格式化

  • 邏輯分區(qū): 邏輯分區(qū)是在擴展分區(qū)基礎(chǔ)上劃分, 如果是IDE硬盤, 最多支持59個邏輯分區(qū), SCSI硬盤支持11個邏輯分區(qū)

  • 分區(qū)設(shè)備文件名

分區(qū)名 設(shè)備文件名
主分區(qū)1 /dev/sda1(第一塊硬盤的第一個主分區(qū))
主分區(qū)2 /dev/sda2(第一塊硬盤的第二個主分區(qū))
擴展分區(qū) /dev/sda4(第一塊硬盤擴展分區(qū))
邏輯分區(qū)1 /dev/sda5(第一塊硬盤的第一個邏輯分區(qū), 只能從5開始)
邏輯分區(qū)2 /dev/sda6(第一塊硬盤的第一個邏輯分區(qū))

2. 文件系統(tǒng)

  • ext2: ext文件升級版本, 最大支持16TB的分區(qū)和2TB的文件
  • ext3: 支持分區(qū)和文件大小不變, 但是最大的區(qū)別是帶日志功能
  • ext4: ext3升級版本, ext4在性能, 伸縮性, 和可靠性做了大量改進, 最大支持1EB分區(qū)和16TB單個文件, 無限數(shù)量子目錄, 1EB=1024PB=1024*1024TB

二. 文件系統(tǒng)常用命令

1. df, du, fsck, dump2fs

  • df [選項] [掛載點]

    • -a: 顯示所有的文件系統(tǒng)信息, 包括特殊文件系統(tǒng), 如/proc, /sysfs
    • -h: 易讀方式顯示
    • -T: 顯示文件系統(tǒng)類型
    • -m: 以MB顯示
    • -k: 以kB顯示(默認)
  • du [選項] [目錄或文件名]

    • -a: 顯示每個子文件的磁盤占用量, 默認只統(tǒng)計子目錄的磁盤占用量
    • -h: 易讀方式展示
    • -s: 統(tǒng)計總占用量, 而不列出子目錄和子文件的占用量
[root@localhost /]# du -sh /etc
26M /etc
  • df和du的區(qū)別:

    • df命令時從文件系統(tǒng)考慮的, 不光要考慮文件占用的空間, 還要統(tǒng)計被命令或程序占用的空間(如文件被刪除, 但是沒有釋放, 需要重啟)
    • du命令時面向文件的, 只會計算文件或目錄占用的空間
  • 文件系統(tǒng)修復(fù)命令fsck
    fsck [選項]分區(qū)設(shè)備文件名

    • -a: 不用顯示用戶提示
    • -y: 自動修復(fù), 和-a作用一致
  • 顯示磁盤狀態(tài)命令dumpe2fs
    dumpe2fs 分區(qū)設(shè)備文件名
    dumpe2fs /dev/sda1

[root@localhost /]# dumpe2fs /dev/sda1 | more
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          /boot
Filesystem UUID:          9f22d879-291d-42b6-89ab-2dda6c5a65d2 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              128016
Block count:              512000
Reserved block count:     25600
Free blocks:              462374
Free inodes:              127978

2. 掛載命令

  • 查詢掛載情況 mount [-l]
  • 依據(jù)配置文件/etc/fstab的內(nèi)容, 自動掛載 mount -a
  • 掛載命令mount
    mount [-t 文件系統(tǒng)][-L 卷標名][-o 特殊選項]設(shè)備文件名 掛載點
    • -t 文件系統(tǒng): 加入文件系統(tǒng)類型類指定掛載的類型, 可以以ext3, ext4, iso9660, vfat等文件系統(tǒng)
    • -L 卷標名: 掛載指定卷標的分區(qū), 而不是安裝設(shè)備文件名掛載
    • -o 特殊選項: 可以指定掛載的額外選項 多個逗號分隔, 如: mount -o remount,noexec /home, 重新掛載/home分區(qū), 設(shè)置/home分區(qū)的文件不可執(zhí)行
  • -o 支持的特殊選項很多, 但只是對分區(qū)做設(shè)置
參數(shù) 說明
remount 重新掛載已經(jīng)掛載的文件系統(tǒng)
exec/noexec 執(zhí)行/不執(zhí)行, 設(shè)定是否允許在文件系統(tǒng)中執(zhí)行可執(zhí)行文件, 默認exec
rw/ro 讀寫/制度, 掛載時, 是否具有讀寫權(quán)限, 默認rw

3. 掛載光盤和U盤

  • 掛載光盤
# 創(chuàng)建光盤掛載點
[root@localhost /]# mkdir /media/cdrom

# 將光盤掛載在/media/cdrom掛載點, iso9660可以不填
[root@localhost /]# mount -t iso9660 /dev/sr0 /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only

# 卸載光盤
[root@localhost /]# umount /media/cdrom/

  • 掛載U盤
    U盤文件格式需要是fat16或者fat32, linux默認不支持NTFS文件系統(tǒng)
    • 執(zhí)行fdisk -l查看
  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        2611    20458496   8e  Linux LVM

如果是虛擬機安裝 需要切換到終端, 插入u盤, 虛擬機默認會識別u盤
, 如果不切到終端, 插入u盤, 就是windows系統(tǒng)識別
fdisk -l, 查找分區(qū), 可以看出u盤被識別為/dev/sdb4

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb4   *           1        1883    15120256    c  W95 FAT32 (LBA)

掛載u盤

[root@localhost /]# mkdir /media/usb
# 指定掛載文件系統(tǒng)類型
[root@localhost /]# mount -t vfat /dev/sdb4 /media/usb
[root@localhost /]# ls /media/usb 
[root@localhost /]# umount /media/usb               

4. 支持NTFS文件系統(tǒng)

  • 下載NTFS-3G
  • ./configure && make && meke install
  • 安裝以后, 也是進入終端, 插入移動硬盤, 讓linux識別硬盤
  • 執(zhí)行fdisk -l查看分區(qū)設(shè)備
  • 執(zhí)行 mount -t ntfs-3g 分區(qū)設(shè)備文件名 掛載點
    mount -t ntfs-3g /dev/sdb1

三. fdisk分區(qū)

新插入一塊硬盤, 如何給一塊新的硬盤分區(qū)并且掛載呢?

  • 在虛擬機中增加硬盤, 關(guān)機后, 在虛擬機設(shè)置中添加一塊硬盤
  • 開機后, 查看新增加的硬盤/dev/sdb, fdisk -l
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

1. 使用fdisk進行分區(qū)

  • 執(zhí)行fdisk /etc/sdb , 會進入fdisk分區(qū)交互界面
Command (m for help):
  • fdisk交互指令說明如下:
    • a: 設(shè)置可引導(dǎo)標記
    • b: 編輯bsd磁盤標簽
    • d: 刪除一個分區(qū)
    • l: 顯示一直文件系統(tǒng)類型, 82為Linux swap分區(qū), 83為Linux分區(qū)
    • m: 顯示幫助菜單
    • n: 新建分區(qū)(重要)
    • p: 顯示分區(qū)列表
    • t: 改變一個分區(qū)的系統(tǒng)ID
    • u: 改變顯示記錄單位
    • v: 驗證分區(qū)表
    • w: 退出保存
    • q: 退出不保存
  • 新建主分區(qū), 擴展分區(qū), 邏輯分區(qū)
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
# 新建主分區(qū)
p

# 選擇分區(qū)號
Partition number (1-4): 1

# 選擇起始柱面
First cylinder (1-1305, default 1): 
Using default value 1
#選擇結(jié)束柱面
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +2G


Command (m for help): p
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux


## 新建擴展分區(qū)
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 4
First cylinder (263-1305, default 263): 
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-1305, default 1305): +2G

# 可以看到主分區(qū)和擴展分區(qū)
Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb4             263         524     2104515    5  Extended

## 在擴展分區(qū)上新建邏輯分區(qū), 可以看到l logical邏輯分區(qū)選項
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (263-524, default 263): 
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-524, default 524): +2G

Command (m for help): p

#可以看到一個主分區(qū), 一個擴展分區(qū)和一個邏輯分區(qū)
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb4             263         524     2104515    5  Extended
/dev/sdb5             263         524     2104483+  83  Linux

# 保存
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[root@localhost ~]# fdisk -l
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb4             263         524     2104515    5  Extended
/dev/sdb5             263         524     2104483+  83  Linux

如果w保存時, 報錯, 提示分區(qū)表正在使用, 可以執(zhí)行partprobe重新載入分區(qū)表, 無效的話, 就需要重新啟動計算機

2. 格式化分區(qū)并掛載

  • 分區(qū)后, 需要格式化分區(qū), 寫入文件系統(tǒng), 才能使用, 不寫入文件系統(tǒng), 無法使用

mkfs -t ext4 /dev/sdb1

# 沒有格式化, 無法使用dumpe2fs查看
[root@localhost ~]# dumpe2fs /dev/sdb1
dumpe2fs 1.41.12 (17-May-2010)
dumpe2fs: Bad magic number in super-block 當嘗試打開 /dev/sdb1 時
找不到有效的文件系統(tǒng)超級塊.

[root@localhost ~]# mkdir /disk1
# 無法掛載
[root@localhost ~]# mount /dev/sdb1 /disk1/
mount: you must specify the filesystem type
  • 格式化/dev/sdb1,
[root@localhost ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系統(tǒng)標簽=
操作系統(tǒng):Linux
塊大小=4096 (log=2)
分塊大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131648 inodes, 526120 blocks
26306 blocks (5.00%) reserved for the super user
第一個數(shù)據(jù)塊=0
Maximum filesystem blocks=541065216
17 block groups
32768 blocks per group, 32768 fragments per group
7744 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912

正在寫入inode表: 完成                            
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]# mount /dev/sdb1 /disk1/
  • 將設(shè)備文件名/dev/sdb1掛載到/disk1
[root@localhost ~]# mount /dev/sdb1 /disk1/
  • 查看設(shè)備掛載情況(df -h 或者 mount)
[root@localhost /]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G  9.4G  7.2G  57% /
tmpfs                         491M     0  491M   0% /dev/shm
/dev/sda1                     485M   33M  427M   8% /boot
/dev/sdb1                     2.0G   68M  1.9G   4% /disk1
/dev/sdb5                     2.0G   68M  1.9G   4% /disk5
  • 手動掛載每次開機都會丟失, 如何自動掛載呢?

3. 自動掛載

自動掛載依賴于/etc/fstab配置文件, 查看該文件

/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=9f22d879-291d-42b6-89ab-2dda6c5a65d2 /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap 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

  • 各字段含義
    • 第一字段: 分區(qū)設(shè)備文件名或UUID(硬盤通用唯一識別碼, 可以通過dumpe2fs命令查看)
    • 第二字段: 掛載點
    • 第三字段: 文件系統(tǒng)名稱
    • 第四字段: 掛載參數(shù)
    • 第五字段: 指定分區(qū)是否被dump備份, 0: 不備份, 1: 每天 2: 不定期, 備份數(shù)據(jù)保存目錄在各自分區(qū)掛載點的 lost+found目錄
    • 第六字段: 指定分區(qū)是否被fsck檢測, 0不檢測, 數(shù)據(jù)越小, 優(yōu)先級越高, 系統(tǒng)在啟動時, 會根據(jù)該字段確定掃描優(yōu)先級, 根分區(qū)優(yōu)先級應(yīng)該是最高, 先掃描根分區(qū), 再掃描boot分區(qū), 自己加入的分區(qū), 優(yōu)先級也不應(yīng)該高于根分區(qū)1

想要自動掛載, 需要修改該文件, 加入如下內(nèi)容, 將sdb1和sdb5自動掛載

/dev/sdb1               /disk1                  ext4    defaults        1 2
/dev/sdb5               /disk5                  ext4    defaults        1 2

4. 文件修復(fù)

修改該文件一定要小心, 如果寫錯, 系統(tǒng)開機時可能會直接崩潰,
修改完, 應(yīng)該先執(zhí)行mount -a, 依據(jù)配置文件/etc/fstab的內(nèi)容, 自動掛載,
可以在不重啟的情況下, 檢測fstab文件是否正確**

如果系統(tǒng)出錯, 沒有啟動, 輸入root用戶名, 進入系統(tǒng)后, 需要執(zhí)行
mount -o remount,rw /重新掛載根分區(qū), 并將分區(qū)設(shè)置為讀寫, 就可以修改/etc/fstab

四. 分配swap分區(qū)

  • 首先參照分區(qū)方法, 將sdb硬盤再增加一個分區(qū),
    fdisk /dev/sdb
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb2             525         656     1060290   83  Linux
/dev/sdb4             263         524     2104515    5  Extended
/dev/sdb5             263         524     2104483+  83  Linux
  • 進入fdisk交互界面, 更改/dev/sdb2分區(qū)的ID號, 改為swap 82
# 更改id
Command (m for help): t
# 更改sdb2, 輸入2
Partition number (1-5): 2
# 更改為82
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap / Solaris)

#查看, 已經(jīng)設(shè)置為Linux swap
Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb2             525         656     1060290   82  Linux swap / Solaris

  • w保存退出時, 會出現(xiàn)
WARNING: Re-reading the partition table failed with error 16: 設(shè)備或資源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
  • 格式化分區(qū)為swap格式
    mkswap /dev/sdb2
[root@localhost /]# mkswap /dev/sdb2
/dev/sdb2: 沒有那個文件或目錄
# 沒有生效, 只能重啟計算機
# 重啟后
[root@localhost ~]# mkswap /dev/sdb2
Setting up swapspace version 1, size = 1060284 KiB
no label, UUID=e8a404e3-3389-471a-95ef-0ee343a2b2cb
  • 加入swap分區(qū) swapon /dev/sdb2
# swap 為2G
[root@localhost ~]# free -m | grep Swap
Swap:         1983          0       1983

# 將/dev/sdb2加入到swap分區(qū)
[root@localhost ~]# swapo
swapoff  swapon   
[root@localhost ~]# swapon /dev/sdb2

# 增加了一個G
[root@localhost ~]# free -m | grep Swap
Swap:         3019          0       3019
  • 從swap中取消 swapoff /dev/sdb2
[root@localhost ~]# swapoff /dev/sdb2
[root@localhost ~]# free -m | grep Swap
Swap:         1983          0       1983
  • swap分區(qū)開機自動掛載
    修改`/etc/fstab, 加入如下內(nèi)容, reboot重啟計算機
/dev/sdb2               swap                    swap    defaults        0 0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剃毒,一起剝皮案震驚了整個濱河市垫言,隨后出現(xiàn)的幾起案子匆光,更是在濱河造成了極大的恐慌,老刑警劉巖剃诅,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡金麸,警方通過查閱死者的電腦和手機逃延,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門览妖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人揽祥,你說我怎么就攤上這事讽膏。” “怎么了拄丰?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵府树,是天一觀的道長。 經(jīng)常有香客問我料按,道長奄侠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任站绪,我火速辦了婚禮遭铺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘恢准。我一直安慰自己魂挂,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布馁筐。 她就那樣靜靜地躺著涂召,像睡著了一般。 火紅的嫁衣襯著肌膚如雪敏沉。 梳的紋絲不亂的頭發(fā)上果正,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天炎码,我揣著相機與錄音,去河邊找鬼秋泳。 笑死潦闲,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的迫皱。 我是一名探鬼主播歉闰,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼卓起!你這毒婦竟也來了和敬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤戏阅,失蹤者是張志新(化名)和其女友劉穎昼弟,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奕筐,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡舱痘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了救欧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衰粹。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖笆怠,靈堂內(nèi)的尸體忽然破棺而出铝耻,到底是詐尸還是另有隱情,我是刑警寧澤蹬刷,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布瓢捉,位于F島的核電站,受9級特大地震影響办成,放射性物質(zhì)發(fā)生泄漏泡态。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一迂卢、第九天 我趴在偏房一處隱蔽的房頂上張望某弦。 院中可真熱鬧,春花似錦而克、人聲如沸靶壮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腾降。三九已至,卻和暖如春碎绎,著一層夾襖步出監(jiān)牢的瞬間螃壤,已是汗流浹背抗果。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奸晴,地道東北人冤馏。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像寄啼,于是被迫代替她去往敵國和親宿接。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容