導航:首頁 > 文件類型 > 套接字文件linux

套接字文件linux

發布時間:2023-03-06 19:31:57

linux文件類型有哪些

linux文件類型:管道文件、鏈接文件、普通文件、目錄文件、套接字文件、塊設備、字元設備

㈡ Linux常見的文件類型有哪些Linux入門

在Linux系統中,一切皆為文件,所以文件類型也有很多種,那麼Linux操作系統有什麼文件類型?以下是詳細的內容介紹。

第一種:普通文件。就是一般存取的文件,由ls-al顯示出來的屬性中,第一個屬性為 [-];另外,依照文件的內容,又大致分為:

1、純文本文件:這是Unix系統中最多的一種文件類型,之所以稱為純文本文件,是因為內容可以直接讀到數據,比如數字、字母等。設置文件幾乎都屬於這種文件類型。

2、二進制文件:系統其實僅認識且可以執行二進制文件。Linux中的可執行文件就是這種格式的。

3、數據格式的文件:有些程序在運行過程中,會讀取某些特定格式的文件,那些特定格式的文件也可以稱為數據文件。

第二種:目錄文件。就是目錄,第一個屬性為[d]。

第三種:連接文件。類似Windows下的快捷方式,第一個屬性為[l]。

第四種:設備文件。與系統外設及存儲等相關的一些文件,通常都集中在/dev目錄,又分為兩種。

1、塊設備文件:就是存儲數據以供系統存取的介面設備,簡單而言就是硬碟,第一個屬性為 [b]。

2、字元設備文件:即串列埠的介面設備,比如鍵盤、滑鼠等,第一個屬性為 [c]。

第五種:套接字文件:這類文件通常用在網路數據連接,可以啟動一個程序來監聽客戶端的要求,客戶端就可以通過套接字來進行數據通信。第一個屬性為[s],常在

/var/run目錄中看到這種文件類型。

第六種:管道文件:FIFO也是一種特殊的文件類型,它主要的目的是,解決多個程序同時存取一個文件所造成的錯誤,FIFO是first-in-first-out的縮寫,第一個屬性是[p]。

㈢ linux手冊翻譯——socket(2)


socket - 創建一個用於通信的端點


socket() 創建用於通信的端點並返回引用該端點的文件描述符。 成功調用時返回的文件描述符,將是當前沒有被進程打開的所有文件描述符中編號最低的。

domain 參數指定一個通信域; 以決定用於通信的協議族。 這些系列在 <sys/socket.h> 中定義。 目前 Linux 內核理解的格式包括:

當然最常用的當然是 AF_INET ,即IPV4。
上述地址族的更多詳細信息以及其他幾個地址族的信息可以在 address_families(7) 中找到。

套接字具有指定的 type ,它指定了通信語義。 當前定義的類型有:

某些套接字類型可能不會被所有協議族實現。
從 Linux 2.6.27 開始,type 參數有第二個用途:除了指定套接字類型之外,它還可以包含以下任何值的按位或,以修改 socket() 的行為:

老朋友了,上述兩個,第一個是非阻塞,第二個是執行exec時自動關閉。

protocol 指定要與套接字一起使用的特定協議。 通常只存在一個協議來支持給定協議族中的特定套接字類型 ,在這種情況下,protocol 可以指定為 0。但是,可能存在許多協議,在這種情況下,必須在此指定特定協議方式。 特定協議對應的編號可以查看文件: /etc/protocols

SOCK_STREAM 類型的套接字是全雙工位元組流。 它們不保留記錄邊界。 流套接字必須處於連接狀態,然後才能在其上發送或接收任何數據。 到另一個套接字的連接是通過 connect(2) 調用創建的。 連接後,可以使用 read(2) 和 write(2) 調用或 其變體send(2) 和 recv(2) 的來傳輸數據。 當會話完成時,可以執行 close(2)。 帶外數據也可以按照 send(2) 中的描述進行傳輸,並按照 recv(2) 中的描述進行接收。

實現 SOCK_STREAM 的通信協議確保數據不會丟失或重復。 如果協議的緩沖空間中存在一條數據在合理的時間內不能成功傳輸,則認為該連接已失效。 當 SO_KEEPALIVE 在套接字上啟用時,將會以特定於協議的方式檢查另一端是否仍然存在。 如果進程在損壞的流上發送或接收,則會引發 SIGPIPE 信號; 這會導致不處理信號的進程退出。 SOCK_SEQPACKET 套接字使用與 SOCK_STREAM 套接字相同的系統調用。 唯一的區別是 read(2) 調用將只返回請求的數據量,到達數據包中剩餘的其他數據都將被丟棄。 傳入數據報中的所有消息邊界也被保留。

SOCK_DGRAM 和 SOCK_RAW 套接字允許將數據報發送到在 sendto(2) 調用中指定的通信者。 數據報通常用 recvfrom(2) 接收,它返回下一個數據報及其發送者的地址。

SOCK_PACKET 是一種過時的套接字類型,用於直接從設備驅動程序接收原始數據包。 改用 packet(7)。

An fcntl(2) F_SETOWN operation can be used to specify a process or process group to receive a SIGURG signal when the out-of-band data arrives or SIGPIPE signal when a SOCK_STREAM connection breaks unexpectedly. This operation may also be used to set the process or process group that receives the I/O and asynchronous notification of I/O events via SIGIO. Using F_SETOWN is equivalent to an ioctl(2) call with the FIOSETOWN or SIOCSPGRP argument.

When the network signals an error condition to the protocol mole (e.g., using an ICMP message for IP) the pending error flag is set for the socket. The next operation on this socket will return the error code of the pending error. For some protocols it is possible to enable a per-socket error queue to retrieve detailed information about the error; see IP_RECVERR in ip(7).

套接字的操作由套接字選項控制。 這些選項在 <sys/socket.h> 中定義。 函數setsockopt(2) 和getsockopt(2) 用於設置和獲取選項。對於選項的描述,詳見socket(7).

成功時,將返回新套接字的文件描述符。 出錯時,返回 -1,並設置 errno 以指示錯誤。


POSIX.1-2001, POSIX.1-2008, 4.4BSD.

The SOCK_NONBLOCK and SOCK_CLOEXEC flags are Linux-specific.

socket() appeared in 4.2BSD. It is generally portable to/from non-BSD systems supporting clones of the BSD socket layer (including System V variants).


在 4.x BSD 下用於協議族的清單常量是 PF_UNIX、PF_INET 等,而 AF_UNIX、AF_INET 等用於地址族。 但是,BSD 手冊頁已經承諾:「協議族通常與地址族相同」,隨後的標准到處都使用 AF_*。

㈣ linux的七種文件類型是哪七種呢

LINUX中的七種文件類型
d 目錄文件。
l 符號鏈接(指向另一個文件,類似於瘟下的快捷方式)。
s 套接字文版件。
b 塊設權備文件,二進制文件。
c 字元設備文件。
p 命名管道文件。
- 普通文件,或更准確地說,不屬於以上幾種類型的文件

㈤ linux手冊翻譯——socket(7)

socket - Linux 套接字介面

本手冊頁描述了 Linux 網路套接字層用戶介面。 套接字是用戶進程和內核中網路協議棧之間的統一介面。 協議模塊分為協議族(protocol families)(如 AF_INET、AF_IPX 和 AF_PACKET)和套接字類型(socket types)(如 SOCK_STREAM 或 SOCK_DGRAM)。 有關families和types的更多信息,請參閱 socket(2) 。

用戶進程使用這些函數來發送或接收數據包以及執行其他套接字操作。 有關更多信息,請參閱它們各自的手冊頁。

socket(2) 創建套接字,connect(2) 將套接字連接到遠程套接字地址,bind(2) 函數將套接字綁定到本地套接字地址,listen(2) 告訴套接字應接受新連接, accept(2) 用於獲取具有新傳入連接的新套接字。 socketpair(2) 返回兩個連接的匿名套接字(僅為少數本地families如 AF_UNIX 實現)

send(2)、sendto(2) 和sendmsg(2) 通過套接字發送數據,而recv(2)、recvfrom(2)、recvmsg(2) 從套接字接收數據。 poll(2) 和 select(2) 等待數據到達或准備好發送數據。 此外,還可以使用 write(2)、writev(2)、sendfile(2)、read(2) 和 readv(2) 等標准 I/O 操作來讀取和寫入數據。

getsockname(2) 返回本地套接字地址, getpeername(2) 返回遠程套接字地址。 getsockopt(2) 和 setsockopt(2) 用於設置或獲取套接字層或協議選項。 ioctl(2) 可用於設置或讀取一些其他選項。

close(2) 用於關閉套接字。 shutdown(2) 關閉全雙工套接字連接的一部分。

套接字不支持使用非零位置查找或調用 pread(2) 或 pwrite(2)。

通過使用 fcntl(2) 在套接字文件描述符上設置 O_NONBLOCK 標志,可以在套接字上執行非阻塞 I/O。 然後所有會阻塞的操作(通常)將返回 EAGAIN(操作應稍後重試); connect(2) 將返回 EINPROGRESS 錯誤。 然後用戶可以通過 poll(2) 或 select(2) 等待各種事件。

如果不使用poll(2) 和 select(2) ,還讓內核通過 SIGIO 信號通知應用程序有關事件的信息。 為此,必須通過 fcntl(2) 在套接字文件描述符上設置 O_ASYNC 標志,並且必須通過 sigaction(2) 安裝有效的 SIGIO 信號處理程序。 請參閱下面的信號討論。

每個套接字域(families)都有自己的套接字地址格式,具有特定於域的地址結構。 這些結構的首欄位都是整數類型的「家族」欄位(類型為 sa_family_t),即指出自己的套接字域或者說是protocol families。 這允許對所有套接字域可以使用統一的系統調用(例如,connect(2)、bind(2)、accept(2)、getsockname(2)、getpeername(2)),並通過套接字地址來確定特定的域。

為了允許將任何類型的套接字地址傳遞給套接字 API 中的介面,定義了類型 struct sockaddr。 這種類型的目的純粹是為了允許將特定於域的套接字地址類型轉換為「通用」類型,以避免編譯器在調用套接字 API 時發出有關類型不匹配的警告。
struct sockaddr 以及在AF_INET常用的地址結構struct sockaddr_in如下所示,sockaddr_in.sin_zero是佔位符:

此外,套接字 API 提供了數據類型 struct sockaddr_storage。 這種類型適合容納所有支持的特定於域的套接字地址結構; 它足夠大並且正確對齊。 (特別是它足夠大,可以容納 IPv6 套接字地址。)同struct sockaddr一樣,該結構體包括以下欄位,可用於標識實際存儲在結構體中的套接字地址的類型: sa_family_t ss_family;
sockaddr_storage 結構在必須以通用方式處理套接字地址的程序中很有用(例如,必須同時處理 IPv4 和 IPv6 套接字地址的程序)。

下面列出的套接字選項可以使用setsockopt(2) 設置並使用getsockopt(2) 讀取。

當寫入已關閉(由本地或遠程端)的面向連接的套接字時,SIGPIPE 被發送到寫入進程並返回 EPIPE。 當寫調用指定 MSG_NOSIGNAL 標志時,不發送信號。

當使用 FIOSETOWN fcntl(2) 或 SIOCSPGRP ioctl(2) 請求時,會在 I/O 事件發生時發送 SIGIO。 可以在信號處理程序中使用 poll(2) 或 select(2) 來找出事件發生在哪個套接字上。 另一種方法(在 Linux 2.2 中)是使用 F_SETSIG fcntl(2) 設置實時信號; 實時信號的處理程序將使用其 siginfo_t 的 si_fd 欄位中的文件描述符調用。 有關更多信息,請參閱 fcntl(2)。

在某些情況下(例如,多個進程訪問單個套接字),當進程對信號做出反應時,導致 SIGIO 的條件可能已經消失。 如果發生這種情況,進程應該再次等待,因為 Linux 稍後會重新發送信號。

核心套接字網路參數可以通過目錄 /proc/sys/net/core/ 中的文件訪問。

These operations can be accessed using ioctl(2):

error = ioctl(ip_socket, ioctl_type, &value_result);

Valid fcntl(2) operations:

Linux assumes that half of the send/receive buffer is used for internal kernel structures; thus the values in the corresponding /proc files are twice what can be observed on the wire. Linux will allow port reuse only with the SO_REUSEADDR option when this option was set both in the previous program that performed a bind(2) to the port and in the program that wants to reuse the port. This differs from some implementations (e.g., FreeBSD) where only the later program needs to set the SO_REUSEADDR option. Typically this difference is invisible, since, for example, a server program is designed to always set this option.

㈥ Linux 進程間套接字通信(Socket)基礎知識

姓名:羅學元    學號:21181214375    學院:廣州研究院

【嵌牛導讀】Linux進程間套接字通信基礎

【嵌牛鼻子】Linux 進程間套接字及通信介紹

【嵌牛提問】Linux進程間套接字包含哪些內容,如何實現通信

一、套接字(Socket)通信原理

套接字通信允許互聯的位於不同計算機上的進程之間實現通信功能。

二、套接字的屬性

套接字的特性由3個屬性確定,它們分別是:域、類型和協議。

1. 套接字的域

它指定套接字通信中使用的網路介質,最常見的套接字域是AF_INET,它指的是Internet網路。當客戶使用套接字進行跨網路的連接時,它就需要用到伺服器計算機的IP地址和埠來指定一台聯網機器上的某個特定服務,所以在使用socket作為通信的終點,伺服器應用程序必須在開始通信之前綁定一個埠,伺服器在指定的埠等待客戶的連接。

另一個域AF_UNIX表示UNIX文件系統,就是文件輸入/輸出,它的地址就是文件名。

2. 套接字類型

網際網路提供了兩種通信機制:流(stream)和數據報(datagram),因而套接字的類型也就分為流套接字和數據報套接字。我們主要看流套接字。

流套接字由類型SOCK_STREAM指定,它們是在AF_INET域中通過TCP/IP連接實現,同時也是AF_UNIX中常用的套接字類型。

流套接字提供的是一個有序、可靠、雙向位元組流的連接,因此發送的數據可以確保不會丟失、重復或亂序到達,而且它還有一定的出錯後重新發送的機制。

與流套接字相對的是由類型SOCK_DGRAM指定的數據報套接字,它不需要建立連接和維持一個連接,它們在AF_INET中通常是通過UDP/IP實現的。它對可以發送的數據的長度有限制,數據報作為一個單獨的網路消息被傳輸,它可能丟失、復制或錯亂到達,UDP不是一個可靠的協議,但是它的速度比較高,因為它並不需要總是要建立和維持一個連接。

3.套接字協議

只要底層的傳輸機制允許不止一個協議來提供要求的套接字類型,我們就可以為套接字選擇一個特定的協議。通常只需要使用默認值。

三、套接字地址

每個套接字都有其自己的地址格式,對於AF_UNIX域套接字來說,它的地址由結構sockaddr_un來描述,該結構定義在頭文件

struct sockaddr_un{

sa_family_t sun_family;  //AF_UNIX,它是一個短整型

char sum_path[];  //路徑名

};

對於AF_INET域套接字來說,它的地址結構由sockaddr_in來描述,它至少包括以下幾個成員:

struct sockaddr_in{

short int sin_family;  //AN_INET

unsigned short int sin_port;  //埠號

struct in_addr sin_addr;    //IP地址

}

而in_addr被定義為:

struct in_addr{

unsigned long int s_addr;

}

四、基於流套接字的客戶/伺服器的工作流程

使用socket進行進程通信的進程採用的客戶/伺服器系統是如何工作的呢?

1.伺服器端

首先,伺服器應用程序用系統調用socket來創建一個套接字,它是系統分配給該伺服器進程的類似文件描述符的資源,它不能與其他的進程共享。

接下來,伺服器進程會給套接字起個名字,我們使用系統調用bind來給套接字命名。然後伺服器進程就開始等待客戶連接到這個套接字。

然後,系統調用listen來創建一個隊列,並將其用於存放來自客戶的進入連接。

最後,伺服器通過系統調用accept來接受客戶的連接。它會創建一個與原有的命名套接不同的新套接字,這個套接字只用於與這個特定客戶端進行通信,而命名套接字(即原先的套接字)則被保留下來繼續處理來自其他客戶的連接。

2.客戶端

基於socket的客戶端比伺服器端簡單。同樣,客戶應用程序首先調用socket來創建一個未命名的套接字,然後講伺服器的命名套接字作為一個地址來調用connect與伺服器建立連接。

一旦連接建立,我們就可以像使用底層的文件描述符那樣用套接字來實現雙向數據的通信。

㈦ "Linux的常用的文件類型分為哪六種各自的標志符是什麼

在Linux中,有一句經典的話叫做一切皆文件」。

文件分類:

(1)普通文件(regular):回存在於外部存答儲器中,用於存儲普通文件。

(2)目錄文件(directory):用於存放目錄項,是文件系統管理的重要文件類型。

(3)管道文件(pipe):一種用於進程間通信的特殊文件,也稱為命名管道FIFO。

(4)套接字文件(socket):一種用於網路間通信的特殊文件。

(5)鏈接文件(link);用於間接訪問另外一個目標文件,相當於widows快捷方式。

(6)字元設備文件(character):字元設備在應用層的訪問結構。

(7)塊設備文件(block):塊設備在應用層的訪問介面。

在linux終端下輸入ls -l命令,學習linux每條文件信息的最左邊的一個字元即表示了該文件的類別:

b:塊設備文件

c:字元設備文件

d:目錄文件

l:鏈接文件

p:管道文件

-:普通文件

s:套接字文件

㈧ linux文件系統基礎知識

linux文件系統基礎知識匯總

1、linux文件系統分配策略

塊分配( block allocation ) 和 擴展分配 ( extent allocation )

塊分配:磁碟上的文件塊根據需要分配給文件,避免了存儲空間的浪費。但當文件擴充時,會造成文件中文件塊的不連續,從而導致過多的磁碟尋道時間。

每一次文件擴展時,塊分配演算法就需要寫入文件塊的結構信息,也就是 meta-dada 。meta-data總是與文件一起寫入存儲設備,改變文件的操作要等到所有meta-data的操作都完成後才能進行,

因此,meta-data的操作會明顯降低整個文件系統的性能。

擴展分配: 文件創建時,一次性分配一連串連續的塊,當文件擴展時,也一次分配很多塊。meta-data在文件創建時寫入,當文件大小沒有超過所有已分配文件塊大小時,就不用寫入meta-data,直到需要再分配文件塊的時候。

擴展分配採用成組分配塊的方式,減少了SCSI設備寫數據的時間,在讀取順序文件時具有良好的性能,但隨機讀取文件時,就和塊分配類似了。

文件塊的組或塊簇 ( block cluster) 的大小是在編譯時確定的。簇的大小對文件系統的性能有很大的影響。

註: meta-data 元信息:和文件有關的信息,比如許可權、所有者以及創建、訪問或更改時間等。

2、文件的記錄形式

linux文家系統使用索引節點(inode)來記錄文件信息。索引節點是一種數據結構,它包含了一個文件的長度、創建及修改時間、許可權、所屬關系、磁碟中的位置等信息。

一個文件系統維護了一個索引節點的數組,每個文件或目錄都與索引節點數組中的唯一的元素對應。每個索引節點在數組中的索引號,稱為索引節點號。

linux文件系統將文件索引節點號和文件名同時保存在目錄中,所以,目錄只是將文件的名稱和它的索引節點號結合在一起的一張表,目錄中每一對文件名稱和索引節點號稱為一個連接。

對於一個文件來說,有一個索引節點號與之對應;而對於一個索引節點號,卻可以對應多個文件名。

連接分為軟連接和硬連接,其中軟連接又叫符號連接。

硬連接: 原文件名和連接文件名都指向相同的物理地址。目錄不能有硬連接;硬連接不能跨文件系統(不能跨越不同的分區),文件在磁碟中只有一個拷貝。

由於刪除文件要在同一個索引節點屬於唯一的連接時才能成功,因此硬連接可以防止不必要的誤刪除。

軟連接: 用 ln -s 命令建立文件的符號連接。符號連接是linux特殊文件的.一種,作為一個文件,它的數據是它所連接的文件的路徑名。沒有防止誤刪除的功能。

3、文件系統類型:

ext2 : 早期linux中常用的文件系統

ext3 : ext2的升級版,帶日誌功能

RAMFS : 內存文件系統,速度很快

NFS : 網路文件系統,由SUN發明,主要用於遠程文件共享

MS-DOS : MS-DOS文件系統

VFAT : Windows 95/98 操作系統採用的文件系統

FAT : Windows XP 操作系統採用的文件系統

NTFS : Windows NT/XP 操作系統採用的文件系統

HPFS : OS/2 操作系統採用的文件系統

PROC : 虛擬的進程文件系統

ISO9660 : 大部分光碟所採用的文件系統

ufsSun : OS 所採用的文件系統

NCPFS : Novell 伺服器所採用的文件系統

SMBFS : Samba 的共享文件系統

XFS : 由SGI開發的先進的日誌文件系統,支持超大容量文件

JFS :IBM的AIX使用的日誌文件系統

ReiserFS : 基於平衡樹結構的文件系統

udf: 可擦寫的數據光碟文件系統

4、虛擬文件系統VFS

linux支持的所有文件系統稱為邏輯文件系統,而linux在傳統的邏輯文件系統的基礎上增加料一個蓄念文件系統( Vitual File System ,VFS) 的介面層。

虛擬文件系統(VFS) 位於文件系統的最上層,管理各種邏輯文件系統,並可以屏蔽各種邏輯文件系統之間的差異,提供統一文件和設備的訪問介面。

5、文件的邏輯結構

文件的邏輯結構可分為兩大類: 位元組流式的無結構文件 和 記錄式的有結構文件。

由位元組流(位元組序列)組成的文件是一種無結構文件或流式文件 ,不考慮文件內部的邏輯結構,只是簡單地看作是一系列位元組的序列,便於在文件的任意位置添加內容。

由記錄組成的文件稱為記錄式文件 ,記錄是這種文件類型的基本信息單位,記錄式文件通用於信息管理。

6、文件類型

普通文件 : 通常是流式文件

目錄文件 : 用於表示和管理系統中的全部文件

連接文件 : 用於不同目錄下文件的共享

設備文件 : 包括塊設備文件和字元設備文件,塊設備文件表示磁碟文件、光碟等,字元設備文件按照字元操作終端、鍵盤等設備。

管道(FIFO)文件 : 提供進程建通信的一種方式

套接字(socket) 文件: 該文件類型與網路通信有關

7、文件結構: 包括索引節點和數據

索引節點 : 又稱 I 節點,在文件系統結構中,包含有關相應文件的信息的一個記錄,這些信息包括文件許可權、文件名、文件大小、存放位置、建立日期等。文件系統中所有文件的索引節點保存在索引節點表中。

數據 : 文件的實際內容。可以是空的,也可以非常大,並且擁有自己的結構。

8、ext2文件系統

ext2文件系統的數據塊大小一般為 1024B、2048B 或 4096B

ext2文件系統採用的索引節點(inode):

索引節點採用了多重索引結構,主要體現在直接指針和3個間接指針。直接指針包含12個直接指針塊,它們直接指向包含文件數據的數據塊,緊接在後面的3個間接指針是為了適應文件的大小變化而設計的。

e.g: 假設數據塊大小為1024B ,利用12個直接指針,可以保存最大為12KB的文件,當文件超過12KB時,則要利用單級間接指針,該指針指向的數據塊保存有一組數據塊指針,這些指針依次指向包含有實際數據的數據塊,

假如每個指針佔用4B,則每個單級指針數據塊可保存 1024/4=256 個數據指針,因此利用直接指針和單級間接指針可保存 1024*12+1024*256=268 KB的文件。當文件超過268KB時,再利用二級間接指針,直到使用三級間接指針。

利用直接指針、單級間接指針、二級間接指針、三級間接指針可保存的最大文件大小為:

1024*12+1024*256+1024*256*256+1024*256*256*256=16843020 KB,約 16GB

若數據塊大小為2048B,指針佔4B,則最大文件大小為: 2048*12+2048*512+2048*512*512+2048*512*512*512=268,960,792 KB 約 268GB

若數據塊大小為4096B,指針佔4B,則最大文件大小為: 4096*12+4096*1024+4096*1024*1024+4096*1024*1024*1024=4,299,165,744 KB ,約 4TB

註: 命令 tune2fs -l /dev/sda5 可查看文件系統

ext2文件系統最大文件名長度: 255個字元

ext2文件系統的缺點:

ext2在寫入文件內容的同時並沒有同時寫入文件meta-data, 其工作順序是先寫入文件的內容,然後等空閑時候才寫入文件的meta-data。若發生意外,則文件系統就會處於不一致狀態。

在重新啟動系統的時候,linux會啟動 fsk ( file system check) 的程序,掃描整個文件系統並試圖修復,但不提供保證。

9、ext3文件系統:

ext3基於ext2的代碼,所以磁碟格式與ext2相同,使用相同的元數據。

ext2文件系統無損轉化為ext3文件系統: tune2fs -j /dev/sda6

日誌塊設備( Journaling block device layer,JBD)完成ext3文件系統日誌功能。JBD不是ext3文件系統所特有的,它的設計目標是為了向一個塊設備添加日誌功能。

當一個文件修改執行時,ext3文件系統代碼將通知JBD,稱為一個事務(transaction)。發生意外時,日誌功能具有的重放功能,能重新執行中斷的事務。

日誌中的3種數據模式:

1)、data=writeback :不處理任何形式的日誌數據,給用戶整體上的最高性能

2)、data=odered :只記錄元數據日誌,但將元數據和數據組成一個單元稱為事務(transaction) 。此模式保持所句句的可靠性與文件系統的一致性,性能遠低於data=writeback模式,但比data=journal模式快

3)、data=journal :提供完整的數據及元數據日誌,所有新數據首先被寫入日誌,然後才被定位。意外發生過後,日誌可以被重放,將數據與元數據帶回一致狀態。這種模式整體性能最慢,但數據需要從磁碟讀取和寫入磁碟時卻是3種模式中最快的。

ext3文件系統最大文件名長度: 255個字元

ext3文件系統的優點:可用性、數據完整性、速度、兼容性

10、ReiserFS文件系統

ReiserFS文件系統是由Hans Reiser和他領導的開發小組共同開發的,整個文件系統完全是從頭設計的,是一個非常優秀的文件系統。也是最早用於Linux的日誌文件系統之一。

ReiserFS的特點

先進的日誌機制

ReiserFS有先進的日誌(Journaling/logging)功能 機制。日誌機制保證了在每個實際數據修改之前,相應的日誌已經寫入硬碟。文件與數據的安全性有了很大提高。

高效的磁碟空間利用

Reiserfs對一些小文件不分配inode。而是將這些文件打包,存放在同一個磁碟分塊中。而其它文件系統則為每個小文件分別放置到一個磁碟分塊中。

獨特的搜尋方式

ReiserFS基於快速平衡樹(balanced tree)搜索,平衡樹在性能上非常卓越,這是一種非常高效的演算法。ReiserFS搜索大量文件時,搜索速度要比ext2快得多。Reiserfs文件 系統使用B*Tree存儲文件,而其它文件系統使用B+Tree樹。B*Tree查詢速度比B+Tree要快很多。Reiserfs在文件定位上速度非常 快。

在實際運用中,ReiserFS 在處理小於 4k 的文件時,比ext2 快 5 倍;帶尾文件壓縮功能(默認)的ReiserFS 比ext2文件系統多存儲6%的數據。

支持海量磁碟

ReiserFS是一個非常優秀的文件系統,一直被用在高端UNIX系統上,可輕松管理上百G的文件系統,ReiserFS文件系統最大支持的文件系統尺寸為16TB。這非常適合企業級應用中。

優異的性能

由於它的高效存儲和快速小文件I/O特點,使用ReiserFs文件系統的PC,在啟動X窗口系統時,所花的時間要比在同一台機器上使用ext2文 件系統少1/3。另外,ReiserFS文件系統支持單個文件尺寸為4G的文件,這為大型資料庫系統在linux上的應用提供了更好的選擇。

;
閱讀全文

與套接字文件linux相關的資料

熱點內容
如何弱化聲音app 瀏覽:726
華為藍牙傳輸文件 瀏覽:158
什麼是手機數據業務 瀏覽:662
蘋果xsmax信任app在哪裡設置 瀏覽:224
如何破手機圖案密碼 瀏覽:602
微信支付充10元話費 瀏覽:288
ipadair2升級需要密碼 瀏覽:873
workflow工具 瀏覽:148
蘋果i7多少錢 瀏覽:547
文件名不同傳送會覆蓋嗎 瀏覽:52
畢業設計旅遊網站如何做的高端 瀏覽:677
一般安卓游戲的數據放哪裡 瀏覽:418
vs如何向伺服器存取視頻文件 瀏覽:180
關於資料庫的翻譯好的外文文獻 瀏覽:494
win10設置圖標比例 瀏覽:149
linuxtar命令詳解 瀏覽:774
文件夾不見了怎麼找回 瀏覽:423
linux虛擬機的映像文件 瀏覽:88
android程序發布 瀏覽:878
電腦怎麼使用微信上的數據線 瀏覽:17

友情鏈接