本文主要介紹分區(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
- 第一字段: 分區(qū)設(shè)備文件名或UUID(硬盤通用唯一識別碼, 可以通過
想要自動掛載, 需要修改該文件, 加入如下內(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