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與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命令進行創建。軟盤、光盤和硬盤等典型設備文件在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下如何查看呢,其實也非常簡單,一個命令的事兒


[root@bogon ~]# 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命令進行查看。

root@fnngj-H24X:/hzh# du -h test.test   ------查看文件的大小
4.0K test.test


root@fnngj-H24X:/# du -sh /etc   ------查看目錄的大小
7.1M /etc

 

file判斷文件類型

我們知道linux下的文件不是同過後綴名來確定類型的,如果剛好某個文件沒有定義後綴名,我們可以通過file命令來查看後綴名。

root@fnngj-H24X:/hzh# file test.test 
test.test: ASCII text

 


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

 

 

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

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

劃分分區(fdisk)
創建文件系統(mkfs)
嘗試掛載(mount)
寫入配置文件(/etc/fstab)

 

查看新添加分區的硬盤信息
[root@bogon ~]# 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命令沒有任何信息,那問題就大了,你的系統沒有識別新添加胡硬盤。

 

對硬盤進行分區

  下面先看一下我們添加的第二塊硬盤的一些信息。

[root@bogon ~]# 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
[root@bogon ~]# 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


下面開始真正的對硬盤進行分區
[root@bogon ~]# 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來查看所有的分區格式

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!分區已經完畢,下面是不是應該對硬盤進行一下格式化了

[root@bogon ~]# 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的格式
[root@bogon ~]# 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!現在硬盤分區也分好了,也進行了格式化,下面要使用這個分區了。在使用的時候我們需要對其進行掛載。就像前面我講的掛在光盤一樣。使用mount命令。

[root@bogon /]# mkdir /newsdb   -----我們在根目錄下創建一個做掛載點的目錄/newsdb

[root@bogon /]# mount /dev/sdb1 /newsdb/   ---- 然後把格式化好的第1個分區/dev/sdb1 掛載到/newsdb目錄下
[root@bogon /]# 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

[root@bogon /]# vi /etc/fstab   ----先來看一下這個配置文件裏都存放了些什麼東東

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章