< Return to Video

CompTIA Linux+: Logical Volumes & Filesystem Hierarchy #5

  • 0:00 - 0:04
    You're watching ITPRO.TV.
  • 0:04 - 0:06
    Hello, and thank you for watching ITPRO.TV,
  • 0:06 - 0:08
    helping you level up with IT learning
  • 0:08 - 0:10
    everywhere you go. I'm your host, Zach
  • 0:10 - 0:12
    Memos, for this episode of CompTIA Linux Plus.
  • 0:12 - 0:15
    Logical Volume Manager is the name of
  • 0:15 - 0:16
    this episode, but you knew that, didn't
  • 0:16 - 0:19
    you? And the person we know and we love
  • 0:19 - 0:21
    and we trust, Don Pezet, is here to help us out.
  • 0:21 - 0:22
    Don, good to see you. Hey. Glad to
  • 0:22 - 0:24
    be back. And, you know, tackling a pretty
  • 0:24 - 0:25
    cool technology this episode, we're going
  • 0:25 - 0:27
    to be looking at the LVM, or the Logical
  • 0:27 - 0:30
    Volume Manager. It's a really neat
  • 0:30 - 0:32
    utility that allows us to have a lot of
  • 0:32 - 0:34
    flexibility with our file systems.
  • 0:34 - 0:35
    In previous episodes, I talked about how
  • 0:35 - 0:37
    we don't want to change file systems
  • 0:37 - 0:39
    after we create them. LVM actually makes
  • 0:39 - 0:40
    that a lot easier. So in this episode,
  • 0:40 - 0:42
    we're going to see,
  • 0:42 - 0:43
    you know, what the LVM is, obviously, but
  • 0:43 - 0:45
    how to install it, how to get it
  • 0:45 - 0:47
    configured, how to arrange our disks
  • 0:47 - 0:49
    using the LVM, and then provide us that
  • 0:49 - 0:51
    flexibility down the road. So that's all
  • 0:51 - 0:52
    coming up right here in this episode.
  • 0:52 - 0:53
    So what do we need to know to get our
  • 0:53 - 0:56
    system ready for the LVM? Alright. So
  • 0:56 - 0:58
    the odds are that your distro supports
  • 0:58 - 1:00
    the LVM. It might not be installed, but
  • 1:00 - 1:02
    you should have support for it. Most of
  • 1:02 - 1:03
    them do have it installed by default.
  • 1:03 - 1:06
    Unless you do, like, a minimal install, it might not.
  • 1:06 - 1:07
    We can check that really easily, so that's
  • 1:07 - 1:09
    going to be kind of step one. The other
  • 1:09 - 1:10
    thing is we're going to need some hard
  • 1:10 - 1:14
    drives. Right? The LVM is a Logical
  • 1:14 - 1:17
    Volume Manager. It's requiring, to
  • 1:17 - 1:18
    create logical volumes or kind of
  • 1:18 - 1:20
    virtual disks, and those have to lay on
  • 1:20 - 1:22
    top of actual physical disks.
  • 1:22 - 1:24
    So we're going to need some in order to do this.
  • 1:24 - 1:28
    Now, you can use LVM with your, you know,
  • 1:28 - 1:30
    with your root directory and your home
  • 1:30 - 1:31
    and so on. So you can have a lot of
  • 1:31 - 1:33
    things mounted that way. In fact, when you
  • 1:33 - 1:35
    install Linux, you probably had the
  • 1:35 - 1:37
    choice to pick to use the LVM. If you
  • 1:37 - 1:40
    watched our installation episodes, I didn't choose that.
  • 1:40 - 1:42
    So my disks are currently set up without using the LVM.
  • 1:42 - 1:44
    If I want to create it from scratch, I'll
  • 1:44 - 1:45
    just have to know a handful of
  • 1:45 - 1:47
    commands. So let me run through a couple
  • 1:47 - 1:49
    of the basics here. The thing, I'm
  • 1:49 - 1:51
    going to make sure that LVM is installed.
  • 1:51 - 1:52
    There's a few ways to do it, but the
  • 1:52 - 1:53
    easiest way is to use your package
  • 1:53 - 1:55
    manager. So I'm going to do a
  • 1:55 - 1:59
    yum list lvm*. The main package
  • 1:59 - 2:01
    you're looking for is called lvm2
  • 2:01 - 2:02
    because it's version 2 of the Logical
  • 2:02 - 2:04
    Volume Manager. And so when I look at
  • 2:04 - 2:06
    mine, I see I've got installed packages:
  • 2:06 - 2:09
    lvm2 and lvm2-libs. The libraries--
  • 2:09 - 2:11
    those are already installed, so I'm good
  • 2:11 - 2:13
    to go. If they weren't installed, I would
  • 2:13 - 2:17
    just do a sudo yum install lvm2.
  • 2:17 - 2:19
    If you're on an Ubuntu machine, I believe
  • 2:19 - 2:20
    the package there is actually just
  • 2:20 - 2:21
    called lvm. I don't think it has the
  • 2:21 - 2:23
    number, but it is version 2 that it
  • 2:23 - 2:27
    installs by default. So I've got it. It's right there.
  • 2:27 - 2:28
    And so now I know that I've got the
  • 2:28 - 2:31
    tools. The next part are the disks.
  • 2:31 - 2:33
    I'm going to need some disks, and I'm going
  • 2:33 - 2:36
    to be attaching them to the LVM system.
  • 2:36 - 2:38
    So when I do that, it actually expects
  • 2:38 - 2:40
    you to already have a partition on the
  • 2:40 - 2:41
    disk. You don't have to format it, but it at
  • 2:41 - 2:44
    least needs to have a partition. And,
  • 2:44 - 2:46
    normally, we fret about the size of the
  • 2:46 - 2:47
    partition and the disk type and all that
  • 2:47 - 2:49
    stuff. LVM really doesn't care about that.
  • 2:49 - 2:51
    It just needs to have a partition in
  • 2:51 - 2:53
    place. So if you've already got one,
  • 2:53 - 2:56
    you're in business. I'm going to do an lsblk,
  • 2:56 - 3:02
    and I've got three disks: sdb, sdc, and sdd. And each of them--
  • 3:02 - 3:03
    they're one-terabyte disks, and
  • 3:03 - 3:06
    they've all got a single partition on
  • 3:06 - 3:08
    them that is one terabyte in size. That's
  • 3:08 - 3:10
    perfect for what I need here in this lab.
  • 3:10 - 3:12
    If your disks don't have a partition, you
  • 3:12 - 3:14
    just need to create one, and we saw that
  • 3:14 - 3:16
    in the last episode--or actually two
  • 3:16 - 3:19
    episodes ago. You can use the fdisk utility.
  • 3:19 - 3:20
    You know, sometimes we worry about using
  • 3:20 - 3:23
    GPT versus MBR. Here, none of that's
  • 3:23 - 3:24
    really going to matter because the
  • 3:24 - 3:25
    logical volumes are what we're going to
  • 3:25 - 3:28
    manipulate. So pick whatever partition type you like,
  • 3:28 - 3:30
    throw it on there. You don't need to
  • 3:30 - 3:31
    format it. We don't need to drop a file
  • 3:31 - 3:33
    system on it. Just have the partition
  • 3:33 - 3:35
    present, and then you'll be ready to
  • 3:35 - 3:36
    launch it with LVM and start to get your
  • 3:36 - 3:38
    volumes set up. So now that we're
  • 3:38 - 3:40
    prepared, how do we actually create
  • 3:40 - 3:42
    logical volumes, Don? Alright. So now we
  • 3:42 - 3:44
    can go in and we start to create this, but
  • 3:44 - 3:45
    it is actually a little bit--
  • 3:45 - 3:47
    I'm going to call it complex. It's not
  • 3:47 - 3:48
    that complex, though, but there's actually
  • 3:48 - 3:50
    three steps we have to get through.
  • 3:50 - 3:52
    Let me bring up a diagram here to show you
  • 3:52 - 3:55
    so we can kind of have a better understanding of this.
  • 3:55 - 3:57
    Inside of the LVM, there's three
  • 3:57 - 3:59
    different things you work with: there's
  • 3:59 - 4:01
    physical volumes, there's volume groups,
  • 4:01 - 4:04
    and there's logical volumes. Alright?
  • 4:04 - 4:05
    We have to create all three.
  • 4:05 - 4:07
    We're going to start with the physical volumes.
  • 4:07 - 4:08
    Now, notice it says physical volumes, not
  • 4:08 - 4:11
    physical disks. Right? I have
  • 4:11 - 4:12
    three physical disks, and they've got a
  • 4:12 - 4:14
    partition on them, but they're not
  • 4:14 - 4:16
    considered volumes yet. We're going to
  • 4:16 - 4:19
    bring those physical volumes--those disks--
  • 4:19 - 4:21
    into LVM. So we've got to create physical
  • 4:21 - 4:23
    volumes, and these will match up with our
  • 4:23 - 4:25
    physical disks. I've got three disks,
  • 4:25 - 4:29
    so I'm going to create three physical volumes. Right?
  • 4:29 - 4:31
    Then we create a volume group.
  • 4:31 - 4:34
    A volume group is where we gather the physical disks
  • 4:34 - 4:37
    together to create a combined pool of storage.
  • 4:37 - 4:39
    Alright? In the diagram here,
  • 4:39 - 4:41
    there's three two-terabyte drives, so
  • 4:41 - 4:46
    they get gathered together into six terabytes of storage.
  • 4:46 - 4:48
    Once that's done, then we can start
  • 4:48 - 4:49
    slicing and pulling from that storage
  • 4:49 - 4:51
    however we want. I can say, alright,
  • 4:51 - 4:53
    I need a three-terabyte disk, and so we can
  • 4:53 - 4:55
    slice that out of the volume group by
  • 4:55 - 4:57
    creating a logical volume. Now,
  • 4:57 - 4:59
    three terabytes is bigger than any one of
  • 4:59 - 5:02
    these physical disks. LVM will manage
  • 5:02 - 5:05
    spreading that data across the disks to
  • 5:05 - 5:07
    be able to allow for that space. And
  • 5:07 - 5:09
    what's really neat is down the road, if I
  • 5:09 - 5:11
    decide, man, I'm running out of space,
  • 5:11 - 5:13
    I need to add another terabyte to that
  • 5:13 - 5:17
    disk--we can go in and expand that logical volume.
  • 5:17 - 5:19
    We can add another terabyte onto the side of it--just slice
  • 5:19 - 5:21
    it right out of the volume group. Or what
  • 5:21 - 5:22
    they've done here in the example is
  • 5:22 - 5:25
    sliced out a second three-terabyte disk
  • 5:25 - 5:27
    and pulled it right out. So LVM lets us
  • 5:27 - 5:32
    do that, but it requires these three components. We're going to have to create each one.
  • 5:32 - 5:34
    Fortunately, we've got tools that do all
  • 5:34 - 5:36
    that. It's all when you install that lvm2
  • 5:36 - 5:40
    package--it installs a whole collection of tools.
  • 5:40 - 5:43
    To help you with this,
  • 5:43 - 5:44
    if you memorize these three names, which
  • 5:44 - 5:46
    you definitely want to do for the exam,
  • 5:46 - 5:49
    the tools almost always start with
  • 5:49 - 5:50
    letters that match up with what you're
  • 5:50 - 5:52
    doing. So the physical volume tools
  • 5:52 - 5:55
    almost all start with pv, and then the
  • 5:55 - 5:56
    logical volumes start with lv, and the volume
  • 5:56 - 5:58
    groups start with vg. So when you take a
  • 5:58 - 6:01
    look at your system--let me just jump over here.
  • 6:01 - 6:04
    If I take a look inside of /usr/sbin,
  • 6:04 - 6:06
    and I look at--I want to work with
  • 6:06 - 6:08
    physical volumes, so I'll just look for pv*.
  • 6:08 - 6:10
    Alright? I can see right here, I've
  • 6:10 - 6:15
    got pvcreate, pvchange, pvremove, pvresize.
  • 6:15 - 6:17
    These are all my physical volume
  • 6:17 - 6:19
    utilities that let me mess around with
  • 6:19 - 6:20
    them. And then if I want to look at
  • 6:20 - 6:23
    volume groups, I can look for vg*, and
  • 6:23 - 6:25
    I'll find all of them--almost the same as
  • 6:25 - 6:27
    what we saw for physical volumes, except
  • 6:27 - 6:28
    we have some new options in here for,
  • 6:28 - 6:32
    like, vgimport, vgreduce for shrinking and growing--
  • 6:32 - 6:33
    you know, all those different ones.
  • 6:33 - 6:37
    And then lastly, we had logical volumes--that was lv*,
  • 6:37 - 6:39
    and I'll see each of them tucked away
  • 6:39 - 6:42
    inside of there, like the
  • 6:42 - 6:45
    lvdisplay and so on. Some of them are
  • 6:45 - 6:47
    aliases or shortcuts. A lot of them are
  • 6:47 - 6:49
    interchangeable. Like, lvdisplay will
  • 6:49 - 6:51
    show me all of my logical volumes.
  • 6:51 - 6:54
    lvs actually stands for logical volume show.
  • 6:54 - 6:56
    It will show me my logical volume.
  • 6:56 - 6:58
    So, some of these kinds of overlap with each
  • 6:58 - 7:00
    other, but it’s pretty easy to spot the
  • 7:00 - 7:02
    utilities, and we just need to go through
  • 7:02 - 7:03
    creating them. You create from the
  • 7:03 - 7:04
    ground up. We’re going to create our
  • 7:04 - 7:05
    physical volumes, then we’re going to
  • 7:05 - 7:07
    create our logical volume--sorry--
  • 7:07 - 7:08
    we create our physical volumes, then
  • 7:08 - 7:11
    we create our volume groups, then we create
  • 7:11 - 7:13
    our logical volumes on top.
  • 7:13 - 7:14
    So that’s the basic process that we’re going to go
  • 7:14 - 7:15
    through. Let me just run through
  • 7:15 - 7:17
    that. I’m going to start a little
  • 7:17 - 7:19
    more simple than in this diagram:
  • 7:19 - 7:21
    I’m just going to do two disks. I’ve got two
  • 7:21 - 7:24
    one-terabyte disks. I’m going to combine them
  • 7:24 - 7:27
    into a two-terabyte volume group that
  • 7:27 - 7:30
    I can then slice out into a logical volume. Alright?
  • 7:30 - 7:35
    So what I can do is I’m going to start with pvcreate, alright?
  • 7:35 - 7:37
    And actually, let me sudo this so that
  • 7:37 - 7:38
    I’m an administrator.
  • 7:38 - 7:41
    So I'm going to sudo the pv create command, and I need to
  • 7:41 - 7:44
    tell it the disks that I'm bringing in.
  • 7:44 - 7:46
    Now remember I said we need a partition
  • 7:46 - 7:47
    on each one. We saw I already have some
  • 7:47 - 7:56
    partitions. So I'm going to bring in /dev/sdb1 and /dev/sdc1. Alright.
  • 7:56 - 7:58
    Those are the two disks. I have a 1/sdd1.
  • 7:58 - 7:59
    I'm going to hold on to it because I
  • 7:59 - 8:01
    want to show you guys adding more
  • 8:01 - 8:03
    storage after the fact. So I'm just going
  • 8:03 - 8:06
    to grab these two. So when I do that, it
  • 8:06 - 8:07
    sees the disk. And remember how I said
  • 8:07 - 8:10
    you don't have to format it? Here's why.
  • 8:10 - 8:11
    It sees I've already got a format on
  • 8:11 - 8:12
    there, and it's going to wipe it.
  • 8:12 - 8:14
    It's going to erase whatever's on there.
  • 8:14 - 8:15
    It needs the partition. It doesn't need the
  • 8:15 - 8:17
    file system. So I'll say yes to let it
  • 8:17 - 8:18
    wipe it. It's going to do the same thing
  • 8:18 - 8:21
    on the other disk. There we go. So they're
  • 8:21 - 8:24
    wiped, and now they've been brought into
  • 8:24 - 8:29
    the LVM. And I should be able to see that by doing pv display,
  • 8:29 - 8:31
    which is my physical volume display. Oops.
  • 8:31 - 8:37
    Non-root user. So let me just rerun that. Whoops.
  • 8:37 - 8:39
    And there we go. And so now it's going to
  • 8:39 - 8:41
    show me those two physical volumes, sdb1
  • 8:41 - 8:44
    and sdc1. They're one terabyte. They each
  • 8:44 - 8:46
    have a UUID that's been assigned, and
  • 8:46 - 8:47
    I can see all of that right there. So
  • 8:47 - 8:49
    they've been brought in the way that I want them.
  • 8:49 - 8:51
    Now I can create a volume group to
  • 8:51 - 8:53
    combine these two together, and I'm just going to use,
  • 8:53 - 8:57
    you guessed it, vg create. Now this
  • 8:57 - 8:58
    command is a little bit different.
  • 8:58 - 9:00
    I'm going to create a volume group, and that
  • 9:00 - 9:02
    volume group needs to have a logical
  • 9:02 - 9:04
    name that I can map to. When I have a
  • 9:04 - 9:05
    hard drive, the hard drive is referenced
  • 9:05 - 9:10
    as /dev/something, right, a device ID.
  • 9:10 - 9:13
    Well, our volume groups need to have device IDs also, and there's a
  • 9:13 - 9:15
    service that's running in the background
  • 9:15 - 9:17
    called the Logical Volume Manager
  • 9:17 - 9:19
    Mapper, the mapper service. And the mapper
  • 9:19 - 9:21
    service is what's going to create /dev
  • 9:21 - 9:23
    entries for our logical volume, so
  • 9:23 - 9:25
    it's really important. So when I start to
  • 9:25 - 9:27
    create a volume group, I have to give it
  • 9:27 - 9:29
    a name for what I want the volume group
  • 9:29 - 9:31
    to be, and that's going to become part of
  • 9:31 - 9:33
    the device name for my logical volumes.
  • 9:33 - 9:38
    They'll be /dev/mapper/ and then the
  • 9:38 - 9:40
    volume group name followed by / and the
  • 9:40 - 9:42
    logical volume name. So it gets kind of
  • 9:42 - 9:45
    long. So when I create this one, I need to give it a name.
  • 9:45 - 9:47
    I would normally name this based off of
  • 9:47 - 9:48
    what I intended the pool storage to
  • 9:48 - 9:50
    be used for. But here on the show, just to
  • 9:50 - 9:52
    keep things a little bit easy, I'm going to
  • 9:52 - 9:54
    call it vg1. This is volume group one.
  • 9:54 - 9:56
    And that way, you guys will easily be able to
  • 9:56 - 9:57
    tell, you know, that I'm working with a
  • 9:57 - 10:00
    volume group. So I'll stick with vg1, and
  • 10:00 - 10:02
    then I need to attach the physical
  • 10:02 - 10:03
    volumes to it. My physical volumes were
  • 10:03 - 10:09
    /dev/sdb1 and /dev/sdc1.
  • 10:09 - 10:10
    Alright. So that's going to create the
  • 10:10 - 10:12
    volume group, and it's going to attach
  • 10:12 - 10:15
    those two physical volumes to it. If I do a vg display...oh,
  • 10:15 - 10:18
    let me sudo that. There we go. I can see
  • 10:18 - 10:25
    that it's here. I can see that it has somewhere in here,
  • 10:25 - 10:28
    my size here, my volume group size.
  • 10:28 - 10:29
    It's only showing 15 GB right now, so I need
  • 10:29 - 10:31
    to give that a moment for it to kind of
  • 10:31 - 10:33
    sync up. But if I scroll back up here...oh,
  • 10:33 - 10:34
    sorry. I'm looking at the wrong volume
  • 10:34 - 10:36
    group. I already have a volume group for
  • 10:36 - 10:38
    something else. If I looked at the VG
  • 10:38 - 10:40
    name, see how that one's called CentOS? Mhmm.
  • 10:40 - 10:41
    That's one of my, you know, one of the
  • 10:41 - 10:43
    ones the operating system created, not
  • 10:43 - 10:45
    mine. So I need to scroll up. Here's vg1,
  • 10:45 - 10:47
    and it's got the right storage. Thank
  • 10:47 - 10:50
    goodness. So you can see right here, I have
  • 10:50 - 10:52
    1.95 terabytes of storage available
  • 10:52 - 10:55
    inside of this volume group,
  • 10:55 - 10:56
    ready to be sliced out into logical
  • 10:56 - 10:59
    volumes. And to create those logical
  • 10:59 - 11:01
    volumes, we're going to use lv create,
  • 11:01 - 11:03
    right, which I'm going to sudo. One of
  • 11:03 - 11:06
    these days, I'll remember to do that right off the bat.
  • 11:06 - 11:07
    With a logical volume, we're slicing
  • 11:07 - 11:10
    out storage and turning that into a disk.
  • 11:10 - 11:14
    So I'm going to do lv create, and I need to tell it the size
  • 11:14 - 11:17
    that I want this to be. Okay? I want mine
  • 11:17 - 11:20
    to be, let's say I'll just do 200 GB
  • 11:20 - 11:22
    or, you know, I could do the full 2
  • 11:22 - 11:25
    terabytes if I wanted or 1.5 terabytes.
  • 11:25 - 11:27
    You know, maybe I'll do 1,500
  • 11:27 - 11:31
    gigabytes. So I'll put in 1500g,
  • 11:31 - 11:32
    and then I need to tell it the volume
  • 11:32 - 11:34
    group that I'm getting the storage from.
  • 11:34 - 11:35
    I might have more than one volume group.
  • 11:35 - 11:37
    I just have one, so I'll type vg1.
  • 11:37 - 11:40
    Then I need to give it a name. And, again,
  • 11:40 - 11:43
    normally, I would name this, like, web
  • 11:43 - 11:45
    storage or file storage or, you know, something
  • 11:45 - 11:47
    that told me what it was for. But in this
  • 11:47 - 11:48
    case, to keep things easy, I'm going to
  • 11:48 - 11:53
    call it lv1. This is logical volume number one. Alright.
  • 11:53 - 11:55
    So when I go to create that, it builds it,
  • 11:55 - 12:01
    and we can use lv display to be able to verify that. Alright?
  • 12:01 - 12:02
    So when I take a look here again, I'm going to
  • 12:02 - 12:04
    ignore the ones the operating system
  • 12:04 - 12:07
    created and find mine. Here's lv1.
  • 12:07 - 12:11
    That's a part of volume group one, and it is 1.46
  • 12:11 - 12:13
    or basically one and a half terabytes in
  • 12:13 - 12:16
    size. Bigger than one of my disks. Right?
  • 12:16 - 12:17
    And so I sliced it out. I still have more
  • 12:17 - 12:19
    space available, but that one's grabbed
  • 12:19 - 12:20
    right there. And if you look at the
  • 12:20 - 12:22
    device name that it assigned,
  • 12:22 - 12:29
    we've got /dev/vg1/lv1. Right? So it's not so hard to remember.
  • 12:29 - 12:31
    It's not /dev/sda or /dev/sdb because
  • 12:31 - 12:33
    there's no physical device. These are
  • 12:33 - 12:36
    virtual mappings, /dev/vg1/lv1.
  • 12:36 - 12:38
    Now in Red Hat and CentOS, they do a really
  • 12:38 - 12:40
    good job of mapping it that way, so it's
  • 12:40 - 12:41
    easy to remember. You just do the volume
  • 12:41 - 12:44
    group followed by the logical volume.
  • 12:44 - 12:46
    In other distros, they'll nest it under a
  • 12:46 - 12:48
    mapper folder, which I likely have.
  • 12:48 - 12:51
    If I go into /dev and take a look,
  • 12:51 - 12:53
    yeah. Here's that mapper folder that I
  • 12:53 - 12:55
    was talking about, and I don't know if
  • 12:55 - 12:57
    it'll let me go into there. Oh, it did.
  • 12:57 - 12:58
    So if I go into the mapper folder, see
  • 12:58 - 13:01
    there's a folder in there called vg1/lv1.
  • 13:01 - 13:03
    So that's another name for that device.
  • 13:03 - 13:09
    I could do /dev/mapper/vg1-lv1 like that.
  • 13:09 - 13:10
    That would also be a
  • 13:10 - 13:12
    device name that points to the same
  • 13:12 - 13:15
    place, but it's kind of nice having
  • 13:15 - 13:18
    /dev/vg1/lv1 like that.
  • 13:18 - 13:19
    That's easier to remember. It makes a little
  • 13:19 - 13:20
    more sense for us humans. Just know that
  • 13:20 - 13:22
    not every distro does that, so look for
  • 13:22 - 13:25
    that mapper folder if you need to.
  • 13:25 - 13:27
    But at this point, I've created the physical
  • 13:27 - 13:29
    volume. I've created the logical volumes,
  • 13:29 - 13:30
    you know, the volume group in the
  • 13:30 - 13:32
    middle. We've created all that. It's
  • 13:32 - 13:34
    running. I used the set of commands that
  • 13:34 - 13:36
    are the most common for me.
  • 13:36 - 13:37
    There are more commands, though, that are available.
  • 13:37 - 13:41
    So, for example, I did pv display, vg
  • 13:41 - 13:47
    display, and so on. I could have also done pvs
  • 13:47 - 13:50
    and, oops, it is
  • 13:50 - 13:52
    not liking the fact that I left a bunch
  • 13:52 - 13:54
    of other stuff on that command. So let me
  • 13:54 - 13:56
    redo that. Here we go. pvs, which gives
  • 13:56 - 13:58
    us kind of an abbreviated view of the
  • 13:58 - 14:00
    volumes. When I did pv display, we got a
  • 14:00 - 14:02
    lot more information. pvs, it's kind of
  • 14:02 - 14:06
    summarized. And so I can see the sdb1,
  • 14:06 - 14:09
    sdc1 that are attached. I also have
  • 14:09 - 14:14
    vgs for volume group, and so we can see that, again, kind of summarized.
  • 14:14 - 14:17
    And lastly was lvs to see the
  • 14:17 - 14:18
    logical volumes. So if you just want a
  • 14:18 - 14:20
    quick view, those tools are also really
  • 14:20 - 14:22
    handy to be able to look at.
  • 14:22 - 14:24
    And then there's, like, pvscan, which will
  • 14:24 - 14:25
    scan your system in trying to find
  • 14:25 - 14:27
    physical volumes to bring in. So there are
  • 14:27 - 14:30
    a number of other utilities too, but the basic creation
  • 14:30 - 14:32
    is done with those handful of commands
  • 14:32 - 14:35
    right there. Are we able to format
  • 14:35 - 14:36
    and mount the logical volumes like
  • 14:36 - 14:40
    regular disks now? Oh, yeah. Yeah. So after this,
  • 14:40 - 14:42
    it acts just like a normal disk. It's got a
  • 14:42 - 14:44
    slightly weird name, but otherwise, it's a
  • 14:44 - 14:46
    normal disk. So, for example, if I want to
  • 14:46 - 14:49
    format this one, let's go ext4.
  • 14:49 - 14:53
    Right? So I would do sudo mkfs.ext4.
  • 14:53 - 14:59
    So I'm going to format the disk, and I'll point to /dev/vg1/lv1.
  • 14:59 - 15:00
    And it's going to find
  • 15:00 - 15:03
    that disk, and the mkfs command will
  • 15:03 - 15:04
    think it's a physical disk, and it'll go
  • 15:04 - 15:06
    in and format it. And now I've got a one
  • 15:06 - 15:09
    and a half terabyte disk that's ready.
  • 15:09 - 15:11
    I can then mount that. So maybe I'll,
  • 15:11 - 15:13
    let me create a folder here. I'm going to
  • 15:13 - 15:18
    mount that in /mnt/storage.
  • 15:18 - 15:24
    And so I will mount /dev/sg1, not sg1, lv1
  • 15:24 - 15:28
    and I'm going to mount that into /mnt/storage like that.
  • 15:28 - 15:30
    So now it's mounted, and I can go and start putting
  • 15:30 - 15:32
    files in there and working with it. If I
  • 15:32 - 15:37
    do df -h, I can see /mnt/storage right there. One and a half
  • 15:37 - 15:39
    terabytes of space available. It's ready
  • 15:39 - 15:40
    for me to start dumping things in there,
  • 15:40 - 15:43
    and I can work with it like normal. Do notice on
  • 15:43 - 15:47
    the left side, it's not showing /dev/vg1/lv1.
  • 15:47 - 15:49
    It's showing that mapper folder
  • 15:49 - 15:52
    that I mentioned, /dev/mapper/vg1-lv1.
  • 15:52 - 15:53
    So you may see that notation
  • 15:53 - 15:55
    kind of switch as you work with it.
  • 15:55 - 15:59
    But they both function the same way. I mounted it, it's online.
  • 15:59 - 16:01
    I can forget about the LVM at this point
  • 16:01 - 16:05
    and just go on with my life and never have to think twice about it.
  • 16:05 - 16:07
    It functions just like any other disk.
  • 16:07 - 16:08
    Well, are they persistent, or do we need to
  • 16:08 - 16:10
    add them to the file system table?
  • 16:10 - 16:13
    Oh, just like a normal disk, we would need to
  • 16:13 - 16:17
    add this to the file system table or /etc/fstab.
  • 16:17 - 16:21
    It's not really any different. Although, I will tell you,
  • 16:21 - 16:22
    you need to be a little bit careful with
  • 16:22 - 16:25
    the file system table because
  • 16:25 - 16:28
    a lot of disks get mounted right away
  • 16:28 - 16:30
    when the system boots, and sometimes the
  • 16:30 - 16:33
    LVM service hasn't started yet. In which case,
  • 16:33 - 16:35
    the mapper might not have had time to do
  • 16:35 - 16:37
    its job. So, when you're mounting inside
  • 16:37 - 16:38
    of the file system table, it's usually
  • 16:38 - 16:41
    better to use the /dev/mapper name
  • 16:41 - 16:46
    as opposed to using /dev/vg1/whatever because that name might
  • 16:46 - 16:48
    not exist yet at boot time. You can try
  • 16:48 - 16:50
    it out on yours to see what works, but
  • 16:50 - 16:52
    basically, you would just add that to
  • 16:52 - 16:57
    /etc/fstab just like any other disk except for the device name.
  • 16:57 - 17:04
    Well, here, you can see they've got one already mounted: /var/log/audit is /dev/mapper/whatever.
  • 17:04 - 17:07
    So, as long as you use the mapper name, you'll
  • 17:07 - 17:08
    be in good shape, and you can mount it,
  • 17:08 - 17:10
    and it'll be persistent. So, Don, how would
  • 17:10 - 17:12
    we go about adding more storage?
  • 17:12 - 17:13
    Alright. So, I mentioned at the beginning of the
  • 17:13 - 17:15
    episode that I had that disk that I was
  • 17:15 - 17:17
    holding. I got another terabyte. So, let's
  • 17:17 - 17:21
    just say, over time, I fill up this one and a half terabyte
  • 17:21 - 17:22
    storage drive that I just made, and
  • 17:22 - 17:24
    I want to add more storage. Well, I actually
  • 17:24 - 17:26
    I've got 500 GB more storage in this
  • 17:26 - 17:28
    volume group already that I could slice
  • 17:28 - 17:30
    out and add and expand to two terabytes.
  • 17:30 - 17:32
    But maybe I know that I'm going to add
  • 17:32 - 17:34
    another terabyte of data. So I need to
  • 17:34 - 17:36
    add more than that 500 GB that's available.
  • 17:36 - 17:38
    I can go and add another
  • 17:38 - 17:40
    physical disk to my server, and I can
  • 17:40 - 17:43
    incorporate that into the LVM.
  • 17:43 - 17:44
    I can bring it in as another physical volume
  • 17:44 - 17:46
    and expand out my volume group. Once I've
  • 17:46 - 17:48
    done that, I can expand out my logical
  • 17:48 - 17:50
    volume. And then lastly, I can expand out
  • 17:50 - 17:52
    my file system. And before you know it,
  • 17:52 - 17:55
    I'll have more storage. So, let's see what that looks like.
  • 17:55 - 17:57
    Basically, I'm going to go to my command
  • 17:57 - 17:58
    prompt. And off, I would need to
  • 17:58 - 18:00
    shut my system down, add another hard
  • 18:00 - 18:02
    drive, right? And then we would need to
  • 18:02 - 18:03
    create a partition on it. I mentioned we
  • 18:03 - 18:05
    always need to have a partition there.
  • 18:05 - 18:11
    If I do lsblk, I can see that SDD disk right there.
  • 18:11 - 18:12
    It's already got a partition on it.
  • 18:12 - 18:14
    And, actually, I didn't bring this up earlier,
  • 18:14 - 18:16
    but I can see the volume group and
  • 18:16 - 18:18
    logical volume names have been attached
  • 18:18 - 18:20
    inside of lsblk, so I can see those guys
  • 18:20 - 18:23
    are tied up into logical volumes.
  • 18:23 - 18:26
    Alright. So, I want to incorporate SDD1
  • 18:26 - 18:29
    into my physical volumes. So I'm going to
  • 18:29 - 18:30
    bring that in just like we did at the
  • 18:30 - 18:34
    beginning of the show. I'll do a sudo pvcreate.
  • 18:34 - 18:42
    I'm creating a physical volume. Yes. And that'll be /dev/sdd1. Alright? So that's going to bring it in, alright.
  • 18:42 - 18:45
    Now, that just makes it a physical volume. If it had a partition on it,
  • 18:45 - 18:48
    it would have formatted it and gotten it ready, but it didn't actually
  • 18:48 - 18:50
    connect it to the volume group. So now I
  • 18:50 - 18:53
    need to add it to the volume group. And for that,
  • 18:53 - 18:56
    it's actually a little bit different.
  • 18:56 - 18:58
    When I did it earlier, I was creating the
  • 18:58 - 18:59
    volume group, and you can add physical
  • 18:59 - 19:01
    volumes at the time. Well, now I've
  • 19:01 - 19:07
    already got a volume group in place, so I can't kind of use the same command from before.
  • 19:07 - 19:10
    I've already created it. So instead, I need to use a different command,
  • 19:10 - 19:15
    which is the vgextend command.
  • 19:15 - 19:18
    Alright? So vgextend says take the existing volume group and
  • 19:18 - 19:24
    add more to it. I do need to sudo this, which I've literally forgotten every single time.
  • 19:24 - 19:25
    Yep. [Laughs].
  • 19:25 - 19:27
    And so, I'm going to be extending vg1, and
  • 19:27 - 19:29
    then I need to tell it the disk that I'm
  • 19:29 - 19:34
    adding to it. I'm adding /dev/sdd1. And so when I run that, I'll see
  • 19:34 - 19:36
    "Volume group 1 successfully extended."
  • 19:36 - 19:41
    So what does that mean? Well, if we run PVS,
  • 19:41 - 19:43
    we'll see my physical volumes. Right?
  • 19:43 - 19:46
    And I can see sdd1 right here has been added.
  • 19:46 - 19:48
    Alright? Under free space, I see it's
  • 19:48 - 19:52
    completely free, versus the other ones that have had space used up.
  • 19:52 - 19:59
    If I do a VGS, then I'll see my volume groups.
  • 19:59 - 20:01
    And notice how volume group one
  • 20:01 - 20:04
    shows that it's actually 2.93 terabytes.
  • 20:04 - 20:06
    It's three terabytes, and that it's got one
  • 20:06 - 20:08
    and a half terabytes free. There's the
  • 20:08 - 20:10
    500 GB from the previous volumes that
  • 20:10 - 20:12
    I didn't use, and now there's a whole
  • 20:12 - 20:14
    extra terabyte that's been stuck onto it.
  • 20:14 - 20:17
    So it's expanded. Quite a bit.
  • 20:17 - 20:20
    But now that I've got that space, the volume
  • 20:20 - 20:22
    group has been updated. I need to upgrade
  • 20:22 - 20:25
    or update the logical volume. And for
  • 20:25 - 20:26
    that, I'm going to be extending out the
  • 20:26 - 20:30
    logical volume. Now, before I do that, let me just run LVS.
  • 20:30 - 20:32
    And so, looking at it here, I can see lv1
  • 20:32 - 20:34
    right now is one and a half terabytes.
  • 20:34 - 20:37
    So I'm going to run sudo
  • 20:37 - 20:41
    lvresize, and I'm going to resize that
  • 20:41 - 20:42
    partition. I want to grow it by one
  • 20:42 - 20:45
    terabyte. I'm going to add some more space to it.
  • 20:45 - 20:52
    So I'll come in and just say -l and then +1G.
  • 20:52 - 20:54
    So I'm adding one terabyte to it.
  • 20:54 - 20:57
    And then, I don't want to do one giga, I want to do one terabyte.
  • 20:57 - 20:58
    There we go. Something actually
  • 20:58 - 20:59
    is meaningful. Ah-ha.
  • 20:59 - 21:01
    I'm going to add a terabyte to it,
  • 21:01 - 21:07
    +1T, and then I'll specify this is /dev/vg1/lv1.
  • 21:07 - 21:08
    That's the logical volume that I want to expand, or
  • 21:08 - 21:10
    I could use the mapper, you know, whichever one I wanted.
  • 21:10 - 21:12
    Alright. And when I run that,
  • 21:12 - 21:14
    it's going to go and extend it.
  • 21:14 - 21:16
    And it tells me that it extended it from
  • 21:16 - 21:19
    1.46 terabytes to 2.46 terabytes.
  • 21:19 - 21:24
    It added that extra space to expand that out.
  • 21:24 - 21:26
    You might think you're done.
  • 21:26 - 21:27
    And, technically, as far as the LVM is
  • 21:27 - 21:30
    concerned, you are done. Right? If I do a
  • 21:30 - 21:33
    LVS and look at my logical volumes, it's
  • 21:33 - 21:35
    now two and a half terabytes. So great. We're done.
  • 21:35 - 21:38
    Except the file system won't recognize
  • 21:38 - 21:41
    that yet. If you do a df -h
  • 21:41 - 21:46
    and take a look at it, it still shows as
  • 21:46 - 21:50
    being a one and a half terabyte partition. And that's because I formatted
  • 21:50 - 21:53
    it with ext4. Right? And the ext4
  • 21:53 - 21:55
    partition that's on there is still one
  • 21:55 - 21:57
    and a half terabytes. It's got an extra
  • 21:57 - 22:01
    terabyte of free space on it, but it doesn't know that.
  • 22:01 - 22:03
    The LVM has expanded everything that it
  • 22:03 - 22:04
    can expand. Now it's up to your file
  • 22:04 - 22:09
    system. So if you're running XFS or
  • 22:09 - 22:11
    ext4 or whatever, you'll need to use that
  • 22:11 - 22:13
    file system's tooling to be able to
  • 22:13 - 22:15
    expand it. So this is where things
  • 22:15 - 22:17
    start to differentiate. I'm running ext4
  • 22:17 - 22:19
    on this one, so I can choose its tools.
  • 22:19 - 22:25
    With it, you have a utility called resize2fs.
  • 22:25 - 22:27
    With XFS, you have to use the xfs_growfs
  • 22:27 - 22:31
    command. Or, no. Actually, it's xfs_resize, I think, is the one for that.
  • 22:31 - 22:34
    Be careful with it. If you're running Red Hat,
  • 22:34 - 22:36
    Red Hat will tell you they do not
  • 22:36 - 22:39
    officially support resizing XFS partitions.
  • 22:39 - 22:42
    So, you can do it, but they don't support it because they tell you
  • 22:42 - 22:44
    you just need a backup, format, restore.
  • 22:44 - 22:46
    So that's kind of how they are.
  • 22:46 - 22:54
    But, with EXT, we can just use the resize2fs command, and I'll point that at /dev/vg1/lv1.
  • 22:54 - 22:57
    And if you don't provide any other options, this utility will just expand it
  • 22:57 - 23:02
    to fill all the available space. So when I run that, it sees there's more space.
  • 23:02 - 23:07
    It goes and acquires that. And if I take a look at my storage now,
  • 23:07 - 23:11
    that disk shows as being two and a half terabytes in size. And I did it
  • 23:11 - 23:14
    while it was online. I never unmounted it.
  • 23:14 - 23:15
    Right? It stayed mounted the whole time.
  • 23:15 - 23:17
    Users could have been in the system
  • 23:17 - 23:19
    writing and so on, and it just tacks it
  • 23:19 - 23:21
    on, adds that space, and we just grew it.
  • 23:21 - 23:23
    And that's really the big advantage of
  • 23:23 - 23:27
    the LVM: that we can grow our partitions
  • 23:27 - 23:28
    without actually having to kick our
  • 23:28 - 23:30
    users out, without having to reboot a
  • 23:30 - 23:31
    server. We can do it all dynamically
  • 23:31 - 23:33
    while people are in the system working--
  • 23:33 - 23:35
    you know, happy, shiny people holding
  • 23:35 - 23:37
    hands and all that stuff--and it's done.
  • 23:37 - 23:41
    If I do an lvs or lvdisplay, I can see
  • 23:41 - 23:42
    I've got that two and a half terabytes
  • 23:42 - 23:46
    is available there, and the file system sees it as well.
  • 23:46 - 23:50
    So we are now expanded and done. So after all that, I'm going to
  • 23:50 - 23:52
    ask: is it difficult to remove the LVM if
  • 23:52 - 23:54
    we no longer need it? You know, it's
  • 23:54 - 23:56
    not difficult to remove it.
  • 23:56 - 23:58
    If you're done with it--well, if you want
  • 23:58 - 23:59
    to move it to another computer. Right?
  • 23:59 - 24:01
    Maybe I've got this on one server. I want
  • 24:01 - 24:04
    to move it somewhere else. You can just unmount all this stuff
  • 24:04 - 24:05
    and then take it over to another
  • 24:05 - 24:10
    computer and reincorporate it. The pvscan utility is designed to find your physical volumes.
  • 24:10 - 24:11
    When it finds them all, it'll bring it
  • 24:11 - 24:13
    into the LVM, and it'll see the volume
  • 24:13 - 24:14
    group and the logical volumes are all
  • 24:14 - 24:15
    there. So it's kind of easy to
  • 24:15 - 24:17
    reincorporate somewhere else. But if I'm
  • 24:17 - 24:18
    actually done with it, I want to turn
  • 24:18 - 24:19
    these back into regular disks. Right?
  • 24:19 - 24:20
    Because right now, it's a bit of a mess.
  • 24:20 - 24:25
    If I do lsblk, you'll see all these different
  • 24:25 - 24:31
    kind of notes in here about what it created with the volume groups and the logical volumes and so on.
  • 24:31 - 24:33
    So if I want to just reset these back to becoming regular
  • 24:33 - 24:34
    disks, we can move through a couple of
  • 24:34 - 24:37
    steps. I need to unmount the folder
  • 24:37 - 24:41
    that it's tied to, which is /mnt/storage.
  • 24:41 - 24:42
    So I'm going to unmount it
  • 24:42 - 24:47
    using the umount command. So umount /mnt/storage.
  • 24:47 - 24:49
    And then we basically just go through and destroy everything
  • 24:49 - 24:52
    backwards. So we start at the top of the
  • 24:52 - 24:53
    diagram with the logical volumes.
  • 24:53 - 24:55
    We destroy that, then we destroy the volume
  • 24:55 - 24:56
    group, then we destroy the physical
  • 24:56 - 24:57
    volumes. And when you're done, now you've
  • 24:57 - 25:00
    got regular old disks available again.
  • 25:00 - 25:05
    So what that looks like is: we do sudo lvremove,
  • 25:05 - 25:10
    and I'll remove /dev/vg1/lv1.
  • 25:10 - 25:11
    So I'm going to remove that logical
  • 25:11 - 25:14
    volume, and I would remove each one.
  • 25:14 - 25:16
    If I had more than one--I just have the one--
  • 25:16 - 25:18
    that was lvremove. Then we do
  • 25:18 - 25:23
    vgremove to remove the volume group, and that's /dev/vg1 for me.
  • 25:23 - 25:27
    So we'll remove it. Mhmm. It's gone. If it has no logical
  • 25:27 - 25:28
    volumes, then you don't get a prompt to
  • 25:28 - 25:30
    confirm because there's no data at that
  • 25:30 - 25:32
    point, so it just removes. And then lastly,
  • 25:32 - 25:34
    we remove the physical volumes, which is
  • 25:34 - 25:35
    a little bit harder because we have to
  • 25:35 - 25:39
    type each one. So I'll do sudo pvremove,
  • 25:39 - 25:49
    and then I'm going to remove /dev/sdb1, /dev/sdc1, and /dev/sdd1. Alright?
  • 25:49 - 25:52
    Each one, removing them. And see how it
  • 25:52 - 25:53
    says "successfully wiped"?
  • 25:53 - 25:59
    It actually kills off that file system. And now if I do an lsblk,
  • 25:59 - 26:02
    I'll see where those guys are just three
  • 26:02 - 26:04
    regular old disks with regular old
  • 26:04 - 26:06
    partitions sitting on them, waiting for
  • 26:06 - 26:12
    me to format them and put them back in use as non-LVM disks. So, pretty easy to remove all this stuff.
  • 26:12 - 26:14
    Logical Volume Manager. Another wonderful
  • 26:14 - 26:16
    episode Don. Thank you very much.
  • 26:16 - 26:18
    And before we move on, what else would you
  • 26:18 - 26:20
    like to say? You know, most of the
  • 26:20 - 26:23
    distros that are out there turn LVM
  • 26:23 - 26:26
    on by default if you're doing a desktop install.
  • 26:26 - 26:28
    So you likely already have it.
  • 26:28 - 26:30
    On servers, it's usually not on by
  • 26:30 - 26:31
    default. They're just standard
  • 26:31 - 26:34
    assignments. And, honestly, if you're not
  • 26:34 - 26:36
    going to be expanding your disk storage,
  • 26:36 - 26:37
    then the LVM doesn't really bring you
  • 26:37 - 26:39
    any benefits. So, there's some
  • 26:39 - 26:41
    snapshotting features that are kind of
  • 26:41 - 26:42
    nice that we didn't really get into,
  • 26:42 - 26:44
    but you can actually do that stuff
  • 26:44 - 26:47
    without the LVM too. So when I do server
  • 26:47 - 26:49
    deployments, it is rare that I use the
  • 26:49 - 26:51
    LVM because there's just no real benefit
  • 26:51 - 26:53
    to it. So keep that in mind. Just because
  • 26:53 - 26:54
    the feature's there doesn't mean you
  • 26:54 - 26:56
    have to use it. On desktops, though, it is
  • 26:56 - 26:57
    kind of nice. If you've got a storage
  • 26:57 - 26:58
    disk and you're running out of space,
  • 26:58 - 27:00
    then you can add more. If you've got a
  • 27:00 - 27:03
    laptop, though, it's pretty hard to add extra
  • 27:03 - 27:04
    storage to a laptop. You're usually
  • 27:04 - 27:06
    replacing a disk, and the LVM doesn't
  • 27:06 - 27:09
    help with that. So do understand that it's not
  • 27:09 - 27:11
    always the right solution. Sometimes it's
  • 27:11 - 27:12
    perfectly fine to just go with regular
  • 27:12 - 27:14
    disks and, you know, create your partitions
  • 27:14 - 27:16
    on there. It can be a little easier to
  • 27:16 - 27:18
    manage sometimes too. Great advice. Thanks,
  • 27:18 - 27:19
    Don. And here's some more great advice: watch
  • 27:19 - 27:22
    every episode of CompTIA Linux+.
  • 27:22 - 27:23
    You're going to be very glad you did.
  • 27:23 - 27:25
    It's going to help you now and into the future.
  • 27:25 - 27:26
    And don't forget about the supplementary
  • 27:26 - 27:28
    information in our course library that
  • 27:28 - 27:30
    will do only one thing: help you be more
  • 27:30 - 27:32
    successful. So check that out too.
  • 27:32 - 27:33
    And tell everybody you know about ITPRO.TV.
  • 27:33 - 27:35
    ITPRO.TV is binge-worthy. Thanks for
  • 27:35 - 27:37
    watching. I'm Zach Memos. And I'm Don
  • 27:37 - 27:40
    Pezet. We will see you again soon.
  • 27:40 - 27:45
    [Music].
  • 27:45 - 27:50
    Thank you for watching ITPRO.TV.
  • 27:52 - 27:56
    Welcome to ITPRO.TV. I'm your host, Don Pezet. [Crosstalk].
  • 27:56 - 27:59
    Live from San Francisco’s home country.
  • 28:00 - 28:04
    You're watching ITPRO.TV.
  • 28:04 - 28:06
    Hello, hello, and thank you for watching ITPRO.TV,
  • 28:06 - 28:08
    helping you level up with IT learning
  • 28:08 - 28:10
    everywhere you go. I'm your host, Zach
  • 28:10 - 28:15
    Memos, for this episode of CompTIA Linux+. File System Hierarchy
  • 28:15 - 28:17
    Standard is the name of this episode.
  • 28:17 - 28:19
    And once again, Don Pezet is here to show us
  • 28:19 - 28:20
    the way. Don, good to see you. Nice to work
  • 28:20 - 28:22
    with you again. Yep. Glad to be here.
  • 28:22 - 28:23
    And, you know, we're going to tackle a pretty
  • 28:23 - 28:25
    neat topic here, which is that File
  • 28:25 - 28:27
    System Hierarchy Standard. Many of you,
  • 28:27 - 28:28
    as you learn Linux, have probably
  • 28:28 - 28:30
    experienced where you browse to the hard
  • 28:30 - 28:31
    drive and you see all these crazy
  • 28:31 - 28:33
    folders--folders that oftentimes just
  • 28:33 - 28:35
    have the three-letter names that don't make
  • 28:35 - 28:37
    a whole lot of sense--and
  • 28:37 - 28:39
    that's a pretty big obstacle to
  • 28:39 - 28:40
    getting in and learning a new operating
  • 28:40 - 28:42
    system. So what we're going to do right
  • 28:42 - 28:44
    here is we're going to take a look at
  • 28:44 - 28:46
    the File System Hierarchy Standard and
  • 28:46 - 28:48
    see what exactly are those folders, what
  • 28:48 - 28:50
    do they do, what is their purpose, how are
  • 28:50 - 28:51
    they arranged, how it varies from distro
  • 28:51 - 28:53
    to distro, and get a little bit more
  • 28:53 - 28:55
    familiarity with that file system.
  • 28:55 - 28:58
    If you're coming from something like Windows,
  • 28:58 - 28:59
    well, you just have a couple of folders
  • 28:59 - 29:01
    that it uses. Inside of Linux, though,
  • 29:01 - 29:03
    there's actually a lot of different
  • 29:03 - 29:05
    folders, and we need to be familiar with them.
  • 29:05 - 29:07
    It'll help you better use the system, but
  • 29:07 - 29:08
    it will also help you with
  • 29:08 - 29:10
    troubleshooting and locating
  • 29:10 - 29:12
    configuration. So definitely a good skill
  • 29:12 - 29:13
    to have, and that's what we're going to
  • 29:13 - 29:14
    be learning about right here in this
  • 29:14 - 29:17
    episode. So, Don, who created the FHS?
  • 29:17 - 29:19
    Alright. So the FHS has actually
  • 29:19 - 29:21
    been around a long time, right? And that's
  • 29:21 - 29:24
    easier to say than "File System Hierarchy Standard," I guess--
  • 29:24 - 29:27
    which, oddly enough, is "file system." Say that:
  • 29:27 - 29:29
    file system is actually two words. Right?
  • 29:29 - 29:31
    File and system. Yeah. But in the standard,
  • 29:31 - 29:33
    they decided to combine them, which is
  • 29:33 - 29:35
    not dictionary correct, but they did.
  • 29:35 - 29:37
    So it is the FHS. And, basically, what
  • 29:37 - 29:39
    happened is--remember that a lot of the
  • 29:39 - 29:41
    Linux stuff that we work with came from
  • 29:41 - 29:46
    the UNIX world. So, back in the 1970s at AT&T Bell Labs, they created the UNIX
  • 29:46 - 29:49
    operating system, and they had to use a
  • 29:49 - 29:51
    file system to identify practically
  • 29:51 - 29:52
    everything. Even hardware was represented
  • 29:52 - 29:54
    as files. Well, it was just a couple of
  • 29:54 - 29:56
    guys, and they were making this stuff up
  • 29:56 - 30:00
    as they went. Fast forward to today, where you've got
  • 30:00 - 30:05
    Linux and FreeBSD and OpenBSD and all these different
  • 30:05 - 30:07
    platforms that are all reliant on that
  • 30:07 - 30:09
    same file system structure. How are you
  • 30:09 - 30:11
    supposed to create applications that are
  • 30:11 - 30:12
    compatible from one distro to another if
  • 30:12 - 30:15
    you don't even know where the files are supposed to go?
  • 30:15 - 30:18
    So they teamed up at one point--this was
  • 30:18 - 30:21
    decades ago now--and came up with a
  • 30:21 - 30:24
    standard that said, "Here are the folders
  • 30:24 - 30:26
    that are the locations that we expect
  • 30:26 - 30:28
    things to be in, in order for your system
  • 30:28 - 30:31
    to work." And by making consistency, that
  • 30:31 - 30:33
    helps with compatibility. You know, with
  • 30:33 - 30:36
    Linux, anybody can go out there. So you,
  • 30:36 - 30:38
    right now, if you want, could go and
  • 30:38 - 30:41
    take the Linux kernel source code and
  • 30:41 - 30:44
    grab some GNU utilities or any other
  • 30:44 - 30:45
    number of utilities that are out there
  • 30:45 - 30:46
    and package them together and create
  • 30:46 - 30:48
    your own distro. And you can map the file
  • 30:48 - 30:50
    system however you want. You can create
  • 30:50 - 30:51
    files with whatever name you want,
  • 30:51 - 30:53
    folders with whatever name you want, put
  • 30:53 - 30:54
    configurations wherever you want.
  • 30:54 - 30:57
    You have that flexibility. It's free, right?
  • 30:57 - 31:01
    But if you're expecting party applications to run,
  • 31:01 - 31:04
    they're expecting to see certain folders.
  • 31:04 - 31:07
    And that's where we end up where we
  • 31:07 - 31:08
    are today--where we have a standard.
  • 31:08 - 31:09
    And the standard was put together--I kind of
  • 31:09 - 31:10
    got off tangent--so going back to your
  • 31:10 - 31:12
    question, who created this thing?
  • 31:12 - 31:14
    It actually came from the Linux Foundation.
  • 31:14 - 31:16
    And we've talked briefly about the Linux
  • 31:16 - 31:19
    Foundation. I think I've got their web page pulled up here.
  • 31:19 - 31:21
    Whoops. The Linux Foundation is the
  • 31:21 - 31:24
    organization that is--or was--headed up by
  • 31:24 - 31:26
    Linus Torvalds himself. So, you know,
  • 31:26 - 31:27
    obviously, the creator of the Linux
  • 31:27 - 31:30
    kernel is going to be involved here.
  • 31:30 - 31:33
    But it's actually got members from a number
  • 31:33 - 31:35
    of organizations. Companies like Red Hat
  • 31:35 - 31:37
    and Canonical are a part of it.
  • 31:37 - 31:39
    The individuals that create projects
  • 31:39 - 31:40
    like Slackware and other things--they're
  • 31:40 - 31:43
    all a part of it. And so it was a group
  • 31:43 - 31:46
    effort amongst all the major distros at
  • 31:46 - 31:48
    the time to come up with this standard.
  • 31:48 - 31:49
    And it's not like they were really
  • 31:49 - 31:50
    inventing the standard--most of it just
  • 31:50 - 31:52
    came from UNIX--and everybody just agreed,
  • 31:52 - 31:54
    "Hey, from now on, we're going to follow
  • 31:54 - 31:58
    this standard." So when I log into a Red
  • 31:58 - 32:01
    Hat Enterprise Linux box, I can expect
  • 32:01 - 32:03
    /etc to be there, and I can expect
  • 32:03 - 32:05
    configuration files to be in that folder.
  • 32:05 - 32:07
    And then when I go to an Ubuntu box,
  • 32:07 - 32:09
    I can expect /etc to be there and
  • 32:09 - 32:11
    configuration files to be there. And even
  • 32:11 - 32:13
    if I jump outside of Linux and go to a
  • 32:13 - 32:16
    BSD system, I can still expect /etc
  • 32:16 - 32:17
    to be there and that it's going to have
  • 32:17 - 32:19
    configuration files--because that's what
  • 32:19 - 32:22
    was agreed upon. So, the Linux Foundation--
  • 32:22 - 32:25
    they're the ones who put this all together.
  • 32:25 - 32:27
    Almost everybody adheres to it, so it
  • 32:27 - 32:29
    works out pretty well. But it does
  • 32:29 - 32:31
    really kind of come from Linus Torvalds
  • 32:31 - 32:33
    himself as part of his leadership in
  • 32:33 - 32:35
    the Linux Foundation. Well, Don, where can
  • 32:35 - 32:37
    we view the official standard? So they
  • 32:37 - 32:39
    do publish the standard. It's online in
  • 32:39 - 32:42
    what is a spectacularly old web page.
  • 32:42 - 32:44
    This is it right here.
  • 32:44 - 32:47
    So--it does look a bit old. If you want to
  • 32:47 - 32:48
    look at it, I'll put the link in the show
  • 32:48 - 32:52
    notes, but it's pathname.com.
  • 32:52 - 32:56
    Pathname.com. pathname.com/fhs
  • 32:56 - 32:57
    That'll take you right here to this
  • 32:57 - 33:01
    amazing web page, which is pretty neat.
  • 33:01 - 33:03
    What's really neat about it is how
  • 33:03 - 33:05
    static it's been. It hasn't changed much.
  • 33:05 - 33:07
    I can see right here, the current version is
  • 33:07 - 33:11
    2.3, which was announced January 29, 2004--
  • 33:11 - 33:12
    which means, as of the filming of
  • 33:12 - 33:15
    this episode, that was 15 years ago.
  • 33:15 - 33:18
    There has not been a change to the FHS in 15
  • 33:18 - 33:20
    years. That's a long time. And right on
  • 33:20 - 33:22
    here, you can actually come through and
  • 33:22 - 33:25
    view the standard. They have it in
  • 33:25 - 33:28
    PDF, raw text, and also HTML, which is
  • 33:28 - 33:30
    probably the easiest. And if you browse
  • 33:30 - 33:33
    into that, you'll see the actual standard
  • 33:33 - 33:35
    laid out right here. And they're
  • 33:35 - 33:37
    basically defining all the different
  • 33:37 - 33:40
    folders, defining which ones are required,
  • 33:40 - 33:43
    which ones are optional, and what role
  • 33:43 - 33:45
    that folder is supposed to serve. What is
  • 33:45 - 33:46
    it supposed to do? And you can kind of
  • 33:46 - 33:49
    see that here, like /dev is supposed
  • 33:49 - 33:51
    to contain device files, or /etc is
  • 33:51 - 33:53
    supposed to have host-specific system
  • 33:53 - 33:57
    configuration. And if you drill into it a little more deeply,
  • 33:57 - 34:00
    we can come in and find specific options
  • 34:00 - 34:02
    about it--variations, types of files that
  • 34:02 - 34:04
    might be expected to be found in there.
  • 34:04 - 34:05
    In earlier episodes, we've seen files
  • 34:05 - 34:08
    like the passwd file. So right here, it's
  • 34:08 - 34:11
    defined. The FHS doesn't just define
  • 34:11 - 34:13
    folders. It also defines individual files
  • 34:13 - 34:15
    that are inside of it. And so if you've
  • 34:15 - 34:16
    ever found yourself, like, scratching your
  • 34:16 - 34:22
    head: why is the passwd file--why is it the same everywhere?
  • 34:22 - 34:23
    It's because it's right here. It's part
  • 34:23 - 34:25
    of the standard. Everybody adheres to
  • 34:25 - 34:26
    that, and you can kind of browse
  • 34:26 - 34:28
    through and see. It's all freely posted
  • 34:28 - 34:29
    right there online. Do all Linux
  • 34:29 - 34:32
    distributions adhere to the FHS? You know,
  • 34:32 - 34:33
    I'm going to say that right eventually.
  • 34:33 - 34:37
    The FHS. Thank you. They should,
  • 34:37 - 34:38
    but--as is the case with most
  • 34:38 - 34:41
    technologies--they don't all do it.
  • 34:42 - 34:43
    Most vendors are actually really good
  • 34:43 - 34:45
    about it. So I mentioned Ubuntu, or
  • 34:45 - 34:47
    Canonical, and Red Hat. Those are kind of
  • 34:47 - 34:48
    the two biggest commercial players in
  • 34:48 - 34:50
    the Linux world. They adhere to it
  • 34:50 - 34:52
    pretty well, but they both deviate a
  • 34:52 - 34:55
    little. In fact, I'm not sure I could
  • 34:55 - 34:57
    name a Linux distro that completely
  • 34:57 - 35:00
    conforms to the standard because there's
  • 35:00 - 35:01
    some weird stuff in the
  • 35:01 - 35:05
    standard that maybe was relevant back in 2004
  • 35:05 - 35:08
    and today is not so relevant--
  • 35:08 - 35:10
    especially when it comes to security,
  • 35:10 - 35:11
    there are some things that have changed,
  • 35:11 - 35:12
    and then the way that we need to
  • 35:12 - 35:16
    lay things out. So, when I talk about variations,
  • 35:16 - 35:17
    let me give you an example. I don't know
  • 35:17 - 35:18
    if I can find this real quick in the
  • 35:18 - 35:24
    standard, but there's a folder /sbin, and here, they define it
  • 35:24 - 35:26
    right here--for system binaries. Okay?
  • 35:26 - 35:29
    So the /sbin folder, it's got--well--
  • 35:29 - 35:31
    system binaries. Great. Mhmm. Well, we also have a
  • 35:31 - 35:38
    /usr/sbin, right, which is under /usr. So here we've got the
  • 35:38 - 35:40
    /usr hierarchy under section 4,
  • 35:40 - 35:43
    and you can find /usr/sbin in
  • 35:43 - 35:46
    the list there. Nonessential
  • 35:46 - 35:48
    standard system libraries. So both
  • 35:48 - 35:51
    folders have system libraries, but one
  • 35:51 - 35:55
    folder is for essential stuff, and one is nonessential.
  • 35:55 - 35:58
    Well, why do we need to separate those out?
  • 35:58 - 36:00
    Now, in the old days, there was a case where
  • 36:00 - 36:02
    hard drive space was at a premium.
  • 36:02 - 36:04
    Maybe you're allocating out partition spaces
  • 36:04 - 36:06
    to say, "I've got this much space for
  • 36:06 - 36:10
    /sbin and this much more space for /usr/sbin," or whatever. There was a use
  • 36:10 - 36:13
    case for that. But today, storage is cheap.
  • 36:13 - 36:16
    You know, we don't necessarily need separate
  • 36:16 - 36:18
    partitions. And so, a lot of distros have
  • 36:18 - 36:20
    started combining those. And, you know, I'm
  • 36:20 - 36:22
    on a CentOS system. Let me show you here.
  • 36:22 - 36:24
    This would be the same--I believe
  • 36:24 - 36:26
    Ubuntu is doing the same today--so it
  • 36:26 - 36:28
    should be the same on either one. But if
  • 36:28 - 36:34
    I navigate in my CentOS box, I can go to cd /sbin, right?
  • 36:34 - 36:36
    And I can take a look inside of
  • 36:36 - 36:38
    there, and I see a bunch of
  • 36:38 - 36:40
    executables. Right? So here are these
  • 36:40 - 36:44
    system binaries and libraries. So there it is.
  • 36:44 - 36:47
    And then I can go into /usr/sbin,
  • 36:47 - 36:52
    and I can take a look, and I see a bunch of files and binaries.
  • 36:52 - 36:53
    If you're a sharp observer, you might
  • 36:53 - 36:55
    notice that they're the same. Right?
  • 36:55 - 36:58
    I'm seeing the same files in both folders, and
  • 36:58 - 37:03
    that's because /usr/sbin is a real folder.
  • 37:03 - 37:05
    If I pull up the full listing here, see
  • 37:05 - 37:07
    how I've got sbin, and it's flagged as a
  • 37:07 - 37:10
    directory right there? It's a real folder.
  • 37:10 - 37:17
    But if I take a look at /sbin, it's a link. It's a symlink.
  • 37:17 - 37:20
    So what happened is the CentOS team--really Red
  • 37:20 - 37:23
    Hat and the RHEL team--they made the
  • 37:23 - 37:24
    decision that there really wasn't a need
  • 37:24 - 37:26
    to separate these out. It just creates
  • 37:26 - 37:28
    confusion. So they combined everything
  • 37:28 - 37:32
    into /usr/sbin, and then they just symlinked /sbin.
  • 37:32 - 37:35
    And that's important to note. They symlinked it. They said it is
  • 37:35 - 37:38
    still important to have /sbin
  • 37:38 - 37:40
    because many applications expect that,
  • 37:40 - 37:42
    but we're not going to maintain separate
  • 37:42 - 37:43
    files anymore. We're going to go ahead
  • 37:43 - 37:44
    and combine it. And you'll see that.
  • 37:44 - 37:47
    Like, up here, I've got /bin--same kind of thing--
  • 37:47 - 37:52
    /lib, /lib64, where if a vendor decides to deviate
  • 37:52 - 37:56
    from the standard, they normally put symlinks in place so that they still
  • 37:56 - 37:58
    technically conform to the standard even
  • 37:58 - 37:59
    though the files are in a different
  • 37:59 - 38:02
    location. So if you learn the standard,
  • 38:02 - 38:03
    you'll be pretty safe. You know, if I'm
  • 38:03 - 38:09
    navigating my file system and I go to /sbin, not /usr/sbin, thanks to that
  • 38:09 - 38:11
    symlink, I still find everything that I
  • 38:11 - 38:13
    want. I can still use the system the way
  • 38:13 - 38:16
    that I expect. So it's pretty rare that
  • 38:16 - 38:18
    somebody will deviate from the standard
  • 38:18 - 38:20
    and not put symlinks in place to
  • 38:20 - 38:22
    preserve that compatibility. It's pretty
  • 38:22 - 38:23
    rare for somebody to step in and say, "I
  • 38:23 - 38:26
    don't care about compatibility." And that
  • 38:26 - 38:28
    usually only happens on really,
  • 38:28 - 38:30
    really specialized distributions--things
  • 38:30 - 38:32
    like pfSense. Right? That’s--well, take
  • 38:32 - 38:35
    BSD, not Linux. But anyhow, it's
  • 38:35 - 38:37
    specialized for firewalls, and they say,
  • 38:37 - 38:38
    "We don't need compatibility. You're not
  • 38:38 - 38:39
    loading other applications." It's just
  • 38:39 - 38:42
    going to run what we've put on there. And so,
  • 38:42 - 38:43
    those are scenarios where they might
  • 38:43 - 38:45
    deviate, but most people do conform to
  • 38:45 - 38:47
    the standard. Well, Don, where would we
  • 38:47 - 38:49
    normally find applications?
  • 38:49 - 38:50
    Alright. So our applications that we
  • 38:50 - 38:52
    run, right? I just actually showed two
  • 38:52 - 38:57
    examples right there: /sbin or sorry /usr/sbin.
  • 38:57 - 38:59
    But applications can actually come from a
  • 38:59 - 39:05
    number of places. There's really, I'd say, five locations by default, but
  • 39:05 - 39:07
    you can put an application wherever you
  • 39:07 - 39:08
    want. And when you install an application,
  • 39:08 - 39:10
    it can go anywhere. It can end up all
  • 39:10 - 39:11
    over the place. That makes it hard to
  • 39:11 - 39:13
    find. And that's why, in an earlier episode, we
  • 39:13 - 39:14
    learned about some commands to be able
  • 39:14 - 39:17
    to locate applications. But, for example,
  • 39:17 - 39:21
    if I go into my root folder here,
  • 39:21 - 39:22
    there are a couple of folders that are
  • 39:22 - 39:25
    really designed to be able to store
  • 39:25 - 39:27
    those applications. And--let
  • 39:27 - 39:29
    me zoom in a little bit here--
  • 39:29 - 39:32
    alright, one is /bin, right?
  • 39:32 - 39:33
    /bin--bin is short for
  • 39:33 - 39:35
    binaries. Right? And applications are
  • 39:35 - 39:36
    typically binary files that we flag as
  • 39:36 - 39:39
    executable, and they can run. So /bin
  • 39:39 - 39:40
    seems like a really great place for
  • 39:40 - 39:44
    those to be. Yeah. And then there's the user variant of it, which is
  • 39:44 - 39:52
    /usr/bin. Same thing for /sbin and /usr/sbin. So those are a couple places.
  • 39:52 - 39:57
    But these folders--these aren't where, like, if I install OpenOffice, OpenOffice
  • 39:57 - 40:01
    isn't going into /sbin, or at least not normally.
  • 40:01 - 40:04
    So applications that I install--
  • 40:04 - 40:06
    those are considered optional
  • 40:06 - 40:07
    applications, and they will normally go
  • 40:07 - 40:11
    into /opt—the OPT right there.
  • 40:11 - 40:19
    So that's kind of that place: /bin, /sbin, /usr/bin, /usr/sbin, and /opt. Now, when
  • 40:19 - 40:21
    you install an application, there are
  • 40:21 - 40:23
    actually a number of vendors that will
  • 40:23 - 40:26
    maybe not put it in /opt, let you
  • 40:26 - 40:27
    pick somewhere--maybe it runs from your
  • 40:27 - 40:30
    home folder. And they may actually create
  • 40:30 - 40:34
    links to their application inside of /usr/sbin or somewhere, and that
  • 40:34 - 40:36
    creates that uncertainty of like,
  • 40:36 - 40:37
    "Where the heck is this app? How am I
  • 40:37 - 40:39
    going to find it?" But let me run over
  • 40:39 - 40:40
    the official standard and what these
  • 40:40 - 40:45
    folders are for. Right? The one is /bin. This one is what's
  • 40:45 - 40:48
    considered essential command-line
  • 40:48 - 40:50
    utilities that are available to all
  • 40:50 - 40:53
    users. Alright? So this is stuff that
  • 40:53 - 40:55
    is really considered essential for the
  • 40:55 - 40:57
    system to work. And if you were to browse
  • 40:57 - 40:58
    around on a system where these were
  • 40:58 - 41:00
    separated and poke around in there, it's
  • 41:00 - 41:04
    going to be things like, system CTL, we'll actually that'd be an
  • 41:04 - 41:08
    administrative commanded that'd be an sbin, so there's a little variation.
  • 41:08 - 41:09
    But commands that are critical
  • 41:09 - 41:10
    just to the regular operation--things like
  • 41:10 - 41:12
    mount, right? In order to mount a file
  • 41:12 - 41:14
    system, I need the mount command, so it
  • 41:14 - 41:19
    would need to be in /bin. /sbin, on the other hand, that
  • 41:19 - 41:21
    stands for system binaries, and system
  • 41:21 - 41:24
    binaries are required for the system to
  • 41:24 - 41:26
    boot up. If it's missing a particular
  • 41:26 - 41:29
    binary, it can't even boot anymore.
  • 41:29 - 41:31
    When the Linux kernel runs, it then needs to
  • 41:31 - 41:34
    fire up the operating system. It needs to perform operations, and
  • 41:34 - 41:37
    it needs a certain set of commands.
  • 41:37 - 41:40
    Those are going to be found inside of /sbin.
  • 41:40 - 41:44
    Then you've got the user one, /usr/bin.
  • 41:44 - 41:46
    That one is going to have the--the--the rest
  • 41:46 - 41:48
    of our user commands. User commands that
  • 41:48 - 41:50
    aren't considered essential--we don't have to
  • 41:50 - 41:51
    have them, but they're nice to
  • 41:51 - 41:58
    have. So they end up in /usr/bin. And then /usr/sbin, those are
  • 41:58 - 42:00
    nonessential system binaries. So they're
  • 42:00 - 42:03
    ones for the system to use--for the kernel to use, really--
  • 42:03 - 42:04
    but they're not essential. The system
  • 42:04 - 42:07
    would boot up if those were all missing.
  • 42:07 - 42:10
    Now, those four right there really all
  • 42:10 - 42:13
    pertain to system commands, not
  • 42:13 - 42:15
    applications. And that's where we have
  • 42:15 - 42:18
    /opt. That's where we're going to find things like
  • 42:18 - 42:20
    OpenOffice or whatever if we installed it.
  • 42:20 - 42:22
    In fact, here--let’s take a look at mine.
  • 42:22 - 42:24
    So on my system, I know it's symlinked.
  • 42:24 - 42:27
    So if I go to /bin, I'm actually seeing
  • 42:27 - 42:30
    /usr/bin. They're really the combination of the two.
  • 42:30 - 42:33
    And if we look around inside of there,
  • 42:33 - 42:34
    we're going to find things like the zip
  • 42:34 - 42:36
    utility. If I want to create an archive,
  • 42:36 - 42:43
    right? Or I'll probably find gzip in here as well. There's yum to be able to do
  • 42:43 - 42:46
    package updates and operating system updates.
  • 42:46 - 42:48
    I don't know--there's a ton of junk in
  • 42:48 - 42:50
    here. The cat utility and things.
  • 42:50 - 42:51
    And these are all--these are all really
  • 42:51 - 42:53
    useful utilities, ones we use all the
  • 42:53 - 42:55
    time. Right? But they're not essential. I--I
  • 42:55 - 42:57
    don't--I don't have to have them in order
  • 42:57 - 42:58
    for the system to boot. But I might have
  • 42:58 - 43:00
    to have them in order to perform some
  • 43:00 - 43:02
    kind of operation. Right? But it's not
  • 43:02 - 43:03
    like the system depends on them to boot.
  • 43:03 - 43:06
    If I look inside of /sbin, on the
  • 43:06 - 43:08
    other hand, I'm going to see a bunch of
  • 43:08 - 43:09
    things in here that deal with, like,
  • 43:09 - 43:11
    interacting with the file system. Right?
  • 43:11 - 43:17
    Things like fdisk, and so on. We'll see
  • 43:17 - 43:19
    other utilities in here, like for
  • 43:19 - 43:21
    interacting with the CPU, for the printing
  • 43:21 - 43:23
    subsystem, and so on. This is stuff that
  • 43:23 - 43:25
    users aren't normally going to run.
  • 43:25 - 43:26
    Sometimes we might, though. If you watched
  • 43:26 - 43:28
    our storage episodes, we used all these
  • 43:28 - 43:30
    logical volume commands when we were
  • 43:30 - 43:31
    working with the Logical Volume Manager, or
  • 43:31 - 43:33
    LVM. Well, if you look--see how they're all
  • 43:33 - 43:35
    glowing blue? Mhmm. They're not actually here
  • 43:35 - 43:37
    in this folder. They're linked from
  • 43:37 - 43:44
    somewhere else. If I do a -l on that, I can see that--well, actually, most of
  • 43:44 - 43:45
    these are just aliases, aren't they?
  • 43:45 - 43:47
    So they're all just linked to the lvm
  • 43:47 - 43:48
    command, which actually is right here in
  • 43:48 - 43:50
    this folder--so not--not somewhere else.
  • 43:50 - 43:51
    So some of these aren't even really
  • 43:51 - 43:53
    commands. They're just aliases or
  • 43:53 - 43:55
    shortcuts. The mkfs commands are like
  • 43:55 - 43:59
    that. If we pull up all of those--
  • 43:59 - 44:00
    well, they actually do show up as
  • 44:00 - 44:03
    binaries: mkfs.ext2, and so on. But some of
  • 44:03 - 44:05
    them, like these guys right here, are just
  • 44:05 - 44:07
    aliases off of a base command. So you'll
  • 44:07 - 44:11
    see variations there. If I look in /opt--actually, I don't think I've
  • 44:11 - 44:13
    installed anything on this system.
  • 44:13 - 44:14
    Looks like it has some kind of Red Hat
  • 44:14 - 44:16
    binaries in here. Whoops.
  • 44:16 - 44:18
    And, actually, I don't. Yeah. That's an
  • 44:18 - 44:20
    empty--empty little world right here.
  • 44:20 - 44:22
    I haven't installed any applications on
  • 44:22 - 44:23
    this system because we, you know, just
  • 44:23 - 44:25
    installed it for the show. But if I start
  • 44:25 - 44:27
    installing things like OpenOffice and
  • 44:27 - 44:29
    Firefox and so on--if they come from
  • 44:29 - 44:31
    system packages--then they may actually
  • 44:31 - 44:33
    end up in the main binary folders. But if
  • 44:33 - 44:34
    I'm installing them from a third-party
  • 44:34 - 44:36
    site, then they'll typically end up right
  • 44:36 - 44:39
    here inside of /opt. That's that
  • 44:39 - 44:41
    optional software. And I've noticed over
  • 44:41 - 44:43
    the years that Linux distributions are the
  • 44:43 - 44:45
    worst about using this folder.
  • 44:45 - 44:47
    BSD systems are usually the best about
  • 44:47 - 44:49
    always using it, pushing all sorts of things
  • 44:49 - 44:52
    in there. So you'll--you'll see variations there.
  • 44:52 - 44:53
    But I guess I've just done a really long
  • 44:53 - 44:55
    answer to your short question: "Zach,
  • 44:55 - 44:56
    where are apps?" Those are kind of the
  • 44:56 - 44:58
    five main places where you're going to
  • 44:58 - 45:00
    find the application files. "What are some
  • 45:00 - 45:01
    of the other key folders we need to be
  • 45:01 - 45:03
    familiar with, Don?" Alright. There are a
  • 45:03 - 45:06
    lot of other folders in here, and kind
  • 45:06 - 45:08
    of looking at--actually, you know what? Let me--
  • 45:08 - 45:10
    I'm going to use the GUI. I'm going to cheat.
  • 45:10 - 45:13
    I don't normally use the GUI, for whatever reason, but let me just
  • 45:13 - 45:16
    browse into the file system here. Here we go.
  • 45:16 - 45:18
    Alright. So, taking a look at these
  • 45:18 - 45:20
    folders--when you browse in your file
  • 45:20 - 45:22
    system, there's a lot of crazy folders in
  • 45:22 - 45:26
    here, some that are super mega insane important. Right?
  • 45:26 - 45:27
    And then there's some that you don't really
  • 45:27 - 45:30
    care about. Right? And if you don't know
  • 45:30 - 45:31
    them--if you're not familiar with them--
  • 45:31 - 45:32
    then they don't make a whole lot of
  • 45:32 - 45:33
    sense. So let's just kind of run through
  • 45:33 - 45:34
    some of the critical ones.
  • 45:34 - 45:41
    If you read the FHS standard, there's actually something like 50 folders that are defined.
  • 45:41 - 45:42
    You don't need to know them all
  • 45:42 - 45:43
    for the exam. You don't even need to know
  • 45:43 - 45:44
    them all for real life. There's really
  • 45:44 - 45:46
    just a handful that we deal with on a
  • 45:46 - 45:48
    regular basis. Probably the most
  • 45:48 - 45:50
    important one is this guy right here:
  • 45:50 - 45:53
    /boot. Mhmm. Right? The /boot folder--it's almost
  • 45:53 - 45:55
    always a separate partition, and so this
  • 45:55 - 45:57
    is more of a mount point than a folder.
  • 45:57 - 46:00
    And that's because it contains the Linux kernel
  • 46:00 - 46:02
    and other files that are basically fired
  • 46:02 - 46:04
    up when your system boots up.
  • 46:04 - 46:06
    In the very beginning, this folder gets
  • 46:06 - 46:08
    called. If you're doing disk encryption,
  • 46:08 - 46:10
    you can't encrypt the /boot folder
  • 46:10 - 46:10
    because otherwise, you wouldn't be able
  • 46:10 - 46:12
    to read your boot files. So this will be
  • 46:12 - 46:15
    a separate partition that's unencrypted.
  • 46:15 - 46:16
    It could be combined on a single
  • 46:16 - 46:18
    partition, but it, you know, causes
  • 46:18 - 46:20
    problems with things like LUKS
  • 46:20 - 46:22
    disk encryption. So that's the /boot
  • 46:22 - 46:24
    folder. And if you ever browse into it,
  • 46:24 - 46:25
    you'll see things in there--basic
  • 46:25 - 46:32
    configuration files. You'll see some stuff about vmlinuz. That's the actual kernel file right there.
  • 46:32 - 46:35
    That's the thing that gets run. And I've got GRUB--that's my
  • 46:35 - 46:36
    bootloader that helps it find the
  • 46:36 - 46:38
    partitions of the operating system.
  • 46:38 - 46:41
    EFI, that's my--my--my UEFI BIOS so that
  • 46:41 - 46:43
    it's able to locate and boot the
  • 46:43 - 46:45
    operating system. So all--all really critical
  • 46:45 - 46:47
    stuff, and that's found in /boot.
  • 46:47 - 46:52
    Now, you rarely mess with what's in /boot. In fact, on a lot of distros,
  • 46:52 - 46:54
    this will be mounted read-only because you
  • 46:54 - 46:56
    don't want somebody messing with the
  • 46:56 - 46:59
    kernel on the disk, and so it's kind of
  • 46:59 - 47:01
    flagged that way. It depends--yours may
  • 47:01 - 47:02
    or may not be flagged read-only. And you can
  • 47:02 - 47:04
    always mount it read-write, and that's
  • 47:04 - 47:05
    what happens when you do an update or
  • 47:05 - 47:07
    you need to change your bootloader,
  • 47:07 - 47:08
    it'll have to get mounted that way.
  • 47:08 - 47:10
    There's /dev, which is short for
  • 47:10 - 47:14
    "device," and this is where all of our device definitions go.
  • 47:14 - 47:17
    In Linux, every piece of hardware is
  • 47:17 - 47:19
    represented as a file. And if you watched
  • 47:19 - 47:20
    our storage episodes, we saw that with
  • 47:20 - 47:22
    hard drives. All of our hard drives were
  • 47:22 - 47:31
    /dev/sda1 or /dev/--you know--mapper/, or /dev/whatever.
  • 47:31 - 47:33
    It doesn't just stop with hard drives.
  • 47:33 - 47:35
    You'll see that with your console, your
  • 47:35 - 47:39
    displays, your video card, printers--all
  • 47:39 - 47:41
    sorts of things will show up in here as
  • 47:41 - 47:43
    a device file. So that's kind of what I'm
  • 47:43 - 47:47
    looking at here on this screen: that big list of files
  • 47:47 - 47:50
    for all these different devices. And if
  • 47:50 - 47:52
    it's not in here, then that means your
  • 47:52 - 47:54
    system doesn't know about that piece of
  • 47:54 - 47:55
    hardware. You're probably missing a
  • 47:55 - 47:57
    driver or something else that's critical
  • 47:57 - 47:58
    to make that work. So kind of an
  • 47:58 - 47:59
    important folder when it comes to
  • 47:59 - 48:01
    troubleshooting hardware.
  • 48:01 - 48:02
    Also an important folder if you're
  • 48:02 - 48:05
    trying to mount a partition--
  • 48:05 - 48:08
    you'll find the name right inside of here.
  • 48:08 - 48:11
    Alright. Let me go back up.
  • 48:11 - 48:14
    Let’s see. That was /dev/etc.
  • 48:14 - 48:16
    That was super important, right? This is
  • 48:16 - 48:18
    where our system’s configuration files
  • 48:18 - 48:20
    will go, and we’ve gone into this folder
  • 48:20 - 48:21
    in a number of episodes already, and
  • 48:21 - 48:23
    we’ll continue to go into it in some
  • 48:23 - 48:25
    others ones. But basically,
  • 48:25 - 48:27
    when you fire up a service or an
  • 48:27 - 48:28
    application, it needs to know a
  • 48:28 - 48:30
    configuration, and that configuration is
  • 48:30 - 48:32
    expected to be stored here. It’s mostly
  • 48:32 - 48:34
    just packed full of text files, so it’s
  • 48:34 - 48:35
    not a very big folder, but those text
  • 48:35 - 48:37
    files are really important because it's
  • 48:37 - 48:40
    telling your system how to configure itself.
  • 48:40 - 48:41
    /home—that’s where your user home
  • 48:41 - 48:43
    folders go, so all your personal files.
  • 48:43 - 48:45
    This will oftentimes be a separate
  • 48:45 - 48:47
    partition as well, so that if we fill it
  • 48:47 - 48:49
    up, it doesn’t mess with the regular OS.
  • 48:49 - 48:51
    It still has room, but it doesn’t have
  • 48:51 - 48:52
    to be. In fact, I think on my system it is
  • 48:52 - 48:54
    actually part of my main partition.
  • 48:54 - 48:59
    But anyhow, that’s where your user stuff will go. /lib--those
  • 48:59 - 49:02
    are for libraries, or linkable libraries.
  • 49:02 - 49:04
    When applications run, they rely on
  • 49:04 - 49:05
    libraries to provide basic functions, and
  • 49:05 - 49:06
    they’re usually shared between
  • 49:06 - 49:08
    applications, so you’ll find those
  • 49:08 - 49:10
    there. I’m on a 64-bit system, so I also
  • 49:10 - 49:13
    have lib64. When Linux was created, it was all
  • 49:13 - 49:16
    all created around a 32-bit ecosystem,
  • 49:16 - 49:22
    and so when you see a folder like lib, it’s expecting 32-bit libraries to be in there.
  • 49:22 - 49:25
    Let’s see. Some other ones: /mnt. /mnt is
  • 49:25 - 49:26
    optional--you might not have it.
  • 49:26 - 49:28
    It’s short for “mount.” In the olden days,
  • 49:28 - 49:30
    when we would mount a hard drive or a CD
  • 49:30 - 49:32
    drive or whatever, we would mount it to a
  • 49:32 - 49:35
    folder under /mnt. A lot of distros don’t
  • 49:35 - 49:38
    do that anymore. The ones that do auto-mount will usually mount under the
  • 49:38 - 49:41
    run folder. I see I’ve got run also.
  • 49:41 - 49:43
    run is not in the FHS, not in the
  • 49:43 - 49:44
    official standard. It’s just something
  • 49:44 - 49:47
    they made up, but it’s there. And it
  • 49:47 - 49:49
    just shows you can choose to deviate if
  • 49:49 - 49:52
    you want to. Let’s see. /proc--
  • 49:52 - 49:54
    whoops, I’m going to break my system.
  • 49:54 - 49:55
    /proc is a really neat one, because
  • 49:55 - 49:58
    this looks like a folder actually isn’t.
  • 49:58 - 50:00
    Right? This is a virtual file system.
  • 50:00 - 50:04
    Every program that you run is a process,
  • 50:04 - 50:07
    and the process is represented as a file
  • 50:07 - 50:09
    inside of /proc. So it looks like
  • 50:09 - 50:14
    you’re navigating around it. In fact, if I--let me go back here--if I go into
  • 50:14 - 50:18
    /proc and pull up a listing, I see
  • 50:18 - 50:20
    all these numbers. Right? What are those
  • 50:20 - 50:23
    numbers? Well, if I were to pull up a list
  • 50:23 - 50:25
    of applications running on my
  • 50:25 - 50:28
    system, I’d see all of these process-ID
  • 50:28 - 50:31
    numbers right here. That’s the process ID
  • 50:31 - 50:33
    of that binary running in RAM. Well, in
  • 50:33 - 50:35
    the file system, it all gets
  • 50:35 - 50:37
    represented right here as files, and you
  • 50:37 - 50:40
    can even browse inside of them.
  • 50:40 - 50:44
    If I pick one at random, like 10971,
  • 50:44 - 50:46
    and pull up the listing, I can start to find
  • 50:46 - 50:47
    out information about that application
  • 50:47 - 50:49
    that’s running. These are not real files--
  • 50:49 - 50:50
    this is all virtual.
  • 50:50 - 50:52
    It's being dynamically generated as I navigate
  • 50:52 - 50:54
    through, and it’s part of the whole idea
  • 50:54 - 50:57
    of representing everything as a file.
  • 50:57 - 50:58
    Not everything in Linux is represented as a
  • 50:58 - 50:59
    file. There’s an operating system called
  • 50:59 - 51:02
    Plan 9 where they went hardcore--and
  • 51:02 - 51:04
    everything, literally everything, is
  • 51:04 - 51:07
    represented as a file. In Linux,
  • 51:07 - 51:09
    most everything is represented as a file,
  • 51:09 - 51:12
    and so that’s kind of what we see in /proc.
  • 51:12 - 51:16
    Similar to that is /sys. If you go into /sys,
  • 51:16 - 51:19
    this one doesn’t show information about
  • 51:19 - 51:21
    processes, but showing me information
  • 51:21 - 51:23
    about the system: the Linux
  • 51:23 - 51:25
    kernel and what it’s running. And so,
  • 51:25 - 51:27
    you’ll see things like device detection.
  • 51:27 - 51:28
    If you're running a hypervisor, kernel
  • 51:28 - 51:31
    data. That's all tucked away in here.
  • 51:31 - 51:33
    And so, when you run something like
  • 51:33 - 51:36
    you name -a to find out what kernel version
  • 51:36 - 51:40
    you’re running, that’s actually coming from inside /sys.
  • 51:40 - 51:42
    It’s looking in there to find it and
  • 51:42 - 51:45
    represent that, putting that on your screen.
  • 51:45 - 51:51
    I already talked about /usr a little bit--for /usr/bin and /usr/sbin.
  • 51:51 - 51:54
    This one is supposed to contain our
  • 51:54 - 51:58
    really, binaries and any other kind of
  • 51:58 - 52:00
    data designed to be shared
  • 52:00 - 52:02
    between users. I don’t mean shared
  • 52:02 - 52:03
    across the network--I mean shared between
  • 52:03 - 52:05
    users right here on the system.
  • 52:05 - 52:07
    If there’s a library file and I have a user
  • 52:07 - 52:09
    account and Zach has one, there’s no
  • 52:09 - 52:10
    point in storing two copies of that
  • 52:10 - 52:12
    library. We can put it in /usr, and now we
  • 52:12 - 52:17
    both have access to it. That was the original intent of /usr.
  • 52:17 - 52:19
    On servers, that makes a lot of sense; on
  • 52:19 - 52:21
    desktops, it doesn’t, so it really
  • 52:21 - 52:23
    just kind of became the de facto dumping
  • 52:23 - 52:25
    ground for everything. Everything is
  • 52:25 - 52:26
    considered shared amongst users
  • 52:26 - 52:28
    these days, and that’s why you’re seeing
  • 52:28 - 52:30
    more distros linking to the
  • 52:30 - 52:33
    /usr folder. But if you look, there’s
  • 52:33 - 52:37
    more than binaries in there: there are libraries--lib and lib64.
  • 52:37 - 52:42
    You might have an etc folder for shared configurations, a src folder,
  • 52:42 - 52:44
    games if you’ve installed any. I didn’t
  • 52:44 - 52:46
    think I had, but apparently--oh, it’s empty.
  • 52:46 - 52:47
    Alright.
  • 52:47 - 52:49
    So... [Laugh]. I don't have anything no there,
  • 52:49 - 52:52
    but these are things that every user would then have access to inside of /usr.
  • 52:52 - 52:57
    A neat fact: this is supposed to be mounted read-only
  • 52:57 - 53:00
    based on the FHS, so users can’t
  • 53:00 - 53:03
    tamper with binaries other users might be accessing.
  • 53:03 - 53:04
    Very few distros actually mount this
  • 53:04 - 53:06
    read-only today, though, so this is
  • 53:06 - 53:07
    another area where a lot of people
  • 53:07 - 53:09
    deviate from the standard.
  • 53:09 - 53:13
    And another important folder for us, let's see,
  • 53:13 - 53:22
    that was /usr, is /var, that one, which is short for “various” and this is a various folder.
  • 53:22 - 53:24
    But it's not too much variety. There's
  • 53:24 - 53:25
    actually a couple of things we expect to
  • 53:25 - 53:28
    be in there. First off, our log files, log
  • 53:28 - 53:29
    files for applications, for the
  • 53:29 - 53:32
    system, for journal D, for all these other
  • 53:32 - 53:33
    different things. Those log files get
  • 53:33 - 53:37
    dumped into /var/log, but so does our
  • 53:37 - 53:39
    print spooler. When we print a job,
  • 53:39 - 53:40
    it gets written to the hard disk first
  • 53:40 - 53:42
    before being sent to the printer, and so
  • 53:42 - 53:45
    that’s inside /var/spool.
  • 53:45 - 53:47
    If you poke around in there, you’ll find a
  • 53:47 - 53:53
    lot of things--there’s spool, as I mentioned, and log is right above it.
  • 53:53 - 53:54
    But you’ll see other things. If you’re
  • 53:54 - 53:56
    running an email server, your mail queues
  • 53:56 - 53:58
    will be in there. The point about /var is
  • 53:58 - 54:00
    that it’s supposed to be considered
  • 54:00 - 54:01
    temporary. The stuff in there
  • 54:01 - 54:03
    isn’t supposed to be mission-critical.
  • 54:03 - 54:05
    If I lose my logs, the system is actually
  • 54:05 - 54:08
    fine--I’ll be okay. If I lose my principle,
  • 54:08 - 54:10
    it’s fine--I’ll be okay. If I lose email
  • 54:10 - 54:14
    in transit, that kind of thing, it’s not really critical. It's just temporary.
  • 54:14 - 54:16
    And in older days, you’d put
  • 54:16 - 54:18
    cheaper storage in /var because you
  • 54:18 - 54:20
    didn’t care about it as much.
  • 54:20 - 54:22
    Today, storage is so cheap and reliable that
  • 54:22 - 54:24
    /var is usually pretty stable.
  • 54:24 - 54:25
    And so, people will put things like security
  • 54:25 - 54:26
    logs in there that they intend to
  • 54:26 - 54:28
    keep long-term, even though that’s not
  • 54:28 - 54:31
    the original intent of the folder. Done.
  • 54:31 - 54:32
    Do we really need to memorize all these folders--
  • 54:32 - 54:34
    the ones you just went over?
  • 54:34 - 54:38
    Yeah. For the exam, yes--you do.
  • 54:38 - 54:40
    At least the ones I named. Right?
  • 54:40 - 54:41
    Don’t go memorize the whole
  • 54:41 - 54:45
    FHS--that’s crazy. The ones I just highlighted are kind of the
  • 54:45 - 54:46
    critical ones. You want to know those for
  • 54:46 - 54:48
    the exam. In real life, you can
  • 54:48 - 54:51
    actually cheat a bit. If you don’t
  • 54:51 - 54:52
    remember these folders, it’s fine,
  • 54:52 - 54:54
    because it’s so easy to find files.
  • 54:54 - 54:56
    In fact, we have another episode
  • 54:56 - 54:58
    coming up on how to locate stuff in
  • 54:58 - 55:10
    Linux. But to give you a preview, let me get to a console here. So let’s say I want to find a file.
  • 55:10 - 55:16
    Yeah. I’m going to use a good example: the SSH command, right? I’m going to SSH into a
  • 55:16 - 55:18
    server, and I want to make sure that SSH
  • 55:18 - 55:19
    is a certain version, so I need to
  • 55:19 - 55:22
    take a look at the SSH file itself and,
  • 55:22 - 55:26
    you know, test it. Well, where is it stored? I might have to think to myself,
  • 55:26 - 55:34
    “Is that an essential binary or a nonessential one? Is it in /bin, /sbin, or /usr/bin?”
  • 55:34 - 55:38
    It could be any number of places. Or is it in /opt? Has it been overwritten?
  • 55:38 - 55:42
    Where is it? You can use commands like which.
  • 55:42 - 55:49
    And the which command, if you say which ssh, it’s going to figure out which
  • 55:49 - 55:51
    actual binary would be run if you type
  • 55:51 - 55:58
    that command. It tells me this one is /usr/bin/ssh. Now, there could be more than one
  • 55:58 - 56:06
    copy of SSH, so we can use a different command, whereis ssh. And then I'm going to find if
  • 56:06 - 56:08
    there's multiple copies, and it'll show me
  • 56:08 - 56:10
    the multiple copies. And even things like
  • 56:10 - 56:11
    the help documentation and the
  • 56:11 - 56:14
    configuration. It tells me right
  • 56:14 - 56:21
    here the binary is /usr/bin/ssh, the configuration is /etc/ssh,
  • 56:21 - 56:29
    and the help documentation is /usr/share/man/man1/ssh.1.gz.
  • 56:29 - 56:31
    Rolls right off the tongue. So it does--it
  • 56:31 - 56:32
    just rolled right off. We don’t have to
  • 56:32 - 56:36
    remember it if we can remember the whereis command, right? You can run that into
  • 56:36 - 56:40
    it. There’s also locate and find. I’ll cover those in another episode,
  • 56:40 - 56:41
    but they’re useful for finding not just
  • 56:41 - 56:44
    binaries, but any file. If I'm just
  • 56:44 - 56:51
    trying to find a file, I forget where I saved something, I can use locate or find; they’ll find it as long as it’s listed in the name,
  • 56:51 - 56:55
    and then we can get it. If you don’t have it memorized, you’ll
  • 56:55 - 56:57
    get by just fine in most scenarios, but
  • 56:57 - 56:59
    it takes time. If you have it memorized,
  • 56:59 - 57:00
    and, you know, exactly where to go, you
  • 57:00 - 57:01
    save a lot of time, and you're more
  • 57:01 - 57:03
    efficient. So, that's the way I
  • 57:03 - 57:05
    look at it when it comes to memorization.
  • 57:05 - 57:07
    Awesome, Don--File System Hierarchy
  • 57:07 - 57:09
    Standard. This is another great
  • 57:09 - 57:11
    episode. FHS, if you please. And Don,
  • 57:11 - 57:13
    before we move on, anything else you’d like to say?
  • 57:13 - 57:16
    You know, this is all fairly static; it
  • 57:16 - 57:18
    doesn’t change much, and I know this
  • 57:18 - 57:20
    is our Linux+ show. But if you learn
  • 57:20 - 57:22
    the File System Hierarchy Standard, when
  • 57:22 - 57:27
    you jump to macOS, they actually conform to a lot of
  • 57:27 - 57:32
    this. And if you jump to BSD, a lot of them conform, too. So, you learn
  • 57:32 - 57:34
    it once, and it applies to more than one
  • 57:34 - 57:35
    operating system. That’s a pretty cool
  • 57:35 - 57:36
    thing. Definitely spend some time and
  • 57:36 - 57:38
    get familiar with it. Great advice--thank
  • 57:38 - 57:40
    you, Don, and a great episode as usual.
  • 57:40 - 57:44
    Linux+ is a wonderful series, and it’s designed to help you.
  • 57:44 - 57:45
    Make sure you watch every single episode--
  • 57:45 - 57:47
    you’ll be glad you did. And don’t forget
  • 57:47 - 57:48
    about our course library, where there's
  • 57:48 - 57:50
    supplementary information is there
  • 57:50 - 57:52
    to help you go even further.
  • 57:52 - 57:53
    Check that out as well, and tell
  • 57:53 - 57:57
    everybody you know about ITPRO.TV. ITPRO.TV is Binsworthy. Thanks for watching.
  • 57:57 - 58:02
    I’m Zach Memos, and I’m Don Pezet. We’ll see you again soon.
  • 58:02 - 58:07
    [Music].
  • 58:07 - 58:10
    Thank you for watching ITPRO.TV.
Title:
CompTIA Linux+: Logical Volumes & Filesystem Hierarchy #5
Video Language:
English
Duration:
58:11

English subtitles

Revisions Compare revisions