Tìm hiểu quản lý ổ đĩa.
I.Disk Device
1.ATA và SCSI controller
- ata controller cho phép 2 thiết bị trên một dây bus, một master, một slave. Trừ khi controller và thiết bị của bạn hỗ trợ chọn cáp, bạn sẽ phải chọn thủ công bằng jumper. Thiết bị ata trong hệ thống sẽ bắt đầu với /dev/hd.
- Scsi(small computer system interface) chấp nhận hơn hai thiết bị. Khi sử dụng SCSI, mỗi thiết bị đều có scsi id riêng. Thiết bị scsi trong hệ thống sẽ bắt đầu với /dev/sd. Các thiết bị được theo thứ tự sẽ có tên từ sda, sdb, sdc,…
2. Block device.
- Block device là môt lớp trừu tượng trên ổ cứng truy cập ngẫu nhiên, giúp định dạng các khối có kích thước cố định. Các block có thể được truy cập độc lập với các truy cập vào các khối khác.
- Nó được nhận biết loại file với ký tự b khi chạy lệnh
ls -l
.
3. Solid state drive
- SSD là một block device không có bộ phận chuyển động, nó đắt hơn nhưng cũng nhanh hơn nhiều so với ổ cứng(hdd)
II.Disk device system
1.fdisk.
- Bạn có thể sử dụng
fdisk -l
để xem những ổ cứng được nhìn thấy bởi kernel. Ví dụ:#fdisk -l | grep Disk Disk /dev/sda: 465,8 GiB, 500107862016 bytes, 976773168 sectors Disk /dev/sdb: 223,6 GiB, 240057409536 bytes, 468862128 sectors
- Có thể lấy thông tin về một ổ cứng cụ thể bằng cú pháp
fdisk -l <đường dẫn tới ổ cứng>
```bash root@m4700:~# fdisk -l /dev/sdb Disk /dev/sdb: 223,6 GiB, 240057409536 bytes, 468862128 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x1dd0231f
Device Boot Start End Sectors Size Id Type /dev/sdb1 * 448862208 468860927 19998720 9,5G 82 Linux swap / Solaris /dev/sdb2 2046 448862207 448860162 214G 5 Extended /dev/sdb5 2048 448862207 448860160 214G 83 Linux
Partition table entries are not in disk order.
- `fdisk` cũng được sử dụng để tạo hoặc chỉnh sửa phân vùng.
## 2.dmesg
- Dùng để xem lại kernel boot message sau khi boot. Ổ đĩa cũng được kernel xác định khi boot.
root@m4700:~# dmesg | grep -i “scsi disk” [ 2.891607] sd 0:0:0:0: [sda] Attached SCSI disk [ 2.894217] sd 2:0:0:0: [sdb] Attached SCSI disk
## 3.lshw
- Công cụ `lshw` sẽ **list hardware**. lshw có thể hiển thị rất nhiều thông tin về ổ đĩa và các phân vùng với một số option.
Ví dụ:
root@m4700:~# lshw -class volume | grep -A1 -B2 scsi description: Windows NTFS volume physical id: 1 bus info: scsi@0:0.0.0,1 logical name: /dev/sda1 – description: Windows NTFS volume physical id: 2 bus info: scsi@0:0.0.0,2 logical name: /dev/sda2 – description: Windows NTFS volume physical id: 3 bus info: scsi@0:0.0.0,3 logical name: /dev/sda3 – description: Linux swap volume physical id: 1 bus info: scsi@2:0.0.0,1 logical name: /dev/sdb1 – description: Extended partition physical id: 2 bus info: scsi@2:0.0.0,2 logical name: /dev/sdb2
## 4.lsblk
- Lệnh lsblk là lệnh dùng để liệt kê các thiết bị block trên hệ thống như ổ cứng, phân vùng,..
root@m4700:~# lsblk -a NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465,8G 0 disk ├─sda1 8:1 0 579M 0 part ├─sda2 8:2 0 208,4G 0 part └─sda3 8:3 0 256,8G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 9,5G 0 part [SWAP] ├─sdb2 8:18 0 1K 0 part └─sdb5 8:21 0 214G 0 part / sr0 11:0 1 1024M 0 rom
## 5.lsscsi
- Là lệnh dùng để liệt kê các thiết bị scsi
root@m4700:~# lsscsi [0:0:0:0] disk ATA WDC WD5000BEVT-6 1A02 /dev/sda [2:0:0:0] disk ATA KingDian M280 24 6A /dev/sdb [3:0:0:0] cd/dvd HL-DT-ST DVD+-RW GS30N A102 /dev/sr0
- Sử dụng option -c để hiển thị classic output .
## 6. /proc/scsi/scsi
Một cách khác để xác định các thiết bị scsi là thông qua /proc/scsi/scsi, nội dung file cũng là output của lệnh `lsscsi -c`
root@m4700:~# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: WDC WD5000BEVT-6 Rev: 1A02
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: KingDian M280 24 Rev: 6A
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
Vendor: HL-DT-ST Model: DVD+-RW GS30N Rev: A102
Type: CD-ROM ANSI SCSI revision: 05
## 7.dd
Câu lệnh `dd` trong linux là một trong những câu lệnh thường xuyên được sử dụng. Câu lệnh dd dùng để sử dụng trong các trường hợp sau:
- Sao lưu và phục hồi toàn bộ dữ liệu ổ cứng hoặc một partition
- Chuyển đổi định dạng dữ liệu từ ASCII sang EBCDIC hoặc ngược lại
- Sao lưu lại MBR trong máy (MBR là một file dữ liệu rất quan trong nó chứa các lệnh để LILO hoặc GRUB nạp hệ điều hanh)
- Chuyển đổi chữ thường sang chữ hoa và ngược lại
- Tạo một file với kích cơ cô định
- Tạo một file ISO
# III. Disk partition
## 1.Partition là gì? Primary, extended và logical partition.
- Partition được coi là một phần được chia ra một cách logic từ ổ cứng.
- Có 3 loại phân vùng là: primary partiton, extended partition và logical partition.
- **Primary partition** là phân vùng có thể lưu trữ được cả hệ điều hành và những dữ liệu khác. Trên một ổ cứng chỉ có thể tạo tối da 4 phân vùng dạng primary. **Extended partition** là phân vùng mở rộng trên ổ cứng, tối đa chỉ có một phân vùng extended trên một ổ cứng vật lý, nếu trên một ổ cứng có một phân vùng extended thì chỉ có thể tạo tối đa ba phân vùng primary. **Logical partition** là phân vùng ảo được chứa trên extended partition.
Mỗi phân vùng đều chứa một đoạn mã để có thể biết được hệ điều hành hay filesystem trên phân vùng đó là gì.
|Loại phân vùng| Đặt tên
|-|-|
|Primary (max 4)| 1-4
|Extended (max 1)| 1-4
|Logical |5
## 2.Tên phân vùng.
Tên ổ cứng được đặt theo chữ cái ví dụ:sda, sdb,... còn phân vùng được đặt theo số bắt đầu từ 1. Phân vùng primary được đánh số từ 1 đến 4. Logical partition luôn luôn được đánh số từ 5.
## 3.Tra cứu thông tin về phân vùng.
- **fdisk -l** có thể được sử dụng để xem thông tin về các phân vùng trên các ổ cứng.
Ví dụ
Disk /dev/sdb: 223,6 GiB, 240057409536 bytes, 468862128 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x1dd0231f
Device Boot Start End Sectors Size Id Type /dev/sdb1 * 448862208 468860927 19998720 9,5G 82 Linux swap / Solaris /dev/sdb2 2046 448862207 448860162 214G 5 Extended /dev/sdb5 2048 448862207 448860160 214G 83 Linux
Ở ví dụ trên có 3 phân vùng trên ổ /dev/sdb, phân vùng thứ nhất(sdb1) là phân vùng swap của linux, phân vùng thứ hai(sdb2) là phân vùng extended. Phân vùng thứ 3 (sdb5) là phân vùng logical chứa hệ điều hành.
- **/proc/partitions**: Đây là file chứa một bảng với các giá trị *major*, *minor*, số block của partition và tên của partition.
Ví dụ:
root@m4700:~# cat /proc/partitions major minor #blocks name
7 0 1008 loop0 7 1 154652 loop1 8 0 488386584 sda 8 1 592896 sda1 8 2 218543104 sda2 8 3 269248512 sda3 8 16 234431064 sdb 8 17 9999360 sdb1 8 18 1 sdb2 8 21 224430080 sdb5 11 0 1048575 sr0
-Trong đó:
- **major**: là số để xác định loại thiết bị , ví dụ **8** là **sd( scsi device)**.
- **minor**: là số nhận dạng duy nhất của phân vùng trong một ổ cứng.
## 4.Phân vùng một ổ đĩa mới.
- Đầu tiên, kiểm tra ổ đĩa mới với `fdisk -l` để xem linux đã nhận ổ mới chưa.
```bash
[root@cen3 ~]# fdisk -l
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Linux đã nhận ổ cứng mới là /dev/sdb nhưng nó chưa có một phân vùng nào.
- Tiếp theo, dùng lệnh fdisk để mở ổ đĩa mới. ``` [root@cen3 ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them. Be careful before using the write command.
Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x38b5c784.
Command (m for help):
- Chúng ta có thể gõ `m` rồi nhấn enter để xem các tùy chọn trong fdisk.
- Sau đó, kiểm tra các phân vùng có trên ổ đĩa để chắc chắn đó là ổ đĩa chống.
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x38b5c784
Device Boot Start End Blocks Id System
Command (m for help):
- Ổ đĩa chống, gõ `n` để tạo một phân vùng mới, chọn p để chọn loại phân vùng là primary, chọn 1 cho số của partition và sau đó chọn kích thước của phân vùng.
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-41943039, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): Using default value 41943039 Partition 1 of type Linux and of size 20 GiB is set
Nhập p để xem lại các phân vùng đã tạo và w để lưu cấu hình về phân vùng mới.
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x4cb811ac
Device Boot Start End Blocks Id System /dev/sdb1 2048 41943039 20970496 83 Linux
Command (m for help): w The partition table has been altered!
Calling ioctl() to re-read partition table. Syncing disks.
Hoàn tất quá trình phân vùng với fdisk.
- Format một partition với lệnh dd:
`dd if=/dev/zero of=/dev/sdb1`
# IV.Filesystem
## 1. Giới thiệu về filesystem.
- Filesystem là cách tổ chức file trong phân vùng. Bên cạnh lưu trữ dựa trên tệp, filesystem thường chứa các thư mục, kiểm soát truy cập và chữa các meta data về file như thời gian truy cập, thời gian chỉnh sửa, và người sở hữu file.
- **man fs** là lệnh dùng để xem hướng dẫn về filesystem.
- **/proc/filesystems** là file chứa các filesystem được hỗ trợ của hệ thống.
- **/etc/filesystems** là file chứa một danh sách các filesystem được tự động xác định.
## 2.Các filesystem phổ biến.
- **ext2**:
- Được phát triển để khắc phục giới hạn của ext filesystem trước.
- Không có tính năng ghi nhật ký.
- Kích thước file tối đa là 2TB.
- Kích thước filesystem tối đa là 32TB
- **ext3**:
- Được giới thiệu ở Linux kernel 2.4.15
- Lợi ích lớn nhất của ext3 là ghi nhật ký.
- Kích thước tối đa của file là 2TB.
- Kích thước filesystem tối đa là 32TB
- Có thể convert ext2 sang ext3.
- **ext4**:
- Được giới thiệu trong linux kernel 2.6.19.
- Hỗ trợ kich thước file độc lập và filesystem lớn hơn.
- Kích thước tối đa của một file là 16TB
- Kích thước tối đa của filesystem là 1EB = 1048576TB
- Thư mục có thể chứa 64000 thư mục con(ext3 là 32000)
- Một số tính năng mới trên ext4: multiblock allocation, delayed allocation, journal checksum. fast fsck,...
- **xfs**:
- RHEL 7 sử dụng xfs là filesystem mặc định.
- Nó là một filesystem có khả năng mở rộng cao.
- **btrfs**:
- Là một filesystem mới được phát triển từ 2007.
- Là một filesystem ghi nhật ký.
- Có khả năng mở rông lớn và được kỳ vọng thay thế ext4 trong tương lai
|Feature |EXT4 |XFS |BTRFS|
|-|-|-|-|
|Development started |2006 |1994 |2009|
|Max volume size |1Ebytes |8Ebytes |16Ebytes|
|Max file size |16 Tbytes |8 Ebytes |16 Ebytes
|Transparent compression |No |No |Yes
|Attributes |Yes |Yes |Yes
|Snapshots |No |Planned |Yes
- **vfat**:
- Filesystem vfat tồn tại ở một số dạng: fat12 cho đĩa mềm, fat16 cho msdot, fat32 cho những ổ đĩa lớn hơn.
- Linux hỗ trợ tất cả dạng của vfat, nhưng vfat thiếu nhiều tính năng bảo mật.
- Ổ fat có thể được đọc ở mọi hệ điều hành, máy ảnh, các hệ điều hành khác,...
## 3.Một số câu lệnh làm việc với filesystem.
- **mkfs** là lệnh dùng để build filesystem. Cú pháp:
`mkfs [options] [-t type fs-options] device [size]`
- **lsblk** - list block device: là lệnh hiển thị thông tin về các block device, khi thêm tùy chọn -f thì nó sẽ hiển thị cả filesystem của nó.
root@m4700:~# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ntfs System Reserved D8F4D312F4D2F1AC
├─sda2 ntfs 6ACEDCB9CEDC7EAF
└─sda3 ntfs data-disk 1905584B3E387C70
sdb
├─sdb1 swap 141380cc-a7a4-412c-97d0-78eae84adff6 [SWAP]
├─sdb2
└─sdb5 ext4 fd792d9a-9048-41d1-8954-3a420b68ed4a /
- **df -Th** Lệnh df là lệnh hiển thị dung lượng đang sử dụng của các phân vùng ổ cứng đang được mount vào hệ thống, với option -T là để nó hiển thị thêm về filesystem của phân vùng và -h là để hiển thị dung lượng dưới dạng có thể đọc được.
# V.Mounting
Mount là một quá trình mà trong đó hệ điều hành làm cho các tập tin và thư mục trên một thiết bị lưu trữ (như ổ cứng, CD-ROM hoặc tài nguyên chia sẻ) có thể truy cập được bởi người dùng thông qua hệ thống tệp của máy tính.
Mọi file, thư mục đều phải có đường dẫn từ thư mục / đến nó. Khi thêm file system cũng cần phải có một vị trí nào đó trong cây thư mục. Thư mục đặt file system được gọi là **mount point**.
## 1.Mount local filesystem
- **Tạo mount point**: Tạo một thư mục sử dụng làm mount point sử dụng lệnh `mkdir`:
```bash
mkdir /media/data
- Mount: Khi một mount point được tạo và một file system tồn tại trên một phân vùng, lệnh
mount
có thể mount filesystem lên thư mục mount point.[root@cen3 ~]#mount -t ext4 /dev/sdb1 /media/data
Sau khi mount thì filesystem có thể được truy cập từ người dùng
- /etc/filesystems và /proc/filesystem: Tùy chọn
-t ext4
không phải luôn luôn cần thiết.mount
cũng có thể xác định filesystem một cách tự động. Đầu tiên, nó sẽ kiểm tra file /etc/filesystem với những dòng không có “nodev” ở đầu[root@cen3 ~]# cat /etc/filesystems xfs ext4 ext3 ext2 nodev proc nodev devpts iso9660 vfat hfs hfsplus *
Nếu không có file /etc/filesystem hoặc kiểm tra hết file mà chưa xác định được thì nó sẽ kiểm tra đến file
[root@cen3 ~]# cat /proc/filesystems | grep -v ^nodev xfs ext3 ext2 ext4
- umount: Để unmount một filesystem đã được mount dùng lệnh
umount
.[root@cen3 ~]# umount /media/data
2.Xem các file system đã mount.
- mount: dùng lệnh
mount
để xem các bản mount trên hệ thống.[root@cen3 ~]# mount | grep /dev/sdb /dev/sdb1 on /media/data type ext4 (rw,relatime,seclabel,data=ordered)
- df và df -h: Lệnh
df
(diskfree) là lệnh giúp hiển thị free space trên mỗi ổ đĩa đã mount. Khi thêm option -h thì nó sẽ hiển thị theo humman readabledf -h
.[root@cen3 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 20959232 1159096 19800136 6% / devtmpfs 487992 0 487992 0% /dev /dev/sdb1 10190100 36888 9612540 1% /media/data [root@cen3 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 20G 1,2G 19G 6% / devtmpfs 477M 0 477M 0% /dev /dev/sdb1 9,8G 37M 9,2G 1% /media/data
- du(disk usage): là lệnh hiển thị dung lượng đã sử dụng của một file hay một thư mục. Lệnh
du -sh
sẽ hiển thị dung lượng của thư mục chỉ định mà không bao gồm thư mục con của nó(-s), dưới dạng humman readable (-h).[root@cen3 ~]# du -h /media/data/ /root 16K /media/data/lost+found 576K /media/data/ 4,0K /root/.ssh 32K /root [root@cen3 ~]# du -sh /media/data/ /root 576K /media/data/ 32K /root
3./etc/fstab
File /etc/fstab (filesystem table) chứa một danh sách các file system, mount point, các tùy chọn để tự động mount chúng mỗi lần khởi động. Ví dụ:
[root@cen3 ~]# cat /etc/fstab
UUID=dbfb65d6-957e-4fbb-9f37-07cc6666a046 / xfs defaults 0 0
UUID=a344d40f-44c2-41a7-a39e-caa2990b9d26 swap swap defaults 0 0
Khi thêm dòng sau, nó sẽ tự động mount /dev/sdb1 vào mount point /media/data:
/dev/sdb1 /media/data ext4 defaults 0 0
- Trong đó
- Trường đầu tiên là phân vùng cần mount, có thể là UUID của phân vùng hoặc đường dẫn tuyệt đối của phân vùng trên hệ thống (ví dụ /dev/sdb1).
- Trường thứ hai là mount point mà phân vùn sẽ mount đến.
- Trường thứ ba là file system của phân vùng
- Trường thứ tư là các tùy chọn cho filesystem. Một số tùy chọn: user, nouser, ro, rw, auto, noauto, exec, noexec, default,… Nếu có nhiều tùy chọn một lúc thì viết cách nhau dấu “,”.
- Trường thứ năm, sáu là tùy chọn cho dump và fsck.
VI.Raid
1.RAID là gì?
RAID (Redundant Arrays of Inexpensive Disk) là công nghệ giúp ghép nhiều ổ cứng vật lý thành một hệ thống ổ đĩa có chức năng gia tăng tốc độ đọc/ghi hoặc tăng khả năng an toàn của dữ liệu trên hệ thống ổ cúng hoặc kết hợp cả hai yếu tố trên.
2. Raid 0.
- Raid 0 sử dụng 2 hay nhiều ổ đĩa và thường được gọi là phân giải. Dữ liệu được chia thành các khối và phân bổ lên tất cả các ổ đĩa. Lợi ích của raid 0 là giúp tạo các ổ đĩa lớn và tăng tốc độ đọc ghi. Nhược điểm của raid 0 là không có tính dự phòng.
3. Raid 1
- Raid 1 sử dụng chính sác hai ổ đĩa, được gọi là phản chiếu. Tất cả dữ liệu ghi vào đều ghi lên cả hai ổ đĩa. Ưu điểm là khả năng dự phòng cao. nhược điểm là bạn mất một nửa dung lượng.
Raid 10.
- Raid 10 là raid 1+ raid 0, raid một sử dụng các cặp ổ đĩa để tạo phản chiếu, sau đó raid 0 kết hợp các cặp đó lại thành một ổ đĩa lớn. Điều này giúp tăng khả năng chịu lỗi và tăng tốc độ đọc ghi.