linux那點事兒(七)—-檔案系統管理

來源:互聯網
上載者:User

 

  如果你是一位忠實的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和隨身碟等所有裝置識別為裝置檔案,並嵌入到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.swpswapswapdefaults00

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開啟虛擬記憶體

7、

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.