日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

09 【实操篇-磁盘查看和分区类】

發布時間:2024/1/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 09 【实操篇-磁盘查看和分区类】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

17.磁盤查看和分區類

17.1 du 查看文件和目錄占用的磁盤空間

du: disk usage 磁盤占用情況

du 是統計目錄或文件所占磁盤空間大小的命令。

需要注意的是,使用"ls -r"命令是可以看到文件的大小的。但是大家會發現,在使用"ls -r"命令査看目錄大小時,目錄的大小多數是 4KB,這是因為目錄下的子目錄名和子文件名是保存到父目錄的 block(默認大小為 4KB)中的,如果父目錄下的子目錄和子文件并不多,一個 block 就能放下,那么這個父目錄就只占用了一個 block 大小。

大家可以將其想象成圖書館的書籍目錄和實際書籍。如果我們用"ls-l"命令査看,則只能看到這些書籍占用了 1 頁紙的書籍目錄,但是實際書籍到底有多少是看不到的,哪怕它堆滿了幾個房間。

但是我們在統計目錄時,不是想看父目錄下的子目錄名和子文件名到底占用了多少空間,而是想看父目錄下的子目錄和子文件的總磁盤占用量大小,這時就需要使用 du 命令才能統計目錄的真正磁盤占用量大小。

du 命令的格式如下:

[root@localhost ~]# du [選項] [目錄或文件名]

選項:

  • -a:顯示每個子文件的磁盤占用量。默認只統計子目錄的磁盤占用量
  • -h:使用習慣單位顯示磁盤占用量,如 KB、MB 或 GB 等;
  • -s:統計總磁盤占用量,而不列出子目錄和子文件的磁盤占用量

【例 1】

[root@localhost ~]# du #統計當前目錄的總磁盤占用量大小,同時會統計當前目錄下所有子目錄的磁盤占用量大小,不統計子文件 #磁盤占用量的大小。默認單位為KB 20 ./.gnupg #統計每個子目錄的大小 24 ./yum.bak 8 ./dtest 28 ./sh 188 #統計當前目錄總大小

【例 2】

[root@localhost ~]# du -a #統計當前目錄的總大小,同時會統計當前目錄下所有子文件和子目錄磁盤占用量的大小。默認單位為 KB4 ./.bashjogout 36 ./install.log 4 ./.bash_profile 4 ./.cshrc …省略部分輸出… 188

【例 3】

[root@localhost ~]# du -sh #只統計磁盤占用量總的大小,同時使用習慣單位顯示 188K .

17.2 df 查看磁盤空間使用情況

df: disk free 空余磁盤

df 命令,用于顯示 Linux 系統中各文件系統的硬盤使用情況,包括文件系統所在硬盤分區的總容量、已使用的容量、剩余容量等。

df 命令主要讀取的數據幾乎都針對的是整個文件系統。

df 命令的基本格式為:

[root@localhost ~]# df [選項] [目錄或文件名]

選項作用
-a顯示所有文件系統信息,包括系統特有的 /proc、/sysfs 等文件系統;
-m以 MB 為單位顯示容量;
-k以 KB 為單位顯示容量,默認以 KB 為單位;
-h使用人們習慣的 KB、MB 或 GB 等單位自行顯示容量;
-T顯示該分區的文件系統名稱;
-i不用硬盤容量顯示,而是以含有 inode 的數量來顯示。

【例 1】

[root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hdc2 9920624 3823112 5585444 41% / /dev/hdc3 4956316 141376 4559108 4% /home /dev/hdc1 101086 11126 84741 12% /boot tmpfs 371332 0 371332 0% /dev/shm

不使用任何選項的 df 命令,默認會將系統內所有的文件系統信息,以 KB 為單位顯示出來。

本例中,由 df 命令顯示出的各列信息的含義分別是:

  • Filesystem:表示該文件系統位于哪個分區,因此該列顯示的是設備名稱;
  • 1K-blocks:此列表示文件系統的總大小,默認以 KB 為單位;
  • Used:表示用掉的硬盤空間大小;
  • Available:表示剩余的硬盤空間大小;
  • Use%:硬盤空間使用率。如果使用率高達 90% 以上,就需要額外注意,因為容量不足,會嚴重影響系統的正常運行;
  • Mounted on:文件系統的掛載點,也就是硬盤掛載的目錄位置。

【例 2】

[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/hdc2 9.5G 3.7G 5.4G 41% / /dev/hdc3 4.8G 139M 4.4G 4% /home /dev/hdc1 99M 11M 83M 12% /boot tmpfs 363M 0 363M 0% /dev/shm

同例 1 不同,這里使用了 -h 選項,因此文件系統的各種容量數據,會以人們習慣的單位(通常使用 GB 或 MB)顯示出來。

【例 3】

[root@localhost ~]# df -h /etc Filesystem Size Used Avail Use% Mounted on /dev/hdc2 9.5G 3.7G 5.4G 41% /

同之前的 2 個例子不同,這里在 df 命令后添加了目錄名,在這種情況下,df 命令會自動分析該目錄所在的分區,并將所在分區的有關信息顯示出來。由此,我們就可以知道,該目錄下還可以使用多少容量。

【例 4】

[root@localhost ~]# df -aT Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/hdc2 ext3 9920624 3823112 5585444 41% / proc proc 0 0 0 - /proc sysfs sysfs 0 0 0 - /sys devpts devpts 0 0 0 - /dev/pts /dev/hdc3 ext3 4956316 141376 4559108 4% /home /dev/hdc1 ext3 101086 11126 84741 12% /boot tmpfs tmpfs 371332 0 371332 0% /dev/shm none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs

注意,使用 -a 選項,會將很多特殊的文件系統顯示出來,這些文件系統包含的大多是系統數據,存在于內存中,不會占用硬盤空間,因此你會看到,它們所占據的硬盤總容量為 0。

17.3 du命令和df命令的區別

有時我們會發現,使用 du 命令和 df 命令去統計分區的使用情況時,得到的數據是不一樣的。那是因為df命令是從文件系統的角度考慮的,通過文件系統中未分配的空間來確定文件系統中已經分配的空間大小。也就是說,在使用 df 命令統計分區時,不僅要考慮文件占用的空間,還要統計被命令或程序占用的空間(最常見的就是文件已經刪除,但是程序并沒有釋放空間)。

而 du 命令是面向文件的,只會計算文件或目錄占用的磁盤空間。也就是說,df 命令統計的分區更準確,是真正的空閑空間。

17.4 lsblk 查看設備掛載情況

lsblk命令的英文是“list block”,即用于列出所有可用塊設備的信息,而且還能顯示他們之間的依賴關系,但是它不會列出RAM盤的信息。塊設備有硬盤,閃存盤,CD-ROM等等。lsblk命令包含在util-linux-ng包中,現在該包改名為util-linux。

【例1】列出所有塊設備

直接輸入lsblk命令和lsblk -a輸出相同

[root@test1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 40G 0 disk ├─sda1 8:1 0 300M 0 part /boot ├─sda2 8:2 0 2G 0 part [SWAP] └─sda3 8:3 0 37.7G 0 part / sr0 11:0 1 1024M 0 rom
  • NAME:這是塊設備名。
  • MAJ:MIN:本欄顯示主要和次要設備號。
  • RM:本欄顯示設備是否可移動設備。注意,在本例中設備
  • sdb和sr0的RM值等于1,這說明他們是可移動設備。
  • SIZE:本欄列出設備的容量大小信息。例如298.1G表明該設備大小為298.1GB,而1K表明該設備大小為1KB。
  • RO:該項表明設備是否為只讀。在本案例中,所有設備的
  • RO值為0,表明他們不是只讀的。
  • TYPE:本欄顯示塊設備是否是磁盤或磁盤上的一個分區。在本例中,sda和sdb是磁盤,而sr0是只讀存儲(rom)。
  • MOUNTPOINT:本欄指出設備掛載的掛載點。

17.5 mount/umount 掛載/卸載

對于Linux用戶來講,不論有幾個分區,分別分給哪一個目錄使用,它總歸就是一個根 目錄、一個獨立且唯一的文件結構。

Linux中每個分區都是用來組成整個文件系統的一部分,它在用一種叫做“掛載”的處理 方法,它整個文件系統中包含了一整套的文件和目錄,并將一個分區和一個目錄聯系起來, 要載入的那個分區將使它的存儲空間在這個目錄下獲得。

17.5.1 mount 掛載

所有的硬件設備必須掛載之后才能使用,只不過,有些硬件設備(比如硬盤分區)在每次系統啟動時會自動掛載,而有些(比如 U 盤、光盤)則需要手動進行掛載。

通過學習 Linux 文件系統,我們可以對掛載的含義進行引申,掛載指的是將硬件設備的文件系統和 Linux 系統中的文件系統,通過指定目錄(作為掛載點)進行關聯。而要將文件系統掛載到 Linux 系統上,就需要使用 mount 掛載命令。

mount 命令的常用格式有以下幾種:

[root@localhost ~]# mount [-l]

單純使用 mount 命令,會顯示出系統中已掛載的設備信息,使用 -l 選項,會額外顯示出卷標名稱(讀者可自行運行,查看輸出結果);

[root@localhost ~]# mount -a

-a 選項的含義是自動檢查 /etc/fstab 文件中有無疏漏被掛載的設備文件,如果有,則進行自動掛載操作。這里簡單介紹一下 /etc/fstab 文件,此文件是自動掛載文件,系統開機時會主動讀取 /etc/fstab 這個文件中的內容,根據該文件的配置,系統會自動掛載指定設備。

[root@localhost ~]# mount [-t 系統類型] [-L 卷標名] [-o 特殊選項] [-n] 設備文件名 掛載點

各選項的含義分別是:

  • -t 系統類型:指定欲掛載的文件系統類型。Linux 常見的支持類型有 EXT2、EXT3、EXT4、iso9660(光盤格式)、vfat、reiserfs 等。如果不指定具體類型,掛載時 Linux 會自動檢測。
  • -L 卷標名:除了使用設備文件名(例如 /dev/hdc6)之外,還可以利用文件系統的卷標名稱進行掛載。
  • -n:在默認情況下,系統會將實際掛載的情況實時寫入 /etc/mtab 文件中,但在某些場景下(例如單人維護模式),為了避免出現問題,會刻意不寫入,此時就需要使用這個選項;
  • -o 特殊選項:可以指定掛載的額外選項,比如讀寫權限、同步/異步等,如果不指定,則使用默認值(defaults)。具體的特殊選項參見表 1;
選項功能
rw/ro是否對掛載的文件系統擁有讀寫權限,rw 為默認值,表示擁有讀寫權限;ro 表示只讀權限。
async/sync此文件系統是否使用同步寫入(sync)或異步(async)的內存機制,默認為異步 async。
dev/nodev是否允許從該文件系統的 block 文件中提取數據,為了保證數據安裝,默認是 nodev。
auto/noauto是否允許此文件系統被以 mount -a 的方式進行自動掛載,默認是 auto。
suid/nosuid設定文件系統是否擁有 SetUID 和 SetGID 權限,默認是擁有。
exec/noexec設定在文件系統中是否允許執行可執行文件,默認是允許。
user/nouser設定此文件系統是否允許讓普通用戶使用 mount 執行實現掛載,默認是不允許(nouser),僅有 root 可以。
defaults定義默認值,相當于 rw、suid、dev、exec、auto、nouser、async 這 7 個選項。
remount重新掛載已掛載的文件系統,一般用于指定修改特殊權限。

【例 1】

[root@localhost ~]# mount #查看系統中已經掛載的文件系統,注意有虛擬文件系統 /dev/sda3 on / type ext4 (rw) <--含義是,將 /dev/sda3 分區掛載到了 / 目錄上,文件系統是 ext4,具有讀寫權限 proc on /proc type proc (rw) sysfe on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw, gid=5, mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fe/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfe/rpc_pipefs type rpc_pipefs (rw)

【例 2】
修改特殊權限。通過例 1 我們查看到,/boot 分區已經被掛載了,而且采用的是 defaults 選項。這里我們重新掛載分區,并采用 noexec 權限禁止執行文件執行,看看會出現什么情況(注意不要用 / 分區做實驗,否則系統命令也就不能執行了。

[root@localhost ~]# mount -o remount noexec /boot #重新掛載 /boot 分區,并使用 noexec 權限 [root@localhost sh]# cd /boot #寫一個 shell 腳本,看是否會運行 [root@localhost boot]#vi hello.sh #!/bin/bash echo "hello!!" [root@localhost boot]# chmod 755 hello.sh [root@localhost boot]# ./hello.sh -bash:./hello.sh:權限不夠 #雖然賦予了hello.sh執行權限,但是仍然無法執行 [root@localhost boot]# mount -o remount exec /boot #記得改回來,否則會影響系統啟動

對于特殊選項的修改,除非特殊場景下需要,否則不建議大家隨意修改,非常容易造成系統出現問題,而且還找不到問題的根源。

【例 3】掛載分區。

[root@localhost ~]# mkdir /mnt/disk1 #建立掛載點目錄 [root@localhost ~]# mount /dev/sdb1 /mnt/disk1 #掛載分區

/dev/sdb1 分區還沒有被劃分。我們在這里只看看掛載分區的方式,非常簡單,甚至不需要使用 “-ext4” 命令指定文件系統,因為系統可以自動檢測。

為什么使用 Linux 系統的硬盤分區這么麻煩,而不能像 Windows 系統那樣,硬盤安裝上就可以使用?

其實,硬盤分區(設備)掛載和卸載(使用 umount 命令)的概念源自 UNIX,UNIX 系統一般是作為服務器使用的,系統安全非常重要,特別是在網絡上,最簡單有效的方法就是“不使用的硬盤分區(設備)不掛載”,因為沒有掛載的硬盤分區是無法訪問的,這樣系統也就更安全了。

另外,這樣也可以減少掛載的硬盤分區數量,相應地,也就可以減少系統維護文件的規模,當然也就減少了系統的開銷,即提高了系統的效率。

17.5.2 umount 卸載

硬盤分區是否需要卸載,取決于你下次是否還需要使用,一般不對硬盤分區執行卸載操作。

umount 命令用于卸載已經掛載的硬件設備,該命令的基本格式如下:

[root@localhost ~]# umount 設備文件名或掛載點
注意,卸載命令后面既可以加設備文件名,也可以加掛載點,不過只能二選一,比如:

[root@localhost ~]# umount /mnt/usb #卸載U盤 [root@localhost ~]# umount /mnt/cdrom #卸載光盤 [root@localhost ~]# umount /dev/sr0 #命令加設備文件名同樣是可以卸載的

如果加了兩個(如下所示),從理論上分析,會對光驅卸載兩次,當然,卸載第二次的時候就會報錯。

[root@localhost ~]# mount /dev/sr0 /mnt/cdrom/
另外,我們在卸載時有可能會出現以下情況:

[root@localhost ~]# cd /mnt/cdrom/ #進入光盤掛載點 [root@localhost cdrom]# umount /mnt/cdrom/ umount: /mnt/cdrom: device is busy. #報錯,設備正忙

這種報錯是因為我們已經進入了掛載點,因此,如果要卸載某硬件設備,在執行 umount 命令之前,用戶須退出掛載目錄。

卸載硬件設備成功與否,除了執行 umount 命令不報錯之外,還可以使用 df 命令或 mount -l 來查看目標設備是否還掛載在系統中。

17.6 fdisk 分區

我們在安裝操作系統的過程中已經對系統硬盤進行了分區,但如果新添加了一塊硬盤,想要正常使用,難道需要重新安裝操作系統才可以分區嗎?

當然不是,在 Linux 中有專門的分區命令 fdisk 和 parted。其中 fdisk 命令較為常用,但不支持大于 2TB 的分區;如果需要支持大于 2TB 的分區,則需要使用 parted 命令,當然 parted 命令也能分配較小的分區。我們先來看看如何使用 fdisk 命令進行分區。

fdisk 命令的格式如下:

[root@localhost ~]# fdisk ~l #列出系統分區 [root@localhost ~]# fdisk 設備文件名 #給硬盤分區

該命令必須在 root 用戶下才能使用

使用 “fdisk -l” 查看分區信息,能夠看到我們添加的兩塊硬盤(/dev/sda 和 /dev/sdb)的信息。我們解釋一下這些信息,其上半部分態是硬盤的整體狀態,/dev/sda 硬盤的總大小是 32.2 GB,共有 3916 個柱面,每個柱面由 255 個磁頭讀/寫數據,每個磁頭管理 63 個扇區。每個柱面的大小是 8225280 Bytes,每個扇區的大小是 512 Bytes。

信息的下半部分是分區的信息,共 7 列,含義如下:

  • Device:分區的設備文件名。
  • Boot:是否為啟動引導分區,在這里 /dev/sda1 為啟動引導分區。
  • Start:起始柱面,代表分區從哪里開始。
  • End:終止柱面,代表分區到哪里結束。
  • Blocks:分區的大小,單位是 KB。
  • id:分區內文件系統的 ID。在 fdisk 命令中,可以 使用 “i” 查看。
  • System:分區內安裝的系統是什么。

在 fdisk 交互界面中輸入 m 可以得到幫助,幫助里列出了 fdisk 可以識別的交互命令,我們來解釋一下這些命令

命令說 明
a設置可引導標記
b編輯 bsd 磁盤標簽
c設置 DOS 操作系統兼容標記
d刪除一個分區
1顯示已知的文件系統類型。82 為 Linux swap 分區,83 為 Linux 分區
m顯示幫助菜單
n新建分區
0建立空白 DOS 分區表
P顯示分區列表
q不保存退出
s新建空白 SUN 磁盤標簽
t改變一個分區的系統 ID
u改變顯示記錄單位
V驗證分區表
w保存退出

總結

以上是生活随笔為你收集整理的09 【实操篇-磁盘查看和分区类】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。