CentOS分區操作詳解
原文:http://blog.csdn.net/yonggeit/article/details/77924393
磁盤分區
分區格式的兩種選擇:MBR和GPT
分區命令:
parted的操作都是實時生效的,小心使用,主要是用于大于2T硬盤,支持MBR和GPT兩種格式。
用法:parted [選項]… [設備[命令[參數]…]…]
-
parted /dev/sdb mklabel gpt|msdos?
//選擇分區格式 -
parted /dev/sdb print?
//查看分區 -
parted /dev/sdb mkpart primary 1 200 (默認M)?
//分出一個199M的分區 -
parted /dev/sdb rm1?
//刪除分區1==parted /dev/sdb mklabel gpt?
parted /dev/sdb mkpart primary 1 1G?
parted /dev/sdb print?
parted /dev/sdb mkpart primary 1001 20G?
parted /dev/sdb mkpart logical 20G 80G?
parted /dev/sdb rm 1==
gdisk 主要是去分GPT格式 (支持2T以上)
gdisk -l [-u] [device…]
子命令:?
- p 分區列表?
- t 更改分區類型?
- n 創建新分區?
- d 刪除分區?
- w 保存并退出?
- q 不保存并退出
gdisk /dev/sdb
Command (? for help): n
Partition number (3-128, default 3):3
First sector (34-419430366, default = 44042240) or {+-}size{KMGTP}:
Last sector (44042240-419430366, default = 419430366) or {+-}size{KMGTP}: +20g
Hex code or GUID (L to show codes, Enter = 8300):一個ID號,默認就好
Command (? for help): p
Command (? for help):w 存盤退出
fdisk 分MBR格式(2T以下推薦使用)
fdisk -l [-u] [device…]
子命令:?
- p 分區列表?
- t 更改分區類型?
- n 創建新分區?
- d 刪除分區?
- w 保存并退出?
- q 不保存并退出
fdisk /dev/sdb
Command (m for help): m
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-419430399, default 2048):
Last sector, +sectors or +size{K,M,G} (2048-419430399, default 419430399):+1G(必須嚴格區分大小寫)
Command (m for help): p
Command (m for help): w
fdisk 實現非交互式分區:
echo -e "n\np\n1\n\n+1G\nw\n" |fdisk /dev/sdb
echo -e 激活轉義符
- \a 發出警告聲
- \n 回車
查看機器上有幾個分區的方法:
- lsblk
- fdisk -l
- ls /dev/sd*
- cat /proc/partitions
- echo ‘- - -’ > /sys/class/scsi_host/host2(可能不止一個)/scan(新插磁盤用這個可以看出來)
同步分區信息:
cetos 5或者7 :partprobe-重新設置內存中的內核分區表版本
centos6 :
新增分區同步: partx -a /dev/sda
刪除分區同步: partx -d –nr 7-8 /dev/sda
查工具來自哪個包:
yum list |grep xfs 找安裝包
MBR和GPT格式相互轉換:
parted /dev/sdb mklabel msdos
**注意:分區名稱不穩定?
分區同步問題
執行完每個命令一定要看下,驗證下結果,再做下一步。**
文件系統
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。
Linux文件系統:ext2(Extended file system), ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
光盤:iso9660
Windows:fat32, ntfs
Unix: FFS(fast), UFS(unix), JFS2
網絡文件系統:NFS, CIFS
集群文件系統:GFS2, OCFS2(oracle)
分布式文件系統:fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
RAW:未經處理或者未經格式化產生的文件系統
說明:
centos 7 默認 XFS
centos 6 默認 ext4
centos 5 默認 ext3
ext2與ext3相差一個日志功能(journal)
blkid 查看當前系統已有文件系統
創建文件系統
mkfs命令:
mkfs.FS_TYPE/dev/DEVICE
[root@centos6: /root]# mkfs.ext4 /dev/sdb1
[root@centos6: /root]# blkid
/dev/sdb1: UUID="fe5ae367-e43e-4a1e-b94e-43a472e3c941" TYPE="ext4"
mke2fs:ext系列文件系統專用管理工具
-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:關閉指定特性
[root@centos6: /root]# mke2fs -t ext3 -b 4096 -L /mnt/sdb3 -i 8192 -m 3 /dev/sdb3
blkid:塊設備屬性信息查看
-
-U UUID: 根據指定的UUID來查找對應的設備
[root@centos6: /root]# blkid -U 7e927cef-2b89-4091-a5ec-6170b0fbedb3?
/dev/sda6 -
-L LABEL:根據指定的LABEL來查找對應的設備
[root@centos6: /root]#mkfs.ext4 -L /mnt/sdb2 /dev/sdb2 //給設備/dev/sdb2創建一個卷標/mnt/sdb2?
[root@centos6: /root]# blkid?
/dev/sdb2: LABEL=”/mnt/sdb2” UUID=”bdd7338f-c2c4-44ff-8ab2-ee6c4b46480a”TYPE=”ext4”?
[root@centos6: /root]# blkid -L /mnt/sdb2?
/dev/sdb2
e2label:管理ext系列文件系統的LABEL
e2label DEVICE [LABEL]
[root@centos6: /root]# blkid
/dev/sdb2: LABEL="/mnt/sdb2" UUID="bdd7338f-c2c4-44ff-8ab2-ee6c4b46480a" TYPE="ext4"
[root@centos6: /root]# e2label /dev/sdb2 /app/sdb2
[root@centos6: /root]# blkid
/dev/sdb2: LABEL="/app/sdb2" UUID="bdd7338f-c2c4-44ff-8ab2-ee6c4b46480a" TYPE="ext4"
findfs:查找分區
findfs[options] LABEL=
[root@centos6: /root]# findfs LABEL="/app/sdb2"
/dev/sdb2
findfs[options] UUID=<uuid>
[root@centos6: /root]# findfs UUID="bdd7338f-c2c4-44ff-8ab2-ee6c4b46480a"
/dev/sdb2
tune2fs:重新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統超級塊信息;super block
-L ‘LABEL’:修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統屬性啟用或禁用,–O?
^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl
-U UUID: 修改UUID號
dumpe2fs:
-
-h:查看超級塊信息,不顯示分組信息
[root@centos6: /root]# dumpe2fs /dev/sdb1
tune2fs -l /dev/sdb1 查超級塊的信息
# 文件修復
- 常發生于死機或者非正常關機之后?
掛載為文件系統標記為“no clean”?
注意:一定不要在掛載狀態下修復
fsck: File System Check
fsck-t FS_TYPE
-p: 自動修復錯誤
-r: 交互式修復錯誤
FS_TYPE一定要與分區上已經文件類型相同
e2fsck:ext系列文件專用的檢測修復工具
-y:自動回答為yes
-f:強制修復
fsck /dev/sdb2 -y
注意:修復操作生產中慎用,盡量請專業公司來修復。
掛載
掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為
卸載:為解除此關聯關系的過程
把設備關聯掛載點:mount Point
卸載時:可使用設備,也可以使用掛載點?
umount
掛載點下原有文件在掛載完成后會被臨時隱藏
掛載點目錄一般為空
掛載前一點要先查看下掛載情況,一旦已經掛載某個設備的目錄,一定不要去掛載其他設備,不然以前目錄下設備的文件被隱藏,導致以前目錄中文件無法訪問,嚴重話可能會導致部分服務宕機。
用mount命令掛載文件系統
mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要掛載的設備;
(1) 設備文件:例如/dev/sda5
(2) 卷標:-L ‘LABEL’, 例如-L ‘MYDATA’
(3) UUID, -U ‘UUID’:例如-U ‘0c50523c-43f1-45e7-85c0-a126711d406e’
(4) 偽文件系統名稱:proc, sysfs, devtmpfs, configfs
注意:
-
dir:掛載點?
事先存在;建議使用空目錄 -
進程正在使用中的設備無法被卸載
mount /dev/sdb1 /mnt/sdb1 //掛載
df //查看
/dev/sdb1 999320 2564 927944 1% /mnt/sdb1
mount常用命令選項?
- -t vsftype:指定要掛載的設備上的文件系統類型?
- -r: readonly,只讀掛載?
- -w: read and write, 讀寫掛載?
- -n: 不更新/etc/mtab,mount不可見(隱藏掛載,只能使用cat /proc/mounts)?
- -a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)?
- -L ‘LABEL’: 以卷標指定掛載設備?
- -U ‘UUID’: 以UUID指定要掛載的設備?
- -B, –bind: 綁定目錄到另一個目錄上
**查看內核追蹤到的已掛載的所有設備:?
cat /proc/mounts**
-o options:(掛載文件系統的選項),多個選項使用逗號分隔
async:異步模式
sync:同步模式,內存更改時,同時寫磁盤
atime/noatime:包含目錄和文件
diratime/nodiratime:目錄的訪問時間戳
auto/noauto:是否支持自動掛載,是否支持-a選項
exec/noexec:是否支持將文件系統上運行應用程序
dev/nodev:是否支持在此文件系統上使用設備文件
suid/nosuid:不否支持suid和sgid權限
remount:重新掛載
ro:只讀
rw:讀寫
user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載
acl:啟用此文件系統上的acl功能
Defaults:相當于rw, nosuid, dev, exec, auto, nouser, async
查看掛載情況:
findmnt MOUNT_POINT
查看正在訪問指定文件系統的進程:
lsof MOUNT_POINT
fuser -v MOUNT_POINT
終止所有在正訪問指定的文件系統的進程:
fuser -km MOUNT_POINT
取消掛載卸載:
umount DEVICE
umount MOUNT_POINT
查看掛載關系
mount
cat /etc/mtab
cat /proc/mounts //隱藏掛載也可以看到
文件掛載配置文件
/etc/fstab每行定義一個要掛載的文件系統;
#cat /etc/fstabUUID=6ef6b1fe-1da4-406f-a028-3530d277e279 / ext4 defaults 0 0
從左到右依次解釋:
- 要掛載的設備或偽文件系統
- 掛載點
- 文件系統類型
- 掛載選項
- 轉儲頻率
- 自檢次序
- 要掛載的設備
目錄掛目錄的配置文件寫法:
/boot /mnt/boot none bind 0 0
文件系統掛文件的配置文件寫法:
/root/partfile /mnt/file ext4 loop 0 0
生效: mount -a
重新掛載某個設備:
mount -o remount /mnt/sdb1
處理交換文件和分區
交換分區是系統RAM的補充
基本設置包括:
創建交換分區或者文件:
分區完需要改ID為82,默認為83,按t更新,L可以查看可以更改的類型。
使用mkswap寫入特殊簽名
[root@centos6: /root]# mkswap /dev/sdb5 -L swap2
?在/etc/fstab文件中添加適當的條目
vim /etc/fstab:r!blkid /dev/sdb2 //vim下讀取某個分區的UUIDUUID=09149535-ae7e-4b41-bba7-917aa8d1cc19 /mnt/swap2 swap defaults 0 0
?使用swapon -a 激活交換空間
[root@centos6: /root]# swapon -a //重新讀取配置文件生效
- swapon -s 查看誰提供swap
U盤插入使用
U盤顯示的設備名稱Sdd
sync強制寫U盤,使用三次。
光盤做ISO文件
cp /dev/sro /root/centos6.iso
U盤做ISO
dd if=centos6.iso of=/dev/sdd
目錄做成ISO文件
mkisofs -r -o etc.iso /etc/直接掛載該文件:
mount -o loop etc.iso /nmt/cdrom //只能做yum源碼eject -t /dev/sro //彈出光盤
tune2fs -l /dev/sdb1 查超級塊的信息
掛載次數: mount count
tune2fs -C 33 /dev/sdb1
maximun mount?
count:達到次數觸發檢查
tune2fs -c 33 /dev/sdb1
check interval: 天為單位
tune2fs -i 33w /dev/sdb1
default mount options: (none)
拒絕wang用戶訪問a文件?
setfacl -m u:wang:0 a?
設置該項時可能系統不支持
1.需要掛載的時候加選項進去,?
改配置文件
/dev/sdb1 /mnt/sdb1 ext4 acl 0 0
2.tune2fs -o acl /dev/sdb1
tune2fs -l acl /dev/sdb1 //查看超級塊信息
看有沒有acl選項?
1. tune2fs -l acl /dev/sdb1
2.mount
用戶在線的情況下,想要取消ACL功能
mount -o remout,noacl /mnt/sdb1
centos6 安裝系統時候的分區默認是有acl功能的。?
centos7默認都有。
記住一個重要信息:只要存到磁盤的數據就不會丟失,存到內存關機可能會丟失。
補充知識點:
ACL 是什么?
ACL的全稱是 Access Control List (訪問控制列表) ,一個針對文件/目錄的訪問控制列表。它在UGO權限管理的基礎上為文件系統提供一個額外的、更靈活的權限管理機制。它被設計為UNIX文件權限管理的一個補充。
ACL允許你給任何的用戶或用戶組設置任何文件/目錄的訪問權限。
檢查是否支持ACL
ACL需要Linux內核和文件系統的配合才能工作,當前我們能見到的大多數Linux發行版本默認都是支持的。但最好還是能夠先檢查一下:
sudo tune2fs -l /dev/sda1 |grep “Default mount options:”
Default mount options: user_xattr acl
我們能夠看到默認情況下(Default mount options:)已經加入 acl 支持了。
如何設置ACL
我們可以使用setfacl和getfacl命令來設置或觀察文件/目錄的acl權限。
setfacl
參數不多,直接列出來了:
setfacl [-bkRd] [{-m|-x} acl參數] 文件/目錄名
-m :配置后面的 acl?
參數給文件/目錄使用,不可與 -x 合用;
-x :刪除后續的 acl 參數,不可與 -m 合用;
-b :移除所有的 ACL 配置參數;
-k :移除默認的 ACL 參數;
-R :遞歸配置 acl;
-d :配置“默認 acl?
參數”,只對目錄有效,在該目錄新建的數據會引用此默認值;
getfacl
getfacl 文件/目錄名
[root@localhost: /root]# setfacl -m u:xiangge:rwx aaa4 [1002][root@localhost: /root]# ll aaa4 -rw-rwxr--+ 1 root root 0 Apr 25 10:22 aaa4[1003][root@localhost: /root]# getfacl aaa4 # file: aaa4# owner: root# group: rootuser::rw-user:xiangge:rwxgroup::r--mask::rwxother::r--
針對組的提權使用 g就行
子文件/目錄繼承父目錄的權限
這是一個很棒的例子,它能讓我們創建的子文件或者子文件夾繼承父文件夾的權限設置!
mkdir mydirll -d mydirdrwxr-xr-x 2 root root 4096 May 28 09:35 mydirsetfacl –m d:u:apache:rwx mydir
注意參數 d 在這里起到了決定性的作用。
查看下屬性的變化:
getfacl mydir...
default:user::rwx
default:user:apache:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
多了些 default開頭的項,在mydir下創建一個新文件試試:
touch mydir/abc
getfacl mydir/abc...
user:apache:rwx #effective:rw-
group::r-x #effective:r--
mask::rw-
...