天天看點

Linux-檔案系統管理

from:http://blog.csdn.net/m13666368773/article/details/7615146

如果你是一位忠實的windows 使用者,那麼現在請你打開的的c盤,打開WINDWOS目錄,下面存放了哪些檔案和目錄,相信沒有人關心過吧!即便是用windows多年的人。額!其實,我也知道WINDOWS目錄下面都放了些什麼,在我的記憶中,幾乎都沒打開那個目錄過,這就是windows 。linux則需要我們日久生情,我們隻有在慢慢的與之了解下才會愛上它。 

linux檔案系統                                                                              

  

在linux中所有的東西都是檔案

    Linux檔案系統的組織方式稱做Filesystem Hierarchy Standard(檔案系統分層标準,簡稱FHS),即采用層次式的樹狀目錄結構。在此結構的最上層是根目錄"/"(斜杠),然後在此根目錄下是其他的目錄和子目錄

Linux-檔案系統管理

    Linux與DOS及Windows一樣,采用"路徑"來表示檔案或目錄在檔案系統中所處的層次。路徑由以"/"為分隔符的多個目錄名字元串組成,分為絕對路徑和相對路徑。所謂絕對路徑是指由根目錄"/"為起點來表示系統中某個檔案或目錄的位置的方法。例如如果用絕對路徑表示圖中第4層目錄中的bin目錄,應為"/usr/local/bin"。相對路徑則是以目前目錄為起點,表示系統中某個檔案或目錄在檔案系統中的位置的方法。若目前工作目錄是"/home",則用相對路徑表示圖中第4層目錄中的bin目錄,應為"hls/bin"或"./hls/bin",其中"./"表示目前目錄,通常可以省略。

  Linux檔案系統的組織與Windows作業系統不同。對于在Linux下使用的裝置,不需要像Windows那樣建立驅動器盤符,Linux會将包括本地磁盤、網絡檔案系統、CD-ROM和U盤等所有裝置識别為裝置檔案,并嵌入到Linux檔案系統中來進行管理。一個裝置檔案不占用檔案系統的任何空間,僅僅是通路某個裝置驅動程式的入口。Linux 系統中有兩類特殊檔案:面向字元的特殊檔案和面向塊(block)的特殊檔案。前者允許I/O操作以字元的形式進行,而後者通過記憶體緩沖區來使資料的讀寫操作以資料塊的方式實作。當對裝置檔案進行I/O操作時,該操作會被轉給相應的裝置驅動程式。一個裝置檔案是用主裝置号(指出裝置類型)和從裝置号(指出是該類型中的第幾個裝置)來表示的,可以通過mknod指令進行建立。軟碟、CD光牒和硬碟等典型裝置檔案在Linux系統中的表示方法。

 典型裝置檔案在Linux系統中的表示方法

Linux-檔案系統管理

  Linux檔案名最長可允許256個字元,可以包括數字、字元,以及"."、"-"、"_"等符号。Linux檔案名不像DOS或Windows由主檔案名和擴充檔案名兩部分組成,Linux中沒有擴充名的概念。Linux環境下,檔案名對大小寫敏感(Case Sensitive),例如test.txt與Test.txt會被識别成兩個不同的檔案,而DOS或Windows平台是不進行大小寫區分的。

檔案系統的構成

/usr/bin、/bin : -------------存放所有使用者可以執行的指令

/usr/sbin、/sbin : -----------存放隻有root可以執行的指令

/home :--------------------使用者預設宿主目錄

/proc :---------------------虛拟檔案系統,存放目前記憶體鏡像

/dev :----------------------存放裝置檔案

/lib :-----------------------存放系統程式運作所需的共享庫

/lost+foud :---------------存放一些系統出錯的檢查結果

/tmp :---------------------存放臨時檔案

/etc :-----------------------系統配置檔案

/var :----------------------包含經常發生變動的檔案,如:郵件、日志檔案、計劃任務等

/usr :----------------------存放所有指令、庫、手冊頁等 類似于windows C槽下的WINDOWS目錄

/mnt :----------------------臨時檔案系統的安裝點

/boot :---------------------核心檔案及自舉程式檔案儲存位置

用windows下我們習慣把安裝的程式放在Program files目錄下,在linux下面習慣放在/user/local下。

檢視檔案指令                                                                                   

檢視分區使用情況:df

檢視檔案、目錄大小:du

檢測修複檔案系統: fsck、e2fsck

        (單使用者模式執行)

判斷檔案類型:file

df 檢視linux磁盤分區情況

  在windows下檢視我們硬碟的分區很簡單,打開“我的電腦”就知道有幾個盤,滑鼠放到盤符上就顯示磁盤的大小,那麼在linux下如何檢視呢,其實也非常簡單,一個指令的事兒

[[email protected] ~]# df -h

Filesystem 容量 已用 可用 已用% 挂載點

/dev/sda1 9.7G 3.3G 5.9G 37% /

none 506M 0 506M 0% /dev/shm

/dev/sda2 2.9G 37M 2.7G 2% /hzh

/dev/sda5 6.2G 47M 5.9G 1% /web

du 檢視檔案、目錄的大小

  windows下檢視檔案、目錄的大小右鍵--屬性,linux我們使用du指令進行檢視。

[email protected]:/hzh# du -h test.test   ------檢視檔案的大小

4.0K test.test

[email protected]:/# du -sh /etc   ------檢視目錄的大小

7.1M /etc

file判斷檔案類型

我們知道linux下的檔案不是同過字尾名來确定類型的,如果剛好某個檔案沒有定義字尾名,我們可以通過file指令來檢視字尾名。

[email protected]:/hzh# file test.test 

test.test: ASCII text

添加磁盤、分區、格式化、挂載                                                           

  這是我們在玩linux伺服器時會遇到的一個問題,根據初期的規劃,你linux上了一塊500GB的硬碟,過了一段時間,不夠用了。怎麼辦?換一個1TB的硬碟,把系統重裝一下,把原來的資料拷貝到新硬碟上。這種方式可以,但太笨。直接在原系統上加一塊硬碟不就行了。我們現在需要知道的就是如何讓新加的這塊硬碟給我們工作。

Linux-檔案系統管理

設定---根據圖檔的提示添加一塊新的虛拟硬碟,嗯!這就是虛拟機的好處,可以幫我們模拟添加多塊硬碟。呵呵

劃分分區(fdisk)

建立檔案系統(mkfs)

嘗試挂載(mount)

寫入配置檔案(/etc/fstab)

檢視新添加分區的硬碟資訊:

[[email protected] ~]# dmesg | grep sdb      sdb是我們添加的第二塊硬碟

SCSI device sdb: 20971520 512-byte hdwr sectors (10737 MB)

sdb: cache data unavailable

sdb: assuming drive cache: write through

SCSI device sdb: 20971520 512-byte hdwr sectors (10737 MB)

sdb: cache data unavailable

sdb: assuming drive cache: write through

sdb: unknown partition table

Attached scsi disk sdb at scsi0, channel 0, id 1, lun 0

如果敲入dmesg | grep sdb指令沒有任何資訊,那問題就大了,你的系統沒有識别新添加胡硬碟。

對硬碟進行分區

  下面先看一下我們添加的第二塊硬碟的一些資訊。

[[email protected] ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table

  sdb中b表示第二塊硬碟,如果想看我們第一塊硬碟的資訊,可以輸入sda

[[email protected] ~]# fdisk -l /dev/sda

Disk /dev/sda: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sda1 * 1 1275 10241406 83 Linux

/dev/sda2 1276 1657 3068415 83 Linux

/dev/sda3 1658 1788 1052257+ 82 Linux swap

/dev/sda4 1789 2610 6602715 5 Extended

/dev/sda5 1789 2610 6602683+ 83 Linux

下面開始真正的對硬碟進行分區

[[email protected] ~]# fdisk /dev/sdb

The number of cylinders for this disk is set to 2610.

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): m   ----- 按m可以獲得幫助資訊

Command action

a toggle a bootable flag

b edit bsd disklabel

c toggle the dos compatibility flag

d delete a partition -----删除分區

l list known partition types

m print this menu

n add a new partition -----添加一個新的分區

o create a new empty DOS partition table

p print the partition table -----顯示分區表

q quit without saving changes -----不儲存退出

s create a new empty Sun disklabel

t change a partition's system id -----改變檔案系統類型

u change display/entry units

v verify the partition table

w write table to disk and exit ----- 儲存退出

x extra functionality (experts only)

------------------------------------------------------添加第一個主分區--------------------------

Command (m for help): p   ----- 顯示分區表

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

Command (m for help): n   ----- 添加新分區

Command action

e extended e是擴充分區

p primary partition (1-4)   ----p是主分區,我們最多可以添加4個主分區

p   ----- 按p表示我們要劃分主分區

Partition number (1-4): 1    -----給主分區的一個編号1

First cylinder (1-1305, default 1):    -----這1到1305是指扇面,這個比較麻煩,不選擇直接回車

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305): +5120M   ---- 這個地方我們要指定分區的大小,我們可以通過位元組的方式來指定,國為我的硬碟是10G,我劃分5G出來。

Command (m for help): p   ----- 現在再來檢視分區表

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdb1 1 623 5004216 83 Linux   ----- 劃分的第一個主分區資訊出來了

-----------------------------------------------------添加第二個主分區---------------------------------

Command (m for help): n   ----- 按n繼續劃分分區

Command action

e extended

p primary partition (1-4)

p    -----p再劃一個主分區

Partition number (1-4): 2   ----- 這裡輸入2表示第二個主分區

First cylinder (624-1305, default 624):

Using default value 624

Last cylinder or +size or +sizeM or +sizeK (624-1305, default 1305):   ----- 我們要把剩餘空間都給2,這裡直接回車

Using default value 1305

Command (m for help): p   ----- 再來檢視分區表

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdb1 1    623     5004216   83   Linux

/dev/sdb2 624   1305    5478165    83   Linux   ----- 劃分的兩個分區都出來了

指定磁盤的格式

  接下來要指這檔案系統的類型,現在的window分FAT32和NTFS是兩種比較常見的分區,那linux下面磁盤支援的格式就非常多了

注:下面的操作不要退出fdisk模式

Command (m for help): t     ----給分區指定表格

Partition number (1-4): 1    ----我們選編号為1的主分區

Hex code (type L to list codes): L   ---- 這裡我們不知道編号,可用L來檢視所有的分區格式

Linux-檔案系統管理

83 Linux   -----這個也就是我們剛劃分的兩個主分區的格式。

Hex code (type L to list codes): 83   ---- 如果不想改變原有格式直接輸入83回車

删除分區

  如果這時你發現自己的分區劃分的不合理,想删除某一個分區,重新劃分。

注:下面的操作不要退出fdisk模式

Command (m for help): d    ----删除分區

Partition number (1-4): 2    ----這裡選擇删除第2個分區

Command (m for help): P

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdb1 1 63 506016 83 Linux   ---- 我們劃分的兩個分區隻剩一個了

儲存退出

  當我們把分區分好以後,需要儲存退出才能儲存我們劃分的分區。其它非正常退出都不能儲存我們劃好的分區。

注:此處才是我們要退出fdisk模式的時候^_^

Command (m for help): w  --w是儲存退出,q是不儲存退出

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

磁盤格式話

  ok!分區已經完畢,下面是不是應該對硬碟進行一下格式化了

[[email protected] ~]# mk   -- 輸入mk,按兩下tab鍵,你會看到linux下面有許多分區指令

mkafmmap mkdosfs mkfs.ext2 mkisofs mktemp

mkbootdisk mke2fs mkfs.ext3 mklost+found mkxauth

mkcfm mkfifo mkfs.msdos mkmanifest mkzftree

mkcramfs mkfontdir mkfs.vfat mknod mkzonedb

mkdict mkfontscale mkhtmlindex mkSimNodeDir

mkdir mkfs mkhybrid mksock

mkdirhier mkfs.cramfs mkinitrd mkswap

  windwos下我們在格式化的時候,可以指定FAT32和NTFS,那麼linux下流行的格式為ext2和ext3 ,這裡我們對劃分好的第1個分區進行格式化,選用ext3的格式

[[email protected] ~]# mkfs.ext3  /dev/sdb1

mke2fs 1.35 (28-Feb-2004)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

626496 inodes, 1251054 blocks

62552 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=1283457024

39 block groups

32768 blocks per group, 32768 fragments per group

16064 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done

Creating journal (8192 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

挂載分區

  OK!現在硬碟分區也分好了,也進行了格式化,下面要使用這個分區了。在使用的時候我們需要對其進行挂載。就像前面我講的挂在CD光牒一樣。使用mount指令。

[[email protected] /]# mkdir /newsdb   -----我們在根目錄下建立一個做挂載點的目錄/newsdb

[[email protected] /]# mount /dev/sdb1 /newsdb/   ---- 然後把格式化好的第1個分區/dev/sdb1 挂載到/newsdb目錄下

[[email protected] /]# df  -h

Filesystem 容量 已用 可用 已用% 挂載點

/dev/sda1 9.7G 3.3G 5.9G 37% /

none 506M 0 506M 0% /dev/shm

/dev/sda2 2.9G 37M 2.7G 2% /hzh

/dev/sda5 6.2G 47M 5.9G 1% /web

/dev/sdb1 4.7G 42M 4.5G 1% /newsdb    -----看!我們的系統是不是多了一個盤,嘿嘿!!

如何解決每次重新開機都要挂載的問題                                                     

  

  上面的方式雖然完成了,但是有一個問題,我們重新開機系統後,新劃分的sdb1分區又不見了,還需要我們重新進行挂載。那麼如何解決這個問題,我們需要寫入配置檔案(/etc/fatab)

[[email protected] /]# vi /etc/fstab   ----先來看一下這個配置檔案裡都存放了些什麼東東

Linux-檔案系統管理

LABEL=/    /    ext3    defaults    1(/0)    1(0/1/2)

LABEL=/    實體分區名/卷标

  /       挂載點

  ext3       檔案系統

  defaults   預設設定

  1(/0)   是否檢測,O不檢測,1檢測

  1(0/1/2)  檢測順序,O不檢測,1優先檢測,2其次檢測

  我們知道了每一部分的含義,把我們建立的分區的資訊添加進去,那麼在系統重新開機的時候,就自動加載我們的硬碟分區,我們就不用手動加載了。

/dev/sdb1    /newsdb    ext3    defaults    1   2

增加虛拟記憶體的方式                                                               

  

  這個虛拟記憶體是什麼東東,此處就不解釋了,windows下面增加虛拟記憶體方式,相信你懂的!如果你不懂,我想些節你可以略過了。呵呵!

下面告訴你如何增加LINUX的虛拟記憶體。

1、

# mkdir /var/swap

# chmod 700 /var/swap

2、

# dd if=/dev/zero of=/var/swap/file.swp bs=1024 count=65526

3、

# mkswap /wap/swap/file.swp

4、

# vi /etc/fstab

/var/swap/file.swp swap swap defaults 0 0

5、

free

6、

swapon /var/swap/file.swp

7、

free

解釋一下思路:

1、mkdir 建立一個虛拟記憶體的目錄,chmod 讓這個目錄隻有管理者權限,

2、dd 一個強大的複制指令,神奇的linux可以建立一個空的檔案并指定它的大小,windows下面,檔案的大小決定于檔案中存放的内容的多少,如果檔案是空的,那麼這一檔案一定顯示0位元組。而linux卻可以建立空的又有大小的檔案,這個特性剛好滿足我們虛拟記憶體的要求。

3、mkswap 設定交換區,把file.swp設定成交換區。

4、編輯fstab檔案,把設定虛拟記憶體的檔案寫進去。

5、free 指令會顯示記憶體的使用情況,包括實體記憶體,虛拟的交換檔案記憶體,共享記憶體區段,以及系統核心使用的緩沖區等.

6、swapon開啟虛拟記憶體

from:http://blog.csdn.net/m13666368773/article/details/7615146

繼續閱讀