第四周知識小分享

第四周知識小總結


時間過得飛快,轉眼間就到第四周了,我們又學了哪些新知識呢,下面讓我們一起來看下。  

一 源碼編譯安裝

1 程序包編譯

程序包編譯安裝:

Application-VERSION-release.src.rpm --> 安裝後,使用rpmbuild命令製作成二進制格式的rpm包,然後再安裝
源代碼-->預處理-->編譯-->彙編-->鏈接-->執行
源代碼組織格式:
多文件:文件中的代碼之間,很可能存在跨文件依賴關係
C、C++:make 項目管理器
configure腳本 --> Makefile.in --> Makefile
java: maven
編譯安裝
C語言源代碼編譯安裝三步驟:
1、./configure
(1) 通過選項傳遞參數,指定啓用特性、安裝路徑等;執行時會參考用戶的
指定以及Makefile.in文件生成Makefile
(2) 檢查依賴到的外部環境,如依賴的軟件包
2、make 根據Makefile文件,構建應用程序
3、make install 複製文件到相應路徑
開發工具:
autoconf: 生成configure腳本
automake:生成Makefile.in
注意:安裝前查看README,INSTALL
編譯安裝
編譯C源代碼:
準備:提供開發工具及開發環境
開發工具:make, gcc等
開發環境:開發庫,頭文件
glibc:標準庫
實現:通過“包組”提供開發組件
Development Tools
Server Platform Development
生產實踐:(基於最小化安裝的系統)
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
第一步:configure腳本
選項:指定安裝位置、指定啓用的特性
--help: 獲取其支持使用的選項
選項分類:
安裝路徑設定:
--prefix=/PATH:指定默認安裝位置,默認爲usr/local/
--sysconfdir=/PATH:配置文件安裝位置
System types:支持交叉編譯
Optional Features: 可選特性
--disable-FEATURE
--enable-FEATURE[=ARG]
Optional Packages: 可選包
--with-PACKAGE[=ARG] 依賴包
--without-PACKAGE 禁用依賴關係
注意:通常被編譯操作依賴的程序包,需要安裝此程序包的“開發”組件,
其包名一般類似於name-devel-VERSION
第二步:make
第三步:make install
安裝後的配置:
(1) 二進制程序目錄導入至PATH環境變量中
編輯文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
(2) 導入幫助手冊
編輯/etc/man.config|man_db.conf文件
添加一個MANPATH

二 磁盤分區

CHS和LBA

CHS
採用24bit位尋址
其中前10位表示cylinder,中間8位表示head,後面6位表示sector
最大尋址空間8GB
LBA(logical block addressing)
LBA是一個整數,通過轉換成CHS格式完成磁盤具體尋址
ATA-1規範中定義了28位尋址模式,以每扇區512位組來計算,ATA-1所定
義的28位LBA上限達到128 GiB。2002年ATA-6規範採用48位LBA,同樣以
每扇區512位組計算容量上限可達128 Petabytes
由於CHS尋址方式的尋址空間在大概8GB以內,在磁盤容量小於大概8GB
時,可以使用CHS尋址方式或是LBA尋址方式;在磁盤容量大於大概8GB時,則
只能使用LBA尋址方式
使用分區空間步驟
設備識別
設備分區
創建文件系統
標記文件系統
在/etc/fstab文件中創建條目
掛載新的文件系統
磁盤分區
分區的意義:
優化I/O性能
實現磁盤空間配額限制
提高修復速度
隔離系統和程序
安裝多個OS
採用不同文件系統
分區

兩種分區方式:MBR,GPT

MBR:Master Boot Record,1982年,使用32位表示扇區數,分區不超過2T
如何分區:按柱面
0磁道0扇區:512bytes
446bytes: boot loader
64bytes:分區表,其中每16bytes標識一個分區
2bytes: 55AA
MBR分區中一塊硬盤最多有4個主分區,也可以3主分區+1擴展(N個邏輯分區)
GPT分區
GPT:GUID(Globals Unique Identifiers) partition table 支持128個分區,
使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block)
使用128位UUID(Universally Unique Identifier) 表示磁盤和分區 GPT分區表自動備份在頭和尾兩份,並有CRC校驗位
UEFI (Unified Extensible Firmware Interface 統一可擴展固件接口)硬件支持GPT,使操作系統啓動

管理分區

列出塊設備
• lsblk
創建分區使用:
• fdisk 創建MBR分區
• gdisk 創建GPT分區
• parted 高級分區操作
重新設置內存中的內核分區表版本
• partprobe
parted命令
parted的操作都是實時生效的,小心使用
用法:parted [選項]... [設備 [命令 [參數]...]...]
parted /dev/sdb mklabel gpt|msdos(mklabel:標籤,類型)(gpt和msdos兩種類型)
parted /dev/sdb print(顯示當前硬盤分區情況
parted /dev/sdb mkpart primary 1 200 (默認M)(表示分出199M大的分區來)
parted /dev/sdb rm 1(表示刪除分出來的sdb1分區)
parted –l 列出分區信息
分區工具fdisk和gdisk
gdisk /dev/sdb 類fdisk 的GPT分區工具
fdisk -l [-u] [device...] 查看分區
fdisk /dev/sdb 管理分區
子命令:
p 分區列表
t 更改分區類型
n 創建新分區
d 刪除分區
v 校驗分區
u 轉換單位
w 保存並退出
q 不保存並退出
如果分完後未顯示,需要用partprobe命令新分區,然後就可以看到了。
但此命令在centos6上不好使,
得用partx -a /dev/sda,然後就可以看到了。
(-a :是對增加分區的識別)
如果是識別刪除分區:得用partx -d --nr 5-7 /dev/sda(假設刪除了5-7分區)才能識別
注意:分區時不要多加數字,無效

三 文件系統管理

1 文件系統

文件系統是操作系統用於明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱爲文件管理系統,簡稱文件系統
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲並對存入的文件進行保護和檢索的系統。具體地說,它負責爲用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日誌,壓縮,加密等
支持的文件系統:/lib/modules/uname –r/kernel/fs(查看系統中支持的文件系統)
各種文件系統:
https://en.wikipedia.org/wiki/Comparison_of_file_systems此網站可以瀏覽下

2 文件系統類型

Linux文件系統:
ext2(Extended file system):適用於那些分區容量不是太大,更新也不頻繁的情況,
例如 /boot 分區
ext3:是 ext2 的改進版本,其支持日誌功能,能夠幫助系統從非正常關機導致的異常中恢復。它通常被用作通用的文件系統
ext4:是 ext 文件系統的最新版。提供了很多新的特性,包括納秒級時間戳、創建和使用巨型文件(16TB)、最大1EB的文件系統,以及速度的提升
xfs:SGI,支持最大8EB的文件系統
btrfs(Oracle), reiserfs, jfs(AIX), swap(虛擬分區)
光盤:iso9660
Windows:FAT32, NTFS,exFAT
Unix:FFS(fast), UFS(unix), JFS2
網絡文件系統:NFS, CIFS
集羣文件系統:GFS2, OCFS2(oracle)
分佈式文件系統:fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
RAW:未經處理或者未經格式化產生的文件系統(裸盤
lsmod:系統中目前加載的文件系統的模塊
用戶通過vfs訪問硬盤文件系統(virutal file system:虛擬文件系統,統一標準,所以一個命令可以訪問不同文件系統的文件,且效果無差別)
/proc/fliesystem:系統中支持的文件系統類型
日誌型文件系統: ext3, (ext4, xfs:不支持共享

3 創建文件系統

mkfs命令:
(1) mkfs.FS_TYPE /dev/DEVICE
ext4 xfs btrfs vfat
列如:mkfs.ext4 /dev/sda6 (對sda6創建文件系統是而ext4的分區)
或者:mkfs -t ext4 /dev/sda6 (創建完之後,會分配唯一的UUID編號)
blkid:查看文件系統的列表和uuid
(2) mkfs -t FS_TYPE /dev/DEVICE
-L: 'LABEL' 設定卷標:標籤 (e2label -l :查看標籤,也可直接修改,僅限ext系列)
-b :塊大小(mkfs.ext4 /dev/sda6 -b 1024,表示創建一個1k大的文件系統)
默認4096=4k,也可以指定。tune2fs -l /dev/sda6:查看塊大小
列如:mkfs -t ext4 -L /date/mysql /dev/sda6(標籤就是/date/mysql)
(1)創建ext文件系統
(只能創建ext文件系統
mke2fs:ext系列文件系統專用管理工具
-t {ext2|ext3|ext4} 指定文件系統類型
-b {1024|2048|4096} 指定塊大小
-L ‘LABEL’ 設置卷標
-j 相當於 -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i # 爲數據空間中每多少個字節創建一個inode;不應該小於block大小(>=4096)
-N # 指定分區中創建多少個inode
-I 一個inode記錄佔用的磁盤空間大小,128---4096
-m # 默認5%,爲root預留空間佔總空間的百分比也可以改:(mkfs.ext4 -m 1 /dev/sda6,表示預留1%
-O FEATURE[,...] 啓用指定特性
-O ^FEATURE 關閉指定特性
dd if=/dev/zero of=/dev/sdb1 bs=1M :破壞磁盤分區
(2)文件系統標籤
指向設備的另一種方法
與設備無關
blkid:塊設備屬性信息查看
blkid [OPTION]... [DEVICE]
-U UUID 根據指定的UUID來查找對應的設備
-L LABEL 根據指定的LABEL來查找對應的設
e2label:管理ext系列文件系統的LABEL
e2label DEVICE [LABEL]
findfs :查找分區
findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>
tune2fs
tune2fs:重新設定ext系列文件系統可調整參數的值
-l 查看指定文件系統超級塊信息;super block
-L 'LABEL’ 修改卷標
-m # 修預留給管理員的空間百分比
-j 將ext2升級爲ext3
-O 文件系統屬性啓用或禁用, –O ^has_journal
-o 調整文件系統的默認掛載選項,–o ^acl
(在centos上創建的分區文件系統默認不帶ACL權限的,如果需要,自己加)
-U UUID 修改UUID號
dumpe2fs:顯示ext文件系統信息,將磁盤塊分組管
-h:查看超級塊信息,不顯示分組信息
xfs_info:顯示已掛載的 xfs 文件系統信息
xfs_info mountpoint
(3)文件系統檢測和修復
文件系統夾故障常發生於死機或者非正常關機之後,掛載爲文件系統標記爲“no clean”
注意:一定不要在掛載狀態下執行下面命令修復
fsck: File System Check(只是修復文件系統,數據不保證)
fsck.FS_TYPE
fsck -t FS_TYPE
注意:FS_TYPE 一定要與分區上文件類型相同
-a 自動修復
-r 交互式修復錯誤
e2fsck:ext系列文件專用的檢測修復工具
-y 自動回答爲yes
-f 強制修復
-p 自動進行安全的修復文件系統問題
xfs_repair:xfs文件系統專用檢測修復工具
-f 修復文件,而設備
-n 只檢查
-d 允許修復只讀的掛載設備,在單用戶下修復 / 時使用,然後立即reboot

4 掛載mount

lsof /dev/mysql:查看正在訪問此目錄的用戶
fusr -v /date/mysql:正在用此目錄的用戶
fusr -km /date/mysql:剔除用戶
掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關係,進而使得此目錄做爲其它文件訪問入口的行爲
卸載:爲解除此關聯關係的過程
把設備關聯掛載點:mount Point
mount
卸載時:可使用設備,也可以使用掛載點
umount 設備名|掛載點
掛載點下原有文件在掛載完成後會被臨時隱藏
掛載點目錄一般爲空
一個設備可以掛載到多個文件夾中
一個文件夾只能掛載一個設備,後掛載的設備會擠掉第一個掛載的設備。
1,一般是設備忘文件夾裏掛載
2, 也可以文件往文件夾裏掛載(在文件上創立文件系統後便可掛載到目錄上,建立好文件夾掛載後,會出現loop0,自動掛載到loop0上,centos7上會自動掛載,不限制。losetup命令可以看到。centos6上默認只有8個,不自動掛載到loop0上,得加 -o ioop 選項。可在/root/grub/grub.conf 中加上max +數字 然後重啓生效即可。
3,也可以目錄往目錄上掛載 會顯示不讓掛載,需要加 -B 選項。(在加 -n 表示隱藏掛載,在7上無效)
mount常用命令選項
-t vsftype 指定要掛載的設備上的文件系統類型
-r readonly,只讀掛載
-w read and write, 讀寫掛載
-n 不更新/etc/mtab,mount不可見(在7上無效)
-a 自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)
-L 'LABEL' 以卷標指定掛載設備
-U 'UUID' 以UUID指定要掛載的設備
-B, --bind 綁定目錄到另一個目錄上
查看內核追蹤到的已掛載的所有設備
cat /proc/mounts
-o options:(掛載文件系統的選項),多個選項使用逗號分隔
async 異步模式 sync 同步模式,內存更改時,同時寫磁盤
atime/noatime 包含目錄和文件
diratime/nodiratime 目錄的訪問時間戳
auto/noauto 是否支持自動掛載,是否支持-a選項
exec/noexec 是否支持將文件系統上運行應用程序
dev/nodev 是否支持在此文件系統上使用設備文件
suid/nosuid 是否支持suid和sgid權限
remount 重新掛載
ro 只讀 rw 讀寫
user/nouser 是否允許普通用戶掛載此設備,/etcfstab使用
acl 啓用此文件系統上的acl功能
loop 使用loop設備
_netdev 當網絡可用時纔對網絡資源進行掛載,如:NFS文件系統
defaults 相當於rw, suid, dev, exec, auto, nouser, async

RAID

提高IO能力
磁盤並行讀寫
提高耐用性
磁盤冗餘來實現
級別:多塊磁盤組織在一起的工作方式有所不同
RAID實現的方式
外接式磁盤陣列:通過擴展卡提供適配能力
內接式RAID:主板集成RAID控制器,安裝OS前在BIOS裏配置
軟件RAID:通過OS實現
RAID級別
RAID-0:條帶卷,strip
RAID-1:鏡像卷,mirror
RAID-2
..
RAID-5
RAID-6
RAID-10
RAID-01

RAID-0:

(如果3塊硬盤,每個硬盤均勻的存放1/3的數據,但壞一塊,就無法使用)
讀、寫性能提升
可用空間:N;利用率:100%
無容錯能力
最少磁盤數:2, 2+(若空間大小不同,只能使用相同大小的分區空間)

RAID-1:

(加入兩塊硬盤,兩塊數據一樣,類似於鏡像,可接受一塊硬盤損壞,若數據人爲刪除,無法找回)
讀性能提升、寫性能略有下降
可用空間:n/2;利用率:50%
有冗餘能力
最少磁盤數:2, 2N

RAID-4:

至少三塊硬盤;利用率:n-1/n
多塊數據盤異或運算值存於專用校驗盤

RAID-5:

讀、寫性能提升
利用率:n-1/n
有容錯能力:允許最多1塊磁盤損壞
最少磁盤數:3, 3+

RAID-6:

讀、寫性能提升
可用空間:n-2/n
有容錯能力:允許最多2塊磁盤損壞
最少磁盤數:4, 4+

AID-10:(生產中用的最多)

讀、寫性能提升
可用空間:50%
有容錯能力:每組鏡像最多隻能壞一塊(可允許壞兩塊
最少磁盤數:4, 4+

RAID-01:

(利用率50%,n-2/n,)
最少四塊
多塊磁盤先實現RAID0,再組合成RAID1
JBOD:(磁盤累加,單純擴內存)
功能:將多塊磁盤的空間合併一個大的連續空間使用
可用空間:sum(S1,S2,...)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章