1. 程式人生 > >linux分區管理

linux分區管理

linux fdisk parted

管理分區
? ? ?? 列出塊設備
??????????????lsblk
????????????????? 例 在centos6上加了幾塊硬盤
????????????????????????[root@centos6 ~]#lsblk??? 沒有識別出來
????????????????????????[root@centos6 ~]#echo ‘- - -‘ > /sys/class/scsi_host/host2/scan? 強制掃描
????????????????????????[root@centos6 ~]#lsblk?? 已識別
????????????????????????[root@centos6 ~]#hexdump -C -n 512 /dev/sdb? 二進制查看新建硬盤沒用數據

????????????? ? ? 例 破壞MBR分區表並恢復
????????????????????????[root@centos6 ~]#dd if=/dev/sda of=/app/mbr bs=1 count=512? 備份分區表到/app/mbr
????????????????????????[root@centos6 ~]#ll /app/mbr?? 查看確實是512字節
????????????????????????[root@centos6 ~]#hexdump -C /app/mbr??? 二進制查看
????????????????????????[root@centos6 ~]#dd if=/dev/zero of=/dev/sda bs=1 count=64 skip=446 seek=446? 破壞分區表

?????????????????????????????????count=64 64個字節,skip=446 跳過前446個字節開始讀取,seek=446 跳過目標的前446個字節開始寫 從第446個字節開始搜索(跳過446個字節,只覆蓋中間的64個字節)
????????????????????????[root@centos6 ~]#hexdump -C -n 512 /dev/sda? 查看被0填充
????????????????????????[root@centos6 ~]#lsblk?? 還可以查看分區,是因為內存中還存有一份,如果重啟就完蛋
????????????????????????[root@centos6 ~]#fdisk -l /dev/sda??? 無法查看分區,因為這個命令是查看磁盤上的分區表
?????????????????????????????查看分區四種方式
??????????????????????????????????????ls /dev/sd*?? 看設備名的方式??? 內存中
??????????????????????????????????????cat /proc/partitions????? 內存
??????????????????????????????????????lsblk?? 內存
??????????????????????????????????????fdisk -l /dev/sda??? 看磁盤上的分區表
????????????????????????[root@centos6 app]#scp mbr 192.168.27.129:/app/?? 將備份的分區表存到另外的機子上(centos7)
????????????????????????[root@centos7 ~]#ls /app/?? 查看centos7上確實有備份的mbr文件
????????????????????????[root@centos6 app]#reboot?? 重啟發現無法啟動
????????????????????????此時可以拆下硬盤掛到別的機子上將分區表恢復,也可以進入光盤救援模式
????????????????????????重啟出現進度條時按Esc鍵,選擇“CD-ROM Drive” “Rescue installed system”,進入救援模式
????????????????????????bash-4.1# pwd??? 現在的根目錄不是硬盤的根目錄,是光盤加載的一個簡化版的小Linux系統
????????????????????????bash-4.1# lsblk? 不能看
????????????????????????bash-4.1# fdisk -l 可以看到硬盤
????????????????????????bash-4.1# ip a? 查看是否獲取到IP
????????????????????????bash-4.1# scp 192.168.27.129:/app/mbr .? 將備份復制到當前目錄
????????????????????????bash-4.1# dd if=mbr of=/dev/sda bs=1 count=64 skip=446 seek=446? 也可以512字節全部覆蓋
????????????????????????bash-4.1# exit? 退出然後選擇重啟

????????????? ? ??例 將sda的分區表復制到sdb(新加的硬盤)(生產中不建議這麽做,因為兩塊硬盤大小,分區方式不一定相同,而且復制不了邏輯分區,因為邏輯分區信息放在擴展分區中,不在mbr中)
????????????????????????[root@centos6 ~]#lsblk??? sdb是新加的一塊硬盤
????????????????????????[root@centos6 ~]#dd if=/app/mbr of=/dev/sdb bs=1 count=66 skip=446 seek=446
????????????????????????????????將分區表復制到sdb,count=66 包括最後的兩個標識符
????????????????????????[root@centos6 ~]#partx -a /dev/sdb?? 同步分區表
????????????????????????[root@centos6 ~]#lsblk?? 看到sdb出現分區
????????????????????????[root@centos6 ~]#dd if=/dev/zero of=/dev/sdb bs=1 count=512??? 刪除sdb分區
????????????????????????[root@centos6 ~]#hexdump -C /dev/sdb?????????? 二進制查看
????????????????????????[root@centos6 ~]#fdisk -l /dev/sdb???????? 查看
????
????

?????????創建分區使用:
??????????????????fdisk 創建MBR分區
??????????????????gdisk 創建GPT分區
??????????????????parted 高級分區操作
?????? ? partprobe-重新設置內存中的內核分區表版本


parted命令
?????????parted的操作都是實時生效的,小心使用
?????????用法:parted [選項]... [設備 [命令 [參數]...]...]??
??????????????parted /dev/sdb? mklabel gpt|msdos???? 創建gpt或mbr分區
??????????????parted /dev/sdb? print?
??????????????parted /dev/sdb? mkpart primary 1 200 (默認M)?
??????????????parted /dev/sdb? rm 1?
??????????????parted -l
??????????????? ? 例 [root@centos6 ~]#parted /dev/sdb mklabel gpt? 在新硬盤sdb上建立gpt分區
??????????????? ?? ?? [root@centos6 ~]#parted /dev/sdb print? 查看
??????????????????? ? [root@centos6 ~]#fdisk -l /dev/sdb?? 傳統工具也可查看,但會提示不支持
????????????????????? [root@centos6 ~]#parted /dev/sdb mkpart primary 1 1000?? 創建主分區1-1000M
????????????????????? [root@centos6 ~]#parted /dev/sdb print? 查看
????????????????????? [root@centos6 ~]#parted /dev/sdb rm 1?? 刪除分區


分區工具fdisk和gdisk
?????????gdisk /dev/sdb 類fdisk 的GPT分區工具
?????????fdisk -l [-u] [device...] 查看分區
?????????fdisk /dev/sdb? 管理分區
??????????????例 重定向方法創建分區
???????????????????[root@centos6 ~]#echo -e ‘n\np\n2\n\n+10G\nw\n‘ | fdisk /dev/sdc
???????????????????[root@centos6 ~]#fdisk /dev/sdc <<EOF?? 或者多行重定向
????????????????????????> n
????????????????????????> p
????????????????????????> 2
????????????????????????>
????????????????????????> +5G
????????????????????????> w
????????????????????????> EOF
?????????子命令:
??????????????????p 分區列表
??????????????????t 更改分區類型
??????????????????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
???????????????????例 [root@centos6 ~]#partx -d --nr 1-4 /dev/sde??? (由於刪除sde1 sde2 sde3 sde4導致的不同步)
?????CentOS 5,7: 使用partprobe?
??????????????partprobe [/dev/DEVICE]


創建文件系統
? ? ? ? mkfs命令:
? ? ? ?? (1) mkfs.FS_TYPE /dev/DEVICE??
???????????????????????ext4??
???????????????????????xfs??
???????????????????????btrfs??
???????????????????????vfat
?????????(2) mkfs -t FS_TYPE /dev/DEVICE??
???????????????????????-L ‘LABEL‘: 設定卷標
?????????例 [root@centos6 /]#mkfs.ext4 /dev/sdb2?? 創建文件系統
??????? ? ? ? [root@centos6 /]#blkid? 查看
?????????例 三種寫法
??????????????[root@centos6 /]#mkfs.ext2 /dev/sdb3
??????????????[root@centos6 /]#mkfs -t ext2 /dev/sdb3
??????????????[root@centos6 /]#mke2fs /dev/sdb3

支持的文件系統:/lib/modules/`uname –r`/kernel/fs?
查前支持的文件系統:cat /proc/filesystems

創建ext文件系統
? ? ? ? mke2fs:ext系列文件系統專用管理工具?
??????????????? -t {ext2|ext3|ext4}?
??????????????? -b {1024|2048|4096}? 指定塊大小
??????????????????? ?例 [root@centos6 ~]#tune2fs -l /dev/sdb3??? 留意 Block size
??????????????????? ? ? ? [root@centos6 ~]#mkfs -b 1024 /dev/sdb3?? 指定為1024??? 1024個字節,1K
??????????????????????? ? [root@centos6 ~]#mke2fs -b 2048 /dev/sdb3? 指定為2048?? 2K

??????????????? -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:塊設備屬性信息查看
??????????????blkid [OPTION]... [DEVICE]
??????????????-U UUID: 根據指定的UUID來查找對應的設備
???????????????????例 通過/app對應的UUID查找設備
????????????????????????[root@centos6 ~]#blkid -U `sed -rn ‘s#^UUID=(.*) /app .*#\1#p‘ /etc/fstab` (/app後加空格是為防止名稱為apppp)
??????????????-L LABEL:根據指定的LABEL來查找對應的設備
???????????????????例?[root@centos7 ~]#mkfs.xfs -f /dev/sdb1 -L /mnt/sdb1?
????????????????????????sdb1掛載到文件夾/mnt/sdb1??? 建議卷標名設為設備掛載點的文件夾名稱

???? ?? e2label:管理ext系列文件系統的LABEL?
??????????????e2label DEVICE [LABEL]
???????????????????例 [root@centos6 ~]#e2label /dev/sdb2 /mnt/sdb2??? 添加卷標(將掛載點作為卷標)
????? ? findfs :查找分區?
??????????????findfs [options] LABEL=<label>?
??????????????findfs [options] UUID=<uuid>

tune2fs:重新設定ext系列文件系統可調整參數的值?
? ? ? ? -l:查看指定文件系統超級塊信息;super block?
? ? ? ? -L ‘LABEL‘:修改卷標?
? ? ? ? -m #:修預留給管理員的空間百分比?
? ? ? ? -j: 將ext2升級為ext3?
? ? ? ? -O: 文件系統屬性啟用或禁用, –O ^has_journal
???????????? ?例 [root@centos6 ~]#tune2fs -O has_journal /dev/sdb3 (sdb3原來為ext2,變為ext3)
???? ????????? ? ? [root@centos6 ~]#tune2fs -O ^has_journal /dev/sdb3 再去掉? (註意UUID不會發生變化)
???????? -o: 調整文件系統的默認掛載選項,–o ^acl??
???????? -U UUID: 修改UUID號
dumpe2fs:?
??????????塊分組管理,32768塊?
??????????-h:查看超級塊信息,不顯示分組信息

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

????? ? 例
??????????????[root@centos6 ~]#dd if=/dev/zero of=/dev/sdb2 bs=1M count=10?? 破壞sdb2
??????????????[root@centos6 ~]#dumpe2fs /dev/sdb2??? 超級塊信息不能查看
??????????????[root@centos6 ~]#fsck /dev/sdb2?? 修復,需要回答好多yes
??????????????[root@centos6 ~]#fsck -a /dev/sdb2?? -a不自動回答yes


linux分區管理