小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

文件存儲之-內(nèi)存文件系統(tǒng)

 云將東游 2018-06-25

我們都知道,對于單臺服務(wù)器來說,除了 CPU ,內(nèi)存就是我們存儲數(shù)據(jù)最快的設(shè)備。如果可以把數(shù)據(jù)直接存儲在內(nèi)存中,對于性能的提升就不言而喻了。那么我們先來講講如何使用內(nèi)存來存儲文件。

首先,我們先來看看操作系統(tǒng),在你的系統(tǒng)中執(zhí)行 df –h 查看系統(tǒng)的磁盤使用。 

[root@test conf]#netstat -na | grep  192.168.99.159:80
tcp        0     0 192.168.99.159:80       192.168.99.50:24584     ESTABLISHED

 

文件存儲之-內(nèi)存文件系統(tǒng)tmpfs

你會發(fā)現(xiàn)除了我們正常的磁盤分區(qū)掛載點外,系統(tǒng)還有一種叫做 devtmpfs 的文件系統(tǒng),和多個 tmpfs。那么什么是 tmpfs 呢?

 

 

tmpfs 簡介

 

tmpfs 是 Linux/Unix 系統(tǒng)上的一種基于內(nèi)存的文件系統(tǒng)。 tmpfs 可以使用您的內(nèi)存或 swap 分區(qū)來存儲文件。在 Redhat/CentOS 等 linux 發(fā)行版中默認大小為物理內(nèi)存的一半。例如上面的案例中,我執(zhí)行 df -h 的服務(wù)器是 64G 內(nèi)存。

 

首先我們要說明, tmpfs 既可以使用物理內(nèi)存,也可以使用交換分區(qū),因為 tmpfs 使用的是 “ 虛擬內(nèi)存 ” 。 Linux 內(nèi)核的虛擬內(nèi)存同時來源于物理內(nèi)存和交換分區(qū),主要由內(nèi)核中的 VM 子系統(tǒng)進行調(diào)度,進行內(nèi)存頁和 SWAP 的換入和換出操作, tmpfs 自己并不知道這些頁面是在交換分區(qū)還是在物理內(nèi)存中。

 

 

tmpfs 使用

 

如果你想使用 tmpfs ,那么最簡單的辦法就是直接將文件存放在 /dev/shm 下,雖然這并不是推薦的方案,因為 /dev/shm 是給共享內(nèi)存分配的,共享內(nèi)存是進程間通信的一種方式。

 

下面我們來做一個小實驗,檢驗下 tmpfs 的特性,首先我們可以看到我目前的系統(tǒng) /dev/shm 的使用是 12K ,可用的內(nèi)存為 62237 。 

[root@linux-node1 ~]# df -h
Filesystem     Size  Used Avail Use% Mounted on
/dev/sda3      1.1T  2.8G  1.1T  1% /
devtmpfs        32G     0   32G  0% /dev
tmpfs           32G   12K   32G  1% /dev/shm

 

 

**省略部分輸出** 

[root@test conf]#netstat -na | grep  192.168.99.159:80
tcp        0     0 192.168.99.159:80       192.168.99.50:24584     ESTABLISHED

 

這里我準備了一個 81M 的文件,我準備把它放入到 tmpfs 中。

# ls -lh /usr/local/src/
total 81M
-rw-r--r-- 1 root root 81M Apr 14 22:46go1.6.1.linux-amd64.tar.gz
# cp/usr/local/src/go1.6.1.linux-amd64.tar.gz /dev/shm/

 

下面我們再來看磁盤大小和內(nèi)存大小??梢园l(fā)現(xiàn) /dev/shm 的大小變成了 81M ,可用內(nèi)存變成了62156 。

[root@linux-node1 ~]# df -h
Filesystem     Size  Used Avail Use% Mounted on
/dev/sda3      1.1T  2.8G  1.1T  1% /
devtmpfs        32G     0   32G  0% /dev
tmpfs           32G   81M  32G   1% /dev/shm

 

 

**省略部分輸出** 

[root@linux-node1 ~]# free -m
              total        used        free      shared buff/cache   available
Mem:         64152        1445       60386         123        2320       62156
Swap:        16383           0       16383

 

我們來做一個小學(xué)數(shù)學(xué)題

  • 可用內(nèi)存: 62237-62156=81 ,證明我們放置的 81M 的文件是使用了內(nèi)存空間。

  • 共享內(nèi)存: 123-42=81 ,證明 /dev/shm 是 Linux 給共享內(nèi)存使用的

好的,現(xiàn)在你可以將這個 81M 的文件移動走,會發(fā)現(xiàn)內(nèi)存使用率恢復(fù)如初,可以證明 tmpfs 是動態(tài)變化的,數(shù)據(jù)被移除后,所占用的虛擬內(nèi)存也會被釋放,這里我不在截圖了,大家可以自行實驗。

 

tmpfs 掛載

 

與其他文件系統(tǒng)不同, tmpfs 無需要建立或格式化,只需要直接使用 mount 掛載就會自動被建立: 

# mount -t tmpfs tmpfs /mnt/tmp
# df -h
Filesystem     Size  Used Avail Use% Mounted on
/dev/sda3      1.1T  2.7G  1.1T  1% /
**省略部分輸出**

 

tmpfs            32G     0  32G   0% /mnt/tmp

 

現(xiàn)在我們就掛載了一個 tmpfs 文件系統(tǒng)到 /mnt/tmp 目錄下,默認它是系統(tǒng)內(nèi)存的一半,你可以自由的使用它,那么我們第一個問題就是,如何能夠自定義分配的內(nèi)存大小, tmpfs 支持相關(guān)的選項來讓用戶自定義 

Linux 上的 tmpfs 支援三個掛載選項: 

  • size - 設(shè)定分配給此 tmpfs 文件系統(tǒng)的內(nèi)存上限,默認是內(nèi)存的一半。也可以在尾加上百分比 (%) 表示占用內(nèi)存的百分比, 0 表示沒有上限。

  • nr_blocks - 和 size 一樣設(shè)定分配內(nèi)存上限,但單位為 PAGE_CACHE_SIZE ( 默認為 4 KiB) 。

  • nr_inodes - 設(shè)定此 tmpfs 文件系統(tǒng)的 inode 上限,也就是限制可以存放文件的總數(shù)。

以上三個選項都可以在數(shù)值后面加上 k 、 m 、 g 來表示單位。

你可以在掛載的時候直接使用這些選項 

# mount-t tmpfs -o size=1G tmpfs /mnt/mytmpfs 

也可以在掛載后,重新掛載 (remount) tmpfs 即可改變內(nèi)存上限: 

# mount -o remount,size=512m/mnt/tmp

 

tmpfs 的優(yōu)勢 

下面我們來總結(jié)一下 tmpfs 的優(yōu)勢,其實我們已經(jīng)證明過了。 

1.存儲空間動態(tài)變化

 

在 tmpfs 存放的文件是動態(tài)占用內(nèi)存空間的,隨著文件占用空間的增大而增大文件系統(tǒng),文件被刪除時,動態(tài)地減小文件系統(tǒng)空間并釋放內(nèi)存。這一切都是 tmpf 自動處理的。

 

2.速度

 

天下武功,唯快不破。 tmpfs 的另一個主要的好處是它閃電般的速度。因為典型的 tmpfs 文件系統(tǒng)會完全駐留在內(nèi)存中,讀寫幾乎可以是瞬間的。即使用了一些交換分區(qū),性能仍然是非常快的。

 

3.沒有持久性

 

當(dāng)你喜歡一個東西的時候,它的缺點在你眼里也會是優(yōu)點,沒有持久性其實是 tmpfs 的缺點,所以一定不要把系統(tǒng)關(guān)機或者重啟后還需要保存的數(shù)據(jù)放入 tmpfs 。因為虛擬內(nèi)存本質(zhì)上就是易失的,但正是這種特性,實際上可能不是一件壞事。它讓 tmpfs 成為一個保存您不想在系統(tǒng)重啟后保留的數(shù)據(jù)的卓越的文件系統(tǒng)。

 

tmpfs 應(yīng)用案例

以下是使用 tmpfs 文件系統(tǒng)的一些應(yīng)用示例,一般 tmpfs 內(nèi)存文件系統(tǒng)在做 web 緩存, cache,臨時文件存儲時會對 web 訪問有很好的加速作用,從而提高網(wǎng)站訪問的速度。

 

1. 反向代理緩存中,緩存目錄使用 tmpfs

 

例如下面是 Nginx 作為反向代理緩存的配置片段,可以將 /data/cdn_cache 目錄掛載為 tmpfs 。 

proxy_temp_path  /data/cdn_cache/proxy_temp_dir;
proxy_cache_path /data/cdn_cache/proxy_cache_dirlevels=1:2 keys_zone=cache_one:50m inactive=1d

 

將 php 的 session 文件放在 tmpfs 

 

PHP 保存 seesion 的方法很簡單 , 只要修改 php.ini 就行了,首先掛載好 tmpfs ,然后修改配置文件如下: 

session.save_path = “/data/php_session”

 

3. 將服務(wù)的 socket 文件放在 tmpfs 

 

例如在 Web 應(yīng)用中,我們有 PHP 的 FastCGIsocket 、 MySQL 的 mysql.sock 等等類似的socket 文件,都可以放在 tmpfs 掛載的目錄下提高性能。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多