linux下卸载 dev sd*下硬盘,Linux 磁盘管理(示例代码)
磁盤管理
Linux思想一切皆文件:
open(),read(),write(),close()
I/O 設備地址
設備類型:
塊設備:block,存取單位“塊”,磁盤 (隨機訪問)
字符設備:char,存取單位“字符”,鍵盤 (邏輯訪問)
設備文件:關聯(lián)至一個設備驅(qū)動程序,進而能夠跟與之對應硬件設備進行通訊。
設備編號:
ll /dev/sda*
root disk 8.0
root disk 8.1
每一個設備都擁有一個主要號碼,代表設備的類型,第二個是同一類型的唯一編號。
硬盤接口類型:
并行:
IDE:133MB/s (家用)
SCSI:640MB/s ?(服務器)
串口:
SATA:6Gbps (家用)
SAS:6Gbps ? (服務器)
USB:480MB/s
rpm:?rotations per minute
每分鐘的轉(zhuǎn)速
磁盤設備的設備文件命名:/dev/DEV_FILE
IDE: /dev/hd
SCSI, SATA, SAS, USB: /dev/sd
不同設備:a-z
/dev/sda, /dev/sdb, …
同一設備上的不同分區(qū):1,2, …
/dev/sda1, /dev/sda5
磁頭 head
2磁頭數(shù) =1盤片
磁道 track
扇區(qū) sector (512字節(jié))
head 256 磁頭
track 1024 磁道
secror 63 扇區(qū)
CHS(culinder柱面)
culinder=track*head=512*63*256=8M
(centos6版本之后就不用整個柱面分區(qū))
LBA 邏輯尋址(6版本之后就使用)
分區(qū)
兩種分區(qū)方式:?MBR ,GPT
MBR: Master Boot Record,1982年,使用32位表示扇區(qū)數(shù),分區(qū)不超過2T
如何分區(qū):按柱面
0磁道0扇區(qū):512bytes
446bytes:boot loader
64bytes:分區(qū)表
16bytes:?標識一個分區(qū)
2bytes:?55AA (識別是否有分區(qū))
4個主分區(qū);3主分區(qū)+1擴展(N個邏輯分區(qū))
GPT:GUID(Globals Unique Identifiers)partition table 支持128個分區(qū),使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)
使用128位UUID 表示磁盤和分區(qū)GPT分區(qū)表自動備份在頭和尾兩份,并有CRC校驗位
UEFI (統(tǒng)一擴展固件接口)硬件支持GPT,使操作系統(tǒng)啟動
EFI部分又可以分為4個區(qū)域:EFI信息區(qū)(GPT頭)、分區(qū)表、GPT分區(qū)、備份區(qū)域
linux 使用的分區(qū)方式
lilo
grub (5,6版本)
grub2(7版本之后使用)
echo "- – -"> /sys/class/scsi_host/host0/scan
掃描新添加的硬盤
(查看分區(qū))
lsblk 查看硬盤信息 (讀取內(nèi)存中的信息)
fdisk -l /dev/sdd 查看硬盤信息
hexdump -C -n 512 /dev/sda 查看磁盤前512字節(jié)的信息
dd if=/dev/sda of=/testdir/mbrbak bs=1 count=512
備份mbr
dd if=/testdir/mbrbak of=/dev/sdd
將磁盤中備份的磁盤信息放到sdd
dd if=/dev/zero of=/dev/sdd bs=1 count=446 將前446字節(jié)用0替代
dd if=/dev/zero of/=dev/sdd bs=1 count=2 skip=510 seek=510
用0代替最后兩個字節(jié)的分區(qū)標識55AA。
最后兩位字節(jié)存儲標識的55 AA變成00 00
dd if=/testdir/mbrbak of=/dev/sdd bs=1 count=2 skip=510 seek=510
恢復分區(qū)標識
管理分區(qū)
列出塊設備
lsblk
創(chuàng)建分區(qū)使用:
fdisk創(chuàng)建MBR分區(qū),也支持GPT,對于一塊硬盤,最多只能管理15分區(qū)
fdisk /dev/sdc
w:存盤退出
n:添加一個新的分區(qū)、柱面為單位,
p:顯示
d:刪除
q:不保存退出
t:更改分區(qū)類型
gdisk創(chuàng)建GPT分區(qū)
查看內(nèi)核是否已經(jīng)識別新的分區(qū):
cat /proc/partations
partx -a /dev/sda (6使用這個指令)
partprobe
同步
GNU parted高級分區(qū)操作(創(chuàng)建、復制、調(diào)整大小等等)
parted /dev/sdc mklabel msdos
創(chuàng)建新的磁盤格式為MBR
parted /dev/sdc mklabel gpt
創(chuàng)建新的磁盤格式為GPT
fdisk -l /dev/sdc
查看分區(qū)的起始到結(jié)束點,塊的數(shù)量,ID
parted /dev/sdc/mkpart primary 1 1024起始點 終止點 ? ? ?創(chuàng)建一個分區(qū)
parted /dev/sdc/ rm 1
刪除/dev/sdc 第一個分區(qū)
partprobe-重新設置內(nèi)存中的內(nèi)核分區(qū)表版本
文件系統(tǒng)
文件系統(tǒng)是操作系統(tǒng)用于明確存儲設備或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu);
即在存儲設備上組織文件的方法。操作系統(tǒng)中負責管理和存儲文件信息的軟件結(jié)構(gòu)稱為文件管理系統(tǒng),簡稱文件系統(tǒng)。
從系統(tǒng)角度來看,文件系統(tǒng)是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統(tǒng)。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉(zhuǎn)儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。
ext3(centos5)
ext4(centos6)
xfs(centos7)
光盤:iso9660
網(wǎng)絡文件系統(tǒng):NFS,CIFS (Linux包 samba)
集群文件系統(tǒng):GFS2,OCFS2(oracle)
分布式文件系統(tǒng):ceph,moosefs,mogilefs,glusterfs,Lustre
RAW:未經(jīng)處理或者未格式化產(chǎn)生的文件系統(tǒng)
文件系統(tǒng)分類
根據(jù)其是否支持"journal"功能:
日志型文件系統(tǒng):ext3, ext4, xfs, …
非日志型文件系統(tǒng):?ext2, vfat
文件系統(tǒng)的組成部分:
內(nèi)核中的模塊:ext4, xfs, vfat
用戶空間的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虛擬文件系統(tǒng):VFS
查前支持的文件系統(tǒng):cat /proc/filesystems
lsmod 可以查看設備的驅(qū)動是否安裝成功
創(chuàng)建文件系統(tǒng)
mkfs.
mkfs -t ext4
mke2fs
mke2fs /dev/sdc1 建立ext文件系統(tǒng)
一個塊=4k
tune2fs -l /dev/sd*
超級塊是存儲關于塊的數(shù)據(jù),塊的大小,塊的元數(shù)據(jù)。
組超級塊,存儲塊的大小,和每個組有多少塊,塊的元數(shù)據(jù)。
超級塊會自動備份。
blkid 查看盤的文件系統(tǒng)
tun2fs -o ^has_journal /dev/sd*
移除 日志功能,ext3變ext2
創(chuàng)建ext文件系統(tǒng)
mke2fs:ext系列文件系統(tǒng)專用管理工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L ‘LABEL‘ 卷標(卷標名最好使用掛載點名字)
-j: 相當于-t ext3
mkfs.ext3 = mkfs-t ext3 = mke2fs -j = mke2fs -t ext3
tune2fs -m 0 /dev/sda5
-i#: 為數(shù)據(jù)空間中每多少個字節(jié)創(chuàng)建一個inode;此大小不應該小于block的大小
-N#:為數(shù)據(jù)空間創(chuàng)建個多少個inode
-I 一個inode記錄大小128—4096
-m #: 默認5%,為管理人員預留空間占總空間的百分比
-O FEATURE[,…]:啟用指定特性
-O ^FEATURE:關閉指定特性
文件系統(tǒng)標簽
blkid:塊設備屬性信息查看
-U UUID: 根據(jù)指定的UUID來查找對應的設備
-L LABEL:根據(jù)指定的LABEL來查找對應的設備
e2label /dev/sdc2 /mnt/sdc2
加卷標
tune2fs
tune2fs:重新設定ext系列文件系統(tǒng)可調(diào)整參數(shù)的值
-l:查看指定文件系統(tǒng)超級塊信息;super block
-L ‘LABEL‘:修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統(tǒng)屬性啟用或禁用,–O ^has_journal
-o: 調(diào)整文件系統(tǒng)的默認掛載選項,–o ^acl
-U UUID: 修改UUID號
ecntos6 手動分區(qū)格式化ext 沒有acl功能
tune2fs -o acl /dev/sd*
ACL:
具有能再添加局限權(quán)限的能力,實現(xiàn)靈活的權(quán)限管理
Centos 7 默認創(chuàng)建xfs 和ext4 文件系統(tǒng)有ACL功能。
Centos 7 版本之前,默認手工創(chuàng)建的ext4文件系統(tǒng)無ACL功能。
手動添加:
tune2fs -o acl /dve/sdb1
mount -o acl /dve/sbd1 /mnt
ACL 生效順序:所有者,自定義用戶,自定義組,其他人。
tune2fs -l /dev/sd*
文件系統(tǒng)檢測和修復
常發(fā)生于死機或者非正常關機之后
掛載為文件系統(tǒng)標記為“dirty”
fsck: File System Check
fsck.FS_TYPE
fsck-t FS_TYPE
-a: 自動修復錯誤
-r: 交互式修復錯誤
fsck -y /dev/sd* 默認在yes的選項下修復
不要在掛載的情況下修復,不然修復會破壞元數(shù)據(jù)。
注意: FS_TYPE一定要與分區(qū)上已經(jīng)文件類型相同;
fsck -a /dev/sd*
文件修復
e2fsck:ext系列文件專用的檢測修復工具
-y:自動回答為yes
-f:強制修復
最大掛載次數(shù)和時間間隔會觸發(fā)fsck檢查命令。
fuser -v /mnt/sdb1 查看誰在掛載使用用
fuser -km /mnt/sdb1 強行T出掛載
掛載點目錄一般為空
mount 查看掛載
cat /etc/mounts(特殊項都能看到)
掛載:將額外文件系統(tǒng)與根文件系統(tǒng)某現(xiàn)存的目錄建立起關聯(lián)關系,進而使得此目錄做為其它文件訪問入口的行為
卸載:為解除此關聯(lián)關系的過程
把設備關聯(lián)掛載點:mount Point
mount
卸載時:可使用設備,也可以使用掛載點
umount
掛載點下原有文件在掛載完成后會被臨時隱藏
掛載點目錄一般為空
mount常用命令選項
-t vsftype:指定要掛載的設備上的文件系統(tǒng)類型
-r: readonly,只讀掛載
-w: read and write, 讀寫掛載
-n: 不更新/etc/mtab,相當于#mount
-a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)
-L ‘LABEL‘: 以卷標指定掛載設備
-U ‘UUID‘: 以UUID指定要掛載的設備
-B, –bind: 綁定目錄到另一個目錄上
查看內(nèi)核追蹤到的已掛載的所有設備:
cat /proc/mounts
mount -o remount,noatime /mnt/
取消掛載再重新掛載,不使用atime
mount -o noexec,noatime /mnt/
取消掛載再重新掛載,不使用執(zhí)行文件
不要輕易將掛載權(quán)限比普通用戶
創(chuàng)建了一個新的文件夾/mnt/sdd
將硬盤/dev/sdd 掛載在/mnt/sdd中
-o options:(掛載文件系統(tǒng)的選項),多個選項使用逗號分隔
async:異步模式
sync:同步模式,內(nèi)存更改時,同時寫磁盤
atime/noatime:包含目錄和文件
diratime/nodiratime:目錄的訪問時間戳
auto/noauto:是否支持自動掛載,是否支持-a選項
exec/noexec:是否支持將文件系統(tǒng)上運行應用程序
dev/nodev:是否支持在此文件系統(tǒng)上使用設備文件
suid/nosuid:不否支持suid和sgid權(quán)限
remount:重新掛載
ro:只讀
rw:讀寫
user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載
acl:啟用此文件系統(tǒng)上的acl功能
Defaults:相當于rw, suid, dev, exec, auto, nouser, async
總結(jié)
以上是生活随笔為你收集整理的linux下卸载 dev sd*下硬盘,Linux 磁盘管理(示例代码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 跑天龙八部游戏脚本,求推荐天
- 下一篇: Python | Socket02 -