雖然Linux桌面應用發展很快,但是命令在Linux中依然有很強的生命力。Linux是一個命令行組成的操作系統,精髓在命令行,無論圖形界面發展到什麼水平這個原理是不會變的。
實際上很多讀者對Linux的命令行的使用存在著諸多的“畏懼”心理,不知道如何正確有效使用,更多的依賴於圖形界面。這大大的降低了Linux系統的最大資源的利用。本文則把Linux系統中專門針對存儲類別的命令單獨拿出來,與大家共同探討這些命令的使用技巧,希望能夠對讀者有所幫助。
一、Linux中的設備命名規則
在Linux中把硬件設備當作文件來管理。每個與Linux系統相連的實際設備(包括硬盤、光盤驅動器、掃描儀等),都可以在文件系統中表示出來。Linux系統把每一個設備都看成一個文件,與普通文件一樣處理,這樣可以使文件與設備的操作盡可能統一。 從用戶的角度來看,對設備的使用和一般文件的使用一樣。
首先了解Linux中的設備命名規則:在安裝和使用Linux的過程中,您必然會接觸到不少像hda1、ttyS0、eth0這樣的設備名稱。在Linux中,每個設備必須在它的驅動程序控制下運行,驅動程序則與/dev目錄下的特殊文件聯系在一起,盡管這些文件並不是真正的文件,但在選擇設備或者操作設備時都以這個文件的名稱來代表這一設備。這些設備名稱的命名都是有規則的: 在/dev目錄下,每一個驅動器以一個單獨的設備文件來表現。
通常最常見的是硬盤,對於IDE硬盤一般可以有二到四個。這就是/dev/hda、/dev/hdb、/dev/hdc和/dev/hdd,hd是硬盤的意思,a則是代表第一個設備,hda1中的“1”代表hda的第一個硬盤分區,依此類推。而SCSI硬盤也就是/dev/sda、/dev/sdb等等,sd是SCSI設備的意思,第一個SCSI硬盤是/dev/sda, fd是軟盤,設備名稱是/dev/fd0。Linux 計算機中磁帶機的設備名是: /dev/st*和/dev/nst*, 其中nst*是操作完成後不自動回卷磁帶, st*則是自動 回卷, 一般常用nst*. 主機SCSI總線上找到的第一個磁帶機是nst0和st0, 第二個則是nst1和st1, 依此類推. 磁帶機的SCSI號越小, 其設備名也就越靠前。
二、Linux存儲設備發現掛載命令
1. lsmod
lsmod命令用來列出當前系統加載的模塊,可以當作硬件模塊浏覽器。
使用權限:
格式:lsmod [-hV]
主要選項:
-h :顯示幫助信息。
-V:顯示軟件版本信息。
應用說明:使用lsmod命令必須安裝Linux安裝盤中的modutils 軟件包。我們看一個lsmod命令實例,如圖1。
圖1 lsmod 列出當前系統中加載的模塊
Lsmod 即list modules,對每行而言,第一列是模塊名稱;第二列是模塊大小;第三列是用量計數。lsmod命令用來列出當前系統加載的模塊,同時也可以當作察看硬件浏覽器。從以上列表我們可以看到那些設備的驅動程序已經加載。如果後面為unused,則表示該模塊當前沒在使用。如果後面有autoclean,則該模塊可以被rmmod -a命令自動清洗。rmmod -a命令會將目前有autoclean的模塊卸載,如果這時候某個模塊未被使用,則將該模塊標記為autoclean。
2. uname
uname 命令用來顯示輸出系統信息。
使用權限:超級用戶。
格式:uname [選項]
主要選項:
-a, --all :顯示所有的信息。
-m, --machine :顯示硬件類型 。
-n, --nodename :顯示機器的網絡節點主機名。
-r, --release :顯示操作系統發行版本。
-s, --sysname :顯示操作系統名。
-p, --processor :顯示主機處理器(CPU)類型。
-v :顯示操作系統版本。
--help :顯示本幫助並退出。
--version: 顯示版本信息並退出。
應用實例:
#uname –a
Linux cao 2.4.20-8#1Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux
3 .lspci
lspci命令用來查看主板所有硬件槽信息。
使用權限:所有用戶。
格式:lspci [<switches>]
-v:顯示詳細信息。
-n:顯示設備ID號。
-b:顯示PCI、ISA擴展槽地址和中斷。
-t:顯示總線樹結構。
-F <file> :從指定文件讀信息。
-m:輸出所有硬件信息。
應用實例:
當系統硬件出現故障時,可以使用lspci命令輸出所有硬件信息。以幫助確定故障點。
#lspci m
00:00.0 "Host bridge" "Intel Corp." "440BX/ZX/DX - 82443BX/ZX/DX Host bridge" -r03 "Asustek Computer, Inc." "8024"
00:01.0 "PCI bridge" "Intel Corp." "440BX/ZX/DX - 82443BX/ZX/DX AGP bridge" -r03
00:04.0 "ISA bridge" "Intel Corp." "82371AB/EB/MB PIIX4 ISA" -r02 "" ""
00:04.1 "IDE interface" "Intel Corp." "82371AB/EB/MB PIIX4 IDE" -r01 -p80 "" ""
00:04.2 "USB Controller" "Intel Corp." "82371AB/EB/MB PIIX4 USB" -r01 "" ""
00:04.3 "Bridge" "Intel Corp." "82371AB/EB/MB PIIX4 ACPI" -r02 "" ""
00:09.0 "Communication controller" "Rockwell International" "HCF 56k PCI Speakerphone Modem" -r08 "Rockwell International" "HCF 56k PCI Speakerphone Modem"
00:0a.0 "USB Controller" "OPTi Inc." "82C861" -r10 -p10 "OPTi Inc." "82C861"
00:0b.0 "Ethernet controller" "Realtek Semiconductor Co., Ltd." "RTL-8139/8139C/8139C+" -r10 "Realtek Semiconductor Co., Ltd." "RT8139"
00:0d.0 "Ethernet controller" "Macronix, Inc. [MXIC]" "MX987x5" -r20 "" ""
01:00.0 "VGA compatible controller" "nVidia Corporation" "NV5M64 [RIVA TNT2 Model 64/Model 64 Pro]" -r15 "" ""
可以看到lspci可以檢測ISA、PCI、AGP擴展槽,硬盤通道、USB總線等所有主板信息。
4、 mount命令
mount命令mount命令的作用是加載文件系統。
使用權限:超級用戶或/etc/fstab中允許的使用者。
格式:
mount -a [-fv] [-t vfstype] [-n] [-rw] [-F] device dir
主要選項:
-h:顯示輔助訊息。
-v:顯示訊息,通常和-f用來除錯。
-a:將/etc/fstab中定義的所有文件系統掛上。
-F:這個命令通常和-a一起使用,它會為每一個mount的動作產生一個行程負責執行。在系統需要掛上大量NFS文件系統時可以加快加載的速度。
-f:通常用在除錯的用途。它會使mount並不執行實際掛上的動作,而是模擬整個掛上的過程,通常會和-v一起使用。
-t vfstype:顯示被加載文件系統的類型。
-n:一般而言,mount在掛上後會在/etc/mtab中寫入一些資料。但在系統中沒有可寫入文件系統存在的情況下可以用這個選項取消這個動作。
使用實例:
mount命令最重要功能是掛載磁盤,目前使用的磁盤包括:IDE、SCSI硬盤、USB閃盤、USB硬盤。以usb磁盤為例掛載方法如下:
#fdisk -l #察看usb磁盤設備號一般是/dev/sda1#
#mkdir /mnt/usb #建立一個掛載目錄#
mount –t vfat /dev/sda1 /mnt/usb
進階應用:
a.一般情況下只有超級用戶可以使用mount命令,下面介紹一下如何讓普通用戶可以使用光盤,修改/etc/fstab文件,加入一行:
#/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro,cao1 0 0
這樣用戶cao1也可以使用光盤驅動器。
b.我們使用的許多Linux發行版本是基於2.6系列的內核,下面介紹一下如何加載NTFS格式分區,首先使用命令察看:
#uname –a
Linux cao 2.6.6-1.435#1Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux
然後在http://linux-ntfs.sourceforge.net/ 下載對應的軟件補丁,並且安裝:
#wget http://belnet.dl.sourceforge.net/sourceforge/linux-ntfs/kernel-ntfs-2.6.6-1.435.rpm
#rpm -ivh kernel-ntfs-2.6.6-1.435.i686.rpm
使用fdisk命令察看分區位置:
# fdisk -l
Disk /dev/hda: 13.6 GB, 13666701312 bytes
255 heads, 63 sectors/track, 1661 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 255 2048256 b Win95 FAT32
/dev/hda2 256 1661 11293695 7 HPFS/NTFS
/dev/hda5 783 799 136521 6 FAT16
/dev/hda6 800 1309 4096543+ b Win95 FAT32
/dev/hda7 1310 1661 2827408+ b Win95 FAT32
/dev/hda8 256 268 104359+ 83 Linux
/dev/hda9 269 750 3871633+ 83 Linux
/dev/hda10 751 782 257008+ 82 Linux swap
Partition table entries are not in disk order
最後使用mount命令掛載:
# mount /dev/hda2 /mnt/win2000 -t ntfs -r -o iocharset=utf8
c.網絡掛載:
Linux支持NFS網絡文件系統,利用mount命令可以掛載NFS 服務器的/home/cao目錄:
# mount -t nfs 192.168.1.4:/home/cao /home/nfs/cao
下面使用df命令查看掛載的目錄已經包括:NFS 服務器的IP地址的共享目錄,見圖2。
圖2 掛載NFS服務器的共享目錄
Windows網絡共享的核心是SMB/CIFS,在linux下要掛接(mount)windows的磁盤共享,就必須安裝和使用samba軟件包。現在流行的linux發行版絕大多數已經包含了samba軟件包,如果安裝linux系統時未安裝samba請首先安裝samba。當然也可以到www.samba.org網站下載samba軟件包,現在最新的版本是3.0.10版。 當windows系統共享設置好以後,就可以在linux客戶端掛接(mount)了,具體操作如下:
# mkdir –p /mnt/samba “建立一個目錄用來作掛接點(mount point)”
# mount -t smbfs -o username=administrator,password=pldy123 //10.140.131.23/d$ /mnt/samba
說明:administrator 和 pldy123 是ip地址為10.140.131.23 windows計算機的一個用戶名和密碼,d$是這台計算機的一個磁盤共享。
5.umount
umount命令用來卸除文件系統。
使用權限:超級用戶或/etc/fstab中允許的使用者。
格式:umount -a [-f] [-r] [-n] [-v] [-t vfstypes]
主要選項:
-a:卸除/etc/mtab中記錄的所有文件系統。
-f:通常用在除錯的用途。它會使umount並不執行實際的動作,而是模擬整個過程,通常會和-v一起使用。
-r:若無法成功卸除,則嘗試以只讀的方式重新掛入文件系統。
-v: 執行時顯示詳細的信息。
-t vfstypes:僅卸除選項中所指定的文件系統。Vfstypes即文件系統類型。
下篇文章筆者將介紹Linux使用頻率最多的存儲設備:“磁盤”的管理維護命令