溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

btrfs、磁盤(pán)、 rpm等

發(fā)布時(shí)間:2020-07-18 00:00:20 來(lái)源:網(wǎng)絡(luò) 閱讀:485 作者:Vincent一馬 欄目:數(shù)據(jù)庫(kù)

btrfs的特性:

 1.可擴(kuò)展性:

  extent是最小的邏輯單元,每個(gè)extent是由一組連續(xù)的block組成;

  ext文件系統(tǒng)的inode數(shù)量是一定的,btrfs的inode數(shù)量是動(dòng)態(tài)可調(diào)整的;

 2.多物理卷支持: 

  btrfs可以跨越多個(gè)物理設(shè)備動(dòng)態(tài)的增加或減少設(shè)備來(lái)達(dá)到擴(kuò)容或縮容的目的;而且從技術(shù)角度來(lái)講,btrfs還支持raid0,raid1,raid5,raid10等;還可以支持在線(xiàn)添加,刪除及修改設(shè)備;

 3.寫(xiě)時(shí)復(fù)制更新機(jī)制(COW,Copy on Write)

  所謂的COW就是每次寫(xiě)磁盤(pán)數(shù)據(jù)的時(shí)候,先將當(dāng)前塊的數(shù)據(jù)復(fù)制到一個(gè)新塊中,在新塊中進(jìn)行數(shù)據(jù)更新寫(xiě)入,當(dāng)新塊寫(xiě)入完成后,只需將原來(lái)指向舊塊的指針指向新塊即可

 4.雙重校驗(yàn)機(jī)制--數(shù)據(jù)及元數(shù)據(jù)都有校驗(yàn)碼:checksum

 5.支持子卷:子文件系統(tǒng)

 6.支持快照卷:

  對(duì)父卷做快照

  對(duì)子卷做快照

  對(duì)快照卷左快照

 7.透明壓縮,隱形壓縮:

mkfs.btrfs

 -L:為即將創(chuàng)建的btrfs文件系統(tǒng)指定卷標(biāo)

 -d:為數(shù)據(jù)存儲(chǔ)指定類(lèi)型;可以選擇的類(lèi)型:raid0, raid1, raid5, raid6, raid10 or single.

 -m:指定元數(shù)據(jù)的存儲(chǔ)方式;可以選擇的類(lèi)型有:raid0, raid1, raid5, raid6, raid10, single or dup. 

 -O:指定btrfs文件系統(tǒng)的特性,如果想要查看某些特性 mkfs.btrfs -O list-all   

可以使用支持btrfs文件系統(tǒng)的mount命令中使用下列方式透明壓縮功能

 mount -o compress={lzo|zlib} DEVICE MOUNT_POINT

btrfs

 btrfs - control a btrfs filesystem

 btrfs <command> [<args>]

 btrfs filesystem show 

  查看btrfs文件系統(tǒng)的詳細(xì)屬性;

 btrfs filesystem df /mnt/btrfs/(MOUNT_POINT)

  查看文件系統(tǒng)的掛載和使用情況

 例:btrfs filesystem df /mnt/btrfs/

在線(xiàn)修改文件系統(tǒng)

 btrfs filesystem resize {+|-}SIZE[kKgGtTmMpPeE] MOUNT_POINT

 例:btrfs filesystem resize -15G /mnt/btrfs/

btrfs filesystem resize +5G /mnt/btrfs/

btrfs filesystem resize max /mnt/btrfs/

向btrfs文件系統(tǒng)添加或刪除設(shè)備

 btrfs device

  btrfs device add [options] <device> [<device>...] <path>

  向文件系統(tǒng)中添加一個(gè)新設(shè)備

  btrfs device delete <device> [<device>...] <path>

  從文件系統(tǒng)中刪除一個(gè)設(shè)備

平衡數(shù)據(jù)

  btrfs balance start [options] <path>

  開(kāi)啟跨設(shè)備的chunk的數(shù)據(jù)平衡

   -mconvert={radi0|raid1|raid5|radi10|raid6|single|dup}

     改變?cè)獢?shù)據(jù)的數(shù)據(jù)平衡布局方式

   例:btrfs balance start -mconvert=raid5 /mnt/btrfs/

   -dconvert={radi0|raid1|raid5|radi10|raid6|single}

     改變數(shù)據(jù)的數(shù)據(jù)平衡布局方式

例:btrfs balance start -dconvert=raid6 /mnt/btrfs/

    btrfs balance pause <path>

     暫停數(shù)據(jù)平衡

    btrfs balance cancel <path>

      取消正在運(yùn)行的或已經(jīng)暫停的數(shù)據(jù)平衡

    btrfs balance resume <path>

        Resume interrupted balance恢復(fù)被打斷的數(shù)據(jù)平衡

    btrfs balance status [-v] <path>

    顯示正在運(yùn)行的或已經(jīng)暫停的數(shù)據(jù)平衡的狀態(tài)信息

        Show status of running or paused balance

子卷管理:

 btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>

 創(chuàng)建子卷

 例:btrfs subvolume create /mnt/btrfs/mysub1/

 btrfs subvolume delete [options] <subvolume> [<subvolume>...] 

 刪除子卷

  例:btrfs subvolume delete /mnt/btrfs/mysub1/

子卷類(lèi)似于ext文件系統(tǒng)中將其他分區(qū)掛在到根目錄下的某個(gè)空閑子目錄的分區(qū)

快照

 btrfs subvolume snapshot [-r] [-i <qgroupid>] <source> <dest>|[<dest>/]<name>

  例:btrfs subvolume show <subvol-path>

 顯示子卷的信息

  btrfs subvolume show /mnt/btrfs/mysub1/

 創(chuàng)建指定子卷的快照卷

 btrfs subvolume snapshot /mnt/btrfs/mysub1/ /mnt/btrfs/snap_mysub1

將btrfs和ext系列進(jìn)行轉(zhuǎn)換

 btrfs-convert  

將ext系列文件系統(tǒng)裝換為btrfs

 btrfs-convert /dev/sdb1

注意:/dev/sdb1分區(qū),必須事先格式化為ext系列文件系統(tǒng)

將文件系統(tǒng)btrfs回滾到ext

 btrfs-convert -r /dev/sdb1


磁盤(pán)配額:

 文件服務(wù)器:共享存儲(chǔ)空間,讓用戶(hù)能夠隨時(shí)存儲(chǔ)數(shù)據(jù);

 FTP: 

 SMB:

 網(wǎng)盤(pán):急速上傳

 磁盤(pán)配額主要是針對(duì)于這類(lèi)文件服務(wù)器進(jìn)行用戶(hù)的磁盤(pán)空間使用限制而提出的

磁盤(pán)配額的設(shè)定對(duì)象 

 1.能夠?qū)嵤┳x寫(xiě)操作的塊設(shè)備

 2.要有正確的文件系統(tǒng);

磁盤(pán)配額主要限制哪些人的訪(fǎng)問(wèn)行為

 1.用戶(hù)

  為指定的用戶(hù)限定磁盤(pán)使用量

   1)磁盤(pán)空間(塊);一個(gè)block的限制代表1kb存儲(chǔ)空間

   2)inode

 2.組 

  限制指定組中所有成員的磁盤(pán)使用量總和

磁盤(pán)配額的類(lèi)型

 1.soft limit:軟限制

  當(dāng)用戶(hù)的磁盤(pán)使用量達(dá)到了軟配額限制將會(huì)啟動(dòng)寬限期倒計(jì)時(shí);在倒計(jì)時(shí)歸0之前,用戶(hù)可以正常使用剩余的配額量,一旦倒計(jì)時(shí)到0,意味著用戶(hù)將不能繼續(xù)使用磁盤(pán)空間,除非將數(shù)據(jù)進(jìn)行清理,低于軟限制,此時(shí)可以繼續(xù)使用磁盤(pán)空間;

 2.hard limit: 硬限制

  用戶(hù)所能使用的磁盤(pán)空間的真正上限

 一般來(lái)講,軟限制要低于硬限制的數(shù)值,

在Linux中默認(rèn)寬限期為7天   

需要一個(gè)用戶(hù)記錄用戶(hù)和組的磁盤(pán)使用量和配額量的數(shù)據(jù)文件

aquota.user

aquota.group

如果想要讓分區(qū)或卷能夠支持磁盤(pán)配額的設(shè)定,需要單獨(dú)的掛載選項(xiàng)

 usrquota grpquota

 1.mount -o usrquota,grpquota DEVICE MOUNT_POINT

 2.ect/fstab

 DEVICE(設(shè)備) MOUNT_POINT FYTYPE defaults,usrquota,grpquota 0 0 

quotacheck

 quotacheck - scan a filesystem for disk usage, create, check and repair quota files

 -v:顯示整個(gè)操作過(guò)程的詳細(xì)信息 

 -g:創(chuàng)建,檢測(cè)和修復(fù)組配額文件

 -u:創(chuàng)建,檢測(cè)和修復(fù)用戶(hù)配額文件

 -c:經(jīng)過(guò)檢測(cè),如果沒(méi)有用戶(hù)配額文件或組配額文件,就按照用戶(hù)給定的選項(xiàng)進(jìn)行文件的創(chuàng)建

 -a:所有的在/dec/fstab中包含了與磁盤(pán)配額有關(guān)的掛載選項(xiàng)的設(shè)備上是否有對(duì)應(yīng)選項(xiàng)的配額文件

用于編寫(xiě)配額內(nèi)容的命令

edquota

 -u:編寫(xiě)用戶(hù)配額,默認(rèn)的功能

 -g:編寫(xiě)組配額,不推薦使用

 -t:設(shè)置超出軟限制的寬限期,默認(rèn)7天,可以選擇以秒,分鐘,小時(shí),天等時(shí)間單位 

使配額功能生效

 quotaon,quotaoff

 quotaon|quotaoff /dev/sdb1

查看配額使用情況

 quota

 repquota(只用root用戶(hù)可以使用)

 注意:root不受磁盤(pán)配額限制;

Linux程序包管理

 程序:指令+數(shù)據(jù)

 面向?qū)ο蟪绦颍核惴?數(shù)據(jù)結(jié)構(gòu)

 應(yīng)用程序的存在形式,

  1.源代碼形式:包含了整個(gè)應(yīng)用程序的編程語(yǔ)言的所有代碼的文本文件

  2.二進(jìn)制:將源代碼經(jīng)過(guò)一系列的轉(zhuǎn)換操作之后得到的可以直接執(zhí)行的文件

使用源代碼來(lái)安裝應(yīng)用程序 

 1.預(yù)處理(預(yù)處理器) -->編譯(編譯器) -->匯編(匯編器) -->鏈接(鏈接器) --> 可以直接執(zhí)行的二進(jìn)制程序文件

POSIX:POS,可移植操作系統(tǒng)

API:應(yīng)用編程接口

ABI:應(yīng)用二進(jìn)制接口

庫(kù)級(jí)別的兼容,庫(kù)級(jí)別的虛擬化;

 cywin:在Windows系統(tǒng)中能模擬Linux的共享庫(kù)

 winE:在Linux系統(tǒng)中模擬Windows的庫(kù)

應(yīng)用級(jí)編程語(yǔ)言

 Java/Python/Perl/ruby/PHP/GO

系統(tǒng)級(jí)編程語(yǔ)言

 C/C++

 Linux 

  unix

要想能夠進(jìn)行源代碼的編譯,需要有編譯開(kāi)發(fā)環(huán)境支持

 C/C++:

  編譯開(kāi)發(fā)環(huán)境:預(yù)處理器,編譯器,頭文件,開(kāi)發(fā)庫(kù)文件

 Java/Python:

  編譯開(kāi)發(fā)環(huán)境:預(yù)處理器,編譯器,開(kāi)發(fā)庫(kù)文件 

通常情況下,源代碼文件是多個(gè)文件組成的,這些文件之間存在著一定的關(guān)聯(lián)關(guān)系,我們稱(chēng)這種關(guān)聯(lián)關(guān)系為依賴(lài)關(guān)系;

autoconf

automake

軟件項(xiàng)目構(gòu)建工具:

 C/C++:make

 java:maven

 Python:buildout

程序包管理器:

 在指定的系統(tǒng)當(dāng)中進(jìn)行程序的安裝、卸載、升級(jí)、查詢(xún)及校驗(yàn)等工作;

 不同的Linux發(fā)行版本有著不同的程序包管理器

  Debian:dpt .deb后綴名的包文件; dpkg管理工具;

  redhat:rpm,rpm管理工具,.rpm后綴名;

   rpm成為L(zhǎng)inux的程序包管理器的行業(yè)標(biāo)準(zhǔn)

   rpm是使用perl語(yǔ)言編寫(xiě)的,用C語(yǔ)言重新rpm

   rpm is package manager

  S.u.S.E:rpm,.rpm后綴名,

  Gentoo:采用了FreeBSd   emerge管理工具

  ArchLinux:pacman管理機(jī)制

以centos為例,rpm程序包管理器的相關(guān)內(nèi)容


centos的程序包的管理器:

 程序包的命名規(guī)則:

  源代碼包:

   software_name-VERSION.tar.gz

   VERSION:major.minor.release

    major: 主版本號(hào),通常代表重大功能改進(jìn)的版本分支

    minor:次版本號(hào),通常代表在某個(gè)版本的分支中的某個(gè)功能發(fā)生變化;

    release:發(fā)行版本號(hào),修復(fù)了某些bug或者對(duì)某段代碼進(jìn)行了優(yōu)化;

rpm程序包命名規(guī)則    

 源碼包

  software_name-VERSION.src.rpm

 二進(jìn)制包

  software_name-VERSION-[release].[os].arch.rpm

   VERSION:major.minor.release

   [release]: rpm封包的發(fā)行版本號(hào)

   [os]:軟件所支持的操作系統(tǒng)的版本信息el6,el7,suse11···

   arch:硬件平臺(tái)類(lèi)型,i386,i686,sparc···

 在制作rpm程序包的時(shí)候,通常其制作者會(huì)采用分包技術(shù)來(lái)構(gòu)建rpm程序包

 根據(jù)程序的不同功能,構(gòu)建多個(gè)程序包

被分包的程序包一般包括兩類(lèi):

 主程序包:

  software_name-VERSION-[release].[os].arch.rpm

 附屬功能包:   

  software_name-function-VERSION-[release].[os].arch.rpm

一般來(lái)講,主程序包和附屬功能包具有相同的版本號(hào),發(fā)行版本號(hào),操作系統(tǒng)及兼容平臺(tái)的標(biāo)識(shí)

所以,主程序包往往被所有的附屬功能包所依賴(lài),不安裝主程序包,就不能安裝附屬功能包

 function:devel,utils,libs,tools,manual···

程序包管理的前端工具:

 RHEL|Centos系統(tǒng)的前端管理工具:yum,Yellow Dog Update Midifier

 yum在實(shí)施安裝升級(jí)卸載等工作的時(shí)候,會(huì)開(kāi)啟事務(wù);

 所謂事務(wù),將整個(gè)操作過(guò)程視為一個(gè)整體,要么全執(zhí)行,要么全不執(zhí)行

debian系的前端工具:apt-get,apt-cache

 apt-get:實(shí)現(xiàn)安裝、卸載等功能

 apt-cache:實(shí)現(xiàn)基于關(guān)鍵字進(jìn)行搜索功能,管理本地緩存及緩存的元數(shù)據(jù)

suse前端工具:zypper

rpm程序包管理工具

 1.rpm命令行工具

 2.yum工具;

rpm命令行工具

 功能:

  1.將編譯好的應(yīng)用程序的各個(gè)組成文件打包成一個(gè)或多個(gè)程序包文件

  2.軟件包的安裝、卸載、升級(jí)、查詢(xún)、校驗(yàn)及數(shù)據(jù)庫(kù)管理功能

rpm程序包中文件的組成清單:

 1.程序的文件

 2.文件清單

 3.軟件安裝或卸載時(shí)所運(yùn)行的腳本文件 共分為4類(lèi):

   preinstall:在正式的安裝操作開(kāi)始之前所運(yùn)行的腳本,%pre

   postinstall:在安裝完成之后所執(zhí)行的腳本,%post

   preuninstall:在正式卸載操作開(kāi)始之前所運(yùn)行的腳本, %preun

   postuninstall:在卸載完成后所執(zhí)行的腳本,%postun

rpm數(shù)據(jù)庫(kù)(公共)

 已經(jīng)安裝好的程序包名稱(chēng)及版本

  /var/lib/rpm

獲取程序包的途徑

 1.系統(tǒng)的發(fā)行版的光盤(pán) 

 2.官方的文件服務(wù)器或者鏡像站點(diǎn);  http://mirrors.aliyun.com         https://mirrors.tuna.tsinghua.edu.cn

 3.某個(gè)項(xiàng)目的官方站點(diǎn)

 4.第三方組織制作的rpm程序包站點(diǎn)   Fedora EPEL:紅帽光放的社區(qū)組織,在鏡像站點(diǎn)中也包含EPEL鏡像  

  特殊的搜索引擎:  http://pkgs.org   http://rpmfind.net

 5.自己制作

 建議:在獲得程序包之后,實(shí)施完整性檢查

  來(lái)源合法性:

   通過(guò)程序提供者的數(shù)字簽名加密的數(shù)據(jù),通過(guò)其公鑰進(jìn)行解密驗(yàn)證;

  程序包完整性  

   校驗(yàn)碼sha-1

rpm和yum兩個(gè)工具的使用

rpm命令行工具:

 安裝、卸載、升級(jí)(降級(jí))、查詢(xún)、文件校驗(yàn)、驗(yàn)證和數(shù)據(jù)庫(kù)維護(hù);

 rpm命令的通用選項(xiàng)

  -v:顯示安裝例程的信息,僅僅顯示安裝軟件名

  -vv:顯示非常詳細(xì)的操作信息

 安裝: 

  rpm {-i|--install} [install-options] PACKAGE_FILE ...

  install-options

   -h:用50個(gè)#來(lái)表示安裝進(jìn)度

   --test:并不是真正的安裝軟件包,僅僅是測(cè)試是否在安裝時(shí)能夠正常完成,dry run模式;

   --nodeps:忽略因?yàn)橐蕾?lài)關(guān)系導(dǎo)致的安裝錯(cuò)誤,不建議使用;

   --replacefiles:在安裝軟件包時(shí),軟件包中的文件會(huì)直接將原來(lái)安裝的文件替換

   --replacepkgs:無(wú)需卸載軟件包而重新安裝

   --noscripts:不運(yùn)行任何腳本

    --nopre:安裝前腳本

    --nopost:安裝后腳本

   --nosignature:不考慮安裝包的來(lái)源是否合法

   --nodigest:不考慮軟件包是否完整;

  例:~]# rpm -ivh php-mysql-5.3.3-40.el6_6.x86_64.rpm php-pdo-5.3.3-40.el6_6.x86_64.rpm

 升級(jí)

  rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

  如果選擇被安裝的程序包事先未被安裝,則全新安裝,如果已經(jīng)安裝了舊版本,則可以升級(jí)安裝

  rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

  僅僅只能對(duì)已經(jīng)安裝的低版本的程序包進(jìn)行升級(jí)安裝

  常用選項(xiàng)與安裝相同

   --oldpackage:降級(jí)安裝,用老版本的程序包替換新版本的程序包

   --force:強(qiáng)制升級(jí)

注意

 1.強(qiáng)烈建議:不要對(duì)內(nèi)核進(jìn)行升級(jí)操作;Linux可以支持多內(nèi)核,可以直接安裝新版本的內(nèi)核,在啟動(dòng)界面可以手動(dòng)更換

 2.升級(jí)安裝可能會(huì)帶來(lái)文件的變化,因此,系統(tǒng)默認(rèn)不會(huì)直接更改之前安裝過(guò)的軟件的配置文件,新程序包中的配置文件會(huì)被重命名,通常會(huì)是:FINENAME.rpmnew

卸載:

 rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]

           [--notriggers] [--test] PACKAGE_NAME ...

   --allmatches:卸載所有匹配指定名稱(chēng)的程序包的各個(gè)版本;

   --nodeps:卸載時(shí)忽略依賴(lài)關(guān)系,不推薦使用

   --test:測(cè)試卸載,dry run模式

查詢(xún):

 rpm {-q|--query} [select-options] [query-options]

 PACKAGE_NAME:直接給出程序包名

 -a:查詢(xún)所有已經(jīng)安裝的程序信息

 -f FILE:查找指定的文件是由哪個(gè)程序包提供的

 -p PACKAGE_NAME:對(duì)還沒(méi)有安裝的程序包文件執(zhí)行查詢(xún)操作

 --whatprovides CAPABILITY:查詢(xún)指定的CAPABILITY是由哪個(gè)程序包所提供的

 --whatrequires CAPABILITY:查詢(xún)指定的CAPABILITY被哪個(gè)程序包所依賴(lài)

 query-options

 --changelog:查詢(xún)r(jià)pm程序包的changelog

 -c,--configfiles:查詢(xún)制定程序包中有哪些配置文件

 -d,--docfiles:查詢(xún)制定程序包中有哪些文檔文件

 -i,--info:查詢(xún)程序包相關(guān)的信息,包括版本號(hào),發(fā)行號(hào)等

 -l,--list:列表顯示程序包安裝會(huì)生成哪些文件

 --provides:列出指定程序包提供的所有的CAPABILITY;

 -R,--requires:查詢(xún)指定程序包的依賴(lài)關(guān)系;

 --scripts:查看程序包所攜帶的腳本的內(nèi)容;

具體使用方法:

  -qf FILE

  -qc|-ql|-qd|-qi PACKAGE_NAME

  -qpl|-qpc|-qpd|-qpi PACKAGE_FILE


校驗(yàn):

 rpm {-V|--verify} [select-options] [verify-options]

  S file Size differs

  M Mode differs (includes permissions and file type)

  5 digest (formerly MD5 sum) differs

  D Device major/minor number mismatch

  L readLink(2) path mismatch

  U User ownership differs

  G Group ownership differs

  T mTime differs

  P caPabilities differ

認(rèn)證:

  rpm --import /PATH/TO/KEY_FILE

  rpm -K /PATH/TO/PACKAGE_FILE

數(shù)據(jù)庫(kù)管理:

 數(shù)據(jù)庫(kù)的初始化和重建

  /var/lib/rpm

  rpm {--initdb|--rebuilddb}

 [--dbpath DIRECTORY]



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI