Android apache Firefox 微软 php linux nginx 编程 Windows 程序员 云计算 google Ubuntu centos 开源 java wordpress mysql shell Python

《循序漸進Linux(第2版) 基礎知識 服務器搭建 系統管理 性能調優 虛擬化與集群應用》——4.5 磁盤管理與維護

4.5 磁盤管理與維護

4.5.1 df命令
1.功能說明
df命令用來檢查Linux系統的磁盤空間占用情況。其格式如下。

df [選項]
df命令的選項及其說明如表4.34所示。


screenshot2.舉例
1)查看當前系統磁盤分區情況,並顯示文件系統類型,人性化輸出。

[root@web1 ~]# df -hT
Filesystem  type  Size Used Avail Use% Mounted on
/dev/sda2   ext3   15G603M14G  5% /
/dev/sda1   ext3   99M14M81M 14% /boot
/dev/sda7   ext496G19G72G 21% /ixdba
nonetmpfs  2.0G   0 2.0G  0% /dev/shm
/dev/sda3   ext3  9.7G3.3G5.9G 36% /usr
/dev/sda6   ext3  7.7G243M7.1G  4% /var
/dev/sdf6  xfs951G77G875G  9% /webdata

从上面的输出可以看出,每个文件系统分区的总大小、已经使用大小、剩余大小和占用的百分比等,还可以看出,上面的系统使用了ext3、ext4、tmpfs和xfs这4种类型的文件系统。

关于文件系统的概念,后面章节有详细讲述。

2)输出文件系统的inode信息。

[root@web1 ~]# df -ihT
Filesystem  Type  Inodes  IUsed  IFree IUse% Mounted on
/dev/sda2   ext3   1.9M  8.8K  1.9M  1% /
/dev/sda1   ext3    26K   38   26K  1% /boot
/dev/sda7   ext413M   41K   13M  1% /ixdba
nonetmpfs   496K    1  496K  1% /dev/shm
/dev/sda3   ext3   1.3M  156K  1.1M  13% /usr
/dev/sda6   ext3   1003K  3.3K  999K  1% /var
/dev/sdf6   xfs30M2.4M28M  9% /webdata

4.5.2 du命令
1.功能说明
du命令用来显示文件或目录所占用的磁盘空间情况。其格式如下。

du [选项] 文件或目录
du命令的选项及其说明如表4.35所示。

screenshot

2.舉例
1)要顯示當前目錄下所有文件的大小,使用以下命令。

[root@localhost iso]# du -sh ./*
174M  ./RHEL4-U4-i386-as-disc1.iso
631M  ./rhel-5-server-i386-disc1.iso
631M  ./rhel-5-server-i386-disc2.iso
631M  ./rhel-5-server-i386-disc3.iso
629M  ./rhel-5-server-i386-disc4.iso
224M  ./rhel-5-server-i386-disc5.iso
3.7G  ./rhel-5-server-i386-discDvD.iso
2)要顯示當前Linux系統/etc目錄的總大小,使用以下命令。

[root@localhost iso]#du –sh /etc
54M   /etc
4.5.3 fsck命令
1.功能說明
fsck命令用來檢查文件系統並嘗試修復錯誤。其格式如下。

fsck [選項] [-t <文件系統類型>] [設備名]
fsck命令的選項及其說明如表4.36所示。

screenshot

“-t <文件系統類型>”是指定要檢查的文件系統類型。

註意
 在執行fsck命令修復某個文件系統時,這個文件系統對應的磁盤分區一定要處於卸載狀態,磁盤分區在掛載狀態下進行修復是極為不安全的,數據可能遭到破壞,也有可能損壞磁盤。
2.舉例
檢查並嘗試修復出問題的磁盤分區/dev/sda10,在執行修復時進行詢問,讓用戶得以確認並決定處理方式,顯示詳細修復過程。

[root@localhost /]# fsck -rV -t ext3 /dev/sda10 
fsck 1.39 (29-May-2006)
[/sbin/fsck.ext3 (1) -- /dev/sda10] fsck.ext3 -r /dev/sda10 
e2fsck 1.39 (29-May-2006)
/opt contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Inode 6121 ref count is 2, should be 1. Fix<y>? yes
Unattached inode 6122
Connect to /lost+found<y>? yes
Inode 6122 ref count is 2, should be 1. Fix<y>? yes
Pass 5: Checking group summary information
Block bitmap differences: -(519--529) -9273
Fix<y>? yes
…………
/opt: ***** FILE SYSTEM WAS MODIFIED *****
/opt: 19/128520 files (15.8% non-contiguous), 46034/514048 blocks
從上面可以看出,fsck在修復文件系統的時候其實調用了/sbin/fsck.ext3命令。fsck修復經歷了5個步驟的檢查,中間如果發現需要修復的,就會提示用戶是否修復,按y鍵進行修復,按其他任意鍵跳過修復。

當fsck命令執行時,fsck如果發現存在沒有文件系統依賴的文件或者目錄,就會提示用戶是否把它們找回來,因為這些沒有文件系統依賴的文件或者目錄對用戶來說是看不到的,也就無法使用,一般是由文件系統內部結構損壞導致的。如果用戶同意找回,也就是上面說的按y鍵,fsck命令就會把這些孤立的文件或者目錄放到lost+found目錄下,並用這些文件自己對應的i-node號來命名,以便用戶查找自己丟失的文件。lost+found的字面意思就是丟失並找回的含義。

因此當用戶在利用fsck命令修復磁盤分區以後,如果發現分區中有文件丟失,就可以到對應的lost+found目錄中去查找。由於此時通過文件名稱已經無法分辨文件,因此可以利用file命令查看文件系統類型,進而判斷哪個是需要的文件。

4.5.4 sync命令
功能說明
sync命令用來強制把內存中的數據寫回硬盤,以免數據的丟失。其格式如下。

sync
需要說明的是:在Linux系統中,修改過的操作會緩存到內存中,不會馬上寫入硬盤,等待適當的時候再從內存寫入磁盤,這樣可以提高系統讀寫效率。Linux下默認每隔3秒系統自動執行一次sync操作,系統正常關機時也會執行sync操作,保證所有操作全部從內存寫入磁盤。如果非法關機,系統內存信息無法及時同步到硬盤,就會造成數據丟失或者文件損壞,由此可見,Linux系統中正常關機是非常重要的。

4.5.5 eject命令
1.功能說明
eject命令用來退出抽取式設備,如光驅或者磁帶。如果該設備已經掛載,則eject先將設備卸載,然後再退出設備。其格式如下。

eject [選項] 設備名
eject命令的選項及其說明如表4.37所示。

screenshot
2.举例
1)要显示当前系统中软盘、光盘和磁带的相应设备文件路径,使用以下命令。

[root@mylinux ~]# eject --noop floppy
eject: device is '/dev/fd0'
[root@mylinux ~]# eject -n cdrom
eject: device is '/dev/hda'
[root@mylinux ~]# eject -n st0
eject: device is '/dev/st0'

2)要卸载Linux系统的/tmp分区,使用以下命令。

[root@mylinux ~]#eject /tmp
4.5.6 mount/umount命令
1.功能说明
挂载以及卸载指定的文件系统。在第3章我们曾经讲述过mount/umount命令,这里再深入讲述mount/umount的使用。

mount [选项] [-L<标签>] [-o<选项>] [-t<文件系统类型>] [设备名] [挂载点]
umount [挂载点]

mount命令的选项及其说明如表4.38所示。
screenshot

1)-L<標簽>:標簽其實就是磁盤分區標識的別名,標簽可以隨便起名,這樣便於記憶,在Linux下磁盤分區的設備名比較難記,利用標簽代替設備名,簡單易記。

2)-o<選項>:指定加載文件系統時的選項,這些選項如下。

async:以非同步的方式執行文件系統的輸入、輸出動作。
atime:每次存取都更新inode的存取時間,默認設置,取消選項為noatime。
auto:必須在/etc/fstab文件中指定此選項。指定-a選項時,會加載設置為auto的設備,取消選項為noauto。
dev:可讀文件系統上的字符或塊設備,取消選項為nodev。
exec:可執行二進制文件,取消選項為noexec。
noatime:每次存取時不更新inode的存取時間。
noauto:加入此選項,就無法使用-a選項來加載。
nodev:不讀文件系統上的字符或塊設備。
noexec:無法執行二進制文件。
nosuid:關閉set-user-identifier(設置用戶ID)與set-group-identifer(設置組ID)設置位。
nouser:使用戶無法執行加載操作,默認設置。
iocharset=XXX:指定mount分區時使用的字符集。
codepage=XXX:指定mount分區時使用的內碼表。
remount:重新加載設備。通常用於改變設備的設置狀態。
ro:以只讀模式加載。
rw:以可讀寫模式加載。
suid:啟動set-user-identifier(設置用戶ID)與set-group-identifer(設置組ID)設置位,取消選項為nosuid。
sync:以同步方式執行文件系統的輸入、輸出動作。
user:可以讓一般用戶加載設備。
defaults:使用默認選項。默認選項為rw、suid、dev、exec、anto、nouser與async。
3)-t<文件系統類型>:指定設備的文件系統類型,常用選項如下。

ext3/ext2:Linux目前的常用文件系統。
msdos:MS-DOS的FAT。
vfat:Windows 95/98的VFAT。
nfs:網絡文件系統。
iso9660:cd-ROM光盤的標準文件系統。
ntfs:Windows NT的文件系統。
4)設備名:硬盤分區在Linux上的設備標識,類似於/dev/sda1、/dev/hda2等。

5)掛載點:Linux系統下指定的某個目錄。

2.舉例
1)將光盤鏡像文件掛載到Linux系統下。

[root@localhost/]#mount-o loop -t iso9660 /iso/CentOS-7-x86_64-DVD-1503-01.iso /ixdba
在Windows下訪問ISO鏡像文件需要虛擬光驅等第三方軟件,而在Linux系統下光盤鏡像文件可以直接通過掛載的方式實現讀取。

這裏的“loop”選項表示把一個鏡像文件當成硬盤分區掛接到系統,“-t”指定鏡像文件的類型為iso9660,也就是光盤的標準文件系統。“/iso/CentOS-7-x86_64-DVD-1503-01.iso”表示鏡像文件的路徑,而“/ixdba”表示掛載點,掛載成功後就可以通過/ixdba目錄訪問鏡像文件的內容了。

2)Windows+Linux雙系統並存環境,將Windows下的D盤掛載到Linux下的/mnt/d目錄下,並且支持中文,使用以下命令。

[root@localhost/]#mount -t vfat -ocodepage=936,iocharset=cp936 /dev/hda3 /mnt/d
上面的命令中,“-t vfat”選項表示需要掛載的D盤是FAT格式的文件系統;“-o”後面的選項指定了分區掛載後支持中文顯示;“/dev/hda3”是Windows下的D盤在Linux下的硬件標識;“/mnt/d”是Linux系統上指定的掛載點,掛載成功就可以通過訪問Linux下的/mnt/d目錄來訪問Windows下的D盤內容了。

3)在一臺Linux系統上以只讀方式掛載另一臺Linux系統上共享的分區,也就是我們以後要深入講述的網絡文件系統(network filesystem,NFS),使用以下命令。

[root@localhost/]#mount-t nfs -o ro192.168.60.133:/home/ixdba /mnt/nfs
上面的命令中,“-t nfs”指定掛載的文件系統類型是nfs;“-o ro”指定以只讀方式掛載;“192.168.60.133:/home/ixdba”表示將ip地址為“192.168.60.133”的另外一臺Linux系統中的/home/ixdba目錄共享;“/mnt/nfs”指定在本機Linux系統上的掛載點。

延伸阅读

    评论