linux配置共享存儲
Ⅰ 如何設置linux的共享內存
我們可以修改shmmax內核參數,使SGA存在於一個共享內存段中。
通過修改/proc/sys/kernel/shmmax參數可以達到此目的。
[root@neirong root]# echo 1073741824 > /proc/sys/kernel/shmmax
[root@neirong root]# more /proc/sys/kernel/shmmax
1073741824這里設為1G。
對於shmmax文件的修改,系統重新啟動後會復位。可以通過修改 /etc/sysctl.conf 使更改永久化。
在該文件內添加以下一行 kernel.shmmax = 1073741824 這個更改在系統重新啟動後生效.
1、設置 SHMMAX
SHMMAX
參數定義共享內存段的最大尺寸(以位元組為單位)。在設置 SHMMAX 時,切記 SGA 的大小應該適合於一個共享內存段。 SHMMAX 設置不足可能會導致以下問題:
ORA-27123:unable to attach to shared memory segment
您可以通過執行以下命令來確定 SHMMAX 的值:
# cat /proc/sys/kernel/shmmax
33554432
SHMMAX 的默認值是 32MB 。我一般使用下列方法之一種將 SHMMAX 參數設為 2GB :
通過直接更改 /proc 文件系統,你不需重新啟動機器就可以改變 SHMMAX 的默認設置。我使用的方法是將以下命令放入 /etc/rc.local 啟動文件中:
# >echo "2147483648" > /proc/sys/kernel/shmmax
您還可以使用 sysctl 命令來更改 SHMMAX 的值:
# sysctl -w kernel.shmmax=2147483648
最後,通過將該內核參數插入到 /etc/sysctl.conf 啟動文件中,您可以使這種更改永久有效:
# echo "kernel.shmmax=2147483648" >> /etc/sysctl.conf
2、設置 SHMMNI
我們現在來看 SHMMNI 參數。這個內核參數用於設置系統范圍內共享內存段的最大數量。該參數的默認值是 4096 。這一數值已經足夠,通常不需要更改。
您可以通過執行以下命令來確定 SHMMNI 的值:
# cat /proc/sys/kernel/shmmni
4096
3、設置 SHMALL
最後,我們來看 SHMALL 共享內存內核參數。該參數控制著系統一次可以使用的共享內存總量(以頁為單位)。簡言之,該參數的值始終應該至少為:
ceil(SHMMAX/PAGE_SIZE)
SHMALL 的默認大小為 2097152 ,可以使用以下命令進行查詢:
# cat /proc/sys/kernel/shmall
2097152
SHMALL 的默認設置對於我們的 Oracle9 i RAC 安裝來說應該足夠使用。
注意: 在 i386 平台上 Red Hat Linux 的 頁面大小 為 4096 位元組。但是,您可以使用 bigpages ,它支持配置更大的內存頁面尺寸。
Ⅱ 共享內存 linux下怎麼跑
linux 共享內存實現
說起共享內存,一般來說會讓人想起下面一些方法:
1、多線程。線程之間的內存都是共享的。更確切的說,屬於同一進程的線程使用的是同一個地址空間,而不是在不同地址空間之間進行內存共享;
2、父子進程間的內存共享。父進程以MAP_SHARED|MAP_ANONYMOUS選項mmap一塊匿名內存,fork之後,其子孫進程之間就能共享這塊內存。這種共享內存由於受到進程父子關系的限制,一般較少使用;
3、mmap文件。多個進程mmap到同一個文件,實際上就是大家在共享文件pagecache中的內存。不過文件牽涉到磁碟的讀寫,用來做共享內存顯然十分笨重,所以就有了不跟磁碟扯上關系的內存文件,也就是我們這里要討論的tmpfs和shmem;
tmpfs是一套虛擬的文件系統,在其中創建的文件都是基於內存的,機器重啟即消失。
shmem是一套ipc,通過相應的ipc系統調用shmget能夠以指定key創建一塊的共享內存。需要使用這塊內存的進程可以通過shmat系統調用來獲得它。
雖然是兩套不同的介面,但是在內核裡面的實現卻是同一套。shmem內部掛載了一個tmpfs分區(用戶不可見),shmget就是在該分區下獲取名為"SYSV${key}"的文件。然後shmat就相當於mmap這個文件。
所以我們接下來就把tmpfs和shmem當作同一個東西來討論了。
tmpfs/shmem是一個介於文件和匿名內存之間的東西。
一方面,它具有文件的屬性,能夠像操作文件一樣去操作它。它有自己inode、有自己的pagecache;
另一方面,它也有匿名內存的屬性。由於沒有像磁碟這樣的外部存儲介質,內核在內存緊缺時不能簡單的將page從它們的pagecache中丟棄,而需要swap-out;(參閱《linux頁面回收淺析》)
對tmpfs/shmem內存的讀寫,就是對pagecache中相應位置的page所代表的內存進行讀寫,這一點跟普通的文件映射沒有什麼不同。
如果進程地址空間的相應位置尚未映射,則會建立到pagecache中相應page的映射;
如果pagecache中的相應位置還沒有分配page,則會分配一個。當然,由於不存在磁碟上的源數據,新分配的page總是空的(特別的,通過read系統調用去讀一個尚未分配page的位置時,並不會分配新的page,而是共享ZERO_PAGE);
如果pagecache中相應位置的page被回收了,則會先將其恢復;
對於第三個「如果」,tmpfs/shmem和普通文件的page回收及其恢復方式是不同的:
page回收時,跟普通文件的情況一樣,內核會通過prio_tree反向映射找到映射這個page的每一個pagetable,然後將其中對應的pte清空。
不同之處是普通文件的page在確保與磁碟同步(如果page為臟的話需要刷回磁碟)之後就可以丟棄了,而對於tmpfs/shmem的page則需要進行swap-out。
注意,匿名page在被swap-out時,並不是將映射它的pte清空,而是得在pte上填寫相應的swap_entry,以便知道page被換出到哪裡去,否則再需要這個page的時候就沒法swap-in了。
而tmpfs/shmem的page呢?pagetable中對應的pte被清空,swap_entry會被存放在pagecache的radix_tree的對應slot上。
等下一次訪問觸發pagefault時,page需要恢復。
普通文件的page恢復跟page未分配時的情形一樣,需要新分配page、然後根據映射的位置重新從磁碟讀出相應的數據;
而tmpfs/shmem則是通過映射的位置找到radix_tree上對應的slot,從中得到swap_entry,從而進行swap-in,並將新的page放回pagecache;
這里就有個問題了,在pagecache的radix_tree的某個slot上,怎麼知道裡面存放著的是正常的page?還是swap-out後留下的swap_entry?
如果是swap_entry,那麼slot上的值將被加上RADIX_TREE_EXCEPTIONAL_ENTRY標記(值為2)。swap_entry的值被左移兩位後OR上RADIX_TREE_EXCEPTIONAL_ENTRY,填入slot。
也就是說,如果${slot}&RADIX_TREE_EXCEPTIONAL_ENTRY!=0,則它代表swap_entry,且swap_entry的值是${slot}>>2;否則它代表page,${slot}就是指向page的指針,當然其值可能是NULL,說明page尚未分配。
那麼顯然,page的地址值其末兩位肯定是0,否則就可能跟RADIX_TREE_EXCEPTIONAL_ENTRY標記沖突了;而swap_entry的值最大隻能是30bit或62bit(對應32位或64位機器),否則左移兩位就溢出了。
最後以一張圖說明一下匿名page、文件映射page、tmpfs/shmempage的回收及恢復過程:
Ⅲ 如何在linux系統里訪問windows的磁碟共享文件
1、首先,通過DB server將SAN存儲中開辟一個10T的存儲空間,並將其格式化為NTFS的文件系統。此時,這個10T的存儲區域相當於這個DB server的一個磁碟,並且文件系統為NTFS。
2、下面就是如何談論的就是如何在linux系統中,訪問windows的磁碟?
這里採用的方案是通過在linux上安裝samba和mount。以下是具體的實現方法:
(1)首先,需要Windows上對磁碟進行網路映射。將Windows的磁碟共享即可(屬性-共享-高級共享,增加一個共享名即可)
在這里我們是將Window下的F盤進行共享,通過增加一個共享名稱為Share。
(2)然後,在Linux下安裝一些小的功能:
yum install mount
yum install samba
(3)mount -t cifs -o username=administrator,password=Passw0rd! //192.168.2.246/Share /mnt/share
其中,//192.168.2.246/Share代表網路映射位置(就是你windows機器的ip地址和共享文件夾名), /mnt/share代表Linux下的文件夾位置(需要實現創建一個空的文件夾)。
(4)如果每次開機就希望該分區已經載入了,那麼可以執行如下的步驟:
編輯文件:gedit /etc/fstab 或者 vi /etc/fstab
在文件末尾添加一行:
//192.168.2.246/Share /mnt/share cifs defaults,auto,username=administrator,password=Passw0rd!
其中username和password就是Linux的用戶名密碼
然後重啟或者輸入sudo mount -a即可~
(5)最後可以通過執行:df -h 來查看是否載入成功。更多Linux介紹可查看《Linux就該這么學》。
Ⅳ 兩台linux配置連接共享存儲後,fdisk -l的結果不一致該咋辦
拔掉A機, 看看B機上的情況. 先確認 每台主機分別可以認到存儲, 然後再一起接上去, 看看兩台機器都存在的情況. 另外, multipath最後先別裝. 有時候, 物理的鏈路要先確認工作正常, 再繼續下一步.
Ⅳ linux怎樣設置共享緩存
當在Linux下頻繁存取文件後,物理內存會很快被用光,當程序結束後,內存不會被正常釋放,而是一直作為caching。這個問題,貌似有不少人在問,不過都沒有看到有什麼很好解決的辦法。那麼我來談談這個問題。
一、通常情況
先來說說free命令:
# free -m
total used free shared buffers cached
Mem: 249 163 86 0 10 94
-/+ buffers/Cache: 58 191
SWAP: 511 0 511
其中:
total 內存總數
used 已經使用的內存數
free 空閑的內存數
shared 多個進程共享的內存總額
buffers buffer Cache和cached Page Cache 磁碟緩存的大小
-buffers/cache (已用)的內存數:used - buffers - cached
+buffers/cache(可用)的內存數:free + buffers + cached
可用的memory=free memory+buffers+cached
有了這個基礎後,可以得知,我現在used為163MB,free為86MB,buffer和cached分別為10MB,94MB。
那麼我們來看看,如果我執行復制文件,內存會發生什麼變化。
# cp -r /etc ~/test/
# free -m
total used free shared buffers cached
Mem: 249 244 4 0 8 174
-/+ buffers/cache: 62 187
Swap: 511 0 511
在我命令執行結束後,used為244MB,free為4MB,buffers為8MB,cached為174MB,天吶,都被cached吃掉了。別緊張,這是為了提高文件讀取效率的做法。
為了提高磁碟存取效率,Linux做了一些精心的設計,除了對dentry進行緩存(用於VFS,加速文件路徑名到inode的轉換),還採取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁碟塊的讀寫,後者針對文件inode的讀寫。這些Cache有效縮短了 I/O系統調用(比如read,write,getdents)的時間。
那麼有人說過段時間,linux會自動釋放掉所用的內存。等待一段時間後,我們使用free再來試試,看看是否有釋放?
# free -m
total used free shared buffers cached
Mem: 249 244 5 0 8 174
-/+ buffers/cache: 61 188
Swap: 511 0 511
似乎沒有任何變化。(實際情況下,內存的管理還與Swap有關)那麼我能否手動釋放掉這些內存呢?回答是可以的!
Ⅵ 如何在Linux下用multipath給Oracle RAC資料庫配置共享存儲
multipath 只是個多路徑軟體。
配置文件:/etc/multipath.conf
查看磁碟:multipath -ll
掃描磁碟: multipath -v2
在使用時,一般用/etc/mapper/mpath{n}塊設備。
Ⅶ linux伺服器裝了oracle,共享存儲是什麼意思簡單舉個例子說明下
共享存儲主要用於RAC架構下的
單節點資料庫,如果實例宕機了,如果一個業務、在實例上面,那麼這個業務就中斷了。這個時候系統就不具有可用性了,那麼這個時候單節點的可用性是很差的。
RAC不能夠解決在數據的安全,盡管有多個實例,但是只有一份數據文件,這樣只要數據文件損壞了,那麼整個資料庫就損壞了。
Ⅷ 什麼是ISCSI,及Linux下怎麼樣通過ISCSI實現共享存儲
iSCSI(iSCSI
=
internet
Small
Computer
System
Interface
)小型計算機介面。是由IEETF開發的網路存儲標准,目的是為了用IP協議將存儲設備連接在一起。通過在IP網上傳送SCSI命令和數據,ISCSI推動了數據在網際之間的傳遞,同時也促進了數據的遠距離管理。由於其出色的數據傳輸能力,ISCSI協議被認為是促進存儲區域網(SAN)市場快速發展的關鍵因素之一。因為IP網路的廣泛應用,
ISCSI能夠在LAN、WAN甚至internet上進行數據傳送,使得數據的存儲不再受地域的現在。
ISCSI技術的核心是在TCP/IP網路上傳輸SCSI協議,是指用TCP/IP報文、和ISCSI報文封裝SCSI報文,使得SCSI命令和數據可以在普通乙太網絡上進行傳輸。
Ⅸ linux連接共享存儲區命令是什麼
linux客戶端:iscsi
#yum -y install iscsi*
發現iscsi存儲
#iscsiadm -m discovery --type sendtargets --portal 192.168.1.200:3260
192.168.1.200:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz
建立連接
#iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -p 192.168.1.200:3260 -l
刪除連接(所有)
iscsiadm -m node -U all
nfs:
mount 10.168.55.185:/alidata/www /alidata/www
Ⅹ 虛擬機是linux5.8,能配置rhcs么,有共享存儲
這四種方式:
1.在選定磁碟上刪除分區並創建默認分區結構:如果選用這種結構,硬碟會整個被linux佔用,並將硬碟里的全部分區刪除後一安裝程序默認的方式重新分區。
2.在選定驅動上刪除linux分區並創建默認的分區:在這塊硬碟上,只要linux的分區會被刪除,然後再以安裝程序默認的方式重新創建分區。
3.使用選定驅動器中的空餘空間並創建默認的分區結構:如果你的這款硬碟還有未被分區的空間,那麼使用這個選項後,系統不會更改原有的分區,只是會在空餘分區上創建默認分區。
4.建議自定義的分區:不是用安裝程序默認的分區方式,自定義分區方式。這個一般就是我們需要的。
仔細看就回明白其中區別了。