一溃论、軟件包及管理器簡介
包的組成:
二進制文件、庫文件色解、配置文件茂嗓、幫助文件
程序包管理器:
debian: deb文件, dpkg包管理器
redhat: rpm文件, rpm包管理器
rpm:Redhat Package Manager
包之間可能存在依賴關(guān)系,甚至循環(huán)依賴科阎。
解決依賴包管理工具:
yum:rpm包管理器的前端工具
apt:deb包管理器前端工具
zypper:suse上的rpm前端管理工具
dnf:Fedora 18+ rpm包管理器前端管理工具
獲取程序包的途徑:
- 系統(tǒng)發(fā)版的光盤或官方的服務(wù)器
CentOS鏡像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com - 項目官方站點
- 第三方組織:
Fedora-EPEL:
Extra Packages for Enterprise Linux
Rpmforge:RHEL推薦述吸,包很全
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/ - 自己制作
注:第三方包建議要檢查其合法性,來源合法性锣笨,程序包的完整性
二蝌矛、Yum工具
???????????CentOS: yum, dnf(RHEL8)
???????????YUM: Yellowdog Update Modifier,rpm的前端程序错英,可解決軟件包相關(guān)依賴性入撒,可在多個庫之間定位軟件包,up2date的替代工具
???????????yum repository: yum repo椭岩,存儲了眾多rpm包茅逮,以及包的相關(guān)的元數(shù)據(jù)文件(放置于特定目錄repodata下)
2.1 yum配置文件
/etc/yum.conf:為所有倉庫提供公共配置
/etc/yum.repos.d/*.repo:為倉庫的指向提供配置
倉庫指向的定義:
[repositoryID] ##必填項,倉庫源標識ID
name=Some name for this repository ##倉庫源名稱
baseurl=url://path/to/repository/ ##必填項簿煌,指定軟件倉庫源地址
enabled={1|0} ##1代表啟用源氮唯,0代表禁用源
gpgcheck={1|0} ##1代表啟用密鑰檢查,0代表禁用密鑰檢查
gpgkey=URL ##指定密鑰文件的鏈接地址或路徑
可選的文件服務(wù)器:
http://
https://
ftp://
file://
例1:使用系統(tǒng)光盤創(chuàng)建一個本地倉庫源
mount /dev/cdrom /mnt ##將系統(tǒng)光盤掛載至/mnt
cat > /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
enabled=1
驗證命令:yum repolist ##查看軟件倉庫源列表
執(zhí)行結(jié)果:
Loaded plugins: fastestmirror
Determining fastest mirrors
local | 3.6 kB 00:00:00
(1/2): local/group_gz | 165 kB 00:00:00
(2/2): local/primary_db | 3.2 MB 00:00:00
repo id repo name status
local local 4,067
repolist: 4,067
從以上的執(zhí)行結(jié)果能夠看到本地倉庫源配置成功姨伟,共有4067個包
例2:使用系統(tǒng)光盤創(chuàng)建一個內(nèi)網(wǎng)軟件倉庫源
本例通過虛擬機模擬實現(xiàn)惩琉,共使用2臺機器,1臺為倉庫源服務(wù)器夺荒,1臺為客戶端瞒渠。
服務(wù)端:
##安裝apache
yum -y install httpd
##啟動Web服務(wù),作為Yum源倉庫文件服務(wù)器
systemctl start httpd
##將系統(tǒng)光盤掛載至網(wǎng)站默認根目錄
mount /dev/cdrom /var/www/html
客戶端:
##編寫Yum源配置文件技扼,指定文件服務(wù)器為http://地址
cat > /etc/yum.repos.d/lan.repo
[lan]
name=lan
baseurl=http://172.16.77.131 ##內(nèi)網(wǎng)Yum源倉庫服務(wù)器URL
gpgcheck=0
enabled=1
##驗證內(nèi)網(wǎng)Yum倉庫是否搭建成功
yum --disablerepo=local repolist
執(zhí)行結(jié)果:Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
lan lan 4,067
repolist: 4,067
三伍玖、編譯安裝
編譯C源代碼過程:
準備:提供開發(fā)工具及開發(fā)環(huán)境
開發(fā)工具:make, gcc等
開發(fā)環(huán)境:開發(fā)庫,頭文件
glibc:標準庫
實現(xiàn):通過“包組”提供開發(fā)組件
Development Tools
Server Platform Development
生產(chǎn)實踐:(基于最小化安裝的系統(tǒng))
yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree screen lsof tcpdump wget ntpdate net-tools iotop bc zip unzip nfs-utils
開源程序源代碼的獲取
官方自建站點:
apache.org (ASF:Apache Software Foundation)
mariadb.org
...
代碼托管:
SourceForge.net
Github.com
code.google.com
C語言源代碼編譯安裝三步驟:
- ./configure
(1) 通過選項傳遞參數(shù)剿吻,指定啟用特性窍箍、安裝路徑等;執(zhí)行時會參考用戶的指定以及Makefile.in文件生成Makefile
選項:指定安裝位置、指定啟用的特性
--help: 獲取其支持使用的選項
安裝路徑設(shè)定:
--prefix=/PATH:指定默認安裝位置,默認為/usr/local/
--sysconfdir=/PATH:配置文件安裝位置
Optional Features: 可選特性
--disable-FEATURE
--enable-FEATURE[=ARG]
Optional Packages: 可選包
--with-PACKAGE[=ARG] 依賴包
--without-PACKAGE 禁用依賴關(guān)系
注:通常被編譯操作依賴的程序包椰棘,需要安裝此程序包的“開發(fā)”組件纺棺,其包名一般類似于name-devel-VERSION
(2) 檢查依賴到的外部環(huán)境,如依賴的軟件包
make 根據(jù)Makefile文件邪狞,構(gòu)建應(yīng)用程序
make install 復(fù)制文件到相應(yīng)路徑
注:安裝前查看INSTALL祷蝌,README說明文檔,提高效率
開發(fā)工具:
autoconf: 生成configure腳本
automake:生成Makefile.in
安裝后的配置:
- 二進制程序目錄導(dǎo)入至PATH環(huán)境變量中
編輯文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
示例:編譯安裝httpd 2.4
通過ftp客戶端工具將源碼包上傳至指定目錄:httpd-2.4.25.tar.bz2
##解壓源碼包文件
tar xvf httpd-2.4.25.tar.bz2
##安裝依賴開發(fā)工具包
yum -y install gcc apr-devel apr-util-devel pcre-devel
##進行編譯安裝
cd httpd-2.4.25
./configure --sysconfdir=/etc/httpd
執(zhí)行結(jié)果:
……
configure: summary of build options:
Server Version: 2.4.25
Install prefix: /usr/local/apache2
C compiler: gcc -std=gnu99
CFLAGS: -pthread
LDFLAGS:
LIBS:
CPPFLAGS: -DLINUX -D_REENTRANT -D_GNU_SOURCE
C preprocessor: gcc -E
make
make install
##啟動服務(wù)程序
/usr/local/apache2/bin/apachectl start
##驗證訪問可用性
通過在瀏覽器地址欄輸入IP地址帆卓,訪問頁面效果如下圖所示
四巨朦、管理磁盤分區(qū)
列出塊設(shè)備
- lsblk
創(chuàng)建分區(qū)使用
- fdisk 創(chuàng)建MBR分區(qū)
子命令:
p 分區(qū)列表
t 更改分區(qū)類型
n 創(chuàng)建新分區(qū)
d 刪除分區(qū)
v 校驗分區(qū)
u 轉(zhuǎn)換單位
w 保存并退出
q 不保存并退出 - gdisk 創(chuàng)建GPT分區(qū)
子命令與fdisk相似
高級分區(qū)操作
- parted
重新設(shè)置內(nèi)存中的內(nèi)核分區(qū)表版本
- partprobe
示例:添加一塊新硬盤,為其創(chuàng)建標準分區(qū)
本例通過虛擬機環(huán)境進行模擬剑令,需提前添加一塊虛擬硬盤(略)
##在線掃描識別新增磁盤
echo '- - -' > /sys/class/scsi_host/host0/scan
##驗證硬盤是否成功添加
命令:fdisk -l |grep sd
執(zhí)行結(jié)果:
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 1050623 524288 83 Linux
/dev/sda2 1050624 41943039 20446208 8e Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
從以上執(zhí)行結(jié)果可以發(fā)現(xiàn)sdb為新增的虛擬硬盤設(shè)備糊啡。
##執(zhí)行分區(qū)操作
fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xcb4fc1fd.
Command (m for help): m ##查看幫助,列出選項菜單
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
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): n ##添加一個新的分區(qū)
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p ##指定類型為主分區(qū)
Partition number (1-4, default 1): ##指定分區(qū)編號吁津,直接按下回車鍵表示輸入默認值:1
First sector (2048-41943039, default 2048): ##指定扇區(qū)起始位置悔橄,直接按下回車鍵表示輸入默認值:2048
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G ##指定扇區(qū)結(jié)束位置或容量大小,輸入值:+2G
Partition 1 of type Linux and of size 2 GiB is set
Command (m for help): w ##將分區(qū)表改動保存至磁盤并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
##檢查是否成功創(chuàng)建分區(qū)
lsblk
執(zhí)行結(jié)果:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 512M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 17.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 2G 0 part
從以上執(zhí)行結(jié)果可以發(fā)現(xiàn)名稱sdb1且容量為2G的設(shè)備為新增分區(qū)
五腺毫、邏輯卷(LVM)管理
允許對卷進行方便操作的抽象層,包括重新設(shè)定文件系統(tǒng)的大小
允許在多個物理設(shè)備間重新組織文件系統(tǒng)
- 將設(shè)備指定為物理卷
- 用一個或者多個物理卷來創(chuàng)建一個卷組
- 物理卷是用固定大小的物理區(qū)域(Physical Extent挣柬,PE)來定義的
- 在物理卷上創(chuàng)建的邏輯卷由物理區(qū)域(PE)組成
-
可以在邏輯卷上創(chuàng)建文件系統(tǒng)
劃分邏輯卷示意圖
常用命令:
顯示pv信息
pvs:簡要pv信息顯示
pvdisplay
創(chuàng)建pv
pvcreate /dev/DEVICE
刪除pv
pvremove /dev/DEVICE
顯示卷組
vgs
vgdisplay
創(chuàng)建卷組
vgcreate [-s [kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
刪除卷組
vgremove VolumeGroupName
順序:先做pvmove潮酒,再做vgremove
顯示邏輯卷
lvs
lvdisplay
創(chuàng)建邏輯卷
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
刪除邏輯卷
lvremove /dev/VG_NAME/LV_NAME
重設(shè)文件系統(tǒng)大小
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
xfs_growfs /mountpoint
示例:創(chuàng)建一個有兩個PV組成的大小為20G且名稱為testvg的VG,指定PE大小 為16MB, 而后在卷組中創(chuàng)建大小為5G的邏輯卷testlv邪蛔。
##創(chuàng)建物理卷
pvcreate /dev/sdc /dev/sdd
##創(chuàng)建卷組急黎,將2個新增的物理卷作為成員
vgcreate -s 16 testvg /dev/sdc /dev/sdd
##創(chuàng)建邏輯卷
lvcreate -L 5G -n testlv /dev/testvg
##驗證
vgdisplay testvg
執(zhí)行結(jié)果:
--- Volume group ---
VG Name testvg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size <39.97 GiB
PE Size 16.00 MiB
從以上執(zhí)行結(jié)果可以發(fā)現(xiàn)卷組testvg已成功創(chuàng)建,PE大小為16MB
lvs
執(zhí)行結(jié)果:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.50g
swap centos -wi-ao---- 2.00g
testlv testvg -wi-a----- 5.00g
從以上執(zhí)行結(jié)果可以發(fā)現(xiàn)邏輯卷testlv已成功創(chuàng)建侧到,容量為5GB
六勃教、文件系統(tǒng)管理
???????????文件系統(tǒng)是操作系統(tǒng)用于明確存儲設(shè)備或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu);即在存儲設(shè)備上組織文件的方法匠抗。操作系統(tǒng)中負責管理和存儲文件信息的軟件結(jié)構(gòu)稱為文件管理系統(tǒng)故源,簡稱文件系統(tǒng)。
Linux文件系統(tǒng):
- ext2(Extended file system) :適用于那些分區(qū)容量不是太大汞贸,更新也不頻繁的情況绳军,例如 /boot 分區(qū)
- ext3:是 ext2 的改進版本,其支持日志功能矢腻,能夠幫助系統(tǒng)從非正常關(guān)機導(dǎo)致的異常中恢復(fù)门驾。它通常被用作通用的文件系統(tǒng)
- ext4:是 ext 文件系統(tǒng)的最新版。提供了很多新的特性多柑,包括納秒級時間戳奶是、創(chuàng)建和使用巨型文件(16TB)、最大1EB的文件系統(tǒng),以及速度的提升
- xfs:SGI聂沙,支持最大8EB的文件系統(tǒng)
- btrfs(Oracle), reiserfs, jfs(AIX), swap
- 光盤:iso9660
- Windows:FAT32, exFAT,NTFS
- Unix: FFS(fast), UFS(unix), JFS2
- 網(wǎng)絡(luò)文件系統(tǒng):NFS, CIFS
- 集群文件系統(tǒng):GFS2, OCFS2(oracle)
- 分布式文件系統(tǒng): fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
- RAW:未經(jīng)處理或者未經(jīng)格式化產(chǎn)生的文件系統(tǒng)
6.1 創(chuàng)建文件系統(tǒng)
- mkfs命令:
(1) mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
(2) mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL' 設(shè)定卷標
- mke2fs:ext系列文件系統(tǒng)專用管理工具
-t {ext2|ext3|ext4} 指定文件系統(tǒng)類型
-b {1024|2048|4096} 指定塊大小
-L ‘LABEL’ 設(shè)置卷標
-j 相當于 -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-m # 默認5%,為管理人員預(yù)留空間占總空間的百分比
示例1:使用標準分區(qū)創(chuàng)建一個2G的文件系統(tǒng)秆麸,塊大小為2048byte,預(yù)留1%可用空間,文件系統(tǒng) ext4逐纬,卷標為TEST
mkfs.ext4 -b 2048 -L 'TEST' /dev/sdb1
dumpe2fs /dev/sdb1
結(jié)果:
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: TEST
Last mounted on: <not available>
Filesystem UUID: bcb49a44-b28c-492d-8b1d-7bb5129f1057
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64b
it flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 131072
Block count: 1048576
Reserved block count: 52428
Free blocks: 994651
Free inodes: 131061
First block: 0
Block size: 2048
從以上結(jié)果可以發(fā)現(xiàn)蛔屹,sdb1文件系統(tǒng)的塊大小為2048字節(jié)
示例2:以邏輯卷作為操作對象創(chuàng)建一個類型為xfs的文件系統(tǒng)
mkfs.xfs /dev/testvg/testlv
6.2 掛載mount
掛載:將額外文件系統(tǒng)與根文件系統(tǒng)某現(xiàn)存的目錄建立起關(guān)聯(lián)關(guān)系,進而使得此目錄作為其它文件訪問入口的行為
卸載:為解除此關(guān)聯(lián)關(guān)系的過程
將設(shè)備關(guān)聯(lián)掛載點:mount Point
mount
卸載時:可使用設(shè)備豁生,也可以使用掛載點
umount 設(shè)備名|掛載點
掛載點下原有文件在掛載完成后會被臨時隱藏
掛載點目錄一般為空
掛載方法:mount DEVICE MOUNT_POINT
mount命令 (不帶任何選項或參數(shù)):通過查看/etc/mtab文件顯示當前已掛載的所有設(shè)備
語法:mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要掛載的設(shè)備兔毒;
(1) 設(shè)備文件:例如/dev/sda5
(2) 卷標:-L 'LABEL', 例如 -L 'MYDATA'
(3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
常用選項:
-t vsftype 指定要掛載的設(shè)備上的文件系統(tǒng)類型
-r readonly,只讀掛載
-w read and write, 讀寫掛載
-n 不更新/etc/mtab甸箱,mount不可見
-a 自動掛載所有支持自動掛載的設(shè)備(定義在了/etc/fstab文件中育叁,且掛載選項中有auto功能)
-L 'LABEL' 以卷標指定掛載設(shè)備
-U 'UUID' 以UUID指定要掛載的設(shè)備
-B, --bind 綁定目錄到另一個目錄上
-o options:(掛載文件系統(tǒng)的選項),多個選項使用逗號分隔
子選項:
async 異步模式 sync 同步模式,內(nèi)存更改時芍殖,同時寫磁盤
atime/noatime 包含目錄和文件
diratime/nodiratime 目錄的訪問時間戳
auto/noauto 是否支持自動掛載,是否支持-a選項
exec/noexec 是否支持將文件系統(tǒng)上運行應(yīng)用程序
dev/nodev 是否支持在此文件系統(tǒng)上使用設(shè)備文件
suid/nosuid 是否支持suid和sgid權(quán)限
remount 重新掛載
ro 只讀 rw 讀寫
user/nouser 是否允許普通用戶掛載此設(shè)備豪嗽,/etc/fstab使用
acl 啟用此文件系統(tǒng)上的acl功能
loop 使用loop設(shè)備
defaults:相當于rw, suid, dev, exec, auto, nouser, async
卸載相關(guān)命令:
查看掛載情況
findmnt MOUNT_POINT|device
查看正在訪問指定文件系統(tǒng)的進程
lsof MOUNT_POINT
fuser -v MOUNT_POINT
終止所有在正訪問指定的文件系統(tǒng)的進程
fuser -km MOUNT_POINT
卸載
umount DEVICE
umount MOUNT_POINT
示例:將邏輯卷testlv掛載至/users目錄
##創(chuàng)建掛載點
mkdir /users
##掛載
mount /dev/testvg/testlv /users
##驗證
df -hT /users
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/testvg-testlv xfs 5.0G 33M 5.0G 1% /users
6.3 文件掛載配置文件
特點:
- 符合配置文件系統(tǒng)體系
- 被mount、fsck和其它程序使用
- 系統(tǒng)重啟時保留文件系統(tǒng)體系
- 可以在設(shè)備欄使用文件系統(tǒng)卷標
- 使用mount -a 命令掛載/etc/fstab中的所有文件系統(tǒng)
/etc/fstab每行定義一個要掛載的文件系統(tǒng)
1豌骏、要掛載的設(shè)備或偽文件系統(tǒng)
設(shè)備文件
LABEL:LABEL=""
UUID:UUID=""
偽文件系統(tǒng)名稱:proc, sysfs
2龟梦、掛載點
3、文件系統(tǒng)類型:ext4窃躲,xfs计贰,iso9660,nfs蒂窒,none
4躁倒、掛載選項:defaults ,acl洒琢,bind等
5秧秉、轉(zhuǎn)儲頻率:0:不做備份 1:每天轉(zhuǎn)儲 2:每隔一天轉(zhuǎn)儲
6、fsck檢查的文件系統(tǒng)的順序:允許的數(shù)字是0 1 2
0:不自檢
1:首先自檢衰抑;一般只有rootfs才用
2:非rootfs使用
示例:使/dev/sdb1文件系統(tǒng)開機后自動掛載至/test目錄象迎,且默認有acl掛載選項
mkdir /test ##創(chuàng)建掛載點
vi /etc/fstab ##在末尾添加如下內(nèi)容
/dev/sdb1 /test ext4 defaults,acl 0 0
保存,退出
reboot ##重啟驗證
df -hT /test
結(jié)果:
Filesystem Type Size Used Avail Use% Mounted on
/dev/sdb1 ext4 2.0G 9.1M 1.8G 1% /test
mount
結(jié)果:
/dev/sdb1 on /test type ext4 (rw,relatime,seclabel,data=ordered)
touch /test/testfile
setfacl -m u:abc:r /test/testfile
getfacl /test/testfile
結(jié)果:
getfacl: Removing leading '/' from absolute path names
# file: test/testfile
# owner: root
# group: root
user::rw-
user:abc:r--
從以上執(zhí)行結(jié)果可以發(fā)現(xiàn)呛踊,已實現(xiàn)/dev/sdb1重啟后自動掛載挖帘,且默認具有acl掛載選項