U.S. patent application number 14/933080 was filed with the patent office on 2016-06-16 for method and apparatus for managing file system of unified storage system.
The applicant listed for this patent is International Business Machines Corporation. Invention is credited to Alexander H. Ainscow, Li Hui Guo, Long Wen Lan.
Application Number | 20160173603 14/933080 |
Document ID | / |
Family ID | 56112333 |
Filed Date | 2016-06-16 |
United States Patent
Application |
20160173603 |
Kind Code |
A1 |
Ainscow; Alexander H. ; et
al. |
June 16, 2016 |
METHOD AND APPARATUS FOR MANAGING FILE SYSTEM OF UNIFIED STORAGE
SYSTEM
Abstract
The disclosure relates to a method and apparatus of managing a
file system of a unified storage system. According to embodiments
of the present disclosure, the method comprises: creating a thin
provisioning storage pool in a block level; mapping the thin
provisioning storage pool to a file storage pool in a file level;
and creating a file system by using the file storage pool. In this
way, a capacity of the file system is expanded or shrunk without
rebalancing or migrating data in the storage system.
Inventors: |
Ainscow; Alexander H.;
(Winchester, GB) ; Guo; Li Hui; (Shanghai, CN)
; Lan; Long Wen; (Shanghai, CN) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
International Business Machines Corporation |
Armonk |
NY |
US |
|
|
Family ID: |
56112333 |
Appl. No.: |
14/933080 |
Filed: |
November 5, 2015 |
Current U.S.
Class: |
707/827 |
Current CPC
Class: |
G06F 3/0605 20130101;
H04L 67/1097 20130101; G06F 3/0644 20130101; G06F 3/0643 20130101;
G06F 3/0689 20130101; G06F 16/11 20190101 |
International
Class: |
H04L 29/08 20060101
H04L029/08; G06F 17/30 20060101 G06F017/30 |
Foreign Application Data
Date |
Code |
Application Number |
Dec 10, 2014 |
CN |
201410757054.2 |
Claims
1. A method for managing a file system of a unified storage system,
the unified storage system comprising a file level and a block
level having a block-based physical storage space, the method
comprising: creating a thin provisioning storage pool in the block
level; mapping the thin provisioning storage pool to a file storage
pool in the file level; and creating the file system by using the
file storage pool.
2. The method of claim 1, further comprising: receiving a request
to change a capacity of the file system; and in response to the
request, changing the capacity of the file system by changing a
capacity of the thin provisioning storage pool.
3. The method of claim 1, further comprising: prompting a user to
add a new physical storage space in the block level in response to
an amount of data in the file system exceeding a pre-defined
proportion of the block-based physical storage space.
4. The method of claim 1, further comprising, in response to the
thin provisioning storage pool being shrunk to be less than a
pre-defined threshold, performing at least one of the following:
refusing a shrinking request; and prompting a user to delete data
in the file system.
5. The method of claim 1, further comprising creating a plurality
of storage volumes for the mapping according to the thin
provisioning storage pool.
6. The method of claim 5, wherein a total capacity of the plurality
of storage volumes is equal to a maximum capacity of the thin
provisioning storage pool.
7. An apparatus for managing a file system of a unified storage
system, the unified storage system comprising a file device and a
block device having a block-based physical storage space, the
apparatus comprising: a thin provisioning storage pool creating
unit configured to create a thin provisioning storage pool in the
block device; a mapping unit configured to map the thin
provisioning storage pool to a file storage pool in the file
device; and a file system creating unit configured to create the
file system by using the file storage pool.
8. The apparatus of claim 7, further comprising: a capacity change
request receiving unit configured to receive a request to change a
capacity of the file system; and a thin provisioning storage pool
capacity changing unit configured to change the capacity of the
file system by changing a capacity of the thin provisioning storage
pool in response to the request.
9. The apparatus of claim 7, further comprising: a physical storage
space addition prompting unit configured to prompt a user to add a
new physical storage space in the block device in response to an
amount of data in the file system exceeding a pre-defined
proportion of the block-based physical storage space.
10. The apparatus of claim 7, further comprising: a thin
provisioning storage pool shrink prompting unit configured to
perform at least one of the following in response to the thin
provisioning storage pool being shrunk to be less than a
pre-defined threshold: refusing a shrinking request; and prompting
a user to delete data in the file system.
11. The apparatus of claim 7, further comprising: a storage volume
creating unit configured to create a plurality of storage volumes
for the mapping according to the thin provisioning storage
pool.
12. The apparatus of claim 11, wherein a total capacity of the
plurality of storage volumes is equal to a maximum capacity of the
thin provisioning storage pool.
13. A computer program product for managing a file system of a
unified storage system, the unified storage system comprising a
file level and a block level having a block-based physical storage
space, the computer program product comprising: one or more
computer readable storage media and program instructions stored on
the one or more computer readable storage media, the program
instructions comprising instructions for: creating a thin
provisioning storage pool in the block level; mapping the thin
provisioning storage pool to a file storage pool in the file level;
and creating the file system by using the file storage pool.
14. The computer program product of claim 13, wherein the program
instructions comprise instructions for: receiving a request to
change a capacity of the file system; and in response to the
request, changing the capacity of the file system by changing a
capacity of the thin provisioning storage pool.
15. The computer program product of claim 13, wherein the program
instructions comprise instructions for: prompting a user to add a
new physical storage space in the block level in response to an
amount of data in the file system exceeding a pre-defined
proportion of the block-based physical storage space.
16. The computer program product of claim 13, wherein, in response
to the thin provisioning storage pool being shrunk to be less than
a pre-defined threshold, the program instructions comprise
instructions for performing at least one of the following: refusing
a shrinking request; and prompting a user to delete data in the
file system.
17. The computer program product of claim 13, wherein the program
instructions comprise instructions for creating a plurality of
storage volumes for the mapping according to the thin provisioning
storage pool.
18. The computer program product of claim 17, wherein a total
capacity of the plurality of storage volumes is equal to a maximum
capacity of the thin provisioning storage pool.
Description
BACKGROUND
[0001] Embodiments of the present invention generally relate to a
storage system and a method of managing its file system, and more
specifically, to a unified storage system and a method of managing
a file system of the unified storage system.
[0002] In a unified storage appliance, for Network Attached Storage
(NAS) sub systems, a traditional way of creating a file system is
to let end the user specify a set of volumes on which the file
system data will be placed. However, many file systems grow
rapidly, so it is possible that a new storage space needs to be
added or allocated soon after creation of the system. There are
some limitations and restrictions to add the storage space for
known parallel file systems (such as GPFS). The storage space in a
file system is divided into a plurality of storage pools, and when
a storage pool is established and when the storage spaces are added
later to an existing storage pool, the sizes of these storage
spaces should be kept uniform.
SUMMARY
[0003] Generally, embodiments of the present invention propose a
technical solution about managing a file system of a unified
storage system.
[0004] According to one embodiment of the present invention, there
is provided a method of managing a file system of a unified storage
system, the unified storage system comprising a file level and a
block level having a block-based physical storage space, the method
comprising: creating a thin provisioning storage pool in the block
level; mapping the thin provisioning storage pool to a file storage
pool in the file level; and creating a file system by using the
file storage pool.
[0005] According to another embodiment of the present invention,
there is provided an apparatus of managing a file system of a
unified storage system, the unified storage system comprising a
file device and a block device having a block-based physical
storage space, the apparatus comprising: a thin provisioning
storage pool creating unit configured to create a thin provisioning
storage pool in the block device; a mapping unit configured to map
the thin provisioning storage pool to a file storage pool in the
file device; and a file system creating unit configured to create a
file system by using the file storage pool.
[0006] It will be appreciated through the depictions below that
embodiments of the present invention may, according to mapping
between thin provisioning storage pools forming the block level and
the file storage pools of the file level, adjust the size of the
thin previsioning storage pools to correspondingly control
allocation of the size of the file system without performing
rebalance or migration of the files and thereby ensure the system
performance whilst reducing the cost. Other features and advantages
of the present invention will be made more apparent through the
following depictions.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
[0007] Through the more detailed description of some embodiments of
the present disclosure in the accompanying drawings, the above and
other objects, features and advantages of the present disclosure
will become more apparent, wherein the same reference generally
refers to the same components in the embodiments of the present
disclosure.
[0008] FIG. 1 illustrates a block diagram of an exemplary computer
system/server which is applicable to implement the embodiments of
the present invention;
[0009] FIG. 2 illustrates a flow chart of a method for managing
file systems of a unified storage system according to an embodiment
that can implement the present invention;
[0010] FIG. 3 illustrates a block diagram of a unified storage
system of an embodiment that can implement the present invention;
and
[0011] FIG. 4 illustrates a block diagram of an apparatus for
managing file systems of a unified storage system according to an
embodiment of the present invention.
DETAILED DESCRIPTION
[0012] When working with a file system in a unified storage system,
at times additional storage has to be added to the file system.
After the storage is added, it is possible that the file system may
need to be rebalanced to take advantage of the newly-added space.
Rebalancing of files is an I/O intensive and time consuming
operation, and it is very painful for a large file system. In a
system sharing block storage and NAS storage, it is desirable to
shrink the file system capacity by removing partial storage spaces
in the unified storage system. When a certain storage space is
removed from the file systems, a NAS controller needs to migrate
data in the storage space. Data migration is also an I/O intensive
and time consuming operation.
[0013] It is also impractical to allocate a single large-capacity
storage space to the file system because in addition to a huge
initial investment, the user only knows the size currently required
by the file system, and does not plan or cannot predict the size
that might be expanded in the future, so it is impossible to decide
how much space should be allocated to them. Besides, the user might
not be aware it is suitable to allocate how much storage space, and
the amount of the storage space used by the file system will affect
the performance of parallel file systems (e.g., a single storage
device will become a bottleneck of parallel systems in respect of
performance). Furthermore, once the single large-capacity storage
space gets offline or malfunctions, an unbearable loss will be
caused to the user.
[0014] It is hard to balance the storage allocation between a block
part and a file part by an existing method, which causes waste of
real storage space. This is especially disadvantageous in a
multi-tenant environment where lots of tenants only consume a small
fraction of their quotas. The embodiments disclosed herein
generally address the above-described problems.
[0015] Some preferable embodiments will be described in more detail
with reference to the accompanying drawings, in which the
preferable embodiments of the present disclosure have been
illustrated. However, the present disclosure can be implemented in
various manners, and thus should not be construed to be limited to
the embodiments disclosed herein. On the contrary, those
embodiments are provided for the thorough and complete
understanding of the present disclosure, and completely conveying
the scope of the present disclosure to those skilled in the
art.
[0016] Referring now to FIG. 1, in which an exemplary computer
system/server 12 which is applicable to implement the embodiments
of the present invention is shown. Computer system/server 12 is
only illustrative and is not intended to suggest any limitation as
to the scope of use or functionality of embodiments of the
invention described herein.
[0017] As shown in FIG. 1, computer system/server 12 is shown in
the form of a general-purpose computing device. The components of
computer system/server 12 may include, but are not limited to, one
or more processors or processing units 16, a system memory 28, and
a bus 18 that couples various system components including system
memory 28 to processor 16.
[0018] Bus 18 represents one or more of any of several types of bus
structures, including a memory bus or memory controller, a
peripheral bus, an accelerated graphics port, and a processor or
local bus using any of a variety of bus architectures. By way of
example, and not limitation, such architectures include Industry
Standard Architecture (ISA) bus, Micro Channel Architecture (MCA)
bus, Enhanced ISA (EISA) bus, Video Electronics Standards
Association (VESA) local bus, and Peripheral Component Interconnect
(PCI) bus.
[0019] Computer system/server 12 typically includes a variety of
computer system readable media. Such media may be any available
media that is accessible by computer system/server 12, and it
includes both volatile and non-volatile media, removable and
non-removable media.
[0020] System memory 28 can include computer system readable media
in the form of volatile memory, such as random access memory (RAM)
30 and/or cache memory 32. Computer system/server 12 may further
include other removable/non-removable, volatile/non-volatile
computer system storage media. By way of example only, storage
system 34 can be provided for reading from and writing to a
non-removable, non-volatile magnetic media (not shown and typically
called a "hard drive"). Although not shown, a magnetic disk drive
for reading from and writing to a removable, non-volatile magnetic
disk (e.g., a "floppy disk"), and an optical disk drive for reading
from or writing to a removable, non-volatile optical disk such as a
CD-ROM, DVD-ROM or other optical media can be provided. In such
instances, each can be connected to bus 18 by one or more data
media interfaces. As will be further depicted and described below,
system memory 28 may include at least one program product having a
set (e.g., at least one) of program modules that are configured to
carry out the functions of embodiments of the invention.
[0021] Program/utility 40, having a set (at least one) of program
modules 42, may be stored in system memory 28 by way of example,
and not limitation, as well as an operating system, one or more
application programs, other program modules, and program data. Each
of the operating system, one or more application programs, other
program modules, and program data or some combination thereof, may
include an implementation of a networking environment. Program
modules 42 generally carry out the functions and/or methodologies
of embodiments of the invention as described herein.
[0022] Computer system/server 12 may also communicate with one or
more external devices 14 such as a keyboard, a pointing device, a
display 24, etc.; one or more devices that enable a user to
interact with computer system/server 12; and/or any devices (e.g.,
network card, modem, etc.) that enable computer system/server 12 to
communicate with one or more other computing devices. Such
communication can occur via Input/Output (I/O) interfaces 22. Still
yet, computer system/server 12 can communicate with one or more
networks such as a local area network (LAN), a general wide area
network (WAN), and/or a public network (e.g., the Internet) via
network adapter 20. As depicted, network adapter 20 communicates
with the other components of computer system/server 12 via bus 18.
It should be understood that although not shown, other hardware
and/or software components could be used in conjunction with
computer system/server 12. Examples, include, but are not limited
to: microcode, device drivers, redundant processing units, external
disk drive arrays, redundant array of independent disks (RAID)
systems, tape drives, and data archival storage systems, etc.
[0023] Embodiments of the present invention will be described in
detail below. FIG. 2 illustrates a flow chart of a method 200 for
managing file systems of a unified storage system according to an
embodiment that can implement the present invention.
[0024] The technical term "unified storage system" refers to a
storage system comprising a block-based storage manner and a
file-based storage manner Specifically, the unified storage system
may comprise file-based network attached storage (NAS) and block
(data block)-based storage. Typically, the unified storage system
forms a network and establishes a file system between the
file-based storage and the block-based storage to allocate storage
space of a certain quota to the user so that the user reads/writes
data.
[0025] In an embodiment of the present disclosure of using the file
system managing method 200, the unified storage system comprises a
block level and a file level. The block level, as a front-end, may
perform control data block of the system, and include at least one
physical storage device such as hard disk drive (HDD) or solid
state drive (SSD). In the block level of the unified storage
system, the data is read/written in form of a block. The file level
may perform control as a back-end file of the system, and a
terminal user can have access to and read/write data stored in the
file level in form of files.
[0026] At step S201, a thin provisioning storage pool is created in
the block level. The allocated space of the thin provisioning
storage pool may be larger than the physical storage space of the
block level. When the thin provisioning storage pool is created to
be larger than the physical storage space of the block level, the
thin provisioning storage pool as a virtual storage space may
allocate to the user a logical storage space which is much larger
than an actually-possessed physical storage space. An advantage of
so doing is that the user may allocate a fairly large logical
storage space at an initial stage according to the planning, but
actually use a small-capacity physical storage device; thereafter
when the actually stored data almost fill the physical storage
device full, the user is prompted to add a new physical storage
device to reduce the initial investment cost and space utilization
efficiency. Since the thin provisioning storage pool is created at
the block level, so it also has a block-based storage manner.
[0027] It should be appreciated that the size of the thin
provisioning storage pool may be manually allocated by an
administrator of the unified storage system, or automatically
allocated by the system according to preset rules. For example, the
network storage space (e.g., network storage service, E-mailing
service or the like) allocated to the terminal user can be
automatically expanded (e.g., a total capacity of the occupied data
reaches a certain proportion of the allocated space) or shrunk
(e.g., an account is not logged in beyond a preset period of time)
in response to the preset rules.
[0028] At step S202, the thin provisioning storage pool is mapped
to a file storage pool of the file level. Being located at the file
level, the file storage pool is also file-based. The file storage
pool may be considered as an available space quota allocated to the
terminal user, and its size is proportional to the size of the thin
provisioning storage pool created by the administrator or
automatically created by the system. Optionally, the size of the
file storage pool is equal to the size of the thin provisioning
storage pool. In other words, the capacity of the file-based file
storage pool corresponds to the block-based thin provisioning
storage pool and accords with a change of the thin provisioning
storage pool.
[0029] In an embodiment of the present disclosure, similar to the
block-based thin provisioning storage pool, the file-based file
storage pool is also a virtual logical storage space. The terminal
user can access the file storage pool and read/write the data in a
file form in a certain logical space allocated thereto.
[0030] In an embodiment of the present disclosure, the thin
provisioning storage pool is mapped to the file storage pool one to
one. Specifically, each provisioning storage pool corresponds to
one file storage pool. The file system needs a storage pool to
decide what kind of file is placed in which pool, for example,
frequently-accessed files are placed in a high-rate pool containing
a solid state hard disk as the physical storage device according to
the pre-defined rules. The mapping is illustrated now only by way
of an example. The block level may create a thin provisioning
storage pool, several volumes are created subsequently in the thin
provisioning storage pool, and all volumes are added to the file
storage pool of the file system to complete the mapping. "Volume"
refers to a hard disk (volume) that can be seen by the file system
and is accessed through iSCSI or FC (fiber channel). The file
system finally needs to be read/written on the volumes.
[0031] It should be appreciated that the disclosure is not intended
to limit the number of the thin provisioning storage pools or file
storage pools. The number of the thin provisioning storage pools
depends on creation of step S201, and it may include only one pool
or a plurality of pools. However, after the thin provisioning
storage pool is created, it is favorable to keep the number of the
file storage pools consistent with the number of the thin
provisioning storage pools.
[0032] At step S203, the file system is created accordingly by
using the file storage file obtained from the mapping. The file
system normally refers to a method and data structure for an
operating system to clarify files in a certain logical space
allocated, namely, a method of organizing files. In other words,
the file system is created at the file level and directly accessed
by the user to facilitate a graphic interface-based operation
(e.g., reading/writing the stored data).
[0033] In an embodiment of the present disclosure, if the size of
the file system is to be adjusted, adjustment may be only made to
the size of the thin provisioning storage pool of the unified
storage system, i.e., expand or shrink the thin provisioning
storage pool created by the user at step S201 (or initial stage) to
expand or shrink the size of the file system accordingly. By
forming the mapping such that the thin provisioning storage pools
correspond to the file storage pools one to one, the file system
only performs storage management with the file storage pool in a
file-based manner. Perform management for the thin provisioning
storage pool and the mapping relationship is unnecessary. Hence,
with the one-to-one mapping the user need not deal with complexity
of storage management, namely, the managing of hard disk allocation
in the storage file and the mapping relationship of these hard
disks to the file storage pool. Control of the size of the file
system may be completed at the block level and the file system need
not be modified, and therefore, data migration does not occur.
Since data stored in the physical storage device in the block level
need not be rebalanced or migrated, the storage efficiency is
improved. Furthermore, considering (a plurality of) file systems
may be created in different manners (the file systems may be
created as for example NTFS or FAT), the unified storage system
using the embodiment of the present disclosure can achieve better
balance between usability and performance of the storage management
or file system management. Besides, it is favorable to keep the
file storage pool consistent with the thin provisioning storage
pool because according to the above statements, this may enable the
change of the file system to be achieved only by the change to the
thin provisioning storage pool without making any adjustment to
data and the file system per se (e.g., the adjustment may comprise
partitioning, migrating, deleting, rebalancing and the like).
[0034] In the embodiment of the present disclosure, when the data
(the total amount of data written by the user) in the file system
exceeds the pre-defined proportion of the block-based physical
storage space, the file system managing method 200 may further
comprise promoting the user to adding a new physical storage space.
This is particularly favorable to creation of the thin provisioning
storage pool that is much larger (e.g., several times) than the
physical storage space of the physical storage device because as
stated above, the unified storage system allocates an excessive
logical storage space to the user, but most of users only use a
very small portion of the logical storage space (for example, an
account of network mailing service is usually allocated several GBs
(the measure unit "B" of the storage capacity in this text denotes
byte), but most of users only use several hundreds of MBs even
less). However, only after the total amount of data stored by the
user reaches a certain threshold of the physical storage capacity
provided by the physical storage device of the block level does the
unified storage system prompt the user to add a new physical
storage device so as to expand the total physical storage capacity
of the system and thereby to effectively reduce the cost of initial
investment for the hardware. For example, the pre-defined
proportion may be 90% of the current total physical storage space
or capacity, and the pre-defined proportion may be pre-adjusted by
the user (e.g., administrator). When the total amount of data
stored by all users is less than the pre-defined proportion, the
new physical storage device need not be added in response to the
expansion of the thin provisioning storage pool.
[0035] In the embodiment of the present disclosure, when the user
(e.g., administrator) shrinks the size of the thin provisioning
storage pool to be less than the pre-defined threshold, the file
system managing method 200 may further comprise prompting the user
to delete data in the file system or refuse this shrinking request.
The pre-defined threshold may be proportional to the amount of data
in the file system (i.e., the total amount of data written by the
user). In other words, the pre-defined threshold is not a fixed
value, but a variable varying with the total amount of the written
data. For example, the pre-defined threshold may be maintained as a
proportion 110%, 120% or any proportion greater than or equal to
100% of the total amount of data.
[0036] Now only by way of example, the total amount of data stored
by all users in the physical storage space of the physical storage
device is 300 GB, and meanwhile the size of the created thin
provisioning storage pool is 400 GB. If the user desires to shrink
the size of the thin provisioning storage pool to shrink the size
of the file system allocated to all terminal users, and it is
assumed that the pre-defined threshold be 110% of the total amount
of data, the user may shrink the size of the thin provisioning
storage pool to 350 GB. However, at this time if the user desires
to shrink the size of the thin provisioning storage pool to less
than 330 GB, he/she is prompted to delete partial data in the file
system or refuse this shrinking request. The pre-defined value may
be pre-adjusted by the user.
[0037] It should be appreciated that the administrator in the text
refers to a user who has a certain right, i.e., may create the thin
provisioning storage pool and adjust the size of the thin
provisioning storage pool. In other words, the administrator may be
a terminal user that has a right to use the file system or an
administrator of the system.
[0038] In the embodiment of the present disclosure, after step
S201, namely, after creating the thin provisioning storage pool,
the file system managing method 200 may further comprise creating a
plurality storage volumes, e.g., named space-efficient storage
volumes in the text herein, according to the thin provisioning
storage pool for use in the mapping of step S202. A total capacity
of a plurality of space-efficient storage volumes is equal to a
maximum capacity of the thin provisioning storage pool. The maximum
capacity of the thin provisioning storage pool refers to a maximum
storage size of a block-based virtual logical storage space that is
created under approval of the unified storage system. The number of
the space-efficient storage volumes may be preset by the user due
to different applications or automatically set by the unified
storage system according to the preset rules (e.g., determined via
a NAS device of the file level to ensure of desired level of
parallelism). The size of each space-efficient storage volume may
be obtained by dividing the maximum volume of the thin provisioning
storage cell by the number of the set space-efficient storage
volumes.
[0039] The space-efficient storage volumes are described only by
way of example. Assume that a physical storage pool S.sub.A is 1
TB, S.sub.B is 1 TB, the user first may create at the block level
two thin provisioning storage pools T.sub.A and T.sub.B of 500 GB
each. It should be appreciated that the user may create any number
of thin provisioning storage pools according to needs.
Subsequently, the user may use the thin provisioning storage pools
T.sub.A and T.sub.B to automatically create the file system,
automatically create 32 (or anther number of) maximum-capacity
space-efficient storage volumes V.sub.A from S.sub.A according to
properties (e.g., the size of extend) of the thin provisioning
storage pools, and add these V.sub.A's to the file storage pool
F.sub.A. Meanwhile, the user may automatically create 32 (or,
another number of) space-efficient storage volumes V.sub.B from
S.sub.B and add them to the file storage pool F.sub.B. As the
created thin provisioning storage pools T.sub.A and T.sub.B each
are 500 GB, namely, 1 TB in total, when data exceeding 1 TB cannot
be written in the file system, the system prompts failure to
continue writing. However, since the actual physical space is 2 TB,
the user may continue to write by only adjusting the size of the
thin provisioning storage pools T.sub.A and T.sub.B (e.g., changing
both of them to 2 TB, totally 4 TB). Thereafter, when the data
exceeding 2 TB is written in the file system, the actual physical
space is already written full, so the user needs to add a new
physical storage device and adjust the thin provisioning storage
pools to restore further writing.
[0040] In the above examples, the user users the space-efficient
storage volumes to read/write file data, but the user need not
perform management for a total of 64 space-efficient storage
volumes (the sum of V.sub.A and V.sub.B) and only needs to manage
the size of the logic of the two thin provisioning storage pools
T.sub.A and T.sub.B to achieve allocation for the file system.
[0041] However, it should be appreciated that the above examples
may have any number of physical storage pools, and any number of
physical storage devices may be created in the storage pool. For
example, the physical storage pool S.sub.A may contain three
storage devices of 500 GB, and S.sub.B may not be created.
Subsequently, the thin provisioning storage pools T.sub.A and
T.sub.B are created from S.sub.A. However, the thin provisioning
storage pools should be mapped one to one to the file storage
pools, namely, T.sub.A.fwdarw.F.sub.A, T.sub.B.fwdarw.F.sub.B. In
these mapping procedures, the user can only see the physical
storage pool and the thin provisioning storage pools, and the
space-efficient storage volumes (V.sub.A and V.sub.B) in the system
are allocated and completed through the memory of the system.
[0042] Flexibility of storage may be provided by providing
space-efficient storage volumes because as stated above, the data
actually written by all users probably only occupy a very small
portion of data allocated to them, and the maximum capacity that
can be allocated is determined by the sum of the space-efficient
storage volumes. In an embodiment of the present disclosure, the
sum of the space-efficient storage volumes is equal to the maximum
capacity of the thin provisioning storage pools created under
approval, and the file data read/written by the user is placed on
the space-efficient storage volumes. Therefore, once the file data
is created, the position thereof on the space-efficient storage
volumes is in a fixed correspondence relationship to the position
on the physical storage pool, and the correspondence relationship
is not affected by the expansion or shrinking of the thin
provisioning storage pools. In other words, it does not require
re-allocation of the position of the data stored in the physical
storage pool in the form of blocks because the user changes the
size of the file system.
[0043] FIG. 3 illustrates a block diagram of a unified storage
system 300 of an embodiment that can implement the present
invention. The unified storage system 300 comprises a block level
310 and a file level 320. In combination with the file system
managing method 200 of FIG. 2, thin provisioning storage pools 311
in the block level 310 are created first. The block level 310 has a
block-based physical storage space. In the present embodiment, as
shown in FIG. 3, the number of thin provisioning storage pools 311
is two, and it might be favorable that the two thin provisioning
storage pools 311 are created as having equal size.
[0044] The two thin provisioning storage pools 311 are mapped to
two corresponding file storage pools 321 in the file level 320.
Each file storage pool 321 is equal to its corresponding thin
provisioning storage pool 311 in size, which is favorable for
management of the file system because the user's reading/writing of
the data may simultaneously correspond to the file storage pool in
the file level and the thin provisioning storage pool in the block
level and the physical storage space. The file system 322 is
created by using two file storage pools 321 obtained from mapping.
Since illustrative block diagram of FIG. 3 further expounds on the
illustrative flow chart of FIG. 2 in structure, depictions of
principle of FIG. 2 also apply to FIG. 3 and will not be detailed
herein.
[0045] According to an embodiment of the present disclosure, the
unified storage system 300 further comprises a controller 330 for
various operations, e.g., mapping the thin provisioning storage
pools to the file storage pools of the file level to use the file
storage pools to create the file system. In an embodiment, the
controller 330 may be configured to prompt the user to add a new
physical storage space in the block level in response to data in
the file system exceeding the pre-defined proportion of the
block-based physical storage space. In another embodiment, the
controller 330 may further be configured to prompt the user to
delete data in the file system in response to the thin provisioning
storage pool being shrunk as a pre-defined proportion of data in
the file system. Besides, in other embodiments, the controller 330
may be further configured to create a plurality of space-efficient
storage volumes for mapping according to the thin provisioning
storage pools, and a total capacity of the plurality of the
space-efficient storage volumes is equal to the maximum capacity of
the thin provisioning storage pools. However, it should be
appreciated that the controller 330 according to the present
disclosure may be configured to execute various other operations
for the unified storage system 300, such as read/write, deletion
and migration of data.
[0046] FIG. 4 illustrates a block diagram of an apparatus 400 for
managing a file system of a unified storage system according to an
embodiment of the present invention. As stated above, the unified
storage system comprises a file device and a block device having a
block-based physical storage space.
[0047] According to an embodiment of the present disclosure, the
apparatus 400 comprises a thin provisioning storage pool creating
unit 410 configured to create a thin provisioning storage pool in
the block device; a mapping unit 420 configured to map the thin
provisioning storage pool to a file storage pool in the file
device; and a file system creating unit 430 configured to use the
file storage pool to create a file system.
[0048] In an embodiment, the apparatus 400 further comprises: a
capacity change request receiving unit configured to receive a
request to change a capacity of the file system; and a thin
provisioning storage pool capacity changing unit configured to, in
response to the request, change the capacity of the thin
provisioning storage pool to change the capacity of the file
system.
[0049] In an embodiment, the apparatus 400 further comprises a
physical storage space addition prompting unit configured to prompt
the user to add a new physical storage space in the block device in
response to data in the file system exceeding the pre-defined
proportion of the block-based physical storage space.
[0050] In an embodiment, the apparatus 400 further comprises a thin
provisioning storage pool shrink prompting unit configured to
execute at least one of the following in response to the thin
provisioning storage pool being shrunk to be less than the
pre-defined threshold: refusing the shrinking request; and
prompting the user to delete the data in the file system. The
pre-defined threshold is proportional to the amount of data in the
file system.
[0051] In an embodiment, the apparatus 400 further comprises a
space-efficient storage volume creating unit configured to, after
creation of the thin provisioning storage pools, create a plurality
of space-efficient storage volumes for mapping corresponding to the
thin provisioning storage pools, wherein a total capacity of the
plurality of the space-efficient storage volumes is equal to the
maximum capacity of the thin provisioning storage pools.
[0052] It should be appreciated that for sake of clarity, FIG. 4
does not show optional unit or sub-units included by the apparatus
400. All features and operations as described above are
respectively applicable to the apparatus 400 and will not be
detailed here. Furthermore, division of units and sub-units of the
apparatus 400 are not restrictive but exemplary and aims to
logically describe their main functions or operations. A function
of a unit may be implemented by a plurality of units, and a
plurality of units may be implemented by one unit. The scope of the
present invention is not limited in this aspect.
[0053] Furthermore, the units included by the apparatus 400 may be
implemented in many manners, including software, hardware, firmware
or any combinations thereof. For example, in some embodiments, the
apparatus 400 may be implemented by using software and/or hardware.
Alternatively or additionally, the apparatus 400 may be implemented
partially or completely based on hardware. For example, one or more
units of the apparatus 400 may be implemented as an integrated
circuit (IC) chip, an application-specific integrated circuit
(ASIC), system on chip (SOC), field programmable gate array (FPGA),
or the like. The scope of the present invention is not limited in
this aspect.
[0054] Through embodiments of the present disclosure, the unified
storage system may achieve the following advantages. The file
system management of the present disclosure may manage allocation
of the storage space to achieve better balance of storage capacity
usability and storage performance particularly in the case of using
different file systems and storage properties. Besides, the file
system management of the present disclosure performs automation
adaption and control for storage management in the unified storage
system, which facilitates the user directly managing its file
system without considering how to configure a file system disk or
volume (number, size, type, whether to mirror and how to minor and
the like). In the level of use, embodiments of the present
disclosure simplify use of the file level, e.g., use and operation
of the NAS apparatus, by allocating "quotas" to the file storage
pools. By controlling the thin provisioning storage pools to
achieve the allocation of the file system, the file system
management of the present disclosure may simply expand or shrink
the file system without need to rebalance and migrate the
already-stored data, which therefore does not exert an influence on
input and output of the files and is very important for the
performance of the system. Besides, the unified storage system and
the file system management method according to the present
disclosure can substantially improve storage efficiency between the
file and the block, particularly for a multi-tenant environment
because the physical storage space is shared between the block
level and the file level and does not need the user's participation
and operation.
[0055] The present invention may be a system, a method, and/or a
computer program product. The computer program product may include
a computer readable storage medium (or media) having computer
readable program instructions thereon for causing a processor to
carry out aspects of the present invention.
[0056] The computer readable storage medium can be a tangible
device that can retain and store instructions for use by an
instruction execution device. The computer readable storage medium
may be, for example, but is not limited to, an electronic storage
device, a magnetic storage device, an optical storage device, an
electromagnetic storage device, a semiconductor storage device, or
any suitable combination of the foregoing. A non-exhaustive list of
more specific examples of the computer readable storage medium
includes the following: a portable computer diskette, a hard disk,
a random access memory (RAM), a read-only memory (ROM), an erasable
programmable read-only memory (EPROM or Flash memory), a static
random access memory (SRAM), a portable compact disc read-only
memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a
floppy disk, a mechanically encoded device such as punch-cards or
raised structures in a groove having instructions recorded thereon,
and any suitable combination of the foregoing. A computer readable
storage medium, as used herein, is not to be construed as being
transitory signals per se, such as radio waves or other freely
propagating electromagnetic waves, electromagnetic waves
propagating through a waveguide or other transmission media (e.g.,
light pulses passing through a fiber-optic cable), or electrical
signals transmitted through a wire.
[0057] Computer readable program instructions described herein can
be downloaded to respective computing/processing devices from a
computer readable storage medium or to an external computer or
external storage device via a network, for example, the Internet, a
local area network, a wide area network and/or a wireless network.
The network may comprise copper transmission cables, optical
transmission fibers, wireless transmission, routers, firewalls,
switches, gateway computers and/or edge servers. A network adapter
card or network interface in each computing/processing device
receives computer readable program instructions from the network
and forwards the computer readable program instructions for storage
in a computer readable storage medium within the respective
computing/processing device.
[0058] Computer readable program instructions for carrying out
operations of the present invention may be assembler instructions,
instruction-set-architecture (ISA) instructions, machine
instructions, machine dependent instructions, microcode, firmware
instructions, state-setting data, or either source code or object
code written in any combination of one or more programming
languages, including an object oriented programming language such
as Smalltalk, C++ or the like, and conventional procedural
programming languages, such as the "C" programming language or
similar programming languages. The computer readable program
instructions may execute entirely on the user's computer, partly on
the user's computer, as a stand-alone software package, partly on
the user's computer and partly on a remote computer or entirely on
the remote computer or server. In the latter scenario, the remote
computer may be connected to the user's computer through any type
of network, including a local area network (LAN) or a wide area
network (WAN), or the connection may be made to an external
computer (for example, through the Internet using an Internet
Service Provider). In some embodiments, electronic circuitry
including, for example, programmable logic circuitry, field
programmable gate arrays (FPGA), or programmable logic arrays (PLA)
may execute the computer readable program instructions by utilizing
state information of the computer readable program instructions to
personalize the electronic circuitry, in order to perform aspects
of the present invention.
[0059] Aspects of the present invention are described herein with
reference to flowchart illustrations and/or block diagrams of
methods, apparatus (systems), and computer program products
according to embodiments of the invention. It will be understood
that each block of the flowchart illustrations and/or block
diagrams, and combinations of blocks in the flowchart illustrations
and/or block diagrams, can be implemented by computer readable
program instructions.
[0060] These computer readable program instructions may be provided
to a processor of a general purpose computer, special purpose
computer, or other programmable data processing apparatus to
produce a machine, such that the instructions, which execute via
the processor of the computer or other programmable data processing
apparatus, create means for implementing the functions/acts
specified in the flowchart and/or block diagram block or blocks.
These computer readable program instructions may also be stored in
a computer readable storage medium that can direct a computer, a
programmable data processing apparatus, and/or other devices to
function in a particular manner, such that the computer readable
storage medium having instructions stored therein comprises an
article of manufacture including instructions which implement
aspects of the function/act specified in the flowchart and/or block
diagram block or blocks.
[0061] The computer readable program instructions may also be
loaded onto a computer, other programmable data processing
apparatus, or other device to cause a series of operational steps
to be performed on the computer, other programmable apparatus or
other device to produce a computer implemented process, such that
the instructions which execute on the computer, other programmable
apparatus, or other device implement the functions/acts specified
in the flowchart and/or block diagram block or blocks.
[0062] The flowchart and block diagrams in the Figures illustrate
the architecture, functionality, and operation of possible
implementations of systems, methods and computer program products
according to various embodiments of the present invention. In this
regard, each block in the flowchart or block diagrams may represent
a module, segment, or portion of code, which comprises one or more
executable instructions for implementing the specified logical
function(s). It should also be noted that, in some alternative
implementations, the functions noted in the block may occur out of
the order noted in the figures. For example, two blocks shown in
succession may, in fact, be executed substantially concurrently, or
the blocks may sometimes be executed in the reverse order,
depending upon the functionality involved. It will also be noted
that each block of the block diagrams and/or flowchart
illustration, and combinations of blocks in the block diagrams
and/or flowchart illustration, can be implemented by special
purpose hardware-based systems that perform the specified functions
or acts, or combinations of special purpose hardware and computer
instructions.
[0063] The descriptions of the various embodiments of the present
invention have been presented for purposes of illustration, but are
not intended to be exhaustive or limited to the embodiments
disclosed. Many modifications and variations will be apparent to
those of ordinary skill in the art without departing from the scope
and spirit of the described embodiments. The terminology used
herein was chosen to best explain the principles of the
embodiments, the practical application or technical improvement
over technologies found in the marketplace, or to enable others of
ordinary skill in the art to understand the embodiments disclosed
herein.
* * * * *