新加磁盤
echo?? ‘- – -’? > /sys/class/scsi_host/host2/scan?????? //使新加磁盤生效
lsblk????? //查看磁盤????? 或?????? ls??? /dev/sd*???? -l???? 或? cat?? /proc/partitions
dd?? if=/dev/zero?? of=f1? bs=1M?? count=1024?? //可用來測磁盤速度
設備文件:
一切皆文件: open()? ,? read() ,?? write() ,?? close()
設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應的硬件設備進行通信
字符設備塊設備區別:
塊設備是物理存在的,有緩存,? 隨機訪問,以塊為單位存儲
字符設備沒有緩存,按順序訪問,以字符為單位存儲
mknod???? /data/sdA??? b? 8? 1???? //創建指定類型的設備
設備號碼: 主設備號(標識設備類型); 次設備號(標識同一類型下的不同設備)
硬盤接口類型:并行?? 串口???? rpm(磁盤轉速)
磁盤設備的設備文件命名: /dev/DEV_FILE
虛擬磁盤:/dev/vd????? (例如云服務器)
不同版本的系統的硬盤名稱不同
分區的設備名稱不穩定;
磁盤的容量大小計算:512*扇區數(sector)*磁道數(track)*盤面數(head)
一個磁道用6位二進制數表示扇區數,最多有64個扇區
10位存放磁道數,最多有1024磁道
8位存放磁頭,最多有256磁頭
柱面(cylinder):所有相同磁道組成的柱面
區位記錄磁盤扇區結構:ZBR(區位記錄:Zoned Bit Recording)
CHS(磁盤三圍 :c代表柱面,h磁頭,s扇區)和LBA:
CHS:采用24bit位尋址;最大尋址空間為8GB
LBA: 采用48bit位尋址;最大尋址空間為128PB
由于CHS尋址方式的尋址空間在大概8GB以內,所以在磁盤容量小于大概8GB時,可以使用CHS尋址方式或是LBA尋址方式;在磁盤容量大于大概8GB時,則只能使用LBA尋址方式
磁盤的使用:分區;創建文件系統:格式化;掛載:分配目錄名
磁盤為什么分區:
優化I/O性能;實現磁盤空間配額限制;提高修復速度;隔離系統和程序;安裝多個OS;采用不同的文件系統
兩種分區方式:MBR,GPT
MBR分區:分區不超過2T;按柱面分區;使用32位表示扇區數
結構:
0磁道0扇區:446bytes?? //用于啟動計算機
64 bytes?? //分區表??? 其中??? 16bytes: //標識一個分區
2bytes?? :?? 55AA標記位
dd? if=/dev/sda ??of=/data/mbr_back??? bs=1? count=512? //備份分區表
dd? if=/dev/zero?? of=/dev/sda??? bs=1? count=512????? //破壞分區表
救援模式修復分區表:
重啟,第三項(troubleshooting),第二項(救援模式),選1繼續;設置IP地址(ifconfig??? ens32??? 192.168.10.100/24),拷貝備份的分區表文件,恢復分區表? ?dd if=mbr_bak?? of =/dev/sda
硬盤主導記錄MBR由四個部分組成:
- 主引導程序,負責從活動分區中加載,并運行系統引導程序
- 出錯信息數據區
- 分區表
- 結束標志字,偏移地址01FE—01FF的2個字節值為結束標志55AA
dd? if =/dev/sda? of=/dev/sdd??? bs=1 ?count=512?? //克隆分區,僅克隆主分區(MBR)
dd? if=/dev/sda?? of=/data/mbr_back??? bs=1? count=2? -skip=510? //破壞55AA標記
GPT分區:
GUID;支持128個分區,使用64位,支持8Z??? 64Z
使用128位UUID表示磁盤和分區GPT分區表自動備份在頭和尾兩份并有CRC校驗位
UEFI(統一擴展固件接口)硬件支持GPT,使操作系統啟動
uuidgen??????? //生成隨機的UUID
管理分區:
列出塊設備:lsblk
創建分區使用:fdisk?? 創建MBR分區;
gdisk? 創建GPT分區
parted? 高級分區操作
partprobe? –?? 重新設置內存中的內核分區表版本
parted命令(parted的操作都是實時生效的,小心使用)
parted??? /dev/sdb??? mklabel?? gpt|msdos??????? //創建分區,并指定分區的類型
parted? /dev/sdb? mkpart?? primary? 1 1000(默認以M為單位) //創建分區指定大小
parted??? /dev/sdb????? print??? //顯示分區情況
parted??? /dev/sdb????? rm?? 數字? //刪除分區
parted?? -l??? //列出分區信息(可跟設備名,查看某設備的具體分區情況)
創建邏輯分區后,刪除第一個邏輯分區,其他的邏輯分區的名稱會發生變化
分區工具fdisk和gdisk
fdisk? -l? -[u]? [device…]? 查看分區? 或?? lsblk?? 兩者結果不同,需同步分區表
fdisk? /dev/sdb?? 管理分區
子命令:?? p? 分區列表?????? t?? 更改分區類型??????? o? 創建一個空的mbr分區
n 創建新的分區??????? d刪除分區?????????? v? 校驗分區
u 轉換單位??????????? w 保存退出????????? q? 不保存退出
同步分區表:
查看內核是否已經識別新的分區:cat ?/proc/partitions
Centos6中:
新增分區: partx? -a?? /dev/DEVICE??? //實現分區同步
Kpartx????? -a??? /dev/DEVICE???? -f:? force?? //實現分區同步
刪除分區:? partx? -d? –nr M-N? /dev/DEVICE
Centos7使用partprode????????????? partprode?? [/dev/DEVICE]
文件系統:負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志 ,壓縮,加密等
支持的文件系統:?? /lib/modules/`uname -r`/kernel/fs?? //存放了所有的文件系統
Linux? 文件系統:ext2 ,ext3,ext4,xfs(SGI) ,btrfs (Oracle) ,reiseerfs,jfs(AIX) ,swap
網絡文件系統:NFS??????????? CIFS
集群文件系統:? GFS2?????? OCFS2 (oracle)
分布式文件系統: fastdfs ,ceph ,moosefs ,mogilefs ,glusterfs ,Lustre
Raw :未經處理或未經格式化產生的文件系統
文件系統分類:
根據其是否支持”journal”功能:
日志型文件系統:ext3 , ext4 ,xfs ,….
非日志型文件系統:ext2 ,vfat
cache?? 針對讀操作(緩存)
buffer??? 針對寫操作(緩沖區)
文件系統的組成部分:
內核中的模塊: ext4 ,xfs , vfat
用戶空間的管理工具:mkfs.ext4? ,mkfs.xfs , mkfs.vfat
Linux的虛擬文件系統:VFS
查看支持的文件系統: cat? /proc/filesystems
blkid?? /dev/sdb1??? //查看設備的文件系統類型
df?? -T??? //查看已掛載的塊設備的文件系統
blkid???? //查看全部塊設備的文件系統類型
創建文件系統
mkfs? 命令:? mkfs.FS_TYPE? /dev/DEVICE
ext4 ,xfs , vfat? ,btrfs
mkfs? -t? FS_type? /dev/DEVICE
-L? ‘label’?? :設定卷標
創建ext文件系統:
mke2fs? :ext 系列文件系統的專用管理工具
-m??? 默認5%,可指定預留空間占總空間的百分比
-b??? {1024|2018|4096}? 塊大小
-l???? 一個節點記錄占用的磁盤空間大小
-L “將來掛載點目錄”???? 加卷標
-i???? 為數據創建iNode ,該大小不小于塊大小
-O? FEATURE?? 啟用某功能
-O? ^FEATURE??? 禁用某功能
文件系統標簽:指向設備的另一種方法,與設備無關
blkid? :塊設備屬性信息查看
blkid?? [option]…?? [device]
-U?? UUID?? :根據指定的UUID來查找對應的設備文件
-L??? LABEL :根據指定的LABEL來查找對應的設備文件
e2label? :管理ext系列文件系統的LABEL
e2label?? DEVICE?? [LABEL]???? 修改卷標
blkid -U `grep “/data” /etc/fstab |cut -d ” ” -f1 |cut -d= -f2` 查看/data對應設備文件
blkid -U `grep “/data” /etc/fstab |sed -r “s@UUID=(.*) /data.*@\1@”`
findfs:查找分區
findfs?? [options]?? LABEL=<label>??? 以卷標為搜索條件,查找設備名
findfs?? [options]? UUID=<uuid>
tune2fs: 重新設定ext系列文件系統可調整參數的值
-l?? 查看指定文件系統超級塊信息;super block
-L? ‘LABEL’???? 修改卷標
-m? #???? 修預留給管理員的空間百分比
-j??? 將ext2 升級為ext3
-O? 文件系統屬性啟用或禁用??? -O? ^FEATURE?? 禁用
-o?? 調整文件系統默認的掛載選項
-U?? UUID??? 修改UUID號
tune2fs?? -o?? acl? /dev/sdb1??? //在centos6上需對新加塊設備設置acl功能
centos7上新創建的分區默認就有acl功能
dumpe2fs? :? 塊分組管理,32678塊
-h??? 查看超級塊信息,不顯示分組信息
文件系統檢測和修復(常發生于死機或非正常關機后)
掛載為文件系統標記為:“no?? clean”(注意,不要在掛載狀態下修復)
fsck?? -t? FS_TYPE??? 或?? fsck.FS_TYPE? (修復文件系統時,不能處于掛載狀態)
-p?? 自動修復錯誤
-r??? 交互式修復錯誤
-y??? 自動回答yes
FS_TYPE???? 與分區上已經存在的文件類型相同
fsck???? //修復文件系統(修復的是軟件邏輯上的破壞)
e2fsck?? ext系列文件專用的檢測修復工具
-y??? 自動回答yes
-f???? 強制修復
超級快和inode table :
塊大?。?KB
超級快:存放當前分區的元數據信息
inode? table:存放文件的元數據,屬性,大小,權限
掛載mount:(普通用戶不能掛載)
注意:一個掛載點同一時間只能掛一個設備;一個設備可同時掛載到多個目錄
掛載點下的源文件在掛載完成后會被臨時隱藏
掛載點:(事先存在,建議使用空目錄,進程正在使用中的設備無法被卸載)
掛載:將額外的文件系統與根文件系統某現存的目錄建立關聯關系,進而使此目錄作為其他文件訪問入口的行為
卸載:解除此關聯關系的過程
掛載方法:? mount??? DEVICE???? MOUNT_POINT
mount?? :通過查看/etc/mtab 文件顯示當前已掛載的所有設備文件
mount?? [-fnrsvw] ?[-t vfstype]? [-o options]? device? dir
-a?? 實現自動掛載,使修改的配置文件立即生效(若文件中存在,僅修改部分參數,該命令無效,只能用remount 實現重新掛載)
-r?? 以只讀方式掛載設備(只能查看文件,不允許刪除)
-w?? 可讀可寫(默認)
-n??? 隱藏掛載(centos6? 有效)?? cat? /proc/mounts??? 即可看到隱藏掛載項
-B?? 或 –bind??? 綁定目錄到指定目錄(目錄掛目錄)
-o?? acl?????? //掛載時添加上acl功能
async????? 異步模式
sync??????? 同步模式,內存更改時,同時寫磁盤
noexec?????? 禁止程序執行(但bash 可執行)
remount?????? 重新掛載(特定環境不能取消掛載,即可利用當前命令掛載)
?????? loop?????? 掛載文件到目錄上(實現文件模擬分區)
losetup?? -a?? //? 可查看模擬分區的文件(centos6 默認有8個)
vim?? /boot/grub/grun.conf???????? //修改kernel行的最后? max_loop=100
查看內核追蹤到的已掛載的全部設備:?? cat?? /proc/mounts(centos6上)
卸載命令
查看掛載情況:? findmnt??? MOUNT_POINT |device
查看正在訪問的指定文件系統的進程
lsof??? MOUNT_POINT
fuser?? -v? MOUNT_POINT
終止所有正在訪問指定的文件系統的進程
fuser?? -km? MOUNT_POINT
卸載
umount???? DEVICE
umount???? MOUNT_POINT
實現掛載的永久生效:寫入文件/etc/fstab
掛載文件的內容錯誤:
- UUID錯誤,重啟機器將失敗,需將文件的最后內容改為0(即不檢查)重啟可遠程后,修改為正確的UUID即可
- 掛載點出錯,重啟機器成功,只需重新掛載即可
如何將/home整個目錄遷移到一個新的大的磁盤上?
? dd? /dev/zero?? /dev/sdb?? bs=1?? count=512?? //破壞分區即可刪除分區
???? 首先備份/home
- fdisk 先分一個大的分區50G(分區大小不可更改)
2 .mkfs.ext4??? /dev/sdb1? -L? /home 創建文件系統
- mkdir /mnt/home
- mount /dev/sdb1 /mnt/home
- init 1 單用戶登錄,確保只有自己在訪問? (網絡出現問題)
- cp -av /home/*??? /mnt/home/
- rm –rf /home/*
- vim /etc/fstab
UUID=xxxxx????? /home???? ext4???? defaults?? 0? 0
- mount -a
ls??? /home? /mnt/home?? -l
- umount /mnt/home??? ; rm?? -rf?? /mnt/home
- init 5
恢復原狀態:
- mkdir /mnt/home
- mount /dev/sdb1??? /mnt/home
- init 1??? ;???? umount???? /home
- cp -av????? /mnt/home/*???? /home/
- 刪除文件中的配置 ;?? umount?? /mnt/home
- 刪除sdb1分區;( fdisk??? d???? 1???? w????? )
文件中寫:文件中寫:掛載光盤: /dev/sr0??? /mnt/cdrom? iso9660??? defaults???? 0 0
文件夾掛載到文件夾:? /boot?? /mnt/boot??? none???? bind?? 0? 0
將文件掛載目錄:/root/p1(設備文件名)???? /mnt/p1(掛載點)? ext4??? loop??? 0? 0? (模擬文件分區掛載)
處理交換文件和分區:
交換分區是系統RAM的補充
基本設置包括:創建交換分區或者文件、使用mkswap寫入特殊簽名、在/etc/fstab文件中添加適當的條目、使用swapon?? -a?? 激活交換空間
掛載交換分區:
swapon 啟用
-a? 激活所有的交換分區
-p?? PRIORITY?? 指定優先級
/etc/fstab:pri=value
禁用swapoff? [option]…?? [DEVICE]
SWAP的優先級:
可以指定swap分區0到32767的優先級,值越大優先級越高
如果用戶沒有指定,那么核心會自動給swap指定一個優先級,這個優先級從 -1開始,每加入一個新的沒有用戶指定優先級的swap,會給這個優先級減一
先添加的swap的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶 指定的優先級(是正數)永遠高于核心缺省指定的優先級(是負數)
優化性能:分布存放,高性能磁盤存放
swapon [OPTION]… [DEVICE]
-a:激活所有的交換分區
-p PRIORITY:指定優先級
/etc/fstab:pri=value? 可寫入文件,使之永久生效(禁用swap在啟用即可生效)
mkswap?? 創建文件系統
修改fstab文件:? UUID=xxxx????? 掛載點??? swap?????? defaults;pri=100 ??0? 0
swapon?? -a???? //使swap分區生效
swapon???? -s???? 查看所有生效的swap分區的信息
swapoff?????? 禁用swap分區
擴充swap分區:(該方法需要有磁盤空間)
- 分區,一個2G的swap分區, 改成82類型
- mkswap /dev/sdb1???? -L????? swap_sdb1??? 創建文件系統
- 修改fstab文件: UUID=xxxx????? 掛載點??? swap ?????defaults?? 0?? 0
- swapon -a???? //使swap生效
使用文件模擬swap:
dd?? if=/dev/zero?? of=/swapfile?? bs=1024M? count=2?? //生成2G 的swap文件
mkswap??? ?/swapfile?? ??-L??? swap_file????? (t??? 82 使用fdisk給分區指定文件系統)
修改fstab文件:? /swapfile????? swap(掛載點)??? swap???? defaults??? 0?? 0
swapon?? -a???? //使swap分區生效
eject??? 彈出光盤
eject?? -t???? 彈入光盤.
創建ISO文件:?? cp??? /dev/sr0????? /data/centos7.iso
dd??? /dev/sr0???? /data/centos7.iso
mkisofs??? -r? -o?? /data/centos7.iso???? /etc
合并光盤:(可以用來做yum原,不能用來啟動光盤)
mkdir???? /centos6
cp??? /mnt/cdrom/*???? /centos6/?? -r? (復制兩張盤內容到同一文件夾)
mkisofs??? -r? -o?? /data/centos7.iso???? /centos6/
掛載USB介質
lsusb???? 查看USB設備
tail??? /var/log/messages???? -f??? 查看日志文件
查看USB設備是否識別 : lsusb
被內核探測為SCSI設備 :/dev/sdaX、/dev/sdbX、或類似的設備文件
在圖形環境中自動掛載 :圖標在[計算機]窗口中創建 , 掛載在/run/media//
手動掛載 : mount /dev/sdb1 /mnt
常見工具:
文件系統空間占用等信息的查看工具: df [OPTION]… [FILE]…
-H 以1000為單位
-T 文件系統類型
-h: human-readable? 以1024為單位
-i:inodes instead of blocks
-P: 以Posix兼容的格式輸出
查看某目錄總體空間占用狀態: du [OPTION]… DIR? (默認統計每個子文件夾的大?。?/p>
-h: human-readable ??(加上單位,默認為K)
-s: summary? (總大?。????? ?–max-depth?? (最大深度)
工具dd:(克隆分區只是克隆MBR分區內容)
dd命令:convert and copy a file
用法: dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=#:block size, 復制單元大小
count=#:復制多少個bs
skip=blocks? ?從開頭忽略blocks個ibs大小的塊
seek=blocks ??從開頭忽略blocks個obs大小的塊
conv=conversion[,conversion…] 用指定的參數轉換文件
轉換參數: ascii 轉換 EBCDIC 為 ASCII
ebcdic 轉換 ASCII 為 EBCDIC
lcase 把大寫字符轉換為小寫字符
ucase 把小寫字符轉換為大寫字符
nocreat 不創建輸出文件
noerror 出錯時不停止
notrunc 不截短輸出文件
sync 把每個輸入塊填充到ibs個字節,不足部分用空(NUL)字 符補齊
備份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?,F在想從第64個字節位置開始讀取,需要讀 取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個字節開 始的位置,替換128Bytes,實現如下:
dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
備份:
dd if=/dev/sdx of=/dev/sdy??? ?將本地的/dev/sdx整盤備份到/dev/sdy
dd if=/dev/sdx of=/path/to/image
將/dev/sdx全盤數據備份到指定路徑的image文件 dd if=/dev/sdx | gzip >/path/to/image.gz
備份/dev/sdx全盤數據,并利用gzip壓縮,保存到指定路徑
恢復: dd if=/path/to/image of=/dev/sdx?? ?將備份文件恢復到指定盤
gzip -dc /path/to/image.gz | dd of=/dev/sdx?? ?將壓縮的備份文件恢復到指定盤
測試硬盤寫速度 ???dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
測試硬盤讀速度?? ?dd if=/root/1Gb.file bs=64k | dd of=/dev/null
修復硬盤 dd if=/dev/sda of=/dev/sda
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97027