Linux基礎_磁盤存儲和文件系統

講師_@王曉春

▼硬件基礎

硬盤接口類型

  • 並行:
    IDE:133MB/s
    SCSI:640MB/s
  • 串口:
    SATA:6Gbps
    SAS:6Gbps
    USB:480MB/s

機械硬盤和固態硬盤

  • 機械硬盤(HDD):Hard Disk Drive,即是傳統普通硬盤,主要由:盤片,磁頭,盤片轉軸及控制電機,磁頭控制器,數據轉換器,接口,緩存等幾個部分組成。機械硬盤中所有的盤片都裝在一個旋轉軸上,每張盤片之間是平行的,在每個盤片的存儲面上有一個磁頭,磁頭與盤片之間的距離比頭髮絲的直徑還小,所有的磁頭聯在一個磁頭控制器上,由磁頭控制器負責各個磁頭的運動。磁頭可沿盤片的半徑方向運動,加上盤片每分鐘幾千轉的高速旋轉,磁頭就可以定位在盤片的指定位置上進行數據的讀寫操作。數據通過磁頭由電磁流來改變極性方式被電磁流寫到磁盤上,也可以通過相反方式讀取。硬盤爲精密設備,進入硬盤的空氣必須過濾
  • 固態硬盤(SSD):Solid State Drive,用固態電子存儲芯片陣列而製成的硬盤,由控制單元和存儲單元(FLASH芯片、DRAM芯片)組成。固態硬盤在接口的規範和定義、功能及使用方法上與普通硬盤的完全相同,在產品外形和尺寸上也與普通硬盤一致

設備文件

  • 設備類型:
    塊設備:block,存取單位“塊”,磁盤
    字符設備:char,存取單位“字符”,鍵盤
  • 設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信
  • 設備號碼:
    主設備號:major number, 標識設備類型
    次設備號:minor number, 標識同一類型下的不同設備

磁盤設備的設備文件命名:

/dev/DEV_FILE
#爲[a-z]
類型
/dev/sd# SCSI, SATA, SAS, IDE,USB:
/dev/vd# 、/dev/xvd# 虛擬磁盤
/dev/sr# 光盤
  • 不同磁盤標識:a-z,aa,ab…
    /dev/sda, /dev/sdb, ...
  • 同一設備上的不同分區:1,2, …
    /dev/sda1, /dev/sda5
[root@centos7 ~]$lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda      8:0    0  20G  0 disk
├─sda1   8:1    0   1G  0 part /boot
├─sda2   8:2    0  10G  0 part /
├─sda3   8:3    0   2G  0 part [SWAP]
├─sda4   8:4    0   1K  0 part
└─sda5   8:5    0   5G  0 part /data
sr0     11:0    1  10G  0 rom

#0爲SSD,1爲機械硬盤
[root@centos7 ~]$cat /sys/block/sdd/queue/rotational
1

硬盤存儲術語

head:磁頭
track:磁道
cylinder:柱面
sector:扇區,512bytes

  • 機械硬盤結構
    在這裏插入圖片描述

在這裏插入圖片描述

  • ZBR(Zoned Bit Recording)

CHS和LBA

  • CHS
    Cylinder Head Sector
    採用24bit位尋址(其中前10位表示cylinder,中間8位表示head,後面6位表示sector)
    最大尋址空間8GB(512×63×255×1024)
  • LBA(logical block addressing)
    LBA是一個整數,通過轉換成CHS格式完成磁盤具體尋址
    中定義了28位尋址模式,以每扇區512位組來計算,ATA-1所定義的28位LBA上限達到128 GiB。2002年ATA-6規範採用48位LBA,同樣以每扇區512位組計算容量上限可達128 Petabytes
  • 由於CHS尋址方式的尋址空間在大概8GB以內,所以在磁盤容量小於大概8GB時,可以使用CHS尋址方式或是LBA尋址方式;在磁盤容量大於大概8GB時,則只能使用LBA尋址方式

▼使用分區空間

磁盤分區

  1. 優化I/O性能
  2. 實現磁盤空間配額限制
  3. 提高修復速度
  4. 隔離系統和程序
  5. 安裝多個OS
  6. 採用不同文件系統

分區類型

▼MBR (Master Boot Record)

  1. 用32位表示扇區數(最大2T)
  2. 0磁道0扇區:521bytes
    446bytes:boot loader
    64bytes:分區表(每16標示一個)
    2bytes:55AA

**MBR分區中最多4個主分區或3主分區+1個擴展分區(+N個邏輯分區)

▷MBR分區結構圖

在這裏插入圖片描述

▷MBR分區結構表

MBR
0000-0088 Master Boot Record 主引導程序 主引導程序
0089-01BD 出錯信息數據區 數據區
01BE-01CD 分區項1(16字節) 分區表
01CE-01DD 分區項2(16字節)
01DE-01ED 分區項3(16字節)
01EE-01FD 分區項4(16字節)
01FE 55 結束標誌
01FF AA
分區項(16字節)
字節 存貯字節位 含義
第1字節 01BE 引導標誌:80爲活動分區,00爲非活動分區
第2,3,4字節 01BF-01C1 本分區的起始的磁頭號,扇區號,柱面號
磁頭號:2

扇區號 : 3的低6位

柱面號 : 3的高2位+4

第5字節 01C2 分區類型符

0x00:分區未用

0x06:FAT16基本分區

0x05:擴展分區

0x07:NTFS分區

x0B:FAT32基本分區

0x0F:(LBA模式)擴展分區

第6,7,8字節 01C3-01C5 本分區的結束的磁頭號,扇區號,柱面號
磁頭號:2

扇區號 : 3的低6位

柱面號 : 3的高2位+4

9,10,11,12 01C6-01C9 起始的扇區
13,14,15,16 01CA-01CD 結束的扇區

▼GPT(Globals Unique Identifiers Partition Table)

GPT分組表
Block Bitmap 塊位圖
inode Bitmap 節點位圖
inode Table 節點表
Data Blocks 數據塊

  1. 支持128個分區
  2. UEFI硬件支持GTP

▷GPT分區結構

在這裏插入圖片描述

  • UEFI (統一擴展固件接口)硬件支持GPT,使操作系統啓動

BIOS+MBR與UEFI+GPT

1.BIOS

BIOS初始化
BIOS自檢
引導操作系統
開機
進入系統

2. UEFI

UEFI初始化
引導操作系統
開機
進入系統

▼管理分區

  1. 設備識別
    echo '- - -' > /sys/class/scsi_host/host{0,1,2}/scan
  2. 設備分區
  3. 創建文件系統
  4. 標記文件系統
  5. 在/etc/fstab文件中創建條目
  6. 掛載新的文件系統
作用 命令
列出塊設備 lsblk
創建MBR分區 fdisk
創建GPT分區 gdisk
高級分區操作 parted
重新設置內存中的內核分區表版本 partprobe

parted命令

parted的操作都是實時生效的,小心使用
parted [選項]... [設備 [命令 [參數]...]...]

#創建磁盤標籤
parted /dev/sdb mklabel gpt|msdos

#顯示/dev/sdb的分區表
parted /dev/sdb print

#創建主分區,從1M~200M,共199M
parted /dev/sdb mkpart primary 1 200 (默認M)

#刪除第1個分區
parted /dev/sdb rm 1

#列出分區信息
parted –l 

fdisk(gdisk) -l [-u] [device…] 分區工具

fdisk /dev/sdb 管理分區

  • 子命令:
    p 分區列表
    t 更改分區類型
    n 創建新分區
    d 刪除分區
    v 校驗分區
    u 轉換單位
    w 保存並退出
    q 不保存並退出

同步分區表

  • centos7查看內核是否已經識別新的分區
    cat /proc/partitions
  • centos6通知內核重新讀取硬盤分區表
    • 新增分區用
      partx -a /dev/DEVICE
      kpartx -a /dev/DEVICE -f: force
    • 刪除分區用
      partx -d --nr M-N /dev/DEVICE
      CentOS 5,7: 使用partprobe
      partprobe [/dev/DEVICE]

▼文件系統

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

文件系統類型

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

文件系統分類

  • 根據其是否支持"journal"功能:
    日誌型文件系統: ext3, ext4, xfs, …
    非日誌型文件系統: ext2, vfat
  • 文件系統的組成部分:
    內核中的模塊:ext4, xfs, vfat
    用戶空間的管理工具mkfs:mkfs.ext4, mkfs.xfs,mkfs.vfat
  • 查前支持的文件系統:cat /proc/filesystems
  • Linux的虛擬文件系統:VFS
    在這裏插入圖片描述
  • 文件系統選擇
類型 支持限制 root分區 boot分區 註釋
XFS 500TB yes yes 默認分區格式
Ext4 50TB yes yes 兼容Ext3/Ext2
brtfs 50TB yes yes 技術預覽
GFS2 2-16個節點 yes no 集羣文件共享存儲

創建文件系統

  • mkfs命令:
    (1) mkfs.FS_TYPE /dev/DEVICE
    mkfs.ext4 /dev/DEVICE
    mkfs.xfs /dev/DEVICE
    (2) 指定文件系統 mkfs -t FS_TYPE /dev/DEVICE
    (3) 設定卷標 mkfs -L 'LABEL'

創建ext文件系統

  • mke2fs:ext系列文件系統專用管理工具
[OPTION] 註釋
-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大小
-N # 指定分區中創建多少個inode
-I 一個inode記錄佔用的磁盤空間大小,128—4096
-m # 默認5%,爲管理人員預留空間佔總空間的百分比
-O FEATURE[,...] 啓用指定特性
-O ^FEATURE 關閉指定特性

文件系統標籤

blkid e2label findfs tune2fs dumpe2fs

  • 指向設備的另一種方法
  • blkid:塊設備屬性信息查看
    blkid [OPTION]... [DEVICE]
[OPTION] 註釋
-U UUID 根據指定的UUID來查找對應的設備
-L LABEL 根據指定的LABEL來查找對應的設備
  • e2label:管理ext系列文件系統的LABEL
    e2label DEVICE [LABEL]

  • findfs :查找分區
    findfs [options] LABEL=<label>
    findfs [options] UUID= <uuid>

  • tune2fs:重新設定ext系列文件系統可調整參數的值

[OPTION] 註釋
-l 查看指定文件系統超級塊信息;super block
-L 'LABEL’ 修改卷標
-m # 修預留給管理員的空間百分比
-j 將ext2升級爲ext3
-O 文件系統屬性啓用或禁用, –O ^has_journal
-o 調整文件系統的默認掛載選項,–o ^acl
-U UUID 修改UUID號
  • dumpe2fs:將磁盤塊分組管理(ext2/ext3/ext4)
    -h:查看超級塊信息,不顯示分組信息

超級塊和INODE TABLE

在這裏插入圖片描述

文件系統檢測和修復

  • 常發生於死機或者非正常關機之後
  • 掛載爲文件系統標記爲“no clean”
  • 注意:一定不要在掛載狀態下修復
  • fsck: 檢查和修復文件系統
    fsck.FS_TYPEfsck -t FS_TYPE
    -p 自動修復錯誤
    -r 交互式修復錯誤
    FS_TYPE 一定要與分區上已經文件類型相同
  • e2fsck:ext系列文件專用的檢測修復工具
    -y 自動回答爲yes
    -f 強制修復

▼掛載mount

  • 掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關係,進而使得此目錄做爲其它文件訪問入口的行爲。把設備關聯掛載點:
    mount 設備名 掛載點
  • 卸載:爲解除此關聯關係的過程
    卸載時:可使用設備,也可以使用掛載點
    umount 設備名|掛載點
    掛載點下原有文件在掛載完成後會被臨時隱藏
    掛載點目錄一般爲空

用mount命令掛載文件系統

  • 掛載方法:mount 設備名 掛載點
  • 通過查看/etc/mtab文件顯示當前已掛載的所有設備
[root@centos7 ~]$mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=482108k,nr_inodes=120527,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
...
  • mount [-fnrsvw] [-t vfstype] [-o options] device dir
    device:指明要掛載的設備;dir:掛載點
    (1) 設備文件:例如/dev/sda5或/dev/sr0
    (2) 設置卷標:
    -L 'LABEL' : 例如 -L ‘MYDATA’
    (3) 設置UUID
    -U 'UUID' :例如 -U ‘0c50523c-43f1-45e7-85c0-a126711d406e’
    (4) 僞文件系統名稱:proc, sysfs, devtmpfs, configfs
    事先存在,建議使用空目錄
    進程正在使用中的設備無法被卸載

mount常用命令選項

mount 選項 設備名 掛載點

選項 註釋
-t vsftype 指定要掛載的設備上的文件系統類型
-r readonly只讀掛載
-w read and write, 讀寫掛載
-n 不更新/etc/mtab,mount不可見
-a 自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)
-L 'LABEL' 以卷標指定掛載設備
-U 'UUID' 以UUID指定要掛載的設備
-B –bind 綁定目錄到另一個目錄上
-o options (掛載文件系統的選項),多個選項使用逗號分隔
async 異步模式 sync 同步模式,內存更改時,同時寫磁盤
atime/noatime 包含目錄和文件
diratime/nodiratime 目錄的訪問時間戳
auto/noauto 是否支持自動掛載,是否支持-a選項
exec/noexec 是否支持將文件系統上運行應用程序
dev/nodev 是否支持在此文件系統上使用設備文件
suid/nosuid 是否支持suid和sgid權限
remount 重新掛載
ro 只讀
rw 讀寫
user/nouser 是否允許普通用戶掛載此設備,/etc/fstab使用
acl 啓用此文件系統上的acl功能
loop 使用loop設備
defaults 相當於rw, suid, dev, exec, auto, nouser, async
  • 查看內核追蹤到的已掛載的所有設備
    cat /proc/mounts

  • 卸載命令

  • 查看掛載情況
    findmnt MOUNT_POINT|device

  • 查看正在訪問指定文件系統的進程
    lsof MOUNT_POINT
    fuser -v MOUNT_POINT

  • 終止所有在正訪問指定的文件系統的進程
    fuser -km MOUNT_POINT

  • 卸載
    umount DEVICE
    umount MOUNT_POINT

  • 使用mount -a 命令掛載/etc/fstab中的所有文件系統

文件掛載配置文件

/etc/fstab每行定義一個要掛載的文件系統

  1. 要掛載的設備或僞文件系統
    設備文件
    LABEL:LABEL=""
    UUID:UUID=""
    僞文件系統名稱:proc, sysfs
  2. 掛載點
  3. 文件系統類型:ext4,xfs,iso9660,nfs,none
  4. 掛載選項:defaults ,acl,bind
  5. 轉儲頻率:0:不做備份 1:每天轉儲 2:每隔一天轉儲
  6. fsck檢查的文件系統的順序:允許的數字是0 1 2
    0:不自檢
    1:首先自檢;一般只有rootfs才用
    2:非rootfs使用

處理交換文件和分區

  • swap交換分區是系統RAM的補充,Swap 分區支持虛擬內存。當沒有足夠的 RAM 保存系統處理的數據時會將數據寫入 swap 分區
  • 當系統缺乏 swap 空間時,內核會因 RAM 內存耗盡而終止進程。配置過多 swap 空間會造成存儲設備處於分配狀態但閒置,造成浪費,過多 swap 空間還會掩蓋內存泄露
  • 推薦系統 swap 空間
    在這裏插入圖片描述

掛載swap分區

  • 基本設置包括:
    •創建交換分區或者文件
    •使用mkswap寫入特殊簽名
    •在/etc/fstab文件中添加適當的條目
    •使用swapon -a 激活交換空間
  • 啓用swap分區
    swapon [OPTION]... [DEVICE]
  • 禁用swap分區
    swapoff [OPTION]... [DEVICE]
[OPTION] 註釋
-a 激活所有的交換分區
-p PRIORITY 指定優先級

/etc/fstab 在第4列中:pri=value

SWAP的優先級

  • 可以指定swap分區0到32767的優先級,值越大優先級越高
  • 如果用戶沒有指定,那麼核心會自動給swap指定一個優先級,這個優先級從-1開始,每加入一個新的沒有用戶指定優先級的swap,會給這個優先級減一
  • 先添加的swap的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶指定的優先級(是正數)永遠高於核心缺省指定的優先級(是負數)
  • 優化性能:分佈存放,高性能磁盤存放

▼移動介質

  • 掛載意味着使外來的文件系統看起來如同是主目錄樹的一部分
  • 訪問前,介質必須被掛載
  • 摘除時,介質必須被卸載
  • 按照默認設置,非根用戶只能掛載某些設備(光盤、DVD、軟盤、USB等等)
  • 掛載點通常在/media 或/mnt下

使用光盤

  • 在圖形環境下自動啓動掛載/run/media/<user>/<label>
  • 否則就必須被手工掛載
    mount /dev/cdrom /mnt/
  • 操作光盤:
    eject 彈出光盤
    eject -t 彈入光盤
  • 創建ISO文件
    cp /dev/cdrom /root/centos.iso
    mkisofs -r -o /root/etc.iso /etc
  • 刻錄光盤
    wodim –v –eject centos.iso

掛載USB介質

  • 查看USB設備是否識別
    lsusb
  • 被內核探測爲SCSI設備
    •/dev/sdaX、/dev/sdbX或類似的設備文件
  • 在圖形環境中自動掛載
    •圖標在[計算機]窗口中創建
    •掛載在/run/media/<user>/<label>
  • 手動掛載
    mount /dev/sdb1 /mnt

常見工具 df du dd

  • 文件系統空間佔用等信息的查看工具

df [OPTION]... [FILE]...

[OPTION] 註釋
-H 以1000而非1024爲單位(1M=1000K)
-T 文件系統類型
-h 顯示單位
-i 顯示inode值
-P 以Posix兼容的格式輸出
  • 查看某目錄總體空間佔用狀態

du [OPTION]... DIR

[OPTION] 註釋
-h 顯示單位(K/M/G)
-s 摘要
--max-depth=# 指定最大目錄層級
  • dd 命令:轉換和複製文件

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=# count=#

解釋
if=file 從所命名文件讀取而不是從標準輸入
of=file 寫到所命名的文件而不是到標準輸出
bs=size block size, 指定塊大小(既是是ibs也是obs)
count=n 複製n個bs
ibs=size 一次讀size個byte
obs=size 一次寫size個byte
cbs=size 一次轉化size個byte
skip=blocks 從開頭忽略blocks個ibs大小的塊
seek=blocks 從開頭忽略blocks個obs大小的塊
conv=conversion[,conversion...] 用指定的參數轉換文件
conversion 轉換參數:
ascii 轉換 EBCDIC 爲 ASCII
ebcdic 轉換 ASCII 爲 EBCDIC
lcase 把大寫字符轉換爲小寫字符
ucase 把小寫字符轉換爲大寫字符
nocreat 不創建輸出文件
noerror 出錯時不停止
notrunc 不截短輸出文件
sync 把每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊
fdatasync 寫完成前,物理寫入輸出文件
  • 示例:備份MBR
    dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
  • 破壞MBR中的bootloader
    dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
  • 有一個大與2K的二進制文件fileA。現在想從第64個字節位置開始讀取,需要讀取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個字節開始的位置,替換128Bytes,實現如下
    dd if=fileA of=fileB skip=64 bs=1Bytes count=128
    dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc

備份:

#將本地的/dev/sda整盤備份到/dev/sdy
`dd if=/dev/sda of=/dev/sdy`

#將/dev/sdx全盤數據備份到指定路徑的image文件
dd if=/dev/sdx of=/path/to/image

#備份/dev/sdx全盤數據,並利用gzip壓縮,保存到指定路徑
dd if=/dev/sdx | gzip >/path/to/image.gz

恢復:

#將備份文件恢復到指定盤
dd if=/path/to/image of=/dev/sdx

#將壓縮的備份文件恢復到指定盤
gzip -dc /path/to/image.gz | dd of=/dev/sdx

拷貝內存資料到硬盤

#將內存裏的數據拷貝到root目錄下的mem.bin文件
`dd if=/dev/mem of=/root/mem.bin bs=1024`

從光盤拷貝iso鏡像

#拷貝光盤數據到root文件夾下,並保存爲cd.iso文件
dd if=/dev/cdrom of=/root/cd.iso

銷燬磁盤數據

#利用隨機的數據填充硬盤,在某些必要的場合可以用來銷燬數據,執行此操作以後,/dev/sda1將無法掛載,創建和拷貝操作無法執行
dd if=/dev/urandom of=/dev/sda1

得到最恰當的block size
通過比較dd指令輸出中命令的執行時間,即可確定系統最佳的block size大小

dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
dd if=/dev/zero of=/root/1Gb.file bs=2048 count=500000
dd if=/dev/zero of=/root/1Gb.file bs=4096 count=250000

測試硬盤寫速度

dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000

測試硬盤讀速度

dd if=/root/1Gb.file bs=64k | dd of=/dev/null

▼練習

  1. 創建一個2G的文件系統,塊大小爲2048byte,預留1%可用空間,文件系統ext4,卷標爲TEST,要求此分區開機後自動掛載至/test目錄,且默認有acl掛載選項
  2. 寫一個腳本,完成如下功能:
    (1) 列出當前系統識別到的所有磁盤設備
    (2) 如磁盤數量爲1,則顯示其空間使用信息
    否則,則顯示最後一個磁盤上的空間使用信息
  3. 將CentOS6的CentOS-6.10-x86_64-bin-DVD1.iso和CentOS-6.10-x86_64-bin-DVD2.iso兩個文件,合併成一個CentOS-6.10-x86_64-Everything.iso文件,並將其配置爲yum源

練習答案

  1. 創建一個2G的文件系統,塊大小爲2048byte,預留1%可用空間,文件系統ext4,卷標爲TEST,要求此分區開機後自動掛載至/test目錄,且默認有acl掛載選項
#格式化分區
mke2fs -t ext4 -b 2048 -m 1 -L TEST /dev/sdb1
#創建掛載點
mkdir /mnt/test
#添加到/etc/fstab文件下
echo "UUID=38f06c8a-bf28-42db-a613-04be1e813f07 /mnt/test  ext4  defaults,acl  0  0" /etc/fstab
#UUID使用blkid查看
  1. 寫一個腳本,完成如下功能:
    (1) 列出當前系統識別到的所有磁盤設備
    (2) 如磁盤數量爲1,則顯示其空間使用信息
    否則,則顯示最後一個磁盤上的空間使用信息
set -u
DISK_NUM=$(fdisk -l | grep "Disk /dev/" | wc -l)
echo "Disk infomation:"
fdisk -l | grep "Disk /dev/"
echo
df -h | head -1
if [ $DISK_NUM -eq 1 ]
then
    FIRST_DISKNAME=$(fdisk -l | grep "Disk /dev" | tr / : | cut -d: -f3 | head -1)
    df -h | grep "/dev/$FIRST_DISKNAME"
else
    LAST_DISKNAME=$(fdisk -l | grep "Disk /dev"|tr / : | cut -d: -f3|tail -1)
    df -h | grep "/dev/$LAST_DISKNAME"
fi
  1. 將CentOS6的CentOS-6.10-x86_64-bin-DVD1.iso和CentOS-6.10-x86_64-bin-DVD2.iso兩個文件,合併成一個CentOS-6.10-x86_64-Everything.iso文件,並將其配置爲yum源
#創建文件夾掛載光盤
mkdir /mnt/cd1
mkdir /mnt/cd2

#掛載
mount /dev/sr0 /mnt/cd1
mount /dev/sr1 /mnt/cd2

#準備合成
mkdir /CentOS-6.10-x86_64-Everything
cp -av /mnt/cd1/ /CentOS-6.10-x86_64-Everything/
cp -av /mnt/cd2/Package/*.rpm /CentOS-6.10-x86_64-Everything/Package/

#合併2個TRANS.TBL
$cat /mnt/cd2/Packages/TRANS.TBL >> /CentOS-6.10-x86_64-Everything/Packages/TRANS.TBL
#排序
mv /CentOS-6.10-x86_64-Everything/Packages/{TRANS.TBL,TRANS.bak}
sort /CentOS-6.10-x86_64-Everything/Packages/TRANS.bak > /CentOS-6.10-x86_64-Everything/Packages/TRANS.TBL
rm -f /CentOS-6.10-x86_64-Everything/Packages/TRANS.bak

#生成iso
mkisofs -o CentOS-6.10-x86_64-Everything.iso /CentOS-6.10-x86_64-Everything

#掛載
mount CentOS-6.10-x86_64-Everything.iso /mnt/newcd

#配置yum
touch /etc/yum.repo/cdrom.repo
cat > cdrom.repo <<EOF
[cdrom]
name=cdrom
baseurl=file:///mnt/newcd
gpgcheck=0
enabled=1

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