1 / 40

GUID Partition Table

GUID Partition Table. Unified Extensible Firmware Interface (UEFI) GUID Partition Table (GPT) gpart(8) Root On ZFS FreeBSD9 – bsdinstall Soft-Update Journaling (SU+J). Unified Extensible Firmware Interface. BIOS limitations 16-bit processor mode 1MB addressable space UEFI advantages

alfonsoe
Download Presentation

GUID Partition Table

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GUID Partition Table Unified Extensible Firmware Interface (UEFI) GUID Partition Table (GPT) gpart(8) Root On ZFS FreeBSD9 – bsdinstall Soft-Update Journaling (SU+J)

  2. Unified Extensible Firmware Interface • BIOS limitations • 16-bit processor mode • 1MB addressable space • UEFI advantages • UEFI v2.3.1 in April 2011 • Disk device compatibility (GUID Partition Table) • Processor compatibility (x86, x64, ARM)

  3. GUID Partition Table – (1) • Limitation of MBR partition table • Partition record • active(1)、first CHS(3)、type(1)、last CHS(3)、start LBA(4)、size(4) • Maximum capacity • (232-1) x 512 bytes ~ 241 bytes = 2TBytes • GPT • Maximum capacity: 8ZBytes (273 bytes) • Used on some BIOS system

  4. GUID Partition Table – (2) • GPT • LBA 0: Legacy MBR • LBA 1: GPT Header • LBA 2~33: Partition Entries • 128 partitions • LBA 34~: Partitions • LBA -34 ~ -1: Secondary GPT data • Misaligned block • SSD (1K LBA) • WD (4K sector)

  5. GUID Partition Table – (3) • Legacy MBR (LBA 0) • A single partition of type 0xEE, and of whole disk size (max 2T) • For OSes which cannot read GPT: unknown partition, no space • For GPT-aware OSes: check the “protective MBR”

  6. GUID Partition Table – (4) • Partition header table (LBA 1)

  7. GUID Partition Table – (5) • Partition header table (LBA 1) # dd if=/dev/ada0 bs=512 count=1 skip=1 | hd 00000000 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 |EFI PART....\...| 00000010 e6 f0 27 96 00 00 00 00 01 00 00 00 00 00 00 00 |..'.............| 00000020 2f 60 38 3a 00 00 00 00 22 00 00 00 00 00 00 00 |/`8:....".......| 00000030 0e 60 38 3a 00 00 00 00 7f a3 90 90 46 b4 de 11 |.`8:........F...| 00000040 8e b8 00 21 85 12 22 74 02 00 00 00 00 00 00 00 |...!.."t........| 00000050 80 00 00 00 80 00 00 00 e0 9d 1a 52 00 00 00 00 |...........R....| 00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000200

  8. GUID Partition Table – (6) • Partition entries (LBA 2~33) • 128 bytes for each partition entry

  9. GUID Partition Table – (7) • Partition type GUID

  10. FreeBSD – gpart (1) • gpart(8) • Control utility for the disk partitioning GEOM class (ad0) • GEOM_PART_MBR (ad0  ad0s1) • GEOM_PART_BSD (ad0s1  ad0s1a) • GEOM_PART_GPT (ad0  ad0p1) • gpart create -s mbr ad0 • gpart add -t freebsd ad0 (ad0  ad0s1) • gpart create -s bsd ad0s1 • gpart create -s gpt ad0 • gpart destroy [ -F ] ad0 • -F: forced destroying of the partition table

  11. FreeBSD – gpart (2) • gpart(8) • gpart add -t type [ … ] ad0 • type: freebsd-boot, freebsd-swap, freebsd-ufs, freebsd-zfs, freebsd • -b start • -s size • -a alignment: -a 4k for 4K-sector HDD • -i index • -l label: used on partitioning schemes that support partition labels • gpart delete –i index ad0 • gpart show [ -l | -r ] [ -p ] ad0 • -l: print partition labels instead of partition type • -r: show GUID • -p: show provider names instead of partition indexes

  12. FreeBSD – gpart (3) • gpart(8) • gpart bootcode [ -b bootcode ] [ -p partcode -i index ] ad0 • -b: embed bootstrap code into the partitioning scheme’s metadata • -p: write bootstrap code into a partition • Bootstraping for MBR scheme • /boot/mbr or /boot/boot0 in partition table’s metadata • /boot/mbr searches partition with active attribute • /boot/boot0 has a boot manager • /boot/boot in BSD partition table’s metadata • Bootstraping for GPT scheme • /boot/pmbr in the first disk sector (Protective MBR) • /boot/pmbr searches the freebsd-boot partition • /boot/gptboot or /boot/gptzfsboot in freebsd-boot partition • /boot/gptboot searches the freebsd-ufs partition to run /boot/loader • /boot/gptzfsboot searches the freebsd-zfs partition to run /boot/zfsloader

  13. FreeBSD – gpart (4) • gpart(8) • gpart modify -i index [ -l label ] [ -t type ] ad0 • gpart resize -i index [ -a alignment ] [ -s size ] ad0 • gpart { set | unset } -a attrib -i index ad0 • Set "Active" for MBR scheme • gpart set -a active –i 1 ad0 • gpart { backup | restore } ad0 • gpart recover ad0 • GPT-only • gpart { command … -f x | commit | undo } ad0

  14. Root On ZFS – (1) • Root On ZFS • Using MBR disk • UFS /boot • FreeBSD-ZFS partition in a FreeBSD MBR slice • dd if=/mnt2/boot/zfsboot of=/dev/ad0s3 count=1 • dd if=/mnt2/boot/zfsboot of=/dev/ad0s3a skip=1 seek=1024 • FreeBSD MBR slice • Fails to boot • Using GPT disk • Disadvantage • Can’t dual boot using FreeBSD commercial bootcode • Using GPT-aware grub setup and hybrid GPT/MBR • http://wiki.freebsd.org/RootOnZFS now for 8.x • 9.0 http://www.aisecure.net/2011/05/01/root-on-zfs-freebsd-current/

  15. Root On ZFS – (2) • Creating a bootable ZFS Filesystem • Create GPT disk • gpart create -s gpt ad0 • Create the boot, swap and zfs partitions • gpart add -s 64k -t freebsd-boot ad0 • gpart add -s 4g -t freebsd-swap -l swap0 ad0 • gpart add -t freebsd-zfs -l disk0 ad0 • Install the Protected MBR (pmbr) and gptzfsboot loader • gpart bootcode -b pmbr -p gptzfsboot -i 1 ad0 • Load ZFS kernel module • kldload zfs • Create ZFS Pool zroot • zpool create zroot /dev/gpt/disk0 • zpool set bootfs=zroot zroot

  16. Root On ZFS – (3) • Installing FreeBSD to the ZFS filesystem • Create ZFS filesystem hierarchy

  17. Root On ZFS – (4) • Installing FreeBSD to the ZFS filesystem • Install FreeBSD to zroot • Manually install base, kernel(s), lib32, games, doc, … • Make /var/empty readonly • zfs set readonly=on zroot/var/empty • Manually configure • chroot • /etc/rc.conf • hostname, networks, zfs_enable, sshd, ntpd, … • /boot/loader.conf • zfs_load, vfs.root.mountfrom • root password • Time zone • …

  18. Root On ZFS – (5) • Installing FreeBSD to the ZFS filesystem • Install zpool.cache to the ZFS filesystem • zpool export zroot • zpool import –o cachefile=/tmp/zpool.cache zroot • Copy /tmp/zpool.cache into zroot/boot/zfs/ • Finish install • Create /etc/fstab • swap • Set mount points for zfs filesystems • zfs set mountpoint=blah zroot/blah • Alternatively, you can specify these in /etc/fstab

  19. Root On ZFS – (6) • gpart show • swapinfo # gpart show => 34 83886013 ada0 GPT (40G) 34 128 1 freebsd-boot (64k) 162 4194304 2 freebsd-swap (2.0G) 4194466 79691581 3 freebsd-zfs (38G) # swapinfo Device 1K-blocks Used Avail Capacity /dev/gpt/swap0 2097152 0 2097152 0%

  20. Root On ZFS – (7) • zpool status -v # zpool status -v pool: zroot state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM zroot ONLINE 0 0 0 ada0p3 ONLINE 0 0 0 errors: No known data errors

  21. Root On ZFS – (8) • zfs list # zfs list NAME USED AVAIL REFER MOUNTPOINT zroot 657M 36.5G 344M legacy zroot/home 31K 36.5G 31K legacy zroot/tmp 36K 36.5G 36K /tmp zroot/usr 311M 36.5G 311M /usr zroot/usr/ports 95K 36.5G 33K /usr/ports zroot/usr/ports/distfiles 31K 36.5G 31K /usr/ports/distfiles zroot/usr/ports/packages 31K 36.5G 31K /usr/ports/packages zroot/usr/src 31K 36.5G 31K /usr/src zroot/var 461K 36.5G 126K /var zroot/var/crash 31.5K 36.5G 31.5K /var/crash zroot/var/db 116K 36.5G 85K /var/db zroot/var/db/pkg 31K 36.5G 31K /var/db/pkg zroot/var/empty 31K 36.5G 31K /var/empty zroot/var/log 45K 36.5G 45K /var/log zroot/var/mail 31K 36.5G 31K /var/mail zroot/var/run 48.5K 36.5G 48.5K /var/run zroot/var/tmp 32K 36.5G 32K /var/tmp

  22. Root On ZFS – (9) • mount # mount zroot on / (zfs, local, noatime) devfs on /dev (devfs, local, multilabel) zroot/tmp on /tmp (zfs, local, nosuid) zroot/usr on /usr (zfs, local, noatime) zroot/usr/ports on /usr/ports (zfs, local, noatime, nosuid) zroot/usr/ports/distfiles on /usr/ports/distfiles (zfs, local, noatime, noexec, nosuid) zroot/usr/ports/packages on /usr/ports/packages (zfs, local, noatime, noexec, nosuid) zroot/usr/src on /usr/src (zfs, local, noatime, noexec, nosuid) zroot/var on /var (zfs, local, noatime) zroot/var/crash on /var/crash (zfs, local, noatime, noexec, nosuid) zroot/var/db on /var/db (zfs, local, noatime, noexec, nosuid) zroot/var/db/pkg on /var/db/pkg (zfs, local, noatime, nosuid) zroot/var/empty on /var/empty (zfs, local, noatime, noexec, nosuid, read-only) zroot/var/log on /var/log (zfs, local, noatime, noexec, nosuid) zroot/var/mail on /var/mail (zfs, local, noatime, noexec, nosuid) zroot/var/run on /var/run (zfs, local, noatime, noexec, nosuid) zroot/var/tmp on /var/tmp (zfs, local, nosuid)

  23. bsdinstall (FreeBSD 9) – (1) • http://www.freebsd.org/doc/handbook/bsdinstall.html

  24. bsdinstall (FreeBSD 9) – (2) • Install、Shell、Live CD

  25. bsdinstall (FreeBSD 9) – (3) • Setting hostname

  26. bsdinstall (FreeBSD 9) – (4) • Selecting components to install

  27. bsdinstall (FreeBSD 9) – (5) • Partitioning methods • Shell – gpart(8)、fdisk(8)、bsdlabel(8)

  28. bsdinstall (FreeBSD 9) – (6) • Guided Partitioning • Select disk • Replace { ad | da } by ada • { ad | da }’s are linkedto ada’s • How to partition the disk • Entire Disk • Partition – use free space

  29. bsdinstall (FreeBSD 9) – (7) • Guided Partitioning result

  30. bsdinstall (FreeBSD 9) – (8) • Manual Partitioning

  31. bsdinstall (FreeBSD 9) – (9) • Choose a partitioning scheme • GPT、MBR • DON’T use BSD!!!

  32. bsdinstall (FreeBSD 9) – (10) • Add partitions • freebsd-boot • FreeBSD boot code. This partition must be first on the disk.

  33. bsdinstall (FreeBSD 9) – (11) • Final confirmation

  34. bsdinstall (FreeBSD 9) – (12) • Fetching  Checksum Verification  Extraction

  35. bsdinstall (FreeBSD 9) – (13) • Post-installation • root password • Network interfaces • Wired – Static IPv4 / DHCP / Static IPv6 / SLAAC • Wireless • DNS • Time Zone • Services • Add users

  36. bsdinstall (FreeBSD 9) – (14) • Final configuration

  37. Soft Updates Journaling – (1) • To maintain filesystem metadata consistency • Synchronous write • Non-Volatile RAM • Journaling • COW • Soft Updates

  38. Soft Updates Journaling – (2) • Ordering constrains • Name in on-disk directory must be deleted • Deallocate on-disk inode • Release file’s blocks to free-space bitmap • Soft Updates • Dependency structures • Only inconsistencies • Blocks marked in use that are free • Inodes marked in use that are free

  39. Soft Updates Journaling – (3) • Soft Updates Journaling (SUJ, SU+J) • Only need to journal operations that orphan resources • Increased link count • Decreased link count • … • Need a maximum 16Mb • .sujournal (a 32Mb file…) • Recovery steps • Scan the journal • Modify link counts • Free inodes with zero count or unlinked • Free unallocated blocks

  40. Soft Updates Journaling – (4) • First appeared in 9.0-CURRENT (r207141) in April 2010 • Now 9.0-RC3 … • Enable SU+J • newfs –j … • tunefs –j { enable | disable } for SUJ • Different from gjournal (-J) • tunefs –J { enable | disable } for gjournal

More Related