Linux的分區一般包括主分區,擴展分區和邏輯分區。其中:
主分區最多只能分4個;
擴展分區只能有一個,也算作主分區的一種,即主分區加擴展分區最多有4個。但擴展分區不能存儲數據和格式化,必須再劃分成邏輯分區才能使用;
邏輯分區是由擴展分區劃分出來的。如果是IDE硬盤,Linux最多支持59個邏輯分區,如果是SCSI硬盤,Linux最多只能支持11個邏輯分區。
(2)文件系統Linux中常見的文件系統包括ext2,ext3,ext4。
ext2是ext文件系統的升級版本,RedHat Linux7.2版本以前的系統默認都是ext2文件系統。1993年發布,最大支持16TB的分區和最大2TB的文件。
ext3是ext2文件系統的升級版本,最大的區別在于增加了日志功能,可以在系統突然停止時提供系統文件系統的可靠性。支持最大16TB的分區和最大2TB的文件。
ext4是ext3的升級版本。ext4在性能、伸縮性和可靠性方面進行了大量改進。ext4的變化有向下兼容了ext3,最大支持1EB文件系統和16TB文件,無線數量子目錄,Extents連續數據塊概念,多塊分配,延遲分配,持久預分配,快速fsck,日志校驗,無日志模式,在線碎片整理,iNode增強,默認啟動barrier等。
2 文件系統常用命令(1)df,du,fsck及dumpe2fs命令1)df是文件系統查看命令,其格式為:
df [選項] [掛載點]
其中,-a選項表示顯示所有文件系統信息,包括特殊文件系統如/PRoc,/syfs等,-h選項表示使用習慣單位顯示容量如KB、MB、GB等,-T表示顯示文件系統的文件類型,-m選項表示以MB為單位顯示容量,-k選項表示以KB為單位顯示容量,默認就是以KB為單位。
例:查看本機的文件系統:
[root@localhost ~]# df -ThFilesystem Type Size Used Avail Use% Mounted on/dev/sda5 ext4 14G 2.0G 11G 16% /tmpfs tmpfs 504M 0 504M 0% /dev/shm/dev/sda1 ext4 291M 32M 244M 12% /boot/dev/sda2 ext4 4.0G 136M 3.7G 4% /home
2)du命令用于統計目錄或文件的大小,其格式為:
du [選項] [目錄或文件名]
其中,-a選項表示顯示每個子文件的磁盤占用量,默認只統計子目錄的磁盤統計量,-h選項表示使用習慣單位顯示磁盤占用量,-s選項表示統計總占用量,而不是列出子目錄和子文件的占用量。
注:ls命令只會統計目錄下的第一級子目錄及文件的占用空間。
例:使用ls命令和du命令分別統計/etc目錄的大小:
[root@localhost ~]# du -sh /etc/27M /etc/[root@localhost ~]# ls -ld /etc/drwxr-xr-x. 103 root root 12288 1月 31 05:00 /etc/
3)df與du命令的區別
df命令時從文件系統考慮的,不僅考慮文件的占用空間,還要統計被命令或程序占用的空間。最常見的就是文件已經刪除,但是程序并沒有釋放空間。
du命令是面向文件的,只會計算文件或目錄占用的空間。
例:分別使用df和du顯示根目錄"/"的大小:
[root@localhost ~]# df -h /Filesystem Size Used Avail Use% Mounted on/dev/sda5 14G 2.0G 11G 16% /[root@localhost ~]# du -sh /du: 無法訪問"/proc/1597/task/1597/fd/4": 沒有那個文件或目錄du: 無法訪問"/proc/1597/task/1597/fdinfo/4": 沒有那個文件或目錄du: 無法訪問"/proc/1597/fd/4": 沒有那個文件或目錄du: 無法訪問"/proc/1597/fdinfo/4": 沒有那個文件或目錄1.9G /
4)fsck是文件系統的修復命令,其格式為:
fsck [選項] 分區設備文件名
其中,-a選項表示不同顯示用戶提示,自動修復文件系統,-y選項表示自動修復,和-a的作用一致,不過有些文件系統只支持-y。
5)dumpe2fs命令用于顯示磁盤狀態命令,其格式為:
dumpe2fs 分區設備文件名
例:查看/dev/sda1的磁盤狀態,使用-h選項僅顯示超級塊信息:
[root@localhost ~]# dumpe2fs -h /dev/sda1dumpe2fs 1.41.12 (17-May-2010)Filesystem volume name: <none>Last mounted on: /bootFilesystem UUID: 0b5697a3-9081-4b75-bf4c-71b4891d5e86Filesystem magic number: 0xEF53Filesystem revision #: 1 (dynamic)Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isizeFilesystem flags: signed_directory_hashDefault mount options: user_xattr aclFilesystem state: clean…………(2)掛載命令
1)查詢與自動掛載
mount命令用于查詢系統中已經掛載的設備,如顯示系統已掛載的設備:
[root@localhost ~]# mount/dev/sda5 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)/dev/sda2 on /home type ext4 (rw)none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
加上-l選項表示顯示卷標名稱。加上-a選項則表示依據配置文件/etc/fstab的內容,自動掛載。
2)掛載命令格式為:
mount [-t 文件系統] [-L卷標名] [-o 特殊選項] 設備文件名 掛載點
其中,-t選項表示加入文件系統類型來指定掛載的類型,可以為ext3、ext4(針對于Linux)、iso9660(光盤)、fat(win16)、vfat(win32)等文件系統;
-L選項為卷標名,表示掛載指定卷標的分區,而不是安裝設備文件名掛載;
-o選項為特殊選項,可以指定掛載的額外選項,常見的選項有
參數 | 說明 |
atime/noatime | 更新訪問時間/不更新。訪問分區文件時,是否更新文件的訪問時間,默認為更新 |
async/sync | 異步/同步,默認為異步 |
auto/noauto | 自動/手動,mount –a命令執行時,是否會自動安裝/etc/fstab文件內容掛載,默認為自動 |
defaults | 定義默認值,相當于rw,suid,dwv,exec,auto,nouser,async這七個選項 |
exec/noexec | 執行/不執行,設定是否允許在文件系統中執行可執行文件,默認是exec允許 |
remount | 重新掛載已經掛載的文件系統,一般用于指定修改特殊全鄉 |
rw/ro | 讀寫/只讀,文件系統掛載時,是否具有讀寫權限,默認是rw |
suid/nosuid | 具有/不具有SUID權限,設定文件系統是否具有SUID和SGID的權限,默認是具有 |
user/nouser | 允許/不允許普通用戶掛載,設定文件系統是否允許普通用戶掛載,默認是不允許,只有root可以掛載分區 |
usrquota | 寫入代表文件系統支持用戶磁盤配額。默認不支持 |
grpquota | 寫入代表文件系統支持組磁盤配額,默認不支持 |
例:重新掛載/home分區,并使用noexec權限,嘗試運行shell腳本helloworld.sh:
[root@localhost ~]# mount -o remount,noexec /home[root@localhost ~]# cd /home/[root@localhost home]# vi helloWord.sh[root@localhost home]# chmod 755 helloword.sh[root@localhost home]# ./helloword.sh-bash: ./helloword.sh: 權限不夠[root@localhost home]# ll總用量 20-rwxr-xr-x. 1 root root 31 1月 31 06:12 helloword.sh[root@localhost home]# cp helloword.sh /root/[root@localhost home]# /root/helloword.shhello world![root@localhost home]# mount -o remount,exec /home
可見在/home下設置noexec權限后無法執行shell腳本,而在其他默認的分區中如/root是可以執行的。注意最后要修改回來,否則會影響系統啟動。
(3)掛載光盤和U盤1)掛載光盤
首先在Vmware虛擬機設置中選中掛載的光盤鏡像,然后確保“設備狀態”處于“已連接”,如下圖所示:

其次,在/mnt目錄下創建cdrom掛載點,然后掛載光盤,最后顯示光盤內容,具體過程如下:
[root@localhost ~]# mkdir /mnt/cdrom/ #建立掛載點[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/ #掛載光盤mount: block device /dev/sr0 is write-protected, mounting read-only[root@localhost ~]# ls /mnt/cdrom/CentOS_BuildTag Packages RPM-GPG-KEY-CentOS-Security-6EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6GPL repodata TRANS.TBLimages RPM-GPG-KEY-CentOS-6isolinux RPM-GPG-KEY-CentOS-Debug-6[root@localhost ~]# umount /mnt/cdrom/ #最后卸載掛載點
注:掛載點卸載命令umount的格式為:umount 設備文件名或掛載點。
2)掛載U盤
光標定位到Vmware虛擬機中,然后插入U盤。這樣做U盤將被Linux識別,而不是被Windows識別。
首先使用fdisk命令查看U盤的設備文件名,具體命令為:fdisk –l。
其次掛載U盤:mount –t vfat /dev/sdb1 /mnt/usb
注意:U盤為FAT16文件系統,Linux的掛載文件系統格式為fat,若為FAT32,則Linux對應的掛載文件系統格式為vfat。Linux默認是不支持NTFS文件系統的移動硬盤。
(4)支持NTFS的文件系統若要在Linux中掛載NTFS的文件系統,可以利用第三方軟件ntfs-3g。其下載地址為:http://www.tuxera.com/community/ntfs-3g-download/。
安裝編譯的過程如下:
①解壓縮:tar -xzvf ntfs-3g-ntfsprogs-2014.2.15.tar.gz
②進入壓縮包:cd ntfs-3g-ntfsprogs-2014.2.15
③編譯器準備,無需指定安裝目錄,將被安裝到默認的位置中:./confgure④編譯:make
⑤編譯安裝:make install
安裝好之后,插入移動硬盤(和U盤的插入方法一樣),然后進行掛載:
mount –t ntfs-3g 分區設備文件名 掛載點
3 fdisk分區(1)fdisk命令的分區過程①使用VMware新建硬盤:
在“虛擬機設置”中,選中“硬盤”,點擊“添加”,隨后選擇默認即可添加新硬盤。注意:添加硬盤在系統尚未啟動時進行。

②打開虛擬機,使用命令:fdisk –l查看新添加的硬盤:
[root@localhost ~]# fdisk -lDisk /dev/sdb: 10.7 GB, 10737418240 bytes255 heads, 63 sectors/track, 1305 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000
③使用fdisk /dev/sdb命令為新硬盤進行分區,fdisk交互指令說明如下表:
命令 | 說明 |
a | 設置可引導標記 |
b | 編輯bsd磁盤標簽 |
c | 設置DOS操作系統兼容標記 |
d | 刪除一個分區 |
l | 顯示已知的文件系統類型,82為swap分區,83為Linux分區 |
m | 顯示幫助菜單 |
n | 新建分區 |
o | 建立空白DOS分區表 |
p | 顯示分區列表 |
q | 不保存退出 |
s | 新建空白SUN磁盤標簽 |
t | 改變一個分區的系統ID |
u | 改變顯示記錄單位 |
v | 驗證分區表 |
w | 保存退出 |
x | 附加功能(僅專家) |
新建/dev/sdb1主分區,/dev/sbd2擴展分區,/dev/sdb5邏輯分區。
#新建主分區,并分配2G硬盤空間Command (m for help): nCommand action e extended p primary partition (1-4)pPartition number (1-4): 1First cylinder (1-1305, default 1):Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +2G#新建擴展分區,并分配剩余的硬盤空間Command (m for help): nCommand action e extended p primary partition (1-4)ePartition number (1-4): 2First cylinder (263-1305, default 263):Using default value 263Last cylinder, +cylinders or +size{K,M,G} (263-1305, default 1305):Using default value 1305#新建邏輯分區,其硬盤空間大小為擴展分區的硬盤空間Command (m for help): nCommand action l logical (5 or over) p primary partition (1-4)lFirst cylinder (263-1305, default 263):Using default value 263Last cylinder, +cylinders or +size{K,M,G} (263-1305, default 1305):Using default value 1305#使用w命令保存并退出Command (m for help): wThe partition table has been altered! Calling ioctl() to re-read partition table.Syncing disks.④建立好分區后,使用partprobe命令重新讀取分區表信息,顯示正常報警。
[root@localhost ~]# partprobeWarning: WARNING: the kernel failed to re-read the partition table on /dev/sda (設備或資源忙). As a result, it may not reflect all of your changes until after reboot.Warning: 無法以讀寫方式打開 /dev/sr0 (只讀文件系統)。/dev/sr0 已按照只讀方式打開。Warning: 無法以讀寫方式打開 /dev/sr0 (只讀文件系統)。/dev/sr0 已按照只讀方式打開。Error: 無效的分區表 - /dev/sr0 出現遞歸分區。
⑤格式化分區,寫入文件系統,采用:mkfs –t ext4 /dev/sdb1,/dev/sdb5同樣處理。
[root@localhost ~]# mkfs -t ext4 /dev/sdb1mke2fs 1.41.12 (17-May-2010)文件系統標簽=操作系統:Linux塊大小=4096 (log=2)分塊大小=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks131648 inodes, 526120 blocks26306 blocks (5.00%) reserved for the super user第一個數據塊=0Maximum filesystem blocks=54106521617 block groups32768 blocks per group, 32768 fragments per group7744 inodes per groupSuperblock 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 32 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.
⑥建立分區掛載點并掛載。在根分區下創建disk1和disk5目錄分別作為/devsdb1和/dev/sdb5的掛載點
[root@localhost ~]# mkdir /disk1 /disk5[root@localhost ~]# mount /dev/sdb1 /disk1[root@localhost ~]# mount /dev/sdb5 /disk5
⑦使用df或mount命令查看掛載
[root@localhost ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/sda5 14G 2.0G 11G 16% /tmpfs 504M 0 504M 0% /dev/shm/dev/sda1 291M 32M 244M 12% /boot/dev/sda2 4.0G 136M 3.7G 4% /home/dev/sdb1 2.0G 68M 1.9G 4% /disk1/dev/sdb5 7.9G 146M 7.4G 2% /disk5(2)分區自動掛載
以上的分區為手動掛載,系統重啟之后需重新掛載,所以需要設置自動掛載。主要是設置/etc/fstab文件
UUID=9288c490-0161-471c-b63a-6e56699065d5 / ext4 defaults 1 1UUID=0b5697a3-9081-4b75-bf4c-71b4891d5e86 /boot ext4 defaults 1 2UUID=fe5a8908-97e6-4670-a114-8bcc43af1bc2 /home ext4 defaults 1 2UUID=3ae64e9d-7321-478b-b35f-14df91638287 swap swap defaults 0 0tmpfs /dev/shm tmpfs defaults 0 0devpts /dev/pts devpts gid=5,mode=620 0 0sysfs /sys sysfs defaults 0 0proc /proc proc defaults 0 0
fstab共有六個字段,其中:
第一個字段為分區設備文件名或UUID(硬盤通用唯一標識碼);
第二個字段為掛載點;
第三個字段為文件系統名稱;
第四個字段為掛載參數,與mount –o選項的參數含義一樣;
第五個字段為指定分區是否被dump備份,0表示不備份,1表示每天備份,2表示不定期備份。注:每個分區目錄均有備份目錄lost+found;
第六個字段為指定分區是否被fsck檢測,0表示不檢測,其他數字代表檢測的優先級。
因此,將新建的分區/dev/sdb1和/dev/sdb5寫入fstab中進行自動掛載:
/dev/sdb1 /disk1 ext4 defaults 1 2/dev/sdb5 /disk5 ext4 defaults 1 2(3)fstab文件修復
如果在/etc/fstab文件中輸入的內容有誤,則系統在重啟時將報錯,此時需要對其進行修復。
例:對/dev/sdb5分區進行自動掛載設置時,誤輸入/dev/sdb,即
/dev/sdb /disk5 ext4 defaults 1 2
系統在重啟時,出現找不到指定分區的報錯如下:

此時,輸入密碼重新修改/etc/fstab文件,由于該文件是只讀文件,因此,需要先將其所在的根分區重新掛載為讀寫權限,即:
mount –o remount,rw /
隨后將輸入的fstab文件修改過來,然后進行重啟。
新聞熱點
疑難解答