Qt 自定義資料結構序列化與反序列化
阿新 • • 發佈:2021-01-19
磁碟裝置的裝置檔案命名:
/dev/DEV_FILE
/dev/sdx #SAS,SATA,SCSI,IDE
#不同磁碟標識:a-z,aa-az ,例如:sda,sdb
#同一裝置不同分割槽:1,2... 例如:sda1,sda2
dev/nvme0n 第一個nvme0n1,第二個nvme0n2 #nvme協議硬碟
虛擬硬碟:
/dev/xd
/dev/xvd
識別SSD和機械硬碟型別:
lsblk -s -o name,rota #1表示機械,0表示SSD
機械硬碟: HDD 機械硬碟即是傳統普通硬碟,主要由:碟片,磁頭,碟片轉軸及控制電機,磁頭 控制器,資料轉換器,介面,快取等幾個部分組成 固態硬碟: SSD 用固態電子儲存晶片陣列而製成的硬碟,由控制單元和儲存單元(FLASH晶片、 DRAM晶片)組成 相較於HDD,SSD在防震抗摔、傳輸速率、功耗、重量、噪音上有明顯優勢,SSD 傳輸速率效能是HDD的2倍 相較於SSD,HDD在價格、容量佔有絕對優勢
硬碟儲存術語:
head:磁頭
track:磁軌
sector:扇區,512位元組
cylinder:柱面 1柱面=512*扇區數/磁軌*磁頭數
磁碟分割槽
磁碟分割槽方式MBR、GPT:
為什麼要分割槽
優化I/O效能
實現磁碟空間配額限制
提高修復速度
隔離系統和程式
安裝多個OS
採用不同檔案系統
MBR分割槽
MBR:主引導記錄,最多4個分割槽,也可以3個主分割槽,一個擴充套件分割槽(n個邏輯分割槽),最大支援2TB的硬碟,主和擴充套件發分割槽對應的1-4,/dev1/sda3,邏輯分割槽從5開始,/dev/sda5 MBR分割槽 硬碟前512位元組為硬碟資訊 前446位元組:boot loder 作業系統載入程式 後64位元組:分割槽表,每16位元組表示一個分割槽 最後2位元組:55aa 標記位
範例:備份MBR的分割槽表,並破壞後恢復
#備份MBR分割槽表 dd if=/dev/sda of=/data/dpt.img bs=1 count=64 skip=446 scp /data/dpt.img 10.0.0.102: #破壞MBR分割槽表 dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446 #無法啟動 reboot #用光碟啟動,進入rescue made,選第3項skip to shell #配置網路 #ifconfig ens160 10.0.0.8/24 #ip a a 10.0.0.8/24 dev/ens160 #scp 10.0.0.102:/root/dpt.img #恢復MBR分割槽表 #dd if=dpt.img of=/dev/sda bs=1 seek=446 #reboot
GPT分割槽
全域性唯一標識分割槽表,又稱GUID,支援128個分割槽,大容量硬碟,大 容量的優勢在今後的發展,GPT分割槽會逐漸取代MBR分割槽
GRT分割槽結構分4個區域:
GPT
分割槽表
GPT分割槽
備份區域
分割槽管理常用命令:
列出硬碟資訊(塊裝置)
lsblk
建立分割槽
fdisk 和 gdisk #分別是管理MBR分割槽 管理GPT分割槽
-l 檢視分割槽型別與磁碟資訊
fdisk 子命令:
p 分割槽列表
n 建立分割槽
d 刪除分割槽
w 儲存退出
t 更改分割槽型別
v 校驗分割槽
u 轉換分割槽
q 不儲存並退出
parted #高階分割槽操作,可以是互動式或非互動式
檢視核心是否已經識別新的分割槽
cat /proc/partations
Centos7,8 同步修改後分割槽資訊
partprobe /dev/sda
centos 6 同步修改後分割槽資訊
增加:partx -a /dev/sda 刪除:partx -d --nr 6-8 /dev/sda
檔案系統
常見的檔案系統
ext4:Linux系統下的日誌檔案系統。是ext系列的最新版,修復速度快,最大支援1EB的檔案系統
xfs:根據所記錄的日誌在很短的時間內迅速恢復磁碟檔案內容,支援最大8EB 的檔案系統
NTFS:最多隻能支援16EB的檔案系統和16EB的檔案,windows常用檔案系統
檢視當前支援的檔案系統:
cat /etc/filesystems
檔案系統管理工具
檢視分割槽檔案系統
blkid
-U:根據指定UUID查詢對應的裝置
-L:根據指定LABEL查詢對應的裝置
df -Th 檔案系統空間實際真正佔用等資訊的檢視
lsblk -f
mkfs 建立,修改,格式化檔案系統
-t 指定檔案系統
/dev/sda1 -L 設定卷標
#注意:適用mkfs命令之前要將分割槽取消掛載
fsck #檔案系統修復,檢查
fsck -t ext4 /dev/sda1
#注意:使用fsck命令之前要將分割槽取消掛載,fsck字尾要與檔案系統相同
檔案系統 掛載:mount
mount 或者cat etc/mtab #檢視所有的掛載
umount 取消掛載
mount -a 掛載生效
findmnt MOUNT_POINT|device #檢視掛載點情況
lsof MOUNT_POINT #檢視正在訪問指定檔案系統的程序
掛載規則:
一個掛載點同一時間只能掛載一個裝置
一個掛載點同一時間掛載了多個裝置,只能看到最後一個裝置的資料,其他裝置上的資料將被隱藏
一個裝置可以同時掛載到多個掛載點
通常掛載點一般是已存在空的目錄
持久掛載:
vim /etc/fstab
裝置檔案:/dev/sda1或UUID
掛載點(必須是事先存在的目錄):/data
檔案系統型別: ext4
掛載選項: defaults
轉儲頻率:0:不做備份 1:每天轉儲 2:每隔一天轉儲
/dev/sda1或UUID /data ext4 defaults 1 2
swap分割槽:
概念:swap交換分割槽是系統RAM的補充,swap分割槽支援虛擬記憶體。當記憶體不足時 會將資料存入awap分割槽,當系統缺乏swap空間時,核心會因記憶體耗盡而終止進 程。配置過多swap空間會造成記憶體處於分配狀態但閒置,所以要合理分配swap 分割槽。
交換分割槽實現過程:
建立交換分割槽或者檔案
使用mkswap寫入特殊簽名
再/etc/fstab檔案中新增適當的條目
使用swapon -a 啟用交換空間
1,fdisk /dev/sda3 根據提示建立swap分割槽
2,blkid 檢視swap分割槽資訊UID等
3,vim /etc/fstab 寫入配置檔案中
4,swapon -a 生效swap分割槽
5,free -h 檢視
禁用swap分割槽
sed -i.bak '/swap/d' /etc/fstab
swapoff -a 禁用
swap使用策略
cat /proc/sys/vm/swappiness 檢視
說明:預設值為30,值越大就越傾向於使用swap,可以設定為0,這樣並不會禁止對swap的使用,只是最大限度地降低了使用swap的可能性
dd命令:
dd if=/dev/zero of=/data/f1 bs=10M count=100
if=file 從所命名檔案讀取而不是從標準輸入
of=file 寫到所命名的檔案而不是到標準輸出
bs=size 指定塊大小
skip=blocks 從開頭忽略blocks個ibs大小的塊
seek=blocks 從開頭忽略blocks個obs大小的塊
範例:
#備份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
#將本地的/dev/sdx整盤備份到/dev/sdy
dd if=/dev/sdx 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
#將壓縮的備份檔案恢復到指定盤
dd if=/dev/mem of=/room/mem.bin bs=1024
#銷燬磁碟資料
dd if=/dev/urandom of=/dev/sda1
#測試硬碟寫速度
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
#測試硬碟讀速度
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
RAID:
RAID指將多個磁碟合成一個“陣列”來提供更好的讀寫效能與冗餘
RAID實現的方式:
外接式磁碟陣列:通過擴充套件卡提供適配能力
內接式RAID:主機板整合RAID控制器,安裝OS前在BIOS裡配置
軟體RAID:通過OS實現
RAID級別:
RAID 0:最少磁碟數2,兩塊硬碟空間合併,無容錯能力
RAID 1:最少磁碟數2,兩塊硬碟儲存相同資料,有冗餘能力
RAID 4:最少磁碟數3,有冗餘能力,多塊資料盤異或運算值存於專用校驗盤
RAID 5:最少硬碟數3,每塊硬碟有一個校驗區,有容錯能力,允許最多1塊磁 盤損壞
RAID 6:最少硬碟數4,每個硬碟有兩個校驗區,比RAID5更強容錯能力,允許 最多1塊磁碟損壞
RAID 10:最少硬碟數4,讀、寫效能提升,有容錯能力:每組映象最多隻能壞 一塊,多塊磁碟先實現RAID1,再組合成RAID0
JBOD:將多塊不同大小磁碟的空間合併一個大的連續空間使用
邏輯卷管理器(LVM)
LVM可以允許對捲進行方便操作的抽象層,包括重新設定檔案的大小,允許在多個物理裝置間重新組織檔案系統
pv物理卷 vg卷組 lv邏輯卷
命令:
檢視卷: pv/lv/vg display(pvdisplay)
建立卷: pv/lv/vg create
刪除卷: pv/lv/vg remove
建立邏輯卷:
1、pvcreate /dev/sda1 #建立物理卷
2、vgcreate vg1 /dev/sda1 #建立卷組並加入物理卷
3、lvcreate -L 3G -n sy vg0 #在卷組下建立3G邏輯卷並取名為 sy
4、ll /dev/vg0/sy #檢視卷組下的邏輯卷
5、mkfs.xfs /dev/vg0/sy #建立邏輯卷檔案系統
6、mkdir /mnt/sy #建立邏輯卷掛載目錄
7、mount /dev/vg0/sy /mnt/sy #掛載邏輯卷
8、vim /etc/fstab #將掛載永久儲存
擴充套件邏輯卷:
1、pvcreate /dev/sda2 #建立物理卷
2、vgextend vg0 /dev/sda2 #新增物理捲到vg0卷組中
3、lvextend -r -l +3G /dev/vg0/sy #擴充套件邏輯卷
邏輯卷快照
#為現有邏輯卷建立快照
lvcreate -l 64 -s -n data-snapshot /mnt/snap
#掛載快照
mkdir -p /mnt/snap
mount -o ro,nouuid /dev/vg0/data-snapshot
#恢復快照
umount /dev/vg0/data-snapshot
umount /dev/vg0/data
lvconvert --merge /dev/vg0/data-snapshot
#刪除快照
umount /mnt/snap
lvremove /dev/vg0/data-snapshot
範例:請描述將一塊空間大小為 500G 的新硬碟新增到伺服器的詳細過程
準備:插入一塊500G硬碟
1,echo ' - - - ' > /sys/class/scsi_host/host{0..*}/scan #掃描出硬碟
2,lsblk #檢視硬碟
3,fdisk /dev/sda 分割槽 n..P..W..
n p 1 \r +1G p #完成boot分割槽
n p 2 \r +100G p #完成根分割槽
n p 3 \r +50G p #完成data分割槽
n p \r +2G p t 4 L 82 p w #完成swap分割槽並推出
4,partprobe /dev/sda #同步分割槽表
5,lsblk -f #檢視分割槽是否完成
6,mkfs.ext4 /dev/sda1 #設定檔案系統
7,mkfs.ext4 /dev/sda2 #設定檔案系統
8,mkfs.ext4 /dev/sda3 #設定檔案系統
9,mkswap /dev/sda3 #設定swap分割槽檔案系統
10,cat > /etc/fstab <<EOF 將磁碟寫入開機掛載
/dev/sda2 / ext4 defaults 0 0
/dev/sda1 /boot ext4 defaults 0 0
/dev/sda3 /data ext4 defaults 0 0
/dev/sda4 swap swap defaults 0 0
EOF
11,mount -a #生效